diff --git a/conf/deobfuscateJar/deobfed.jar b/conf/deobfuscateJar/deobfed.jar index ef6c217..5f0eb4a 100644 --- a/conf/deobfuscateJar/deobfed.jar +++ b/conf/deobfuscateJar/deobfed.jar Binary files differ diff --git a/src/main/java/net/minecraft/client/renderer/ThreadDownloadImageData.java b/src/main/java/net/minecraft/client/renderer/ThreadDownloadImageData.java index f612bc5..ede4606 100644 --- a/src/main/java/net/minecraft/client/renderer/ThreadDownloadImageData.java +++ b/src/main/java/net/minecraft/client/renderer/ThreadDownloadImageData.java @@ -124,33 +124,33 @@ httpurlconnection.setDoOutput(false); httpurlconnection.connect(); - if (httpurlconnection.getResponseCode() / 100 != 2) + if (httpurlconnection.getResponseCode() / 100 == 2) { + BufferedImage bufferedimage; + + if (ThreadDownloadImageData.this.field_152434_e != null) + { + FileUtils.copyInputStreamToFile(httpurlconnection.getInputStream(), ThreadDownloadImageData.this.field_152434_e); + bufferedimage = ImageIO.read(ThreadDownloadImageData.this.field_152434_e); + } + else + { + bufferedimage = ImageIO.read(httpurlconnection.getInputStream()); + } + + if (ThreadDownloadImageData.this.imageBuffer != null) + { + bufferedimage = ThreadDownloadImageData.this.imageBuffer.parseUserSkin(bufferedimage); + } + + ThreadDownloadImageData.this.setBufferedImage(bufferedimage); return; } - - BufferedImage bufferedimage; - - if (ThreadDownloadImageData.this.field_152434_e != null) - { - FileUtils.copyInputStreamToFile(httpurlconnection.getInputStream(), ThreadDownloadImageData.this.field_152434_e); - bufferedimage = ImageIO.read(ThreadDownloadImageData.this.field_152434_e); - } - else - { - bufferedimage = ImageIO.read(httpurlconnection.getInputStream()); - } - - if (ThreadDownloadImageData.this.imageBuffer != null) - { - bufferedimage = ThreadDownloadImageData.this.imageBuffer.parseUserSkin(bufferedimage); - } - - ThreadDownloadImageData.this.setBufferedImage(bufferedimage); } catch (Exception exception) { ThreadDownloadImageData.logger.error("Couldn\'t download http texture", exception); + return; } finally { diff --git a/src/main/java/net/minecraft/inventory/ContainerRepair.java b/src/main/java/net/minecraft/inventory/ContainerRepair.java index 6f39e8d..456ec22 100644 --- a/src/main/java/net/minecraft/inventory/ContainerRepair.java +++ b/src/main/java/net/minecraft/inventory/ContainerRepair.java @@ -35,7 +35,7 @@ private int field_82858_j; private int field_82859_k; public int maximumCost; - private int stackSizeToBeUsedInRepair; + public int stackSizeToBeUsedInRepair; private String repairedItemName; private final EntityPlayer thePlayer; private static final String __OBFID = "CL_00001732"; @@ -67,6 +67,8 @@ p_82870_1_.addExperienceLevel(-ContainerRepair.this.maximumCost); } + float breakChance = ForgeHooks.onAnvilRepair(p_82870_1_, p_82870_2_, ContainerRepair.this.inputSlots.getStackInSlot(0), ContainerRepair.this.inputSlots.getStackInSlot(1)); + ContainerRepair.this.inputSlots.setInventorySlotContents(0, (ItemStack)null); if (ContainerRepair.this.stackSizeToBeUsedInRepair > 0) @@ -90,7 +92,7 @@ ContainerRepair.this.maximumCost = 0; - if (!p_82870_1_.capabilities.isCreativeMode && !p_i1800_2_.isRemote && p_i1800_2_.getBlock(p_i1800_3_, p_i1800_4_, p_i1800_5_) == Blocks.anvil && p_82870_1_.getRNG().nextFloat() < 0.12F) + if (!p_82870_1_.capabilities.isCreativeMode && !p_i1800_2_.isRemote && p_i1800_2_.getBlock(p_i1800_3_, p_i1800_4_, p_i1800_5_) == Blocks.anvil && p_82870_1_.getRNG().nextFloat() < breakChance) { int i1 = p_i1800_2_.getBlockMetadata(p_i1800_3_, p_i1800_4_, p_i1800_5_); int k = i1 & 3; diff --git a/src/main/java/net/minecraft/network/PingResponseHandler.java b/src/main/java/net/minecraft/network/PingResponseHandler.java index b4a8440..4c2b9e7 100644 --- a/src/main/java/net/minecraft/network/PingResponseHandler.java +++ b/src/main/java/net/minecraft/network/PingResponseHandler.java @@ -30,68 +30,67 @@ try { - if (bytebuf.readUnsignedByte() != 254) + if (bytebuf.readUnsignedByte() == 254) { + InetSocketAddress inetsocketaddress = (InetSocketAddress)p_channelRead_1_.channel().remoteAddress(); + MinecraftServer minecraftserver = this.field_151257_b.func_151267_d(); + int i = bytebuf.readableBytes(); + String s; + + switch (i) + { + case 0: + logger.debug("Ping: (<1.3.x) from {}:{}", new Object[] {inetsocketaddress.getAddress(), Integer.valueOf(inetsocketaddress.getPort())}); + s = String.format("%s\u00a7%d\u00a7%d", new Object[] {minecraftserver.getMOTD(), Integer.valueOf(minecraftserver.getCurrentPlayerCount()), Integer.valueOf(minecraftserver.getMaxPlayers())}); + this.func_151256_a(p_channelRead_1_, this.func_151255_a(s)); + break; + case 1: + if (bytebuf.readUnsignedByte() != 1) + { + return; + } + + logger.debug("Ping: (1.4-1.5.x) from {}:{}", new Object[] {inetsocketaddress.getAddress(), Integer.valueOf(inetsocketaddress.getPort())}); + s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] {Integer.valueOf(127), minecraftserver.getMinecraftVersion(), minecraftserver.getMOTD(), Integer.valueOf(minecraftserver.getCurrentPlayerCount()), Integer.valueOf(minecraftserver.getMaxPlayers())}); + this.func_151256_a(p_channelRead_1_, this.func_151255_a(s)); + break; + default: + boolean flag1 = bytebuf.readUnsignedByte() == 1; + flag1 &= bytebuf.readUnsignedByte() == 250; + flag1 &= "MC|PingHost".equals(new String(bytebuf.readBytes(bytebuf.readShort() * 2).array(), Charsets.UTF_16BE)); + int j = bytebuf.readUnsignedShort(); + flag1 &= bytebuf.readUnsignedByte() >= 73; + flag1 &= 3 + bytebuf.readBytes(bytebuf.readShort() * 2).array().length + 4 == j; + flag1 &= bytebuf.readInt() <= 65535; + flag1 &= bytebuf.readableBytes() == 0; + + if (!flag1) + { + return; + } + + logger.debug("Ping: (1.6) from {}:{}", new Object[] {inetsocketaddress.getAddress(), Integer.valueOf(inetsocketaddress.getPort())}); + String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] {Integer.valueOf(127), minecraftserver.getMinecraftVersion(), minecraftserver.getMOTD(), Integer.valueOf(minecraftserver.getCurrentPlayerCount()), Integer.valueOf(minecraftserver.getMaxPlayers())}); + ByteBuf bytebuf1 = this.func_151255_a(s1); + + try + { + this.func_151256_a(p_channelRead_1_, bytebuf1); + } + finally + { + bytebuf1.release(); + } + } + + bytebuf.release(); + flag = false; return; } - - InetSocketAddress inetsocketaddress = (InetSocketAddress)p_channelRead_1_.channel().remoteAddress(); - MinecraftServer minecraftserver = this.field_151257_b.func_151267_d(); - int i = bytebuf.readableBytes(); - String s; - - switch (i) - { - case 0: - logger.debug("Ping: (<1.3.x) from {}:{}", new Object[] {inetsocketaddress.getAddress(), Integer.valueOf(inetsocketaddress.getPort())}); - s = String.format("%s\u00a7%d\u00a7%d", new Object[] {minecraftserver.getMOTD(), Integer.valueOf(minecraftserver.getCurrentPlayerCount()), Integer.valueOf(minecraftserver.getMaxPlayers())}); - this.func_151256_a(p_channelRead_1_, this.func_151255_a(s)); - break; - case 1: - if (bytebuf.readUnsignedByte() != 1) - { - return; - } - - logger.debug("Ping: (1.4-1.5.x) from {}:{}", new Object[] {inetsocketaddress.getAddress(), Integer.valueOf(inetsocketaddress.getPort())}); - s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] {Integer.valueOf(127), minecraftserver.getMinecraftVersion(), minecraftserver.getMOTD(), Integer.valueOf(minecraftserver.getCurrentPlayerCount()), Integer.valueOf(minecraftserver.getMaxPlayers())}); - this.func_151256_a(p_channelRead_1_, this.func_151255_a(s)); - break; - default: - boolean flag1 = bytebuf.readUnsignedByte() == 1; - flag1 &= bytebuf.readUnsignedByte() == 250; - flag1 &= "MC|PingHost".equals(new String(bytebuf.readBytes(bytebuf.readShort() * 2).array(), Charsets.UTF_16BE)); - int j = bytebuf.readUnsignedShort(); - flag1 &= bytebuf.readUnsignedByte() >= 73; - flag1 &= 3 + bytebuf.readBytes(bytebuf.readShort() * 2).array().length + 4 == j; - flag1 &= bytebuf.readInt() <= 65535; - flag1 &= bytebuf.readableBytes() == 0; - - if (!flag1) - { - return; - } - - logger.debug("Ping: (1.6) from {}:{}", new Object[] {inetsocketaddress.getAddress(), Integer.valueOf(inetsocketaddress.getPort())}); - String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] {Integer.valueOf(127), minecraftserver.getMinecraftVersion(), minecraftserver.getMOTD(), Integer.valueOf(minecraftserver.getCurrentPlayerCount()), Integer.valueOf(minecraftserver.getMaxPlayers())}); - ByteBuf bytebuf1 = this.func_151255_a(s1); - - try - { - this.func_151256_a(p_channelRead_1_, bytebuf1); - } - finally - { - bytebuf1.release(); - } - } - - bytebuf.release(); - flag = false; } catch (RuntimeException runtimeexception) { - ; + return; } finally { diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index 47704fe..9097acc 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -48,6 +48,7 @@ import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent; import net.minecraftforge.event.entity.player.PlayerOpenContainerEvent; +import net.minecraftforge.event.entity.player.AnvilRepairEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.NoteBlockEvent; import static net.minecraft.init.Blocks.*; @@ -437,8 +438,16 @@ outputSlot.setInventorySlotContents(0, e.output); container.maximumCost = e.cost; + container.stackSizeToBeUsedInRepair = e.materialCost; return false; } + + public static float onAnvilRepair(EntityPlayer player, ItemStack output, ItemStack left, ItemStack right) + { + AnvilRepairEvent e = new AnvilRepairEvent(player, left, right, output); + MinecraftForge.EVENT_BUS.post(e); + return e.breakChance; + } public static boolean onNoteChange(TileEntityNote te, byte old) { diff --git a/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java b/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java index d5d8154..414b6ec 100644 --- a/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java +++ b/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java @@ -19,6 +19,7 @@ public final String name; // The name to set the item, if the user specified one. public ItemStack output; // Set this to set the output stack public int cost; // The base cost, set this to change it if output != null + public int materialCost; // The number of items from the right slot to be consumed during the repair. Leave as 0 to consume the entire stack. public AnvilUpdateEvent(ItemStack left, ItemStack right, String name, int cost) { @@ -26,5 +27,6 @@ this.right = right; this.name = name; this.cost = cost; + this.materialCost = 0; } } diff --git a/src/main/java/net/minecraftforge/event/entity/player/AnvilRepairEvent.java b/src/main/java/net/minecraftforge/event/entity/player/AnvilRepairEvent.java new file mode 100644 index 0000000..cc6ea80 --- /dev/null +++ b/src/main/java/net/minecraftforge/event/entity/player/AnvilRepairEvent.java @@ -0,0 +1,29 @@ +package net.minecraftforge.event.entity.player; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class AnvilRepairEvent extends PlayerEvent +{ + /** + * Fired when the player removes a "repaired" item from the Anvil's Output slot. + * + * breakChance specifies as a percentage the chance that the anvil will be "damaged" when used. + * + * ItemStacks are the inputs/output from the anvil. They cannot be edited. + */ + + public final ItemStack left; // The left side of the input + public final ItemStack right; // The right side of the input + public final ItemStack output; // Set this to set the output stack + public float breakChance; // Anvil's chance to break (reduced by 1 durability) when this is complete. Default is 12% (0.12f) + + public AnvilRepairEvent(EntityPlayer player, ItemStack output, ItemStack left, ItemStack right) + { + super(player); + this.output = output; + this.left = left; + this.right = right; + this.breakChance = 0.12f; + } +} diff --git a/src/main/resources/fmlversion.properties b/src/main/resources/fmlversion.properties index e8dcff6..99226df 100644 --- a/src/main/resources/fmlversion.properties +++ b/src/main/resources/fmlversion.properties @@ -1,6 +1,6 @@ fmlbuild.major.number=7 fmlbuild.minor.number=10 fmlbuild.revision.number=25 -fmlbuild.build.number=73 +fmlbuild.build.number=74 fmlbuild.mcversion=1.7.10 fmlbuild.mcpversion=9.05 diff --git a/src/main/resources/forge_at.cfg b/src/main/resources/forge_at.cfg index db334b6..06028ee 100644 --- a/src/main/resources/forge_at.cfg +++ b/src/main/resources/forge_at.cfg @@ -112,6 +112,8 @@ #protected awy.a(Lwe;)V #MD:GuiContainer/func_74192_a #drawSlotInventory # ContainerPlayer #protected vv.h #FD:ContainerPlayer/field_82862_h #player +# ContainerRepair +public net.minecraft.inventory.ContainerRepair field_82856_l #ContainerRepair/stackSizeToBeUsedInRepair # BlockButton #protected anf.n(Labw;III)V #MD:BlockButton/func_82535_o #checkActivation #protected-f anf.a #FD:BlockButton/field_82537_a #sensible