From 44cede59cb487de47e92a44c16cdcc84fc0d813d Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Sun, 10 May 2015 13:26:23 +0200 Subject: [PATCH] Prevent corrupt projectile entities to enter the world --- .../java/tconstruct/weaponry/WeaponryHandler.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/tconstruct/weaponry/WeaponryHandler.java b/src/main/java/tconstruct/weaponry/WeaponryHandler.java index 7f657c05dfb..7769db43462 100644 --- a/src/main/java/tconstruct/weaponry/WeaponryHandler.java +++ b/src/main/java/tconstruct/weaponry/WeaponryHandler.java @@ -8,8 +8,10 @@ import net.minecraft.nbt.NBTTagString; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; import tconstruct.armor.player.TPlayerStats; import tconstruct.library.crafting.PatternBuilder; +import tconstruct.library.entity.ProjectileBase; import tconstruct.library.event.PartBuilderEvent; import tconstruct.library.event.SmelteryCastEvent; import tconstruct.library.util.IToolPart; @@ -415,4 +417,15 @@ public void boneanaBuilding(ToolCraftEvent.NormalTool event) { event.setResult(Event.Result.ALLOW); } } + + @SubscribeEvent + public void entityJoin(EntityJoinWorldEvent event) { + // This prevents invalid projectiles to be created + // This can happen because of ID remaps. + if(event.entity instanceof ProjectileBase) { + ProjectileBase projectile = (ProjectileBase) event.entity; + if(projectile.returnStack == null || !(projectile.returnStack.getItem() instanceof ToolCore)) + event.setCanceled(true); + } + } }