From cd511b692c22dec64b7fd3f37dc215e77cf476fc Mon Sep 17 00:00:00 2001 From: Robert Sosnitzka Date: Wed, 8 Jun 2016 23:59:38 +0200 Subject: [PATCH] Fixed events showing up on every tool, instead on tool with trait. Also balanced new traits to be more useful, but with a small restriction. --- .../ztic_addon/util/traits/TraitGarishly.java | 51 ++++++++++++++++++- .../util/traits/TraitPulverizing.java | 14 ++--- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitGarishly.java b/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitGarishly.java index 5c44636..746206a 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitGarishly.java +++ b/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitGarishly.java @@ -2,14 +2,23 @@ package com.sosnitzka.ztic_addon.util.traits; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; +import slimeknights.tconstruct.library.utils.ToolHelper; + +import static com.sosnitzka.ztic_addon.Items.*; /** * Created by Robert on 03.06.2016. @@ -24,11 +33,49 @@ public class TraitGarishly extends AbstractTrait { @SubscribeEvent public void onMobDrops(LivingDropsEvent event) { World w = event.getEntity().getEntityWorld(); - if (!w.isRemote && event.getEntity() instanceof EntityMob) { - event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, new ItemStack(Items.BLAZE_POWDER, random.nextInt(3) + 1))); + if (event.getSource().getEntity() instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); + if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { + + int r = random.nextInt(5); + ItemStack i = null; + switch (r) { + case 0: + i = new ItemStack(Items.BLAZE_POWDER, random.nextInt(3) + 1); + break; + case 1: + i = new ItemStack(Items.BLAZE_ROD, random.nextInt(2) + 1); + break; + case 2: + i = new ItemStack(glimmerstone_dust, random.nextInt(3)); + break; + case 3: + i = new ItemStack(luminar_dust, random.nextInt(3)); + break; + case 4: + i = new ItemStack(Items.COAL, random.nextInt(3) + 1); + break; + case 5: + i = new ItemStack(lignite, random.nextInt(3) + 1); + break; + } + + event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); + } } } + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + int i = random.nextInt(10); + if (i == 9) event.getDrops().clear(); + else if (i == 2 || i == 1 || i == 3) { + ItemStack stack = new ItemStack(Item.getItemFromBlock(event.getWorld().getBlockState(event.getPos()).getBlock()), i); + event.getDrops().add(0, stack); + ToolHelper.damageTool(tool, i * 2, event.getHarvester()); + } else if (i == 0) event.getWorld().setBlockState(event.getPos(), Blocks.LAVA.getDefaultState()); + } + } diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitPulverizing.java b/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitPulverizing.java index 80852de..75462a9 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitPulverizing.java +++ b/src/main/java/com/sosnitzka/ztic_addon/util/traits/TraitPulverizing.java @@ -4,8 +4,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.event.world.BlockEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.utils.ToolHelper; @@ -30,14 +29,15 @@ public class TraitPulverizing extends AbstractTrait { int durability = ToolHelper.getCurrentDurability(tool); int maxDurability = ToolHelper.getMaxDurability(tool); float speed = ToolHelper.getMiningSpeedStat(tool); - return (speed / 3) / (maxDurability - 100) * (durability) + 0.5f; + return speed * (maxDurability - maxDurability / 10) / (durability); } - @SubscribeEvent - public void onBlockBreak(HarvestDropsEvent event) { - event.getDrops().clear(); + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + if (random.nextFloat() < 0.9) { + event.getDrops().clear(); + } } - }