diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 8661e733..bfaeff40 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -2,11 +2,9 @@ package WayofTime.bloodmagic; import java.io.File; -import WayofTime.bloodmagic.client.gui.GuiHandler; import lombok.Getter; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; -import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; @@ -15,6 +13,7 @@ import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.util.helper.LogHelper; +import WayofTime.bloodmagic.client.gui.GuiHandler; import WayofTime.bloodmagic.network.BloodMagicPacketHandler; import WayofTime.bloodmagic.proxy.CommonProxy; import WayofTime.bloodmagic.registry.ModArmourTrackers; @@ -25,7 +24,6 @@ import WayofTime.bloodmagic.registry.ModItems; import WayofTime.bloodmagic.registry.ModPotions; import WayofTime.bloodmagic.registry.ModRecipes; import WayofTime.bloodmagic.registry.ModRituals; -import WayofTime.bloodmagic.util.handler.EventHandler; @Mod(modid = Constants.Mod.MODID, name = Constants.Mod.NAME, version = Constants.Mod.VERSION, dependencies = Constants.Mod.DEPEND, acceptedMinecraftVersions = "[1.8.8,1.8.9]", guiFactory = "WayofTime.bloodmagic.client.gui.config.ConfigGuiFactory") @Getter @@ -55,8 +53,6 @@ public class BloodMagic configDir = new File(event.getModConfigurationDirectory(), "BloodMagic"); ConfigHandler.init(new File(getConfigDir(), "BloodMagic.cfg")); - MinecraftForge.EVENT_BUS.register(new EventHandler()); - ModBlocks.init(); ModItems.init(); ModPotions.init(); diff --git a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java index 71b88eb3..4d2e8c4a 100644 --- a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java @@ -18,7 +18,7 @@ import java.util.List; public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator { - public final int CONVERSION = 100; // How much LP per heart + public final int CONVERSION = 50; // How much LP per heart public final int CAPACITY = 10000; // Max LP storage public ItemPackSacrifice() diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java index e0af3553..1575ab49 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java @@ -13,12 +13,15 @@ import net.minecraft.world.World; import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; +import WayofTime.bloodmagic.util.ChatUtil; +import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; public class LivingArmour { + public static String chatBase = "chat.BloodMagic.livingArmour."; public HashMap trackerMap = new HashMap(); public HashMap upgradeMap = new HashMap(); @@ -77,7 +80,7 @@ public class LivingArmour public void notifyPlayerOfUpgrade(EntityPlayer user, LivingArmourUpgrade upgrade) { - System.out.println("Upgraded!"); + ChatUtil.sendNoSpam(user, TextHelper.localize(chatBase + "newUpgrade")); } /** diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeDigging.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeDigging.java new file mode 100644 index 00000000..f85a8488 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeDigging.java @@ -0,0 +1,67 @@ +package WayofTime.bloodmagic.livingArmour; + +import java.util.HashMap; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; + +public class LivingArmourUpgradeDigging extends LivingArmourUpgrade +{ + public static HashMap changeMap = new HashMap(); + + public static void hasDug(LivingArmour armour) + { + changeMap.put(armour, true); + } + + public LivingArmourUpgradeDigging(int level) + { + super(level); + } + + @Override + public void onTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (changeMap.containsKey(livingArmour) && changeMap.get(livingArmour)) + { + changeMap.put(livingArmour, false); + + player.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 100, 0, false, false)); + } + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".upgrade.digging"; + } + + @Override + public int getMaxTier() + { + return 1; + } + + @Override + public int getCostOfUpgrade() + { + return 0; + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + // EMPTY + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + // EMPTY + } +} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeSpeed.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeSpeed.java index 8a55aa60..11a603f1 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeSpeed.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeSpeed.java @@ -23,8 +23,8 @@ public class LivingArmourUpgradeSpeed extends LivingArmourUpgrade { Multimap modifierMap = HashMultimap.create(); - // Adds 10% per level - modifierMap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(895132, 1), "Speed modifier" + 1, (this.level + 1) * 0.1, 1)); + // Adds 5% per level + modifierMap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(895132, 1), "Speed modifier" + 1, (this.level + 1) * 0.05, 1)); return modifierMap; } @@ -38,13 +38,13 @@ public class LivingArmourUpgradeSpeed extends LivingArmourUpgrade @Override public int getMaxTier() { - return 5; + return 10; } @Override public int getCostOfUpgrade() { - return this.level + 1; + return 3 * (this.level + 1) * (this.level + 1) * (this.level + 1); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerDigging.java b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerDigging.java new file mode 100644 index 00000000..dcf83d84 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerDigging.java @@ -0,0 +1,91 @@ +package WayofTime.bloodmagic.livingArmour; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import WayofTime.bloodmagic.api.livingArmour.StatTracker; + +public class StatTrackerDigging extends StatTracker +{ + public double totalBlocksDug = 0; + + public static HashMap changeMap = new HashMap(); + + public static void incrementCounter(LivingArmour armour) + { + changeMap.put(armour, changeMap.containsKey(armour) ? changeMap.get(armour) + 1 : 1); + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".tracker.digging"; + } + + @Override + public void resetTracker() + { + this.totalBlocksDug = 0; + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + totalBlocksDug = tag.getDouble(Constants.Mod.MODID + ".tracker.digging"); + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setDouble(Constants.Mod.MODID + ".tracker.digging", totalBlocksDug); + } + + @Override + public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (changeMap.containsKey(livingArmour)) + { + int change = Math.abs(changeMap.get(livingArmour)); + if (change > 0) + { + totalBlocksDug += Math.abs(changeMap.get(livingArmour)); + + changeMap.put(livingArmour, 0); + + System.out.println("Blocks dug: " + totalBlocksDug); + this.markDirty(); + + return true; + } + } + + return false; + } + + @Override + public List getUpgrades() + { + // TODO Auto-generated method stub + List upgradeList = new ArrayList(); + + if (totalBlocksDug >= 10) + { + upgradeList.add(new LivingArmourUpgradeDigging(0)); + } +// for (int i = 0; i < 5; i++) +// { +// if (totalMovement > (i + 1) * (i + 1) * (i + 1) * 100) +// { +// upgradeList.add(new LivingArmourUpgradeSpeed(i)); +// } +// } + + return upgradeList; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 0f2a2d4e..7dcee028 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -3,7 +3,9 @@ package WayofTime.bloodmagic.proxy; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.obj.OBJLoader; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.common.FMLCommonHandler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.client.render.RenderAlchemyArray; import WayofTime.bloodmagic.client.render.RenderAltar; @@ -11,6 +13,7 @@ import WayofTime.bloodmagic.registry.ModBlocks; import WayofTime.bloodmagic.registry.ModItems; import WayofTime.bloodmagic.tile.TileAlchemyArray; import WayofTime.bloodmagic.tile.TileAltar; +import WayofTime.bloodmagic.util.handler.ClientEventHandler; import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; public class ClientProxy extends CommonProxy @@ -26,6 +29,11 @@ public class ClientProxy extends CommonProxy @Override public void preInit() { + super.preInit(); + Object obj = new ClientEventHandler(); + MinecraftForge.EVENT_BUS.register(obj); + FMLCommonHandler.instance().bus().register(obj); + renderHelper = new InventoryRenderHelper(Constants.Mod.DOMAIN); ModBlocks.initRenders(); diff --git a/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java index 1e7012e3..41ca5eda 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java @@ -1,5 +1,8 @@ package WayofTime.bloodmagic.proxy; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.FMLCommonHandler; +import WayofTime.bloodmagic.util.handler.EventHandler; import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; public class CommonProxy @@ -11,6 +14,9 @@ public class CommonProxy public void preInit() { + Object obj = new EventHandler(); + MinecraftForge.EVENT_BUS.register(obj); + FMLCommonHandler.instance().bus().register(obj); } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java index fdafb7e5..12db643d 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java @@ -1,7 +1,9 @@ package WayofTime.bloodmagic.registry; import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; +import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeDigging; import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeSpeed; +import WayofTime.bloodmagic.livingArmour.StatTrackerDigging; import WayofTime.bloodmagic.livingArmour.StatTrackerMovement; public class ModArmourTrackers @@ -9,7 +11,9 @@ public class ModArmourTrackers public static void init() { LivingArmourHandler.registerStatTracker(StatTrackerMovement.class); + LivingArmourHandler.registerStatTracker(StatTrackerDigging.class); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSpeed(1)); + LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeDigging(0)); } } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java new file mode 100644 index 00000000..527d9385 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java @@ -0,0 +1,10 @@ +package WayofTime.bloodmagic.util.handler; + +public class ClientEventHandler +{ +// @SubscribeEvent +// public void onFOVUpdate(FOVUpdateEvent event) +// { +// event.newfov = event.fov; +// } +} diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java index 5d5acb62..c6e79976 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java @@ -1,18 +1,5 @@ package WayofTime.bloodmagic.util.handler; -import WayofTime.bloodmagic.ConfigHandler; -import WayofTime.bloodmagic.api.BlockStack; -import WayofTime.bloodmagic.api.BloodMagicAPI; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.event.TeleposeEvent; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.block.BlockAltar; -import WayofTime.bloodmagic.item.ItemAltarMaker; -import WayofTime.bloodmagic.item.gear.ItemPackSacrifice; -import WayofTime.bloodmagic.registry.ModBlocks; -import WayofTime.bloodmagic.registry.ModItems; -import WayofTime.bloodmagic.util.ChatUtil; -import WayofTime.bloodmagic.util.helper.TextHelper; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -21,9 +8,27 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.FillBucketEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.client.event.ConfigChangedEvent; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import WayofTime.bloodmagic.ConfigHandler; +import WayofTime.bloodmagic.api.BlockStack; +import WayofTime.bloodmagic.api.BloodMagicAPI; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.event.TeleposeEvent; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.block.BlockAltar; +import WayofTime.bloodmagic.item.ItemAltarMaker; +import WayofTime.bloodmagic.item.armour.ItemLivingArmour; +import WayofTime.bloodmagic.item.gear.ItemPackSacrifice; +import WayofTime.bloodmagic.livingArmour.LivingArmour; +import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeDigging; +import WayofTime.bloodmagic.livingArmour.StatTrackerDigging; +import WayofTime.bloodmagic.registry.ModBlocks; +import WayofTime.bloodmagic.registry.ModItems; +import WayofTime.bloodmagic.util.ChatUtil; +import WayofTime.bloodmagic.util.helper.TextHelper; public class EventHandler { @@ -101,4 +106,24 @@ public class EventHandler if (event.modID.equals(Constants.Mod.MODID)) ConfigHandler.syncConfig(); } + + @SubscribeEvent + public void blockBreakEvent(BlockEvent.BreakEvent event) + { + EntityPlayer player = event.getPlayer(); + if (player != null) + { + ItemStack chestStack = player.getCurrentArmor(2); + if (chestStack != null && chestStack.getItem() instanceof ItemLivingArmour) + { + LivingArmour armour = ItemLivingArmour.armourMap.get(chestStack); + + if (armour != null) + { + StatTrackerDigging.incrementCounter(armour); + LivingArmourUpgradeDigging.hasDug(armour); + } + } + } + } }