summaryrefslogtreecommitdiff
path: root/src/main/java/com/sosnitzka/taiga/traits
diff options
context:
space:
mode:
authorRobert Sosnitzka <robert.sosnitzka@gmail.com>2016-12-19 14:53:08 +0100
committerRobert Sosnitzka <robert.sosnitzka@gmail.com>2016-12-19 14:53:08 +0100
commitc0a5d562789828f5ea37f37961d78204863140af (patch)
tree1138f89a7ef0db59a65b790f664ec44352ce8a77 /src/main/java/com/sosnitzka/taiga/traits
parent224c3bd91f53af3f1620902a4403d925e7b9202b (diff)
Created Trait SuperHeavy, rebalanced material stats for lore.
Diffstat (limited to 'src/main/java/com/sosnitzka/taiga/traits')
-rw-r--r--src/main/java/com/sosnitzka/taiga/traits/TraitSuperHeavy.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitSuperHeavy.java b/src/main/java/com/sosnitzka/taiga/traits/TraitSuperHeavy.java
new file mode 100644
index 0000000..297e49d
--- /dev/null
+++ b/src/main/java/com/sosnitzka/taiga/traits/TraitSuperHeavy.java
@@ -0,0 +1,80 @@
+package com.sosnitzka.taiga.traits;
+
+import com.sosnitzka.taiga.util.Utils;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import slimeknights.tconstruct.library.utils.TagUtil;
+import slimeknights.tconstruct.library.utils.TinkerUtil;
+
+
+public class TraitSuperHeavy extends TraitProgressiveStats {
+
+ protected static int TICK_PER_STAT = 50;
+ protected static float blockcount = 250f;
+
+ public TraitSuperHeavy() {
+ super(TraitSuperHeavy.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_GRAY);
+
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ @Override
+ public void miningSpeed(ItemStack tool, PlayerInteractEvent.BreakSpeed event) {
+ NBTTagCompound tag = TagUtil.getExtraTag(tool);
+ Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
+ if (data.brokenblocks == 0) return;
+ event.setNewSpeed(Math.max(event.getNewSpeed() - data.brokenblocks * event.getOriginalSpeed() / blockcount, 0.25f));
+ }
+
+ @Override
+ public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
+ NBTTagCompound tag = TagUtil.getExtraTag(tool);
+ Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
+ data.brokenblocks += 1;
+ data.write(tag);
+ TagUtil.setExtraTag(tool, tag);
+ }
+
+ @Override
+ public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
+ // every 3.6 seconds we distribute one stat. This means 1h = 1000 applications
+ if (entity.ticksExisted % TICK_PER_STAT > 0) {
+ return;
+ }
+
+ // we don't update if the player is currently breaking a block because that'd reset it
+ if (playerIsBreakingBlock(entity)) {
+ return;
+ }
+
+ NBTTagCompound tag = TagUtil.getExtraTag(tool);
+ Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
+ if (data.brokenblocks > 0)
+ data.brokenblocks -= 1;
+ data.write(tag);
+ TagUtil.setExtraTag(tool, tag);
+ }
+
+ @SubscribeEvent
+ public void onItemTooltip(ItemTooltipEvent e) {
+ ItemStack tool = e.getItemStack();
+ if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
+ NBTTagCompound tag = TagUtil.getExtraTag(tool);
+ Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
+ e.getToolTip().add(TextFormatting.RED + "Broken Blocks: " + TextFormatting.WHITE + data.brokenblocks);
+
+ }
+ }
+
+
+}