From 139b1fb1b086446b3b0de743fcd4eb97e6167c08 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Sun, 21 Dec 2014 23:03:44 +0100 Subject: [PATCH] Prevent ammo creation when missing information through old 3rd party materials is encountered instead of crashing #1236 --- .../java/tconstruct/weaponry/WeaponryHandler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/tconstruct/weaponry/WeaponryHandler.java b/src/main/java/tconstruct/weaponry/WeaponryHandler.java index 9a9ac41d553..c855ef984e0 100644 --- a/src/main/java/tconstruct/weaponry/WeaponryHandler.java +++ b/src/main/java/tconstruct/weaponry/WeaponryHandler.java @@ -1,5 +1,6 @@ package tconstruct.weaponry; +import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.gameevent.PlayerEvent; import tconstruct.armor.player.TPlayerStats; import tconstruct.tools.TinkerTools; @@ -74,6 +75,13 @@ public void onAmmoCrafted(ToolCraftEvent.NormalTool event) if(fletching == null) fletching = (FletchingMaterial) TConstructRegistry.getCustomMaterial(tags.getInteger("Accessory"), FletchlingLeafMaterial.class); + // invalid materials + if(arrow == null || shaft == null || fletching == null) + { + event.setResult(Event.Result.DENY); + return; + } + int durability = (int)((float)head.durability() * shaft.durabilityModifier * fletching.durabilityModifier); float weight = arrow.mass + shaft.weight; float accuracy = fletching.accuracy; @@ -106,6 +114,13 @@ else if(event.tool instanceof BoltAmmo) if(fletching == null) fletching = (FletchingMaterial) TConstructRegistry.getCustomMaterial(tags.getInteger("Accessory"), FletchlingLeafMaterial.class); + // invalid materials + if(head == null || core == null || fletching == null) + { + event.setResult(Event.Result.DENY); + return; + } + int durability = (int)((float)headMat.durability() * coreMat.handleDurability() * fletching.durabilityModifier); float weight = head.mass + core.mass*1.5f; float accuracy = (100f + fletching.accuracy)/2f;