From eb0a3f853604fb9dac338d78ee10439a6d54fddd Mon Sep 17 00:00:00 2001 From: Tschipp Date: Fri, 11 May 2018 23:25:03 +0200 Subject: [PATCH] Ooof bad duplication issue [1.11.2] --- .../carryon/common/event/ItemEvents.java | 49 ++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/src/main/java/tschipp/carryon/common/event/ItemEvents.java b/src/main/java/tschipp/carryon/common/event/ItemEvents.java index d31bd2b..7c79c71 100644 --- a/src/main/java/tschipp/carryon/common/event/ItemEvents.java +++ b/src/main/java/tschipp/carryon/common/event/ItemEvents.java @@ -7,6 +7,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -263,7 +264,7 @@ public class ItemEvents try { CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); - emptyTileEntity(te); + world.removeTileEntity(pos); world.setBlockToAir(pos); player.setHeldItem(EnumHand.MAIN_HAND, stack); event.setUseBlock(Result.DENY); @@ -271,16 +272,27 @@ public class ItemEvents } catch (Exception e) { - e.printStackTrace(); - CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); - world.setBlockState(pos, statee); - if (!tag.hasNoTags()) - TileEntity.create(world, tag); + try + { + CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); + emptyTileEntity(te); + world.setBlockToAir(pos); + player.setHeldItem(EnumHand.MAIN_HAND, stack); + event.setUseBlock(Result.DENY); + event.setCanceled(true); + } + catch (Exception ex) + { + CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); + world.setBlockState(pos, statee); + if (!tag.hasNoTags()) + TileEntity.create(world, tag); - player.sendMessage(new TextComponentString(TextFormatting.RED + "Error detected. Cannot pick up block.")); - TextComponentString s = new TextComponentString(TextFormatting.GOLD + "here"); - s.getStyle().setClickEvent(new ClickEvent(Action.OPEN_URL, "https://github.com/Tschipp/CarryOn/issues")); - player.sendMessage(new TextComponentString(TextFormatting.RED + "Please report this error ").appendSibling(s)); + player.sendMessage(new TextComponentString(TextFormatting.RED + "Error detected. Cannot pick up block.")); + TextComponentString s = new TextComponentString(TextFormatting.GOLD + "here"); + s.getStyle().setClickEvent(new ClickEvent(Action.OPEN_URL, "https://github.com/Tschipp/CarryOn/issues")); + player.sendMessage(new TextComponentString(TextFormatting.RED + "Please report this error ").appendSibling(s)); + } } } @@ -290,7 +302,7 @@ public class ItemEvents } } } - + public static void emptyTileEntity(TileEntity te) { if (te != null && !te.isInvalid()) @@ -315,6 +327,21 @@ public class ItemEvents itemHandler.extractItem(i, 64, false); } } + + if (te instanceof IInventory) + { + IInventory inv = (IInventory) te; + inv.clear(); + } + + if (te instanceof IItemHandler) + { + IItemHandler itemHandler = (IItemHandler) te; + for (int i = 0; i < itemHandler.getSlots(); i++) + { + itemHandler.extractItem(i, 64, false); + } + } } }