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 00000000..49765e01 Binary files /dev/null and b/kfc/src/main/resources/assets/forgecraft/textures/items/brokenbronzetool.png differ 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 00000000..7f0b92e2 Binary files /dev/null and b/kfc/src/main/resources/assets/forgecraft/textures/items/brokencleanirontool.png differ 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 00000000..55f428e6 Binary files /dev/null and b/kfc/src/main/resources/assets/forgecraft/textures/items/brokensteeltool.png differ 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 00000000..bda30749 Binary files /dev/null and b/kfc/src/main/resources/assets/forgecraft/textures/items/brokenwootztool.png differ diff --git a/kfc/src/main/resources/assets/forgecraft/textures/items/brokenwroughtirontool.png b/kfc/src/main/resources/assets/forgecraft/textures/items/brokenwroughtirontool.png new file mode 100644 index 00000000..88793561 Binary files /dev/null and b/kfc/src/main/resources/assets/forgecraft/textures/items/brokenwroughtirontool.png differ diff --git a/kfc/src/main/resources/mcmod.info b/kfc/src/main/resources/mcmod.info index f4901872..4ffba9be 100644 --- a/kfc/src/main/resources/mcmod.info +++ b/kfc/src/main/resources/mcmod.info @@ -2,7 +2,7 @@ "modid": "forgecraft", "name": "Kitsu's Forgecraft", "description": "Forged with sweat and blood", - "version": "1.2.65", + "version": "1.2.70", "mcversion": "1.11.2", "url": "", "updateUrl": "",