From 6744c4b22d0cde709da019409d68964805186627 Mon Sep 17 00:00:00 2001 From: Mohammad-Ali Minaie Date: Wed, 5 Jul 2017 22:15:32 -0400 Subject: [PATCH] fixed epic dup bug and added broken item drops for tools, ur still better off not breaking ur tool --- kfc/gradle.properties | 2 +- .../java/nmd/primal/forgecraft/ModInfo.java | 2 +- .../primal/forgecraft/init/ModCrafting.java | 28 +++++++++ .../nmd/primal/forgecraft/init/ModItems.java | 56 +++++++++++++----- .../forgecraft/items/tools/BronzeAxe.java | 43 ++++++++++---- .../forgecraft/items/tools/BronzeHoe.java | 47 ++++++++++++++- .../forgecraft/items/tools/BronzePickaxe.java | 47 ++++++++++----- .../forgecraft/items/tools/BronzeShovel.java | 41 ++++++++++--- .../forgecraft/items/tools/CustomAxe.java | 54 ++++++++++++----- .../forgecraft/items/tools/CustomHoe.java | 46 +++++++++++++- .../forgecraft/items/tools/CustomPickaxe.java | 52 ++++++++++++---- .../forgecraft/items/tools/CustomShovel.java | 47 +++++++++++---- .../models/item/brokenbronzetool.json | 6 ++ .../models/item/brokencleanirontool.json | 6 ++ .../models/item/brokensteeltool.json | 6 ++ .../models/item/brokenwootztool.json | 6 ++ .../models/item/brokenwroughtirontool.json | 6 ++ .../textures/items/brokenbronzetool.png | Bin 0 -> 508 bytes .../textures/items/brokencleanirontool.png | Bin 0 -> 445 bytes .../textures/items/brokensteeltool.png | Bin 0 -> 442 bytes .../textures/items/brokenwootztool.png | Bin 0 -> 544 bytes .../textures/items/brokenwroughtirontool.png | Bin 0 -> 364 bytes kfc/src/main/resources/mcmod.info | 2 +- 23 files changed, 405 insertions(+), 92 deletions(-) create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/brokenbronzetool.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/brokencleanirontool.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/brokensteeltool.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/brokenwootztool.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/brokenwroughtirontool.json create mode 100644 kfc/src/main/resources/assets/forgecraft/textures/items/brokenbronzetool.png create mode 100644 kfc/src/main/resources/assets/forgecraft/textures/items/brokencleanirontool.png create mode 100644 kfc/src/main/resources/assets/forgecraft/textures/items/brokensteeltool.png create mode 100644 kfc/src/main/resources/assets/forgecraft/textures/items/brokenwootztool.png create mode 100644 kfc/src/main/resources/assets/forgecraft/textures/items/brokenwroughtirontool.png diff --git a/kfc/gradle.properties b/kfc/gradle.properties index 7af45e85..4259ff52 100644 --- a/kfc/gradle.properties +++ b/kfc/gradle.properties @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx3G mod_group=nmd.primal.forgecraft mod_name=ForgeCraft -mod_version=1.2.65 +mod_version=1.2.70 forge_version=13.20.1.2388 mcp_mappings=snapshot_20170610 mc_version=1.11.2 diff --git a/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java b/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java index 9c430d26..e120d008 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java @@ -17,7 +17,7 @@ public class ModInfo { public static final String MOD_CONFIG = "primal/" + MOD_ID; //public static final String MOD_PREFIX = MOD_ID + ":"; public static final String MOD_CHANNEL = MOD_ID; - public static final String MOD_VERSION = "1.2.65"; + public static final String MOD_VERSION = "1.2.70"; public static final String MC_VERSIONS = "[1.11.0, 1.12.0)"; public static final String DEPENDENCIES = "required-after:forge@[13.20.1.2388,);" + "required-after:primal@[0.4,);"; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java index 560c1935..aa5dea6f 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java @@ -169,6 +169,34 @@ public class ModCrafting { ('E'), PrimalItems.EMERALD_KNAPP, ('Y'), ModBlocks.rawbronzecrucible)); + + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rawbronzecrucible, 1), + "T", "Y", + ('T'), new ItemStack(ModItems.brokenbronzetool, 1), + ('Y'), new ItemStack(ModBlocks.emptycrucible, 1) + )); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rawironcrucible, 1), + "T", "Y", + ('T'), new ItemStack(ModItems.brokenwroughtirontool, 1), + ('Y'), new ItemStack(ModBlocks.emptycrucible, 1) + )); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rawcleanironcrucible, 1), + "T", "Y", + ('T'), new ItemStack(ModItems.brokencleanirontool, 1), + ('Y'), new ItemStack(ModBlocks.emptycrucible, 1) + )); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rawsteelcrucible, 1), + "T", "Y", + ('T'), new ItemStack(ModItems.brokensteeltool, 1), + ('Y'), new ItemStack(ModBlocks.emptycrucible, 1) + )); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rawwootzcrucible, 1), + "T", "Y", + ('T'), new ItemStack(ModItems.brokenwootztool, 1), + ('Y'), new ItemStack(ModBlocks.emptycrucible, 1) + )); + + /*************************************************************** * TOOL CRAFTING RECIPES ***************************************************************/ diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java index c8f2f79e..09080dbd 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java @@ -118,6 +118,12 @@ public class ModItems { public static Item cleanironslayer; public static Item steelslayer; + public static Item brokenbronzetool; + public static Item brokenwroughtirontool; + public static Item brokencleanirontool; + public static Item brokensteeltool; + public static Item brokenwootztool; + public static Item wroughtironshield; //public static Item cleanironshield; //public static Item steelshield; @@ -193,25 +199,25 @@ public class ModItems { bronzeshovel = new BronzeShovel("bronzeshovel", PrimalMaterials.TOOL_BRONZE); bronzehoe = new BronzeHoe("bronzehoe", PrimalMaterials.TOOL_BRONZE); - ironpickaxe = new CustomPickaxe("ironpickaxe", PrimalMaterials.TOOL_WROUGHT_IRON); - ironaxe = new CustomAxe("ironaxe", PrimalMaterials.TOOL_WROUGHT_IRON); - ironshovel = new CustomShovel("ironshovel", PrimalMaterials.TOOL_WROUGHT_IRON); - ironhoe = new CustomHoe("ironhoe", PrimalMaterials.TOOL_WROUGHT_IRON); + ironpickaxe = new CustomPickaxe("ironpickaxe", PrimalMaterials.TOOL_WROUGHT_IRON, brokenwroughtirontool); + ironaxe = new CustomAxe("ironaxe", PrimalMaterials.TOOL_WROUGHT_IRON, brokenwroughtirontool); + ironshovel = new CustomShovel("ironshovel", PrimalMaterials.TOOL_WROUGHT_IRON, brokenwroughtirontool); + ironhoe = new CustomHoe("ironhoe", PrimalMaterials.TOOL_WROUGHT_IRON, brokenwroughtirontool); - cleanironpickaxe = new CustomPickaxe("cleanironpickaxe", PrimalMaterials.TOOL_CLEAN_IRON); - cleanironaxe = new CustomAxe("cleanironaxe", PrimalMaterials.TOOL_CLEAN_IRON); - cleanironshovel = new CustomShovel("cleanironshovel", PrimalMaterials.TOOL_CLEAN_IRON); - cleanironhoe = new CustomHoe("cleanironhoe", PrimalMaterials.TOOL_CLEAN_IRON); + cleanironpickaxe = new CustomPickaxe("cleanironpickaxe", PrimalMaterials.TOOL_CLEAN_IRON, brokencleanirontool); + cleanironaxe = new CustomAxe("cleanironaxe", PrimalMaterials.TOOL_CLEAN_IRON, brokencleanirontool); + cleanironshovel = new CustomShovel("cleanironshovel", PrimalMaterials.TOOL_CLEAN_IRON, brokencleanirontool); + cleanironhoe = new CustomHoe("cleanironhoe", PrimalMaterials.TOOL_CLEAN_IRON, brokencleanirontool); - steelpickaxe = new CustomPickaxe("steelpickaxe", PrimalMaterials.TOOL_BASIC_STEEL); - steelaxe = new CustomAxe("steelaxe", PrimalMaterials.TOOL_BASIC_STEEL); - steelshovel = new CustomShovel("steelshovel", PrimalMaterials.TOOL_BASIC_STEEL); - steelhoe = new CustomHoe("steelhoe", PrimalMaterials.TOOL_BASIC_STEEL); + steelpickaxe = new CustomPickaxe("steelpickaxe", PrimalMaterials.TOOL_BASIC_STEEL, brokensteeltool); + steelaxe = new CustomAxe("steelaxe", PrimalMaterials.TOOL_BASIC_STEEL, brokensteeltool); + steelshovel = new CustomShovel("steelshovel", PrimalMaterials.TOOL_BASIC_STEEL, brokensteeltool); + steelhoe = new CustomHoe("steelhoe", PrimalMaterials.TOOL_BASIC_STEEL, brokensteeltool); - wootzpickaxe = new CustomPickaxe("wootzpickaxe", PrimalMaterials.TOOL_WOOTZ_STEEL); - wootzaxe = new CustomAxe("wootzaxe", PrimalMaterials.TOOL_WOOTZ_STEEL); - wootzshovel = new CustomShovel("wootzshovel", PrimalMaterials.TOOL_WOOTZ_STEEL); - wootzhoe = new CustomHoe("wootzhoe", PrimalMaterials.TOOL_WOOTZ_STEEL); + wootzpickaxe = new CustomPickaxe("wootzpickaxe", PrimalMaterials.TOOL_WOOTZ_STEEL, brokenwootztool); + wootzaxe = new CustomAxe("wootzaxe", PrimalMaterials.TOOL_WOOTZ_STEEL, brokenwootztool); + wootzshovel = new CustomShovel("wootzshovel", PrimalMaterials.TOOL_WOOTZ_STEEL, brokenwootztool); + wootzhoe = new CustomHoe("wootzhoe", PrimalMaterials.TOOL_WOOTZ_STEEL, brokenwootztool); /********** WEAPONS @@ -245,6 +251,11 @@ public class ModItems { //forgingmanual = new ItemForgingManual(); //test = new ItemTest("ironsword"); + brokenbronzetool = new BaseItem("brokenbronzetool"); + brokenwroughtirontool = new BaseItem("brokenwroughtirontool"); + brokencleanirontool = new BaseItem("brokencleanirontool"); + brokensteeltool = new BaseItem("brokensteeltool"); + brokenwootztool = new BaseItem("brokenwootztool"); /********** ARMOR @@ -354,6 +365,12 @@ public class ModItems { GameRegistry.register(longbow); //GameRegistry.register(matchlockmusket); + GameRegistry.register(brokenbronzetool); + GameRegistry.register(brokenwroughtirontool); + GameRegistry.register(brokencleanirontool); + GameRegistry.register(brokensteeltool); + GameRegistry.register(brokenwootztool); + /********** ARMOR **********/ @@ -467,6 +484,13 @@ public class ModItems { //registerRender(matchlockmusket); + registerRender(brokenbronzetool); + registerRender(brokenwroughtirontool); + registerRender(brokencleanirontool); + registerRender(brokensteeltool); + registerRender(brokenwootztool); + + /********** ARMOR **********/ diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeAxe.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeAxe.java index 8d121979..a6e05527 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeAxe.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeAxe.java @@ -183,18 +183,41 @@ public class BronzeAxe extends ItemAxe implements ToolNBT { } @Override - public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { - if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) - { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; + } + } - stack.getTagCompound().removeTag("ench"); - //System.out.println(stack.getTagCompound()); - if(getDiamondLevel(stack) > 0) { - if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { - stack.damageItem(1, entityLiving); - } - } else stack.damageItem(1, entityLiving); + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + { + if (!world.isRemote && (double)state.getBlockHardness(world, pos) != 0.0D) + { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.getTagCompound().removeTag("ench"); + if(getDiamondLevel(stack) > 0) { + if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { + stack.damageItem(1, entityLiving); + } + } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } } return true; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeHoe.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeHoe.java index a315d277..8984588a 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeHoe.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeHoe.java @@ -6,11 +6,13 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; import net.minecraft.item.IItemPropertyGetter; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -184,12 +186,48 @@ public class BronzeHoe extends ItemHoe implements ToolNBT { return false; } + @Override + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) + { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; + } + } + + @Override + protected void setBlock(ItemStack stack, EntityPlayer player, World worldIn, BlockPos pos, IBlockState state) + { + worldIn.playSound(player, pos, SoundEvents.ITEM_HOE_TILL, SoundCategory.BLOCKS, 1.0F, 1.0F); + + if (!worldIn.isRemote) + { + worldIn.setBlockState(pos, state, 11); + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, player); + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + PlayerHelper.spawnItemOnPlayer(worldIn, player, dropStack); + player.renderBrokenItemStack(stack); + stack.shrink(1); + } + } + } + @Override public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) { if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) { - + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { stack.getTagCompound().removeTag("ench"); //System.out.println(stack.getTagCompound()); if(getDiamondLevel(stack) > 0) { @@ -197,6 +235,13 @@ public class BronzeHoe extends ItemHoe implements ToolNBT { stack.damageItem(1, entityLiving); } } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(worldIn, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } } return true; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzePickaxe.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzePickaxe.java index fd80608c..6c37fe21 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzePickaxe.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzePickaxe.java @@ -126,9 +126,6 @@ public class BronzePickaxe extends ItemPickaxe implements ToolNBT{ setModifiers(item, 0); } - if( this.getMaxDamage(item) - this.getDamage(item) <= 1 ){ - PlayerHelper.spawnItemOnPlayer(world, (EntityPlayer) player, new ItemStack(ModItems.bronzepickaxehead, 1)); - } } } @@ -184,20 +181,42 @@ public class BronzePickaxe extends ItemPickaxe implements ToolNBT{ } @Override - public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { - if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) - { - - stack.getTagCompound().removeTag("ench"); - //System.out.println(stack.getTagCompound()); - if(getDiamondLevel(stack) > 0) { - if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { - stack.damageItem(1, entityLiving); - } - } else stack.damageItem(1, entityLiving); + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; } + } + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + { + if (!world.isRemote && (double)state.getBlockHardness(world, pos) != 0.0D) + { + if(stack.getMaxDamage() - stack.getItemDamage() > 1 ) { + stack.getTagCompound().removeTag("ench"); + if (getDiamondLevel(stack) > 0) { + if (ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { + stack.damageItem(1, entityLiving); + } + } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } + } return true; } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeShovel.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeShovel.java index b3e9c31f..c83396d3 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeShovel.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/BronzeShovel.java @@ -10,6 +10,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.IItemPropertyGetter; +import net.minecraft.item.Item; import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -182,19 +183,43 @@ public class BronzeShovel extends ItemSpade implements ToolNBT { return false; } + @Override + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) + { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; + } + } + @Override public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) { if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) { - - stack.getTagCompound().removeTag("ench"); - //System.out.println(stack.getTagCompound()); - if(getDiamondLevel(stack) > 0) { - if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { - stack.damageItem(1, entityLiving); - } - } else stack.damageItem(1, entityLiving); + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.getTagCompound().removeTag("ench"); + //System.out.println(stack.getTagCompound()); + if(getDiamondLevel(stack) > 0) { + if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { + stack.damageItem(1, entityLiving); + } + } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(ModItems.brokenbronzetool, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(worldIn, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } } return true; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java index 9ac9a5ec..1a8b7de5 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java @@ -17,7 +17,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.util.ToolNBT; import javax.annotation.Nullable; @@ -29,14 +31,16 @@ import java.util.concurrent.ThreadLocalRandom; */ public class CustomAxe extends ItemAxe implements ToolNBT { - public CustomAxe(String name, Item.ToolMaterial material) { + private Item damageDrop; + + public CustomAxe(String name, Item.ToolMaterial material, Item damageDrop) { super(material, 6, -3.1f); this.setUnlocalizedName(name); this.setRegistryName(name); this.setCreativeTab(ModInfo.TAB_FORGECRAFT); this.setMaxStackSize(1); this.setNoRepair(); - + damageDrop = damageDrop; this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() { /*** @@ -263,9 +267,6 @@ public class CustomAxe extends ItemAxe implements ToolNBT { setLapisLevel(item, 0); setModifiers(item, 0); } - if( this.getMaxDamage(item) - this.getDamage(item) < 5 ){ - - } } } @@ -327,18 +328,41 @@ public class CustomAxe extends ItemAxe implements ToolNBT { } @Override - public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { - if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) - { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; + } + } - stack.getTagCompound().removeTag("ench"); - //System.out.println(stack.getTagCompound()); - if(getDiamondLevel(stack) > 0) { - if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { - stack.damageItem(1, entityLiving); - } - } else stack.damageItem(1, entityLiving); + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + { + if (!world.isRemote && (double)state.getBlockHardness(world, pos) != 0.0D) + { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.getTagCompound().removeTag("ench"); + if(getDiamondLevel(stack) > 0) { + if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { + stack.damageItem(1, entityLiving); + } + } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } } return true; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomHoe.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomHoe.java index 8f3df4f1..0838f812 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomHoe.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomHoe.java @@ -6,17 +6,21 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; import net.minecraft.item.IItemPropertyGetter; import net.minecraft.item.Item; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.util.ToolNBT; import javax.annotation.Nullable; @@ -28,14 +32,16 @@ import java.util.concurrent.ThreadLocalRandom; */ public class CustomHoe extends ItemHoe implements ToolNBT { - public CustomHoe(String name, Item.ToolMaterial material) { + private Item damageDrop; + + public CustomHoe(String name, Item.ToolMaterial material, Item damageDrop) { super(material); this.setUnlocalizedName(name); this.setRegistryName(name); this.setCreativeTab(ModInfo.TAB_FORGECRAFT); this.setMaxStackSize(1); this.setNoRepair(); - + this.damageDrop = damageDrop; this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() { /*** @@ -320,6 +326,42 @@ public class CustomHoe extends ItemHoe implements ToolNBT { return false; } + @Override + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) + { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; + } + } + + @Override + protected void setBlock(ItemStack stack, EntityPlayer player, World worldIn, BlockPos pos, IBlockState state) + { + worldIn.playSound(player, pos, SoundEvents.ITEM_HOE_TILL, SoundCategory.BLOCKS, 1.0F, 1.0F); + + if (!worldIn.isRemote) + { + worldIn.setBlockState(pos, state, 11); + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, player); + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + PlayerHelper.spawnItemOnPlayer(worldIn, player, dropStack); + player.renderBrokenItemStack(stack); + stack.shrink(1); + } + } + } + @Override public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) { diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomPickaxe.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomPickaxe.java index 050e48c0..8dac2e35 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomPickaxe.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomPickaxe.java @@ -17,7 +17,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.util.ToolNBT; import javax.annotation.Nullable; @@ -29,14 +31,16 @@ import java.util.concurrent.ThreadLocalRandom; */ public class CustomPickaxe extends ItemPickaxe implements ToolNBT{ - public CustomPickaxe(String name, Item.ToolMaterial material) { + private Item damageDrop; + + public CustomPickaxe(String name, Item.ToolMaterial material, Item damageDrop) { super(material); this.setUnlocalizedName(name); this.setRegistryName(name); this.setCreativeTab(ModInfo.TAB_FORGECRAFT); this.setMaxStackSize(1); this.setNoRepair(); - + this.damageDrop=damageDrop; //this.toolClass = "pickaxe"; this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() { @@ -325,20 +329,42 @@ public class CustomPickaxe extends ItemPickaxe implements ToolNBT{ } @Override - public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { - if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) - { - - stack.getTagCompound().removeTag("ench"); - //System.out.println(stack.getTagCompound()); - if(getDiamondLevel(stack) > 0) { - if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { - stack.damageItem(1, entityLiving); - } - } else stack.damageItem(1, entityLiving); + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; } + } + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) + { + if (!world.isRemote && (double)state.getBlockHardness(world, pos) != 0.0D) + { + if(stack.getMaxDamage() - stack.getItemDamage() > 1 ) { + stack.getTagCompound().removeTag("ench"); + if (getDiamondLevel(stack) > 0) { + if (ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { + stack.damageItem(1, entityLiving); + } + } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } + } return true; } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomShovel.java b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomShovel.java index dd0f7a07..b02dfafe 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomShovel.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/tools/CustomShovel.java @@ -19,7 +19,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.util.ToolNBT; import javax.annotation.Nullable; @@ -33,15 +35,16 @@ import java.util.concurrent.ThreadLocalRandom; public class CustomShovel extends ItemSpade implements ToolNBT { private static final Set EFFECTIVE_ON = Sets.newHashSet(new Block[] {Blocks.CLAY, Blocks.DIRT, Blocks.FARMLAND, Blocks.GRASS, Blocks.GRAVEL, Blocks.MYCELIUM, Blocks.SAND, Blocks.SNOW, Blocks.SNOW_LAYER, Blocks.SOUL_SAND, Blocks.GRASS_PATH}); + private Item damageDrop; - public CustomShovel(String name, Item.ToolMaterial material) { + public CustomShovel(String name, Item.ToolMaterial material, Item damageDrop) { super(material); this.setUnlocalizedName(name); this.setRegistryName(name); this.setCreativeTab(ModInfo.TAB_FORGECRAFT); this.setMaxStackSize(1); this.setNoRepair(); - + this.damageDrop=damageDrop; this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() { /*** @@ -325,19 +328,43 @@ public class CustomShovel extends ItemSpade implements ToolNBT { return false; } + @Override + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) + { + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.damageItem(1, attacker); + return true; + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) attacker; + World world = attacker.getEntityWorld(); + PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + attacker.renderBrokenItemStack(stack); + stack.shrink(1); + return true; + } + } + @Override public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving) { if (!worldIn.isRemote && (double)state.getBlockHardness(worldIn, pos) != 0.0D) { - - stack.getTagCompound().removeTag("ench"); - //System.out.println(stack.getTagCompound()); - if(getDiamondLevel(stack) > 0) { - if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { - stack.damageItem(1, entityLiving); - } - } else stack.damageItem(1, entityLiving); + if(stack.getMaxDamage() - stack.getItemDamage() >1 ) { + stack.getTagCompound().removeTag("ench"); + //System.out.println(stack.getTagCompound()); + if(getDiamondLevel(stack) > 0) { + if(ThreadLocalRandom.current().nextInt(0, getDiamondLevel(stack)) == 0) { + stack.damageItem(1, entityLiving); + } + } else stack.damageItem(1, entityLiving); + } else { + ItemStack dropStack = new ItemStack(damageDrop, 1); + EntityPlayer player = (EntityPlayer) entityLiving; + PlayerHelper.spawnItemOnPlayer(worldIn, player, dropStack); + entityLiving.renderBrokenItemStack(stack); + stack.shrink(1); + } } return true; diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/brokenbronzetool.json b/kfc/src/main/resources/assets/forgecraft/models/item/brokenbronzetool.json new file mode 100644 index 00000000..a03f334a --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/models/item/brokenbronzetool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "forgecraft:items/brokenbronzetool" + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/brokencleanirontool.json b/kfc/src/main/resources/assets/forgecraft/models/item/brokencleanirontool.json new file mode 100644 index 00000000..1921e4bb --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/models/item/brokencleanirontool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "forgecraft:items/brokencleanirontool" + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/brokensteeltool.json b/kfc/src/main/resources/assets/forgecraft/models/item/brokensteeltool.json new file mode 100644 index 00000000..8e7f3c9c --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/models/item/brokensteeltool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "forgecraft:items/brokensteeltool" + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/brokenwootztool.json b/kfc/src/main/resources/assets/forgecraft/models/item/brokenwootztool.json new file mode 100644 index 00000000..dc9ae494 --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/models/item/brokenwootztool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "forgecraft:items/brokenwootztool" + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/brokenwroughtirontool.json b/kfc/src/main/resources/assets/forgecraft/models/item/brokenwroughtirontool.json new file mode 100644 index 00000000..8944de55 --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/models/item/brokenwroughtirontool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "forgecraft:items/brokenwroughtirontool" + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/textures/items/brokenbronzetool.png b/kfc/src/main/resources/assets/forgecraft/textures/items/brokenbronzetool.png new file mode 100644 index 0000000000000000000000000000000000000000..49765e019346a23ada2617a115d6aa658ab18e0d GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPtI~${ra_qIPyFek?%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6_|fq^l>)5S5w;`H9j2eXA8WsZJ4uXZ~(Tl%up%IR_c8J{quv}9)6qZoBlU-cqtr7F~94(>v3YniiM#Y9yBMW@xA~3V{hUlfu`Rp zp3nQGy+ETYK*aTjxbPCpmv(Ev{Bn0 z#x&W>m+NAl_gkDT^SV=FBE3)F(l&8Jf8WopZ(XO`e7!@9&3csMv|IC>Z!KQsu{&c{ z*p_U*O%~^VrJL04IJ2Gg-#4xgX#rWcBQ8DHH&nd6Jnx0-#vS?opVn4#->ChaZtwM3 w?VOF2!Ro~y(>|?jh`r$ZR_Z^;kM;XMigz`y3NT=8s02lVr>mdKI;Vst0IE*g3jhEB literal 0 HcmV?d00001 diff --git a/kfc/src/main/resources/assets/forgecraft/textures/items/brokencleanirontool.png b/kfc/src/main/resources/assets/forgecraft/textures/items/brokencleanirontool.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0b92e268f2f7d06602b74addda3bc4a9ea9b99 GIT binary patch literal 445 zcmV;u0Yd(XP)0YZVJLL`vSMG~CY)e97BL{E21)6&$c7XHumf7zm{ z{H6@QtRDg1d-dMyKLNb=+O{pb-Hxvy=Bt~QejG=dreVL|{}m#tiuYa*hXVkY%LRbr z@kq}3bx4Gi5+cI&dM)A*g2;Be)zj%jN{L|@u-0O&1;9B6!1MW}sw#5MSZfgxrfH(< zx|fBVGciV1s};^UR2AnODJ4{ux~|IOG*5aI_X&Q3QhzQo&GEr4ktk-M$zAu3~fX!w@-}hxqfaQfQ zp67WcrNr%aD**zy5P~eUwryX#HHNCH7>0pqnu?tz)J0s@_`dt|`CQVk>zc>o!To;! nB>n_=2mM*^!fyfp^*4S1i6XY`FSp^U00000NkvXXu0mjfN!`Kh literal 0 HcmV?d00001 diff --git a/kfc/src/main/resources/assets/forgecraft/textures/items/brokensteeltool.png b/kfc/src/main/resources/assets/forgecraft/textures/items/brokensteeltool.png new file mode 100644 index 0000000000000000000000000000000000000000..55f428e638413fd9c8ab975efdecdeb2575a9943 GIT binary patch literal 442 zcmV;r0Y(0aP)1_VJ-BKQIi{x3lk@d+M+AoIhN-JNa^yNM zUUXGW)r>?0e<|gU^(#P1DN;%+Wmdm6Z|xr;BBYce=PWA~EHlmKW`?S=cY4lGN+cpk zDaG#L8Ko4a57z)}Pfl=mA_A)_%nWyDdVe)<&N+*W$K%+Z93!HL2&Vnmv@K23^m}Gl zT@w+wJ3>&p!t3+hrw0*%h)~>t=$Xxc00J*%AP`iPm&Y4&&Qbxqy}eV{HL8lL4)+Ef z)XWGV2oIW47E>st>kSb>L{Qa1fuh=*SeYRzga_;E8;by=(Hdq-Rn_wY_cC91U5l%t z4$rrja{~dYoU_d0+1%P;2I%gzZHJi-fR2B0e<8-@?9t<8 literal 0 HcmV?d00001 diff --git a/kfc/src/main/resources/assets/forgecraft/textures/items/brokenwootztool.png b/kfc/src/main/resources/assets/forgecraft/textures/items/brokenwootztool.png new file mode 100644 index 0000000000000000000000000000000000000000..bda30749f914d97fa38b303f10f4ffc7d8f526bd GIT binary patch literal 544 zcmV+*0^j|KP)b!B2A2wgP85VKb>cT;e!APW9Gp+7(v*Fq(=j!;T*6KUK~e+5V>m6THb6F^F-HaE9$ zoCjP7(XN~HtFG7Uq|#}&YR;7qp_D>Osh&Q2&e7o^p0^Lc!$*&aq6l5rsa7f^4TJ8- zE_0000~`;lk2_q=v|G{Q|G_74{GdwzbyF_&z!YZ z=k%ecMU~tW!yY{>_#nV^{dMTA$WTtj058R*M>gr)$uqBHl<9XjH+EqWJa|T;jgi6l z@ZH__Q_^}KYX~OHOAndK#;CD$jh@+lM*04B2A2l0uRm)x-OW2``Q609|M9yWzqLGB zPFM;%IfS0HeEjarXP=&lQQB*lM`inOWLlv$`|L9QjEy)