Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
2zqa committed Jul 25, 2020
0 parents commit a3fa267
Show file tree
Hide file tree
Showing 8 changed files with 361 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.sh eol=lf
*.bat eol=crlf
51 changes: 51 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Block folders that belong to MCP
jars/
logs/
reobf/
temp/
bin/

conf/
docs/
eclipse/
runtime/
notes.md

# AnnoyanceFix related stuff
src/minecraft_server
src/minecraft/net/minecraft/client
src/minecraft/net/minecraft/isom
src/minecraft/net/minecraft/src/*.java
!src/minecraft/net/minecraft/src/BlockFence.java
!src/minecraft/net/minecraft/src/BlockStairs.java
!src/minecraft/net/minecraft/src/mod_AnnoyanceFix.java
!src/minecraft/net/minecraft/src/mod_AnnoyanceFix.java


# Allow server.properties
!jars/server.properties

# Block compiled Python
*.pyc

# Block downloaded files
runtime/bin/pypy*
!runtime/bin/

# Block .idea folder
.idea/

# Block python runtime.
runtime/bin/python/

# Block command file.
runtime/command

# Block scripts in the root folder except setup.* and createmod.*
*.bat
*.sh
!createmod.sh
!createmod.bat

# Block .iml files
*.iml
26 changes: 26 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# AnnoyanceFix
_Now using modloader!_

## Installation using MultiMC:

1. Download modloader: https://github.com/coffeenotfound/ModloaderFix-b1.7.3/releases
2. Download this mod: https://github.com/2zqa/AnnoyanceFix/releases
3. Create or edit your beta 1.7.3 instance in MultiMC
4. Click "Add to minecraft.jar"
5. Select modloader and annoyancefix
6. Run and enjoy! 👍

## Contributing

1. Download 1.7.3-LTS (MCP fork): `https://github.com/ModificationStation/1.7.3-LTS/`
2. Fork this repository
3. Clone your own fork: `git clone https://github.com/<your_username>/AnnoyanceFix.git`
4. Run setup from 1.7.3-LTS
5. Add modloader classes to bin/minecraft.jar
6. Run decompile script
7. Run updatemd5 script
8. Copy all files _from_ 1.7.3-LTS _to_ the AnnoyanceFix folder, without overwriting anything
9. Start modding :)
10. Create a pull request when done

TIP: Use the createmod script to automatically recompile, reobfuscate and create a zip for the mod.
4 changes: 4 additions & 0 deletions createmod.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@REM script not tested, sorry!
recompile.bat
reobfuscate.bat
zip -r -j AnnoyanceFix.zip reobf/minecraft
5 changes: 5 additions & 0 deletions createmod.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash
./recompile.sh
./reobfuscate.sh
rm AnnoyanceFix.zip
zip -r -j AnnoyanceFix.zip reobf/minecraft
31 changes: 31 additions & 0 deletions src/minecraft/net/minecraft/src/BlockFence.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package net.minecraft.src;

public class BlockFence extends Block {
public BlockFence(int var1, int var2) {
super(var1, var2, Material.wood);
}

// public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
// if (var1.getBlockId(var2, var3 - 1, var4) == this.blockID) {
// return true;
// } else {
// return !var1.getBlockMaterial(var2, var3 - 1, var4).isSolid() ? false : super.canPlaceBlockAt(var1, var2, var3, var4);
// }
// }

public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
return AxisAlignedBB.getBoundingBoxFromPool((double)var2, (double)var3, (double)var4, (double)(var2 + 1), (double)((float)var3 + 1.5F), (double)(var4 + 1));
}

public boolean isOpaqueCube() {
return false;
}

public boolean renderAsNormalBlock() {
return false;
}

public int getRenderType() {
return 11;
}
}
186 changes: 186 additions & 0 deletions src/minecraft/net/minecraft/src/BlockStairs.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
package net.minecraft.src;

import java.util.ArrayList;
import java.util.Random;

public class BlockStairs extends Block {
private Block modelBlock;

protected BlockStairs(int var1, Block var2) {
super(var1, var2.blockIndexInTexture, var2.blockMaterial);
this.modelBlock = var2;
this.setHardness(var2.blockHardness);
this.setResistance(var2.blockResistance / 3.0F);
this.setStepSound(var2.stepSound);
this.setLightOpacity(255);
}

public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}

public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
}

public boolean isOpaqueCube() {
return false;
}

public boolean renderAsNormalBlock() {
return false;
}

public int getRenderType() {
return 10;
}

public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) {
return super.shouldSideBeRendered(var1, var2, var3, var4, var5);
}

public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
int var7 = var1.getBlockMetadata(var2, var3, var4);
if (var7 == 0) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 1.0F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
} else if (var7 == 1) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 1.0F, 1.0F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
} else if (var7 == 2) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 1.0F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
} else if (var7 == 3) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 0.5F, 1.0F);
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
}

this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}

public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) {
this.modelBlock.randomDisplayTick(var1, var2, var3, var4, var5);
}

public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
this.modelBlock.onBlockClicked(var1, var2, var3, var4, var5);
}

// public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
// this.modelBlock.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5);
// }

public float getBlockBrightness(IBlockAccess var1, int var2, int var3, int var4) {
return this.modelBlock.getBlockBrightness(var1, var2, var3, var4);
}

public float getExplosionResistance(Entity var1) {
return this.modelBlock.getExplosionResistance(var1);
}

public int getRenderBlockPass() {
return this.modelBlock.getRenderBlockPass();
}

public int idDropped(int var1, Random var2) {
return this.blockID;
//return Block.blockDiamond.blockID; // debugging
}

public int quantityDropped(Random var1) {
return this.modelBlock.quantityDropped(var1);
}

public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
return this.modelBlock.getBlockTextureFromSideAndMetadata(var1, var2);
}

public int getBlockTextureFromSide(int var1) {
return this.modelBlock.getBlockTextureFromSide(var1);
}

public int getBlockTexture(IBlockAccess var1, int var2, int var3, int var4, int var5) {
return this.modelBlock.getBlockTexture(var1, var2, var3, var4, var5);
}

public int tickRate() {
return this.modelBlock.tickRate();
}

public AxisAlignedBB getSelectedBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
return this.modelBlock.getSelectedBoundingBoxFromPool(var1, var2, var3, var4);
}

public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) {
this.modelBlock.velocityToAddToEntity(var1, var2, var3, var4, var5, var6);
}

public boolean isCollidable() {
return this.modelBlock.isCollidable();
}

public boolean canCollideCheck(int var1, boolean var2) {
return this.modelBlock.canCollideCheck(var1, var2);
}

public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
return this.modelBlock.canPlaceBlockAt(var1, var2, var3, var4);
}

public void onBlockAdded(World var1, int var2, int var3, int var4) {
this.onNeighborBlockChange(var1, var2, var3, var4, 0);
this.modelBlock.onBlockAdded(var1, var2, var3, var4);
}

// public void onBlockRemoval(World var1, int var2, int var3, int var4) {
// this.modelBlock.onBlockRemoval(var1, var2, var3, var4);
// }

// public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
// this.modelBlock.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
// }

public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
this.modelBlock.onEntityWalking(var1, var2, var3, var4, var5);
}

public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
this.modelBlock.updateTick(var1, var2, var3, var4, var5);
}

public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
return this.modelBlock.blockActivated(var1, var2, var3, var4, var5);
}

// public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) {
// this.modelBlock.onBlockDestroyedByExplosion(var1, var2, var3, var4);
// }

public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
if (var6 == 0) {
var1.setBlockMetadataWithNotify(var2, var3, var4, 2);
}

if (var6 == 1) {
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
}

if (var6 == 2) {
var1.setBlockMetadataWithNotify(var2, var3, var4, 3);
}

if (var6 == 3) {
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
}

}
}
56 changes: 56 additions & 0 deletions src/minecraft/net/minecraft/src/mod_AnnoyanceFix.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package net.minecraft.src;

import java.lang.reflect.Field;

public class mod_AnnoyanceFix extends BaseMod {

@Override
public String Version() {
return "AnnoyanceFix v1.1";
}

@Override
public void ModsLoaded() {
// Fix axe effectiveness
addEffectiveTools(new Item[] {Item.axeDiamond, Item.axeGold, Item.axeSteel, Item.axeStone, Item.axeWood},
new Block[] { Block.workbench, Block.stairCompactPlanks, Block.fence, Block.doorWood });

// Fix pickaxe effectiveness
addEffectiveTools(new Item[] {Item.pickaxeDiamond, Item.pickaxeGold, Item.pickaxeSteel, Item.pickaxeStone, Item.pickaxeWood},
new Block[] {Block.stoneOvenActive, Block.stoneOvenIdle, Block.stairCompactCobblestone,
Block.brick, Block.oreRedstone, Block.doorSteel, Block.rail, Block.railDetector, Block.railPowered });

}

/**
* Makes specified blocks break faster using specified tools
* @param effectiveTools tools to be effective against all vulnerableBlocks
* @param vulnerableBlocks blocks that should be broken faster using speficied tools
*/
public void addEffectiveTools(Item[] effectiveTools, Block[] vulnerableBlocks) {
try {
// Get the blocksEffectiveAgainst field
Field blocksEffectiveAgainstField = ItemTool.class.getDeclaredFields()[0];
blocksEffectiveAgainstField.setAccessible(true);

// Make each tool effective against all specified blocks
for (Item tool : effectiveTools) {
Block[] blocksEffectiveAgainstOriginal = (Block[]) blocksEffectiveAgainstField.get(tool);

Block[] blocksEffectiveAgainst = new Block[blocksEffectiveAgainstOriginal.length + vulnerableBlocks.length];

// Add original effective block list to new array
System.arraycopy(blocksEffectiveAgainstOriginal, 0, blocksEffectiveAgainst, 0,
blocksEffectiveAgainstOriginal.length);

// Add users' effective blocks to the list
System.arraycopy(vulnerableBlocks, 0, blocksEffectiveAgainst, blocksEffectiveAgainstOriginal.length, vulnerableBlocks.length);

blocksEffectiveAgainstField.set(tool, blocksEffectiveAgainst);
}

} catch (SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
}

0 comments on commit a3fa267

Please sign in to comment.