summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLance5057 <Lance5057@gmail.com>2015-01-21 20:04:34 -0600
committerLance5057 <Lance5057@gmail.com>2015-01-21 20:04:34 -0600
commitb4eb8f2d65c62afccc898808b44fdddfde0c15d1 (patch)
treeee3a9f47a22418a6778c299cc96b4fedc2265afe /src
parent39642dce74d23f025b71d5766c1ac8489a41a802 (diff)
Startup
I hope I'm doing this right...
Diffstat (limited to 'src')
-rw-r--r--src/api/java/cofh/api/energy/IEnergyContainerItem.java52
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaBlock.java34
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java9
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java28
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java33
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java33
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java24
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java16
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java27
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java7
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java12
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java44
-rw-r--r--src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java21
-rw-r--r--src/api/java/mcp/mobius/waila/api/SpecialChars.java40
-rw-r--r--src/api/java/mcp/mobius/waila/api/package-info.java3
-rw-r--r--src/api/java/morph/api/Ability.java208
-rw-r--r--src/api/java/morph/api/Api.java170
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java113
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java44
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java35
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java71
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java8
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java21
-rw-r--r--src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java72
-rw-r--r--src/api/java/thaumcraft/api/IGoggles.java22
-rw-r--r--src/main/java/gmail/Lance5057/blocks/AeonSteelBlock.java15
-rw-r--r--src/main/java/gmail/Lance5057/blocks/CrestMount.java43
-rw-r--r--src/main/java/gmail/Lance5057/blocks/DogbeariumBlock.java15
-rw-r--r--src/main/java/gmail/Lance5057/blocks/ModelCrestMount.java87
-rw-r--r--src/main/java/gmail/Lance5057/blocks/QueensGoldBlock.java15
-rw-r--r--src/main/java/gmail/Lance5057/blocks/Renderer_CrestMount.java60
-rw-r--r--src/main/java/gmail/Lance5057/blocks/TileEntity_CrestMount.java7
-rw-r--r--src/main/java/gmail/Lance5057/com/HeaterShield.java256
-rw-r--r--src/main/java/gmail/Lance5057/com/RoundShield.java249
-rw-r--r--src/main/java/gmail/Lance5057/com/RoyalGuard.java42
-rw-r--r--src/main/java/gmail/Lance5057/com/Shield.java121
-rw-r--r--src/main/java/gmail/Lance5057/com/mod_TinkersDefense.java312
-rw-r--r--src/main/java/gmail/Lance5057/com/moltenAeonsteelFluid.java59
-rw-r--r--src/main/java/gmail/Lance5057/com/moltenDogbeariumFluid.java59
-rw-r--r--src/main/java/gmail/Lance5057/com/moltenQueensGoldFluid.java59
-rw-r--r--src/main/java/gmail/Lance5057/items/AeonSteelIngot.java12
-rw-r--r--src/main/java/gmail/Lance5057/items/DogbeariumIngot.java11
-rw-r--r--src/main/java/gmail/Lance5057/items/ModelTinkerArmor.java109
-rw-r--r--src/main/java/gmail/Lance5057/items/QueensGoldIngot.java11
-rw-r--r--src/main/java/gmail/Lance5057/items/TinkerArmor.java76
-rw-r--r--src/main/java/gmail/Lance5057/items/TinkerHelm.tcnbin0 -> 1556 bytes
-rw-r--r--src/main/java/gmail/Lance5057/proxy/ClientProxy.java36
-rw-r--r--src/main/java/gmail/Lance5057/proxy/CommonProxy.java21
-rw-r--r--src/main/resources/assets/tinker/lang/en_US.lang3
-rw-r--r--src/main/resources/assets/tinker/textures/items/AeonSteelIngot.pngbin0 -> 545 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/QueensGoldIngot.pngbin0 -> 334 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/broadsword/queensgold_broadsword_accessory.pngbin0 -> 226 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/_shield_binding.pngbin0 -> 311 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/_shield_edge.pngbin0 -> 327 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/_shield_face.pngbin0 -> 230 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_broken.pngbin0 -> 273 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_other.pngbin0 -> 234 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/beheading_shield_effect.pngbin0 -> 317 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/blaze_shield_effect.pngbin0 -> 224 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/diamond_shield_effect.pngbin0 -> 301 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/emerald_shield_effect.pngbin0 -> 229 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/flux_shield_effect.pngbin0 -> 226 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/lapis_shield_effect.pngbin0 -> 224 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/lava_shield_effect.pngbin0 -> 224 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/moss_shield_effect.pngbin0 -> 353 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/necrotic_shield_effect.pngbin0 -> 219 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/piston_shield_effect.pngbin0 -> 294 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/quartz_shield_effect.pngbin0 -> 252 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/redstone_shield_effect.pngbin0 -> 217 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/reinforced_shield_effect.pngbin0 -> 357 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/silk_shield_effect.pngbin0 -> 336 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/smite_shield_effect.pngbin0 -> 202 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/heatershield/spider_shield_effect.pngbin0 -> 216 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/longsword/queensgold_longsword_accessory.pngbin0 -> 374 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/rapier/queensgold_rapier_accessory.pngbin0 -> 265 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/_shield_boss.pngbin0 -> 208 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/_shield_edge.pngbin0 -> 338 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/_shield_face.pngbin0 -> 286 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/_shield_face_broken.pngbin0 -> 331 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/beheading_shield_effect.pngbin0 -> 291 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/diamond_shield_effect.pngbin0 -> 265 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/emerald_shield_effect.pngbin0 -> 234 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/flux_shield_effect.pngbin0 -> 264 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/lapis_shield_effect.pngbin0 -> 280 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/lava_shield_effect.pngbin0 -> 230 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/moss_shield_effect.pngbin0 -> 376 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/necrotic_shield_effect.pngbin0 -> 283 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/piston_shield_effect.pngbin0 -> 298 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/quartz_shield_effect.pngbin0 -> 214 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/redstone_shield_effect.pngbin0 -> 219 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/reinforced_shield_effect.pngbin0 -> 294 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/silk_shield_effect.pngbin0 -> 300 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/smite_shield_effect.pngbin0 -> 230 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/spider_shield_effect.pngbin0 -> 217 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/steel_shield_boss.pngbin0 -> 261 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/steel_shield_edge.pngbin0 -> 396 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/wood_shield_boss.pngbin0 -> 236 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/wood_shield_edge.pngbin0 -> 745 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/wood_shield_face.pngbin0 -> 485 bytes
-rw-r--r--src/main/resources/assets/tinker/textures/items/shield/wood_shield_face_broken.pngbin0 -> 515 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/lang/en_US.lang20
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.pngbin0 -> 923 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcnbin0 -> 2094 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.pngbin0 -> 823 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.pngbin0 -> 492 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.pngbin0 -> 633 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.pngbin0 -> 533 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.pngbin0 -> 767 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.pngbin0 -> 259 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.pngbin0 -> 10409 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png.mcmeta45
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.pngbin0 -> 9681 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png.mcmeta5
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.pngbin0 -> 8270 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png.mcmeta45
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.pngbin0 -> 8833 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png.mcmeta5
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.pngbin0 -> 10664 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png.mcmeta45
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.pngbin0 -> 10141 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png.mcmeta5
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/gui/icons.pngbin0 -> 8692 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.pngbin0 -> 545 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.pngbin0 -> 374 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.pngbin0 -> 334 bytes
-rw-r--r--src/main/resources/assets/tinkersdefense/textures/items/longsword/queensgold_longsword_accessory.pngbin0 -> 364 bytes
-rw-r--r--src/main/resources/mcmod.info14
127 files changed, 3009 insertions, 0 deletions
diff --git a/src/api/java/cofh/api/energy/IEnergyContainerItem.java b/src/api/java/cofh/api/energy/IEnergyContainerItem.java
new file mode 100644
index 0000000..0bcfda6
--- /dev/null
+++ b/src/api/java/cofh/api/energy/IEnergyContainerItem.java
@@ -0,0 +1,52 @@
+package cofh.api.energy;
+
+import net.minecraft.item.ItemStack;
+
+/**
+ * Implement this interface on Item classes that support external manipulation of their internal energy storages.
+ *
+ * A reference implementation is provided {@link ItemEnergyContainer}.
+ *
+ * @author King Lemming
+ *
+ */
+public interface IEnergyContainerItem {
+
+ /**
+ * Adds energy to a container item. Returns the quantity of energy that was accepted. This should always return 0 if the item cannot be externally charged.
+ *
+ * @param container
+ * ItemStack to be charged.
+ * @param maxReceive
+ * Maximum amount of energy to be sent into the item.
+ * @param simulate
+ * If TRUE, the charge will only be simulated.
+ * @return Amount of energy that was (or would have been, if simulated) received by the item.
+ */
+ int receiveEnergy(ItemStack container, int maxReceive, boolean simulate);
+
+ /**
+ * Removes energy from a container item. Returns the quantity of energy that was removed. This should always return 0 if the item cannot be externally
+ * discharged.
+ *
+ * @param container
+ * ItemStack to be discharged.
+ * @param maxExtract
+ * Maximum amount of energy to be extracted from the item.
+ * @param simulate
+ * If TRUE, the discharge will only be simulated.
+ * @return Amount of energy that was (or would have been, if simulated) extracted from the item.
+ */
+ int extractEnergy(ItemStack container, int maxExtract, boolean simulate);
+
+ /**
+ * Get the amount of energy currently stored in the container item.
+ */
+ int getEnergyStored(ItemStack container);
+
+ /**
+ * Get the max amount of energy that can be stored in the container item.
+ */
+ int getMaxEnergyStored(ItemStack container);
+
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java
new file mode 100644
index 0000000..8b4dd13
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java
@@ -0,0 +1,34 @@
+package mcp.mobius.waila.api;
+
+import java.util.List;
+
+import net.minecraft.item.ItemStack;
+
+@Deprecated
+public interface IWailaBlock {
+ /*
+ * Use this method to return an item stack in case the default lookup system fails.
+ * Return null if you want to use the default lookup system.
+ * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities
+ */
+ ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config);
+
+ /* Waila HUD is divided into 3 zones. The head corresponds to the item name,
+ * body to where you mostly want to put informations, and I reserve the tail for modname display
+ */
+
+ /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD.
+ * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack().
+ * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info.
+ * currenttip represents the current list of text lines in the tooltip zone.
+ * For example, getWailaHead() will have the current item name as currenttip.
+ * You can modify the tips, add more, remove some, etc.
+ * When you are done, just returns the currenttip and it will display in Waila.
+ *
+ * Always return the currenttip is you don't want to modify the current zone.
+ */
+
+ List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java
new file mode 100644
index 0000000..935d475
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java
@@ -0,0 +1,9 @@
+package mcp.mobius.waila.api;
+
+import net.minecraft.item.ItemStack;
+
+public interface IWailaBlockDecorator {
+
+ void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config);
+
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java
new file mode 100644
index 0000000..faede63
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java
@@ -0,0 +1,28 @@
+package mcp.mobius.waila.api;
+
+import java.util.HashMap;
+import java.util.Set;
+
+public interface IWailaConfigHandler {
+ /* Returns a set of all the currently loaded modules in the config handler */
+ public Set<String> getModuleNames();
+
+ /* Returns all the currently available options for a given module */
+ public HashMap<String, String> getConfigKeys(String modName);
+
+ /* Add a new option to a given module
+ *
+ * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc)
+ * key is the config key (ie : bc.tankcontent, ic2.inputvalue)
+ * name is the human readable name of the option (ie : "Tank content", "Max EU Input")
+ * */
+ //public void addConfig(String modName, String key, String name);
+
+ /* Returns the current value of an option (true/false) with a default value defvalue if not set*/
+ public boolean getConfig(String key, boolean defvalue);
+
+ /* Returns the current value of an option (true/false) with a default value true if not set*/
+ public boolean getConfig(String key);
+
+ //public void setConfig(String key, boolean value);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java
new file mode 100644
index 0000000..0288624
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java
@@ -0,0 +1,33 @@
+package mcp.mobius.waila.api;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+/* The Accessor is used to get some basic data out of the game without having to request
+ * direct access to the game engine.
+ * It will also return things that are unmodified by the overriding systems (like getWailaStack).
+ */
+
+public interface IWailaDataAccessor {
+
+ World getWorld();
+ EntityPlayer getPlayer();
+ Block getBlock();
+ int getBlockID();
+ int getMetadata();
+ TileEntity getTileEntity();
+ MovingObjectPosition getPosition();
+ Vec3 getRenderingPosition();
+ NBTTagCompound getNBTData();
+ int getNBTInteger(NBTTagCompound tag, String keyname);
+ double getPartialFrame();
+ ForgeDirection getSide();
+ ItemStack getStack();
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java
new file mode 100644
index 0000000..4859d9c
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java
@@ -0,0 +1,33 @@
+package mcp.mobius.waila.api;
+
+import java.util.List;
+
+import net.minecraft.item.ItemStack;
+
+public interface IWailaDataProvider{
+ /*
+ * Use this method to return an item stack in case the default lookup system fails.
+ * Return null if you want to use the default lookup system.
+ * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities
+ */
+ ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config);
+
+ /* Waila HUD is divided into 3 zones. The head corresponds to the item name,
+ * body to where you mostly want to put informations, and I reserve the tail for modname display
+ */
+
+ /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD.
+ * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack().
+ * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info.
+ * currenttip represents the current list of text lines in the tooltip zone.
+ * For example, getWailaHead() will have the current item name as currenttip.
+ * You can modify the tips, add more, remove some, etc.
+ * When you are done, just returns the currenttip and it will display in Waila.
+ *
+ * Always return the currenttip is you don't want to modify the current zone.
+ */
+
+ List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java
new file mode 100644
index 0000000..788067a
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java
@@ -0,0 +1,24 @@
+package mcp.mobius.waila.api;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+
+/* The Accessor is used to get some basic data out of the game without having to request
+ * direct access to the game engine.
+ * It will also return things that are unmodified by the overriding systems (like getWailaStack).
+ */
+
+public interface IWailaEntityAccessor {
+ World getWorld();
+ EntityPlayer getPlayer();
+ Entity getEntity();
+ MovingObjectPosition getPosition();
+ Vec3 getRenderingPosition();
+ NBTTagCompound getNBTData();
+ int getNBTInteger(NBTTagCompound tag, String keyname);
+ double getPartialFrame();
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java
new file mode 100644
index 0000000..9548289
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java
@@ -0,0 +1,16 @@
+package mcp.mobius.waila.api;
+
+import java.util.List;
+
+import net.minecraft.entity.Entity;
+
+public interface IWailaEntityProvider {
+
+ /* A way to get an override on the entity returned by the raytracing */
+ Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config);
+
+ /* The classical HEAD/BODY/TAIL text getters */
+ List<String> getWailaHead(Entity entity, List<String> currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaBody(Entity entity, List<String> currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaTail(Entity entity, List<String> currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java
new file mode 100644
index 0000000..19e01fa
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java
@@ -0,0 +1,27 @@
+package mcp.mobius.waila.api;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+
+/* The Accessor is used to get some basic data out of the game without having to request
+ * direct access to the game engine.
+ * It will also return things that are unmodified by the overriding systems (like getWailaStack).
+ */
+
+public interface IWailaFMPAccessor {
+ World getWorld();
+ EntityPlayer getPlayer();
+ TileEntity getTileEntity();
+ MovingObjectPosition getPosition();
+ NBTTagCompound getNBTData();
+ NBTTagCompound getFullNBTData();
+ int getNBTInteger(NBTTagCompound tag, String keyname);
+ double getPartialFrame();
+ Vec3 getRenderingPosition();
+ String getID();
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java
new file mode 100644
index 0000000..839af31
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java
@@ -0,0 +1,7 @@
+package mcp.mobius.waila.api;
+
+import net.minecraft.item.ItemStack;
+
+public interface IWailaFMPDecorator {
+ void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java
new file mode 100644
index 0000000..232c83e
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java
@@ -0,0 +1,12 @@
+package mcp.mobius.waila.api;
+
+import java.util.List;
+
+import net.minecraft.item.ItemStack;
+
+public interface IWailaFMPProvider {
+ /* The classical HEAD/BODY/TAIL text getters */
+ List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config);
+ List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java
new file mode 100644
index 0000000..162aeb6
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java
@@ -0,0 +1,44 @@
+package mcp.mobius.waila.api;
+
+public interface IWailaRegistrar {
+ /* Add a config option in the section modname with displayed text configtext and access key keyname */
+ public void addConfig(String modname, String keyname, String configtext);
+ public void addConfigRemote(String modname, String keyname, String configtext);
+ public void addConfig(String modname, String keyname);
+ public void addConfigRemote(String modname, String keyname);
+
+ /* Register a stack overrider for the given blockID */
+ public void registerStackProvider(IWailaDataProvider dataProvider, Class block);
+
+ /* Same thing, but works on a class hierarchy instead */
+ public void registerHeadProvider (IWailaDataProvider dataProvider, Class block);
+ public void registerBodyProvider (IWailaDataProvider dataProvider, Class block);
+ public void registerTailProvider (IWailaDataProvider dataProvider, Class block);
+
+ /* Entity text registration methods */
+ public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity);
+ public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity);
+ public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity);
+ public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity);
+
+ /* FMP Providers */
+ public void registerHeadProvider(IWailaFMPProvider dataProvider, String name);
+ public void registerBodyProvider(IWailaFMPProvider dataProvider, String name);
+ public void registerTailProvider(IWailaFMPProvider dataProvider, String name);
+
+ /* The block decorators */
+ public void registerDecorator (IWailaBlockDecorator decorator, Class block);
+ public void registerDecorator (IWailaFMPDecorator decorator, String name);
+
+ /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent).
+ * Accept * as a ending wildcard
+ * registerNBTKey("bob.*", MyBlock.class)
+ * registerNBTKey("data.life", MyEntity.class)
+ * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5
+ * */
+ public void registerSyncedNBTKey(String key, Class target);
+
+ /* UNUSED FOR NOW (Will be used for the ingame wiki */
+ public void registerDocTextFile (String filename);
+ public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java
new file mode 100644
index 0000000..f790649
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java
@@ -0,0 +1,21 @@
+package mcp.mobius.waila.api;
+
+import java.util.LinkedHashMap;
+
+import net.minecraft.item.ItemStack;
+
+public interface IWailaSummaryProvider {
+ /* This interface is used to control the display data in the description screen */
+
+ /* BASIC TOOLS & ITEMS DATA */
+ //EnumToolMaterial getMaterial(ItemStack stack);
+ //String getMaterialName(ItemStack stack);
+ //String getEffectiveBlock(ItemStack stack);
+ //int getHarvestLevel(ItemStack stack);
+ //float getEfficiencyOnProperMaterial(ItemStack stack);
+ //int getEnchantability(ItemStack stack);
+ //int getDamageVsEntity(ItemStack stack);
+ //int getDurability(ItemStack stack);
+
+ LinkedHashMap<String, String> getSummary(ItemStack stack, LinkedHashMap<String, String> currentSummary, IWailaConfigHandler config);
+}
diff --git a/src/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/java/mcp/mobius/waila/api/SpecialChars.java
new file mode 100644
index 0000000..5bd92a8
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/SpecialChars.java
@@ -0,0 +1,40 @@
+package mcp.mobius.waila.api;
+
+public class SpecialChars {
+
+ public static String MCStyle = "\u00A7";
+
+ public static String BLACK = MCStyle + "0";
+ public static String DBLUE = MCStyle + "1";
+ public static String DGREEN = MCStyle + "2";
+ public static String DAQUA = MCStyle + "3";
+ public static String DRED = MCStyle + "4";
+ public static String DPURPLE = MCStyle + "5";
+ public static String GOLD = MCStyle + "6";
+ public static String GRAY = MCStyle + "7";
+ public static String DGRAY = MCStyle + "8";
+ public static String BLUE = MCStyle + "9";
+ public static String GREEN = MCStyle + "a";
+ public static String AQUA = MCStyle + "b";
+ public static String RED = MCStyle + "c";
+ public static String LPURPLE = MCStyle + "d";
+ public static String YELLOW = MCStyle + "e";
+ public static String WHITE = MCStyle + "f";
+
+ public static String OBF = MCStyle + "k";
+ public static String BOLD = MCStyle + "l";
+ public static String STRIKE = MCStyle + "m";
+ public static String UNDER = MCStyle + "n";
+ public static String ITALIC = MCStyle + "o";
+ public static String RESET = MCStyle + "r";
+
+ public static String WailaStyle = "\u00A4";
+ public static String WailaIcon = "\u00A5";
+ public static String TAB = WailaStyle + WailaStyle +"a";
+ public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b";
+ public static String ALIGNCENTER = WailaStyle + WailaStyle +"c";
+ public static String HEART = WailaStyle + WailaIcon +"a";
+ public static String HHEART = WailaStyle + WailaIcon +"b";
+ public static String EHEART = WailaStyle + WailaIcon +"c";
+
+}
diff --git a/src/api/java/mcp/mobius/waila/api/package-info.java b/src/api/java/mcp/mobius/waila/api/package-info.java
new file mode 100644
index 0000000..9b5e663
--- /dev/null
+++ b/src/api/java/mcp/mobius/waila/api/package-info.java
@@ -0,0 +1,3 @@
+@API(apiVersion="1.0",owner="Waila",provides="WailaAPI")
+package mcp.mobius.waila.api;
+import cpw.mods.fml.common.API; \ No newline at end of file
diff --git a/src/api/java/morph/api/Ability.java b/src/api/java/morph/api/Ability.java
new file mode 100644
index 0000000..36a75e9
--- /dev/null
+++ b/src/api/java/morph/api/Ability.java
@@ -0,0 +1,208 @@
+package morph.api;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.ResourceLocation;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+/**
+ *
+ * Abstract ability class.
+ * Think of it like the Entity class, extend it to make your own types.
+ * Some abilities may seem more like traits, but let's just call it an ability for simplicity's sake.
+ * Please take note that entities inherit their superclass' abilities.
+ * @author iChun
+ *
+ */
+public abstract class Ability
+{
+ /**
+ * Ability parent field. Will be null for instances used in registration. Ability is then cloned and parent assigned later on.
+ */
+ private EntityLivingBase parent;
+
+ /**
+ * Flag for Ability activity. If true, tick/postRender/kill will notbe called.
+ */
+ public boolean inactive;
+
+ /**
+ * Basic constructor (but you didn't really need me to tell you that ;D )
+ */
+ public Ability()
+ {
+ parent = null;
+ }
+
+ /**
+ * Function for mod mob support, with args.
+ */
+ public Ability parse(String[] args) { return this; }
+
+ /**
+ * Since parent is private it needs a setter.
+ * @param newParent
+ */
+ public void setParent(EntityLivingBase ent)
+ {
+ parent = ent;
+ }
+
+ /**
+ * Get's the parent entity for this ability
+ * @return Entity the ability takes effect on
+ */
+ public EntityLivingBase getParent()
+ {
+ return parent;
+ }
+
+ /**
+ * Each ability has to return a String type.
+ * This is used for comparison, saving, as well as construction/loading of Ability.
+ * Think of it like the way Minecraft registers entities.
+ * @return Ability type
+ */
+ public abstract String getType();
+
+ /**
+ * Ticks every world tick, basically an ability onUpdate, similar to Entity's onUpdate.
+ * Will only tick if getParent() is not null.
+ * Please remember that getParent is not necessarily a player.
+ */
+ public abstract void tick();
+
+ /**
+ * Called when the ability is finally removed when the parent demorphs or morphs into a state that does not have this ability type.
+ * This will NOT be called if the parent morphs into another morph that has this type of ability.
+ */
+ public abstract void kill();
+
+ /**
+ * Creates a copy of this ability for use with parents.
+ * As previously stated before the ability instance used during registration is a base so it needs to be cloned for use with parents.
+ */
+ public abstract Ability clone();
+
+ /**
+ * Return true for this if you need an inactive copy of this morph in-between morph states (abilities of the next morph are only swapped over when morph is complete)
+ * Currently used for AbilitySwim to adjust the fog render.
+ * @return requiresInactiveClone
+ */
+ public boolean requiresInactiveClone()
+ {
+ return false;
+ }
+
+ /**
+ * Saving of ability to NBTTagCompound.
+ * Mainly used for synching Abilities between the client-server for mod mobs which do not use the API to add abilities.
+ * The ability type (getType()) is appended to nbt before function is called.
+ * Not actually used.
+ * @param NBTTagCompound saveData
+ */
+ public abstract void save(NBTTagCompound tag);
+
+ /**
+ * Loading of ability from NBTTagCompound.
+ * Mainly used to load custom fields from NBT.
+ * Not actually used.
+ * @param NBTTagCompound saveData
+ */
+ public abstract void load(NBTTagCompound tag);
+
+ /**
+ * Rendering to be done post-render.
+ * EG: Used by AbilitySwim to render air bubbles whilst on land.
+ */
+ @SideOnly(Side.CLIENT)
+ public abstract void postRender();
+
+ /**
+ * Icon location for ability. Can be null.
+ * Mod's default icons are 32x32. Can be any resolution though.
+ * @return resourcelocation for icon
+ */
+ @SideOnly(Side.CLIENT)
+ public abstract ResourceLocation getIcon();
+
+ @SideOnly(Side.CLIENT)
+ public boolean entityHasAbility(EntityLivingBase living)
+ {
+ return true;
+ }
+
+ /**
+ * Registers the ability so the mod can look up the class when attempting to load Ability save data.
+ * Call this no later than PostInit.
+ * @param ability type
+ * @param AbilityClass
+ */
+ public static void registerAbility(String name, Class<? extends Ability> clz)
+ {
+ try {
+ Class.forName("morph.common.ability.AbilityHandler").getDeclaredMethod("registerAbility", String.class, Class.class).invoke(null, name, clz);
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Maps abilities to an Entity.
+ * Adds on to the previous ability list, so this allows you to add abilities to Entity classes which already have abilities mapped.
+ * However, only one ability of the same type is allowed for each entity. This method will overwrite abilities of the same type that were already mapped.
+ * This will also register new abilities which were not registered before (just in case).
+ * Call this no later than PostInit.
+ * @param entClass
+ * @param abilities
+ */
+ public static void mapAbilities(Class<? extends EntityLivingBase> entClass, Ability...abilities)
+ {
+ try {
+ Class.forName("morph.common.ability.AbilityHandler").getDeclaredMethod("mapAbilities", Class.class, Ability[].class).invoke(null, entClass, abilities);
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Superman's kryptonite.
+ * @param Entity class to remove ability from
+ * @param Ability type
+ */
+ public static void removeAbility(Class<? extends EntityLivingBase> entClass, String type)
+ {
+ try {
+ Class.forName("morph.common.ability.AbilityHandler").getDeclaredMethod("removeAbility", Class.class, String.class).invoke(null, entClass, type);
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Checks to see if the entity class has a mapped ability type.
+ * @param entClass
+ * @param Ability type
+ * @return Entity class has ability type
+ */
+ public static boolean hasAbility(Class<? extends EntityLivingBase> entClass, String type)
+ {
+ try {
+ return (Boolean)Class.forName("morph.common.ability.AbilityHandler").getDeclaredMethod("hasAbility", Class.class, String.class).invoke(null, entClass, type);
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
+ * Creates an ability by type.
+ * Check out AbilityHandler to see each Ability type and the parse function in their respective classes for the arguments.
+ * @return
+ */
+ public static Ability createNewAbilityByType(String type, String[] arguments)
+ {
+ try {
+ return (Ability)Class.forName("morph.common.ability.AbilityHandler").getDeclaredMethod("createNewAbilityByType", String.class, String[].class).invoke(null, type, arguments);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+}
diff --git a/src/api/java/morph/api/Api.java b/src/api/java/morph/api/Api.java
new file mode 100644
index 0000000..1cfb49d
--- /dev/null
+++ b/src/api/java/morph/api/Api.java
@@ -0,0 +1,170 @@
+package morph.api;
+
+import net.minecraft.client.entity.AbstractClientPlayer;
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.util.ResourceLocation;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public final class Api
+{
+ /**
+ * Returns if a player is has a morph. If morph progress < 1.0F, player is mid-morphing.
+ * Players demorphing are considered as a player with a morph until the demorph is complete.
+ * @param Player Username
+ * @param Clientside (false for Serverside)
+ */
+ public static boolean hasMorph(String playerName, boolean isClient)
+ {
+ try {
+ return (Boolean)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("hasMorph", String.class, boolean.class).invoke(null, playerName, isClient);
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns morph progression of a player. Time per morph is 80 ticks.
+ * If player does not have a morph, 1.0F will be returned.
+ * @param Player Username
+ * @param Clientside (false for Serverside)
+ */
+ public static float morphProgress(String playerName, boolean isClient)
+ {
+ try {
+ return (Float)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("morphProgress", String.class, boolean.class).invoke(null, playerName, isClient);
+ } catch (Exception e) {
+ return 1.0F;
+ }
+ }
+
+ /**
+ * Returns previous entity instance used to render the morph.
+ * If player does not have a previous morph state, null will be returned.
+ * @param Player Username
+ * @param Clientside (false for Serverside)
+ */
+ public static EntityLivingBase getPrevMorphEntity(String playerName, boolean isClient)
+ {
+ try {
+ return (EntityLivingBase)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("getPrevMorphEntity", String.class, boolean.class).invoke(null, playerName, isClient);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns entity instance used to render the morph.
+ * If player does not have a morph, null will be returned.
+ * @param Player Username
+ * @param Clientside (false for Serverside)
+ */
+ public static EntityLivingBase getMorphEntity(String playerName, boolean isClient)
+ {
+ try {
+ return (EntityLivingBase)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("getMorphEntity", String.class, boolean.class).invoke(null, playerName, isClient);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Blacklists an entity from being morphed into.
+ * Previously saved morphs of the classtype will not be removed.
+ * @param Class (extends EntityLivingBase)
+ */
+ public static void blacklistEntity(Class<? extends EntityLivingBase> clz)
+ {
+ try {
+ Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("blacklistEntity", Class.class).invoke(null, clz);
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Forces a player to morph into an EntityLivingBase, also adds said entity to the morph list.
+ * Called Serverside only.
+ * @param player
+ * @param living
+ * @return morphSuccessful
+ */
+ public static boolean forceMorph(EntityPlayerMP player, EntityLivingBase living)
+ {
+ try {
+ return (Boolean)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("forceMorph", EntityPlayerMP.class, EntityLivingBase.class).invoke(null, player, living);
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
+ * Forces a player to demorph.
+ * Called Serverside only.
+ * @param player
+ */
+ public static void forceDemorph(EntityPlayerMP player)
+ {
+ try {
+ Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("forceDemorph", EntityPlayerMP.class).invoke(null, player);
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Checks if the entity passed on is a Morph.
+ * If it is, the player name will be passed, else null.
+ * @param EntityLivingBase instance
+ * @param Clientside (false for Serverside)
+ */
+ public static String isEntityAMorph(EntityLivingBase living, boolean isClient)
+ {
+ try {
+ return (String)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("isEntityAMorph", EntityLivingBase.class, boolean.class).invoke(null, living, isClient);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Allows the rendering of the next player rendered.
+ * Prevents Morph from cancelling the player render event to render the morphed entity.
+ */
+ public static void allowNextPlayerRender()
+ {
+ try {
+ Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("allowNextPlayerRender").invoke(null);
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Returns the black grainy morph skin that overlays the player when the player is morphing
+ * @return Morph Skin Resource Location
+ */
+ @SideOnly(Side.CLIENT)
+ public static ResourceLocation getMorphSkinTexture()
+ {
+ try {
+ return (ResourceLocation)Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("getMorphSkinTexture").invoke(null);
+ } catch (Exception e) {
+ return AbstractClientPlayer.locationStevePng;
+ }
+ }
+
+ /**
+ * Assign a specific arm to a model for rendering in First Person.
+ * @param model Model which arm you are registering for
+ * @param arm The arm in a ModelRenderer form.
+ */
+ @SideOnly(Side.CLIENT)
+ public static void registerArmForModel(ModelBase model, ModelRenderer arm)
+ {
+ try {
+ Class.forName("morph.common.core.ApiHandler").getDeclaredMethod("registerArmForModel", ModelBase.class, ModelRenderer.class).invoke(null, model, arm);
+ } catch (Exception e) {
+ }
+ }
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java b/src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java
new file mode 100644
index 0000000..8eff88d
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/FactoryRegistry.java
@@ -0,0 +1,113 @@
+package powercrystals.minefactoryreloaded.api;
+
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.event.FMLInterModComms;
+import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+/**
+ * @author PowerCrystals
+ *
+ * Class used to register plants and other farming-related things with MFR. Will do nothing if MFR does not exist.
+ *
+ */
+public class FactoryRegistry
+{
+ /*
+ * This may be called at any time during pre-init, init or post-init, assuming all blocks and items
+ * that are being accessed from the registry have been appropriately registered.
+ * Possible messages:
+ *
+ * // Registration:
+ * addLaserPreferredOre | NBTTag with an ItemStack saved on it, with the color on the "value" attribute,
+ * | A ValuedItem with item and value set.
+ * registerAutoSpawnerBlacklist | The String identifier of an entity,
+ * | A subclass of EntityLivingBase.
+ * registerFertilizable | An instance of IFactoryFertilizable.
+ * registerFertilizer | An instance of IFactoryFertilizer.
+ * registerFruitLog | The String identifier of a block.
+ * registerGrindable | An instance of IFactoryGrindable.
+ * registerGrinderBlacklist | A subclass of EntityLivingBase.
+ * registerHarvestable | An instance of IFactoryHarvestable.
+ * registerLaserOre | NBTTag with an ItemStack saved on it, with the weight on the "value" attribute,
+ * | A ValuedItem with item and value set.
+ * registerLiquidDrinkHandler | A ValuedItem with key and object set; ILiquidDrinkHandler expected.
+ * registerMobEggHandler | An instance of IMobEggHandler.
+ * registerPickableFruit | An instance of IFactoryFruit.
+ * registerPlantable | An instance of IFactoryPlantable.
+ * registerRanchable | An instance of IFactoryRanchable.
+ * registerRedNetLogicCircuit | An instance of IRedNetLogicCircuit.
+ * registerRubberTreeBiome | The biomeName field of a biome to white list for rubber trees to spawn in.
+ * registerSafariNetBlacklist | A subclass of EntityLivingBase.
+ * registerSafariNetHandler | An instance of ISafariNetHandler.
+ * registerSludgeDrop | NBTTag with an ItemStack saved on it, with the weight on the "value" attribute,
+ * | A ValuedItem with item and value set.
+ * registerSpawnHandler | An instance of IMobSpawnHandler.
+ * registerVillagerTradeMob | An instance of IRandomMobProvider.
+ *
+ * // Simple implementations:
+ * { Harvestables
+ * registerHarvestable_Standard | The String identifier of a block.
+ * registerHarvestable_Log | The String identifier of a block.
+ * registerHarvestable_Leaves | The String identifier of a block.
+ * registerHarvestable_Vine | The String identifier of a block.
+ * registerHarvestable_Shrub | The String identifier of a block.
+ * registerHarvestable_Mushroom | The String identifier of a block.
+ * registerHarvestable_Crop | An ItemStack of a block, with a damage value indicating the meta value to harvest at.
+ * | A ValuedItem with value and object set; Block expected.
+ * registerHarvestable_Gourd | An NBTTag with the stem and fruit attributes, both String identifiers of blocks.
+ * }
+ * { Plantables
+ * registerPlantable_Standard | An NBTTag with the seed (Item, String identifier), and
+ * crop (Block, String identifier) attributes set, optionally
+ * also having the meta (Integer, placed metadata value) attribute set.
+ * No special checks for location, just sustainability.
+ * registerPlantable_Crop | An NBTTag with the seed (Item, String identifier), and
+ * crop (Block, String identifier) attributes set, optionally
+ * also having the meta (Integer, placed metadata value) attribute set.
+ * Will automatically hoe dirt and grass into farmland when planting.
+ * registerPlantable_Sapling | An NBTTag with the sapling (Block, String identifier), and optionally
+ * the seed (Item, String identifier) attributes set.
+ * }
+ * { Fertilizer
+ * registerFertilizer | An NBTTag with the fert (Item, String identifier), meta (Integer), and
+ * type (Integer, index into FertilizerType.values()) attributes set.
+ * }
+ * { Fertilizables
+ * registerFertilizable_Grass | The String identifier of a block. Will bonemeal the block and expect
+ * tall grass be planted above and around it, must be IGrowable. Works with
+ * the GrowPlant and Grass type fertilizers, not recommended for crop plants.
+ * registerFertilizable_Gourd | The String identifier of a block. Must be IGrowable, and expects identical
+ * behavior to vanilla stems. Works with the GrowPlant fertilizers.
+ * registerFertilizable_Crop | An NBTTag with the plant (Block, String identifier, IGrowable), and
+ * meta (Integer, max growth phase) attributes set, optionally also having
+ * the type (Integer, index into FertilizerType) attribute set.
+ * registerFertilizable_Cocoa | An NBTTag with the plant (Block, String identifier), and optionally also
+ * the type (Integer, index into FertilizerType) attributes set.
+ * Expects metadata of the block to exactly match cocoa pods.
+ * registerFertilizable_Standard | An NBTTag with the plant (Block, String identifier, IGrowable), and
+ * optionally also the type (Integer, index into FertilizerType) attributes set.
+ * Expects the block to change when successfully grown (e.g., saplings).
+ * }
+ */
+ public static void sendMessage(String message, Object value)
+ {
+ if (!Loader.isModLoaded("MineFactoryReloaded") ||
+ Loader.instance().activeModContainer() == null)
+ return;
+ try
+ {
+ Method m = FMLInterModComms.class.getDeclaredMethod("enqueueMessage", Object.class, String.class, IMCMessage.class);
+ m.setAccessible(true);
+ Constructor<IMCMessage> c = IMCMessage.class.getDeclaredConstructor(String.class, Object.class);
+ c.setAccessible(true);
+ m.invoke(null, Loader.instance().activeModContainer(), "MineFactoryReloaded", c.newInstance(message, value));
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java b/src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java
new file mode 100644
index 0000000..a56208e
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/HarvestType.java
@@ -0,0 +1,44 @@
+package powercrystals.minefactoryreloaded.api;
+
+/**
+ * @author PowerCrystals
+ *
+ * Determines what algorithm the Harvester uses when it encounters this IFactoryHarvestable in the world.
+ */
+public enum HarvestType
+{
+ /**
+ * Just break the single block - no special action needed. e.g. Carrots, flowers, wheat.
+ */
+ Normal,
+ /**
+ * Search for harvestable blocks adjacent to this block but leave this block. e.g. Pumpkin, melon
+ */
+ Gourd,
+ /**
+ * Search for identical blocks above.
+ */
+ Column,
+ /**
+ * Search for identical blocks above but leave the bottom one for the future. e.g. Cactus, sugarcane.
+ */
+ LeaveBottom,
+ /**
+ * This block is the base of a tree and the harvester should enter tree-cutting mode.
+ */
+ Tree,
+ /**
+ * This block is the base of the tree and the harvester should enter tree-cutting mode.
+ * The tree is searched for in the negative y axis instead.
+ */
+ TreeFlipped,
+ /**
+ * This block is part of a tree as above.
+ */
+ TreeLeaf,
+ /**
+ * This block is part of a tree as above, but fruits are cut before logs. e.g. cocoa
+ * The tree is not searched for.
+ */
+ TreeFruit
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
new file mode 100644
index 0000000..edfb8c9
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
@@ -0,0 +1,35 @@
+package powercrystals.minefactoryreloaded.api;
+
+import java.util.List;
+import java.util.Random;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.world.World;
+
+/**
+ * @author PowerCrystals
+ *
+ * Defines a grindable entity for the Grinder.
+ */
+public interface IFactoryGrindable
+{
+ /**
+ * @return The class that this grindable instance is handling. This must be a subtype of EntityLivingBase or the entity will never
+ * be noticed by the Grinder.
+ */
+ public Class<? extends EntityLivingBase> getGrindableEntity();
+
+ /**
+ * @param world The world this entity is in.
+ * @param entity The entity instance being ground.
+ * @param random A Random instance.
+ * @return The drops generated when this entity is killed.
+ */
+ public List<MobDrop> grind(World world, EntityLivingBase entity, Random random);
+
+ /**
+ * @param entity The entity instance being ground.
+ * @return Whether this entity has been fully processed or not.
+ */
+ public boolean processEntity(EntityLivingBase entity);
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java
new file mode 100644
index 0000000..d4e620a
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java
@@ -0,0 +1,71 @@
+package powercrystals.minefactoryreloaded.api;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+/**
+ * @author PowerCrystals
+ *
+ * Defines a harvestable block for the Harvester.
+ */
+public interface IFactoryHarvestable
+{
+ /**
+ * @return The block this harvestable instance is managing.
+ */
+ public Block getPlant();
+
+ /**
+ * @return The type of harvest the Harvester should perform on this block.
+ */
+ public HarvestType getHarvestType();
+
+ /**
+ * @return Whether or not the Harvester should break the block when harvesting. If false, no changes will be performed by the Harvester itself.
+ */
+ public boolean breakBlock();
+
+ /**
+ * @param world The world this block is in.
+ * @param harvesterSettings The harvester's current settings. Do not modify these.
+ * @param x The X coordinate of the block being harvested.
+ * @param y The Y coordinate of the block being harvested.
+ * @param z The Z coordinate of the block being harvested.
+ * @return True if this block can be harvested.
+ */
+ public boolean canBeHarvested(World world, Map<String, Boolean> harvesterSettings, int x, int y, int z);
+
+ /**
+ * @param world The world this block is in.
+ * @param rand A Random instance to use when generating drops.
+ * @param harvesterSettings The harvester's current settings. Do not modify these.
+ * @param x The X coordinate of the block being harvested.
+ * @param y The Y coordinate of the block being harvested.
+ * @param z The Z coordinate of the block being harvested.
+ * @return The drops generated by breaking this block. For a default implementation, calling Block.getBlockDropped() is usually sufficient.
+ */
+ public List<ItemStack> getDrops(World world, Random rand, Map<String, Boolean> harvesterSettings, int x, int y, int z);
+
+ /**
+ * Called before the block is going to be harvested. Usually empty.
+ * @param world The world this block is in.
+ * @param x The X coordinate of the block being harvested.
+ * @param y The Y coordinate of the block being harvested.
+ * @param z The Z coordinate of the block being harvested.
+ */
+ public void preHarvest(World world, int x, int y, int z);
+
+ /**
+ * Called after the block is going to be harvested. Used to re-till soil, for example.
+ * @param world The world this block is in.
+ * @param x The X coordinate of the block being harvested.
+ * @param y The Y coordinate of the block being harvested.
+ * @param z The Z coordinate of the block being harvested.
+ */
+ public void postHarvest(World world, int x, int y, int z);
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java b/src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java
new file mode 100644
index 0000000..31eba00
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java
@@ -0,0 +1,8 @@
+package powercrystals.minefactoryreloaded.api;
+
+import net.minecraft.entity.EntityLivingBase;
+
+public interface ILiquidDrinkHandler
+{
+ public void onDrink(EntityLivingBase player);
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java b/src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java
new file mode 100644
index 0000000..7f5dd7c
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/MobDrop.java
@@ -0,0 +1,21 @@
+package powercrystals.minefactoryreloaded.api;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.WeightedRandom;
+
+public class MobDrop extends WeightedRandom.Item
+{
+ private ItemStack _stack;
+
+ public MobDrop(int weight, ItemStack stack)
+ {
+ super(weight);
+ _stack = stack;
+ }
+
+ public ItemStack getStack()
+ {
+ if(_stack == null) return null;
+ return _stack.copy();
+ }
+}
diff --git a/src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java b/src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java
new file mode 100644
index 0000000..3d075fa
--- /dev/null
+++ b/src/api/java/powercrystals/minefactoryreloaded/api/ValuedItem.java
@@ -0,0 +1,72 @@
+package powercrystals.minefactoryreloaded.api;
+
+import net.minecraft.item.ItemStack;
+
+public class ValuedItem
+{
+ public final int value;
+ public final ItemStack item;
+ public final String key;
+ public final Object object;
+
+ public ValuedItem(int v, ItemStack i)
+ {
+ value = v;
+ item = i;
+ key = null;
+ object = null;
+ }
+
+ public ValuedItem(String v, Object i)
+ {
+ value = -1;
+ item = null;
+ key = v;
+ object = i;
+ }
+
+ /**
+ * Presently unused but included so that if they do get used in the future,
+ * people including this in their jar and loading before MFR don't destroy everyone
+ */
+
+ public ValuedItem(int v, Object i)
+ {
+ value = v;
+ item = null;
+ key = null;
+ object = i;
+ }
+
+ public ValuedItem(String v, ItemStack i)
+ {
+ value = -1;
+ item = i;
+ key = v;
+ object = null;
+ }
+
+ public ValuedItem(int v, String k, ItemStack i)
+ {
+ value = v;
+ item = i;
+ key = k;
+ object = null;
+ }
+
+ public ValuedItem(int v, String k, Object i)
+ {
+ value = v;
+ item = null;
+ key = k;
+ object = i;
+ }
+
+ public ValuedItem(int v, String k, ItemStack i, Object o)
+ {
+ value = v;
+ item = i;
+ key = k;
+ object = o;
+ }
+}
diff --git a/src/api/java/thaumcraft/api/IGoggles.java b/src/api/java/thaumcraft/api/IGoggles.java
new file mode 100644
index 0000000..2f53d81
--- /dev/null
+++ b/src/api/java/thaumcraft/api/IGoggles.java
@@ -0,0 +1,22 @@
+package thaumcraft.api;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.item.ItemStack;
+
+/**
+ *
+ * @author Azanor
+ *
+ * Equipped head slot items that extend this class will be able to perform most functions that
+ * goggles of revealing can apart from view nodes which is handled by IRevealer.
+ *
+ */
+
+public interface IGoggles {
+
+ /*
+ * If this method returns true things like block essentia contents will be shown.
+ */
+ public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player);
+
+}
diff --git a/src/main/java/gmail/Lance5057/blocks/AeonSteelBlock.java b/src/main/java/gmail/Lance5057/blocks/AeonSteelBlock.java
new file mode 100644
index 0000000..259132a
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/AeonSteelBlock.java
@@ -0,0 +1,15 @@
+package gmail.Lance5057.blocks;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+
+public class AeonSteelBlock extends Block
+{
+
+ public AeonSteelBlock (Material material)
+ {
+ super(material);
+ setHarvestLevel("pickaxe",2);
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/blocks/CrestMount.java b/src/main/java/gmail/Lance5057/blocks/CrestMount.java
new file mode 100644
index 0000000..a318c77
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/CrestMount.java
@@ -0,0 +1,43 @@
+package gmail.Lance5057.blocks;
+
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class CrestMount extends BlockContainer {
+ //Treat it like a normal block here. The Block Bounds are a good idea - the first three are X Y and Z of the botton-left corner,
+ //And the second three are the top-right corner.
+ public CrestMount() {
+ super(Material.iron);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ //You don't want the normal render type, or it wont render properly.
+ @Override
+ public int getRenderType() {
+ return -1;
+ }
+
+ //It's not an opaque cube, so you need this.
+ @Override
+ public boolean isOpaqueCube() {
+ return false;
+ }
+
+ //It's not a normal block, so you need this too.
+ public boolean renderAsNormalBlock() {
+ return false;
+ }
+
+ //This is the icon to use for showing the block in your hand.
+ public void registerIcons(IIconRegister icon) {
+ this.blockIcon = icon.registerIcon("tinkersdefense:textures/items/QueensGoldIngot.png");
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
+ return new TileEntity_CrestMount();
+ }
+}
diff --git a/src/main/java/gmail/Lance5057/blocks/DogbeariumBlock.java b/src/main/java/gmail/Lance5057/blocks/DogbeariumBlock.java
new file mode 100644
index 0000000..b7f5c79
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/DogbeariumBlock.java
@@ -0,0 +1,15 @@
+package gmail.Lance5057.blocks;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+
+public class DogbeariumBlock extends Block
+{
+
+ public DogbeariumBlock (Material material)
+ {
+ super(material);
+ setHarvestLevel("pickaxe",2);
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/blocks/ModelCrestMount.java b/src/main/java/gmail/Lance5057/blocks/ModelCrestMount.java
new file mode 100644
index 0000000..5a5759d
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/ModelCrestMount.java
@@ -0,0 +1,87 @@
+// Date: 1/18/2015 9:46:49 PM
+// Template version 1.1
+// Java generated by Techne
+// Keep in mind that you still need to fill in some blanks
+// - ZeuX
+
+
+
+
+
+
+package gmail.Lance5057.blocks;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+
+public class ModelCrestMount extends ModelBase
+{
+ //fields
+ ModelRenderer ShieldMount;
+ ModelRenderer Base;
+ ModelRenderer SwordMount1;
+ ModelRenderer SwordMount2;
+ ModelRenderer SwordMount3;
+
+ public ModelCrestMount()
+ {
+ textureWidth = 32;
+ textureHeight = 32;
+
+ ShieldMount = new ModelRenderer(this, 20, 6);
+ ShieldMount.addBox(0F, 0F, 0F, 2, 7, 2);
+ ShieldMount.setRotationPoint(-1F, 17F, -1F);
+ ShieldMount.setTextureSize(32, 32);
+ ShieldMount.mirror = true;
+ setRotation(ShieldMount, 0F, 0F, 0F);
+ Base = new ModelRenderer(this, 0, 6);
+ Base.addBox(0F, 0F, 0F, 4, 4, 4);
+ Base.setRotationPoint(-2F, 20F, -2F);
+ Base.setTextureSize(32, 32);
+ Base.mirror = true;
+ setRotation(Base, 0F, 0F, 0F);
+ SwordMount1 = new ModelRenderer(this, 0, 0);
+ SwordMount1.addBox(-5F, 0F, -2F, 10, 2, 4);
+ SwordMount1.setRotationPoint(0F, 22F, 0F);
+ SwordMount1.setTextureSize(32, 32);
+ SwordMount1.mirror = true;
+ setRotation(SwordMount1, 0F, 0.7853982F, 0F);
+ SwordMount2 = new ModelRenderer(this, 0, 0);
+ SwordMount2.addBox(-5F, 0F, -2F, 10, 2, 4);
+ SwordMount2.setRotationPoint(0F, 22F, 0F);
+ SwordMount2.setTextureSize(32, 32);
+ SwordMount2.mirror = true;
+ setRotation(SwordMount2, 0F, -0.7853982F, 0F);
+ SwordMount3 = new ModelRenderer(this, 0, 0);
+ SwordMount3.addBox(-5F, 0F, -2F, 10, 2, 4);
+ SwordMount3.setRotationPoint(0F, 21.9F, 0F);
+ SwordMount3.setTextureSize(32, 32);
+ SwordMount3.mirror = true;
+ setRotation(SwordMount3, 0F, 1.570796F, 0F);
+ }
+
+ public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ super.render(entity, f, f1, f2, f3, f4, f5);
+ setRotationAngles(f, f1, f2, f3, f4, f5, entity);
+ ShieldMount.render(f5);
+ Base.render(f5);
+ SwordMount1.render(f5);
+ SwordMount2.render(f5);
+ SwordMount3.render(f5);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z)
+ {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+ public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
+ {
+ super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
+ }
+
+}
diff --git a/src/main/java/gmail/Lance5057/blocks/QueensGoldBlock.java b/src/main/java/gmail/Lance5057/blocks/QueensGoldBlock.java
new file mode 100644
index 0000000..0ad2376
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/QueensGoldBlock.java
@@ -0,0 +1,15 @@
+package gmail.Lance5057.blocks;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+
+public class QueensGoldBlock extends Block
+{
+
+ public QueensGoldBlock (Material material)
+ {
+ super(material);
+ setHarvestLevel("pickaxe",2);
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/blocks/Renderer_CrestMount.java b/src/main/java/gmail/Lance5057/blocks/Renderer_CrestMount.java
new file mode 100644
index 0000000..f7a542f
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/Renderer_CrestMount.java
@@ -0,0 +1,60 @@
+package gmail.Lance5057.blocks;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+
+import org.lwjgl.opengl.GL11;
+
+public class Renderer_CrestMount extends TileEntitySpecialRenderer {
+
+ //The model of your block
+ private final ModelCrestMount model;
+
+ public Renderer_CrestMount() {
+ this.model = new ModelCrestMount();
+ }
+
+ private void adjustRotatePivotViaMeta(World world, int x, int y, int z) {
+ int meta = world.getBlockMetadata(x, y, z);
+ GL11.glPushMatrix();
+ GL11.glRotatef(meta * (-90), 0.0F, 0.0F, 1.0F);
+ GL11.glPopMatrix();
+ }
+
+ @Override
+ public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) {
+ //The PushMatrix tells the renderer to "start" doing something.
+ GL11.glPushMatrix();
+ //This is setting the initial location.
+ GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
+ //This is the texture of your block. It's pathed to be the same place as your other blocks here.
+ //Outdated bindTextureByName("/mods/roads/textures/blocks/TrafficLightPoleRed.png");
+ //Use in 1.6.2 this
+ ResourceLocation textures = (new ResourceLocation("tinkersdefense:textures/blocks/CrestMount.png"));
+ //the ':' is very important
+ //binding the textures
+ Minecraft.getMinecraft().renderEngine.bindTexture(textures);
+
+ //This rotation part is very important! Without it, your model will render upside-down! And for some reason you DO need PushMatrix again!
+ GL11.glPushMatrix();
+ adjustRotatePivotViaMeta(te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord);//rotation 1
+ GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
+ GL11.glRotatef(90F, 0.5F, 0.0F, 0.0F);
+ GL11.glTranslatef(0, -1, -1);
+
+
+ //A reference to your Model file. Again, very important.
+ this.model.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
+ //Tell it to stop rendering for both the PushMatrix's
+ GL11.glPopMatrix();
+ GL11.glPopMatrix();
+ }
+
+}
diff --git a/src/main/java/gmail/Lance5057/blocks/TileEntity_CrestMount.java b/src/main/java/gmail/Lance5057/blocks/TileEntity_CrestMount.java
new file mode 100644
index 0000000..486689c
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/blocks/TileEntity_CrestMount.java
@@ -0,0 +1,7 @@
+package gmail.Lance5057.blocks;
+
+import net.minecraft.tileentity.TileEntity;
+
+public class TileEntity_CrestMount extends TileEntity {
+
+}
diff --git a/src/main/java/gmail/Lance5057/com/HeaterShield.java b/src/main/java/gmail/Lance5057/com/HeaterShield.java
new file mode 100644
index 0000000..13875bc
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/HeaterShield.java
@@ -0,0 +1,256 @@
+package gmail.Lance5057.com;
+
+import java.util.List;
+import java.util.Random;
+
+import mods.battlegear2.api.ISheathed;
+import mods.battlegear2.api.shield.IArrowCatcher;
+import mods.battlegear2.api.shield.IArrowDisplay;
+import mods.battlegear2.api.shield.IShield;
+import mods.battlegear2.api.shield.ShieldType;
+import mods.battlegear2.utils.BattlegearConfig;
+import cpw.mods.fml.relauncher.*;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IProjectile;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.*;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.*;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import tconstruct.library.tools.*;
+import tconstruct.tools.TinkerTools;
+public class HeaterShield extends HarvestTool implements IShield, ISheathed, IArrowCatcher, IArrowDisplay
+{
+ int induceDamage = 0;
+public HeaterShield()
+{
+super(0);
+this.setUnlocalizedName("heatershield");
+}
+@Override
+public Item getHeadItem ()
+{
+return TinkerTools.largePlate;
+}
+@Override
+public Item getHandleItem ()
+{
+return TinkerTools.toughRod;
+}
+@Override
+public Item getAccessoryItem ()
+{
+return TinkerTools.largePlate;
+}
+@Override
+public Item getExtraItem ()
+{
+ return TinkerTools.toughBinding;
+}
+@Override
+public int durabilityTypeAccessory ()
+{
+return 2;
+}
+@Override
+public float getRepairCost ()
+{
+return 4.0f;
+}
+@Override
+public float getDurabilityModifier ()
+{
+return 2.5f;
+}
+@Override
+public float breakSpeedModifier ()
+{
+return 0.4f;
+}
+@Override
+public float getDamageModifier ()
+{
+return 1.4f;
+}
+@SideOnly(Side.CLIENT)
+@Override
+public int getRenderPasses (int metadata)
+{
+return 10;
+}
+@Override
+public int getPartAmount ()
+{
+return 4;
+}
+@Override
+public String getIconSuffix (int partType)
+{
+switch (partType)
+{
+case 0:
+return "_shield_face";
+case 1:
+return "_shield_face_broken";
+case 2:
+return "_shield_edge";
+case 3:
+return "_shield_face_other";
+case 4:
+return "_shield_binding";
+default:
+return "";
+}
+}
+@Override
+public String getEffectSuffix ()
+{
+return "_shield_effect";
+}
+@Override
+public String getDefaultFolder ()
+{
+return "heatershield";
+}
+/* tool_TinkerShield specific */
+@Override
+public boolean onLeftClickEntity (ItemStack stack, EntityPlayer player, Entity entity)
+{
+if (AbilityHelper.onLeftClickEntity(stack, player, entity, this))
+{
+entity.hurtResistantTime += 7;
+/*
+* if (entity instanceof EntityLiving) { EntityLiving living =
+* (EntityLiving) entity; if (living.getHealth() <= 0) {
+*
+* } }
+*/
+// if (entity.getHealth() <= 0)
+}
+return true;
+}
+@Override
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+super.onUpdate(stack, world, entity, par4, par5);
+
+}
+
+@Override
+public int getArrowCount(ItemStack stack)
+{
+ if(stack.hasTagCompound() && stack.getTagCompound().hasKey("arrows"))
+ {
+ return stack.getTagCompound().getShort("arrows");
+ }
+ else
+ return 0;
+}
+@Override
+public void setArrowCount(ItemStack stack, int count)
+{
+ if(!stack.hasTagCompound()){
+ stack.setTagCompound(new NBTTagCompound());
+ }
+ //Should never happen, you would need A LOT of arrows for this to happen
+ if(count > Short.MAX_VALUE){
+ count = Short.MAX_VALUE;
+ }
+ stack.getTagCompound().setShort("arrows", (short)count);
+}
+@Override
+public boolean catchArrow(ItemStack shield, EntityPlayer player, IProjectile arrow)
+{
+ if(arrow instanceof EntityArrow)
+ {
+ setArrowCount(shield, getArrowCount(shield)+1);
+ player.setArrowCountInEntity(player.getArrowCountInEntity() - 1);
+ ((EntityArrow)arrow).setDead();
+ return true;
+ }
+ return false;
+}
+@Override
+public boolean sheatheOnBack(ItemStack arg0) {
+ return true;
+}
+@Override
+public void blockAnimation(EntityPlayer player, float dmg)
+{
+ player.worldObj.playSoundAtEntity(player, "battlegear2:shield", 1, 1);
+}
+@Override
+public boolean canBlock(ItemStack shield, DamageSource source) {
+ return !source.isUnblockable();
+}
+@Override
+public int getBashTimer(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 10;
+}
+@Override
+public float getBlockAngle(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 60;
+}
+@Override
+public float getDamageDecayRate(ItemStack shield, float amount)
+{
+ return 0;
+}
+@Override
+public float getDamageReduction(ItemStack arg0, DamageSource arg1) {
+ return 1f;
+}
+@Override
+public float getDecayRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") / 1.5f;
+ return 10f / recovery;
+}
+@Override
+public float getRecoveryRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") / 1.5f;
+ return 10f / recovery;
+}
+
+@Override
+@SideOnly(Side.CLIENT)
+public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+{
+ NBTTagCompound tags = par1ItemStack.getTagCompound();
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ par3List.add("");
+ par3List.add(EnumChatFormatting.DARK_GREEN+
+ ItemStack.field_111284_a.format( 1F / (10f / (tags.getCompoundTag("InfiTool").getInteger("MiningSpeed")/1.5f)) / 20F)+
+ StatCollector.translateToLocal("attribute.shield.block.time"));
+ int arrowCount = getArrowCount(par1ItemStack);
+ if(arrowCount > 0)
+ {
+ par3List.add(String.format("%s%s %s", EnumChatFormatting.GOLD, arrowCount, StatCollector.translateToLocal("attribute.shield.arrow.count")));
+ }
+}
+@Override
+protected Material[] getEffectiveMaterials ()
+{
+ return materials;
+}
+ static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits };
+
+@Override
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return "pickaxe";
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/com/RoundShield.java b/src/main/java/gmail/Lance5057/com/RoundShield.java
new file mode 100644
index 0000000..9588542
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/RoundShield.java
@@ -0,0 +1,249 @@
+package gmail.Lance5057.com;
+
+import java.util.List;
+import java.util.Random;
+
+import mods.battlegear2.api.ISheathed;
+import mods.battlegear2.api.shield.IArrowCatcher;
+import mods.battlegear2.api.shield.IArrowDisplay;
+import mods.battlegear2.api.shield.IShield;
+import mods.battlegear2.api.shield.ShieldType;
+import mods.battlegear2.utils.BattlegearConfig;
+import cpw.mods.fml.relauncher.*;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IProjectile;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.*;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.*;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import tconstruct.library.tools.*;
+import tconstruct.tools.TinkerTools;
+public class RoundShield extends HarvestTool implements IShield, ISheathed, IArrowCatcher, IArrowDisplay
+{
+ int induceDamage = 0;
+public RoundShield()
+{
+super(0);
+this.setUnlocalizedName("roundshield");
+}
+@Override
+public Item getHeadItem ()
+{
+return TinkerTools.largePlate;
+}
+@Override
+public Item getHandleItem ()
+{
+return TinkerTools.toolRod;
+}
+@Override
+public Item getAccessoryItem ()
+{
+return TinkerTools.frypanHead;
+}
+@Override
+public int durabilityTypeAccessory ()
+{
+return 2;
+}
+@Override
+public float getRepairCost ()
+{
+return 4.0f;
+}
+@Override
+public float getDurabilityModifier ()
+{
+return 2.5f;
+}
+@Override
+public float breakSpeedModifier ()
+{
+return 0.4f;
+}
+@Override
+public float getDamageModifier ()
+{
+return 1.4f;
+}
+@SideOnly(Side.CLIENT)
+@Override
+public int getRenderPasses (int metadata)
+{
+return 10;
+}
+@Override
+public int getPartAmount ()
+{
+return 3;
+}
+@Override
+public String getIconSuffix (int partType)
+{
+switch (partType)
+{
+case 0:
+return "_shield_face";
+case 1:
+return "_shield_face_broken";
+case 2:
+return "_shield_edge";
+case 3:
+return "_shield_boss";
+default:
+return "";
+}
+}
+@Override
+public String getEffectSuffix ()
+{
+return "_shield_effect";
+}
+@Override
+public String getDefaultFolder ()
+{
+return "shield";
+}
+/* tool_TinkerShield specific */
+@Override
+public boolean onLeftClickEntity (ItemStack stack, EntityPlayer player, Entity entity)
+{
+if (AbilityHelper.onLeftClickEntity(stack, player, entity, this))
+{
+entity.hurtResistantTime += 7;
+/*
+* if (entity instanceof EntityLiving) { EntityLiving living =
+* (EntityLiving) entity; if (living.getHealth() <= 0) {
+*
+* } }
+*/
+// if (entity.getHealth() <= 0)
+}
+return true;
+}
+@Override
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+super.onUpdate(stack, world, entity, par4, par5);
+
+}
+
+@Override
+public int getArrowCount(ItemStack stack)
+{
+ if(stack.hasTagCompound() && stack.getTagCompound().hasKey("arrows"))
+ {
+ return stack.getTagCompound().getShort("arrows");
+ }
+ else
+ return 0;
+}
+@Override
+public void setArrowCount(ItemStack stack, int count)
+{
+ if(!stack.hasTagCompound()){
+ stack.setTagCompound(new NBTTagCompound());
+ }
+ //Should never happen, you would need A LOT of arrows for this to happen
+ if(count > Short.MAX_VALUE){
+ count = Short.MAX_VALUE;
+ }
+ stack.getTagCompound().setShort("arrows", (short)count);
+}
+@Override
+public boolean catchArrow(ItemStack shield, EntityPlayer player, IProjectile arrow)
+{
+ if(arrow instanceof EntityArrow)
+ {
+ setArrowCount(shield, getArrowCount(shield)+1);
+ player.setArrowCountInEntity(player.getArrowCountInEntity() - 1);
+ ((EntityArrow)arrow).setDead();
+ return true;
+ }
+ return false;
+}
+@Override
+public boolean sheatheOnBack(ItemStack arg0) {
+ return true;
+}
+@Override
+public void blockAnimation(EntityPlayer player, float dmg)
+{
+ player.worldObj.playSoundAtEntity(player, "battlegear2:shield", 1, 1);
+}
+@Override
+public boolean canBlock(ItemStack shield, DamageSource source) {
+ return !source.isUnblockable();
+}
+@Override
+public int getBashTimer(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 10;
+}
+@Override
+public float getBlockAngle(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 60;
+}
+@Override
+public float getDamageDecayRate(ItemStack shield, float amount)
+{
+ return 2;
+}
+@Override
+public float getDamageReduction(ItemStack arg0, DamageSource arg1) {
+ return 1f;
+}
+@Override
+public float getDecayRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed");
+ return 10f / recovery * 2;
+}
+@Override
+public float getRecoveryRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed");
+ return 10f / recovery * 2;
+}
+
+@Override
+@SideOnly(Side.CLIENT)
+public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+{
+ NBTTagCompound tags = par1ItemStack.getTagCompound();
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ par3List.add("");
+ par3List.add(EnumChatFormatting.DARK_GREEN+
+ ItemStack.field_111284_a.format( 1F / (10f / tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") * 2) / 20F)+
+ StatCollector.translateToLocal("attribute.shield.block.time"));
+ int arrowCount = getArrowCount(par1ItemStack);
+ if(arrowCount > 0)
+ {
+ par3List.add(String.format("%s%s %s", EnumChatFormatting.GOLD, arrowCount, StatCollector.translateToLocal("attribute.shield.arrow.count")));
+ }
+}
+@Override
+protected Material[] getEffectiveMaterials ()
+{
+ return materials;
+}
+ static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits };
+
+@Override
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return "pickaxe";
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/com/RoyalGuard.java b/src/main/java/gmail/Lance5057/com/RoyalGuard.java
new file mode 100644
index 0000000..3510c18
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/RoyalGuard.java
@@ -0,0 +1,42 @@
+package gmail.Lance5057.com;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import tconstruct.library.client.TConstructClientRegistry;
+import tconstruct.library.crafting.ToolBuilder;
+import tconstruct.library.tools.Weapon;
+
+import java.util.List;
+
+public abstract class RoyalGuard extends Weapon {
+ public RoyalGuard() {
+ super(10);
+ }
+
+@Override
+public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) {
+super.addInformation(stack, player, list, par4);
+list.add(EnumChatFormatting.DARK_PURPLE + "Artisan crafted for the royal family");
+}
+@Override
+public void getSubItems(Item id, CreativeTabs tab, List list)
+{
+ super.getSubItems(id, tab, list);
+
+ ItemStack tool = ToolBuilder.instance.buildTool(new ItemStack(getHeadItem(), 1, 2), new ItemStack(getHandleItem(), 1, 6), new ItemStack(getAccessoryItem(), 1, 33), "Royal Guard");
+ NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool");
+ tags.setInteger("Modifiers", 0);
+ tags.setInteger("Attack", 15);
+ tags.setInteger("TotalDurability", Integer.MAX_VALUE / 100);
+ tags.setInteger("BaseDurability", Integer.MAX_VALUE / 100);
+ tags.setInteger("MiningSpeed", Integer.MAX_VALUE / 100);
+ tags.setInteger("Unbreaking", 10);
+ tags.setBoolean("Built", true);
+ tags.setInteger("Fortune", 450);
+ list.add(tool);
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/com/Shield.java b/src/main/java/gmail/Lance5057/com/Shield.java
new file mode 100644
index 0000000..0cfa33c
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/Shield.java
@@ -0,0 +1,121 @@
+package gmail.Lance5057.com;
+
+import tconstruct.library.tools.ToolCore;
+import cpw.mods.fml.relauncher.*;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.*;
+import net.minecraft.world.World;
+
+public abstract class Shield extends ToolCore
+{
+public Shield(int baseDamage)
+{
+super(baseDamage);
+}
+protected float baseSpeed ()
+{
+return 1.5f;
+}
+protected float effectiveSpeed ()
+{
+return 15f;
+}
+public float breakSpeedModifier ()
+{
+return 1.0f;
+}
+@Override
+public float getDigSpeed (ItemStack stack, Block block, int meta)
+{
+if (stack.getTagCompound().getCompoundTag("InfiTool").getBoolean("Broken"))
+return 0.1f;
+for (int i = 0; i < web.length; i++)
+{
+if (web[i] == block.getMaterial())
+{
+return effectiveSpeed();
+}
+}
+return baseSpeed();
+}
+/**
+* returns the action that specifies what animation to play when the items
+* is being used
+*/
+@Override
+public EnumAction getItemUseAction (ItemStack par1ItemStack)
+{
+return EnumAction.block;
+}
+/**
+* How long it takes to use or consume an item
+*/
+@Override
+public int getMaxItemUseDuration (ItemStack par1ItemStack)
+{
+return 72000;
+}
+/**
+* Called whenever this item is equipped and the right mouse button is
+* pressed. Args: itemStack, world, entityPlayer
+*/
+@Override
+public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
+{
+player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
+return stack;
+}
+@Override
+public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
+{
+return false;
+}
+/**
+* Returns if the item (tool) can harvest results from the block type.
+*/
+@Override
+public boolean canHarvestBlock (Block block, ItemStack is)
+{
+for (int i = 0; i < web.length; i++)
+{
+if (block.getMaterial() == web[i])
+return true;
+}
+return super.canHarvestBlock(block, is);
+}
+protected Material[] getEffectiveMaterials ()
+{
+return web;
+}
+@Override
+@SideOnly(Side.CLIENT)
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+super.onUpdate(stack, world, entity, par4, par5);
+if (entity instanceof EntityPlayerSP)
+{
+EntityPlayerSP player = (EntityPlayerSP) entity;
+ItemStack usingItem = player.getItemInUse();
+if (usingItem != null && usingItem.getItem() == this)
+{
+player.movementInput.moveForward *= 2.5F;
+player.movementInput.moveStrafe *= 2.5F;
+}
+}
+}
+@Override
+public String[] getTraits ()
+{
+return new String[] { "Shield", "melee" };
+}
+public static Material[] web = new Material[] { Material.web, Material.cloth, Material.coral, Material.cake };
+public static Material[] none = new Material[0];
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return null;
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/com/mod_TinkersDefense.java b/src/main/java/gmail/Lance5057/com/mod_TinkersDefense.java
new file mode 100644
index 0000000..60e4ee1
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/mod_TinkersDefense.java
@@ -0,0 +1,312 @@
+package gmail.Lance5057.com;
+
+
+
+
+import static net.minecraft.util.EnumChatFormatting.DARK_RED;
+import static net.minecraft.util.EnumChatFormatting.GOLD;
+import static net.minecraft.util.EnumChatFormatting.LIGHT_PURPLE;
+import gmail.Lance5057.blocks.AeonSteelBlock;
+import gmail.Lance5057.blocks.CrestMount;
+import gmail.Lance5057.blocks.DogbeariumBlock;
+import gmail.Lance5057.blocks.QueensGoldBlock;
+import gmail.Lance5057.blocks.TileEntity_CrestMount;
+import gmail.Lance5057.items.AeonSteelIngot;
+import gmail.Lance5057.items.DogbeariumIngot;
+import gmail.Lance5057.items.QueensGoldIngot;
+import gmail.Lance5057.items.TinkerArmor;
+import gmail.Lance5057.proxy.CommonProxy;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemArmor.ArmorMaterial;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import tconstruct.TConstruct;
+import tconstruct.library.TConstructRegistry;
+import tconstruct.library.client.TConstructClientRegistry;
+import tconstruct.library.client.ToolGuiElement;
+import tconstruct.library.crafting.PatternBuilder;
+import tconstruct.library.crafting.Smeltery;
+import tconstruct.library.tools.ToolCore;
+import tconstruct.smeltery.TinkerSmeltery;
+import tconstruct.tools.TinkerTools;
+import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+@Mod(modid="tinkersdefense", version="1.0")
+public class mod_TinkersDefense
+{
+public static String MODID = "tinkersdefense";
+public static String VERSION = "1.0";
+
+public static CreativeTabs tabName = new CreativeTabs("tabName")
+{
+public Item getTabIconItem()
+{
+return Items.arrow;
+}
+};
+
+public static Item item_AeonSteelIngot;
+public static Block block_AeonSteelBlock;
+
+public static Fluid moltenAeonsteel;
+public static Block moltenAeonsteelBlock;
+
+public static Item item_QueensGoldIngot;
+public static Block block_QueensGoldBlock;
+
+public static Fluid moltenQueensGold;
+public static Block moltenQueensGoldBlock;
+
+public static Item item_DogbeariumIngot;
+public static Block block_DogbeariumBlock;
+
+public static Fluid moltenDogbearium;
+public static Block moltenDogbeariumBlock;
+
+public static ToolCore tool_roundShield;
+public static ToolCore tool_heaterShield;
+
+public static Block block_CrestMount;
+
+public static Item item_TinkerArmor;
+
+@SidedProxy(clientSide = "gmail.Lance5057.proxy.ClientProxy", serverSide = "gmail.Lance5057.proxy.CommonProxy")
+public static CommonProxy proxy;
+
+@EventHandler
+public void preInit(FMLPreInitializationEvent e)
+{
+ //Renderers
+ proxy.registerRenderers();
+
+ //AeonSteel
+ item_AeonSteelIngot = new AeonSteelIngot()
+ .setCreativeTab(tabName)
+ .setMaxStackSize(64)
+ .setUnlocalizedName("AeonSteelIngot")
+ .setTextureName(MODID+":AeonSteelIngot");
+
+ GameRegistry.registerItem(item_AeonSteelIngot, "AeonSteel Ingot");
+
+ block_AeonSteelBlock = new AeonSteelBlock(Material.iron)
+ .setHardness(4.0F)
+ .setStepSound(Block.soundTypeMetal)
+ .setBlockName("AeonSteelBlock")
+ .setCreativeTab(tabName)
+ .setBlockTextureName(MODID+":AeonSteelBlock");
+
+ GameRegistry.registerBlock(block_AeonSteelBlock, "aeonsteelblock");
+
+ GameRegistry.addShapedRecipe(new ItemStack(block_AeonSteelBlock), new Object[] {"xxx", "xxx","xxx",
+ 'x', item_AeonSteelIngot});
+ GameRegistry.addShapelessRecipe(new ItemStack(item_AeonSteelIngot,9),new Object[] {new ItemStack(block_AeonSteelBlock)});
+
+ moltenAeonsteel = new Fluid("moltenAeonsteel").setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300);
+ FluidRegistry.registerFluid(moltenAeonsteel);
+
+ moltenAeonsteelFluid moltenAeonsteelBlock = new moltenAeonsteelFluid(moltenAeonsteel);
+
+ GameRegistry.registerBlock(moltenAeonsteelBlock, "moltenaeonsteel");
+
+ //Queen's Gold
+ item_QueensGoldIngot = new QueensGoldIngot()
+ .setCreativeTab(tabName)
+ .setMaxStackSize(64)
+ .setUnlocalizedName("QueensGoldIngot")
+ .setTextureName(MODID+":QueensGoldIngot");
+
+ GameRegistry.registerItem(item_QueensGoldIngot, "Queen's Gold Ingot");
+
+ block_QueensGoldBlock = new QueensGoldBlock(Material.iron)
+ .setHardness(4.0F)
+ .setStepSound(Block.soundTypeMetal)
+ .setBlockName("QueensGoldBlock")
+ .setCreativeTab(tabName)
+ .setBlockTextureName(MODID+":QueensGoldBlock");
+
+ GameRegistry.registerBlock(block_QueensGoldBlock, "QueensGoldblock");
+
+ GameRegistry.addShapedRecipe(new ItemStack(block_QueensGoldBlock), new Object[] {"xxx", "xxx","xxx",
+ 'x', item_QueensGoldIngot});
+ GameRegistry.addShapelessRecipe(new ItemStack(item_QueensGoldIngot,9),new Object[] {new ItemStack(block_QueensGoldBlock)});
+
+
+ moltenQueensGold = new Fluid("moltenQueensGold").setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300);
+ FluidRegistry.registerFluid(moltenQueensGold);
+
+ moltenQueensGoldFluid moltenQueensGoldBlock = new moltenQueensGoldFluid(moltenQueensGold);
+
+ GameRegistry.registerBlock(moltenQueensGoldBlock, "moltenQueensGold");
+
+ //Dogbearium
+ item_DogbeariumIngot = new DogbeariumIngot()
+ .setCreativeTab(tabName)
+ .setMaxStackSize(64)
+ .setUnlocalizedName("DogbeariumIngot")
+ .setTextureName(MODID+":DogbeariumIngot");
+
+ GameRegistry.registerItem(item_DogbeariumIngot, "DogbeariumIngot");
+
+ block_DogbeariumBlock = new DogbeariumBlock(Material.iron)
+ .setHardness(4.0F)
+ .setStepSound(Block.soundTypeMetal)
+ .setBlockName("DogbeariumBlock")
+ .setCreativeTab(tabName)
+ .setBlockTextureName(MODID+":DogbeariumBlock");
+
+ GameRegistry.registerBlock(block_DogbeariumBlock, "Dogbeariumblock");
+
+ GameRegistry.addShapedRecipe(new ItemStack(block_DogbeariumBlock), new Object[] {"xxx", "xxx","xxx",
+ 'x', item_DogbeariumIngot});
+ GameRegistry.addShapelessRecipe(new ItemStack(item_DogbeariumIngot,9),new Object[] {new ItemStack(block_DogbeariumBlock)});
+
+
+ moltenDogbearium = new Fluid("moltenDogbearium").setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300);
+ FluidRegistry.registerFluid(moltenDogbearium);
+
+ moltenDogbeariumFluid moltenDogbeariumBlock = new moltenDogbeariumFluid(moltenDogbearium);
+
+ GameRegistry.registerBlock(moltenDogbeariumBlock, "moltenDogbearium");
+
+ tool_roundShield = new RoundShield();
+ tool_heaterShield = new HeaterShield();
+
+ GameRegistry.registerItem(tool_roundShield, "Round Shield");
+ GameRegistry.registerItem(tool_heaterShield, "Heater Shield");
+ TConstructRegistry.addItemToDirectory("Round Shield", tool_roundShield);
+ TConstructRegistry.addItemToDirectory("Heater Shield", tool_heaterShield);
+
+ block_CrestMount = new CrestMount()
+ .setHardness(4.0F)
+ .setStepSound(Block.soundTypeMetal)
+ .setBlockName("CrestMount")
+ .setCreativeTab(tabName);
+
+ GameRegistry.registerTileEntity(TileEntity_CrestMount.class, "Tile_CrestMount");
+ GameRegistry.registerBlock(block_CrestMount, "Block_CrestMount");
+
+ item_TinkerArmor = new TinkerArmor(ArmorMaterial.IRON, 4, 1).setUnlocalizedName("Tinker_Armor");
+ GameRegistry.registerItem(item_TinkerArmor,"Tinker Armor");
+}
+
+@EventHandler
+public void init(FMLInitializationEvent e)
+{
+ System.out.print(MODID);
+ PatternBuilder pb = PatternBuilder.instance;
+ pb.registerMaterialSet("AeonSteel", new ItemStack(TinkerTools.toolShard, 1, 10), new ItemStack(TinkerTools.toolRod, 1, 10), 10);
+ // Tool Materials: id, name, harvestlevel, durability, speed, damage, handlemodifier, reinforced, shoddy, style color, primary color for block use
+ //Aeonsteel
+ TConstructClientRegistry.addMaterialRenderMapping(201, "tinker", "aeonsteel", true);
+ TConstructRegistry.addToolMaterial(201, "AeonSteel", 4, 822, 1100, 3, 1.6F, 2, 0f, LIGHT_PURPLE.toString(), 0xb565e6);
+ TinkerTools.registerPatternMaterial("AeonSteelIngot", 2, "AeonSteel");
+ TConstructRegistry.addDefaultToolPartMaterial(201);
+
+ Smeltery.addMelting(new ItemStack(item_AeonSteelIngot, 1, 0), block_AeonSteelBlock, 0, 500, new FluidStack(moltenAeonsteel, TConstruct.ingotLiquidValue));
+ Smeltery.addMelting(block_AeonSteelBlock, 0, 500, new FluidStack(moltenAeonsteel, TConstruct.ingotLiquidValue*9));
+
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(item_AeonSteelIngot, 1, 0), new FluidStack(moltenAeonsteel, TConstruct.ingotLiquidValue), TConstructRegistry.getItemStack("ingotCast"), false, 50);
+
+ TConstructRegistry.instance.getBasinCasting().addCastingRecipe(new ItemStack(block_AeonSteelBlock, 1, 0), new FluidStack(moltenAeonsteel, TConstruct.ingotLiquidValue*9), 100);
+
+ castMolten(moltenAeonsteel, 201);
+
+ PatternBuilder.instance.registerFullMaterial(new ItemStack(item_AeonSteelIngot, 1, 0), 2, "Aeonsteel", new ItemStack(TinkerTools.toolShard, 1, 201), new ItemStack(TinkerTools.toolRod, 1, 201), 201);
+
+ Smeltery.addAlloyMixing(new FluidStack(moltenAeonsteel, 144), new FluidStack[] { new FluidStack(TinkerSmeltery.moltenAlumiteFluid, 144), new FluidStack(TinkerSmeltery.moltenCobaltFluid, 144) });
+ //Queen's Gold
+ TConstructClientRegistry.addMaterialRenderMapping(202, "tinker", "queensgold", true);
+ TConstructRegistry.addToolMaterial(202, "QueensGold", 3, 100, 500, 2, 1.0F, 0, 0f, GOLD.toString(), 0xeaee57);
+ TinkerTools.registerPatternMaterial("QueensGoldIngot", 2, "QueensGold");
+ TConstructRegistry.addDefaultToolPartMaterial(202);
+
+ Smeltery.addMelting(new ItemStack(item_QueensGoldIngot, 1, 0), block_QueensGoldBlock, 0, 500, new FluidStack(moltenQueensGold, TConstruct.ingotLiquidValue));
+ Smeltery.addMelting(block_QueensGoldBlock, 0, 500, new FluidStack(moltenQueensGold, TConstruct.ingotLiquidValue*9));
+
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(item_QueensGoldIngot, 1, 0), new FluidStack(moltenQueensGold, TConstruct.ingotLiquidValue), TConstructRegistry.getItemStack("ingotCast"), false, 50);
+
+ TConstructRegistry.instance.getBasinCasting().addCastingRecipe(new ItemStack(block_QueensGoldBlock, 1, 0), new FluidStack(moltenQueensGold, TConstruct.ingotLiquidValue*9), 100);
+
+ castMolten(moltenQueensGold, 202);
+
+ PatternBuilder.instance.registerFullMaterial(new ItemStack(item_QueensGoldIngot, 1, 0), 2, "QueensGold", new ItemStack(TinkerTools.toolShard, 1, 202), new ItemStack(TinkerTools.toolRod, 1, 202), 202);
+
+ Smeltery.addAlloyMixing(new FluidStack(moltenQueensGold, 144*8), new FluidStack[] { new FluidStack(TinkerSmeltery.moltenGoldFluid, 144*8), new FluidStack(TinkerSmeltery.moltenEmeraldFluid, 80) });
+
+ // Tool Materials: id, name, harvestlevel, durability, speed, damage, handlemodifier, reinforced, shoddy, style color, primary color for block use
+ //Dogbearium
+ TConstructClientRegistry.addMaterialRenderMapping(201, "tinker", "Dogbearium", true);
+ TConstructRegistry.addToolMaterial(203, "Dogbearium", 4, 600, 800, 2, 1.6F, 0, -2f, DARK_RED.toString(), 0x754200);
+ TinkerTools.registerPatternMaterial("DogbeariumIngot", 2, "Dogbearium");
+ TConstructRegistry.addDefaultToolPartMaterial(203);
+
+ Smeltery.addMelting(new ItemStack(item_DogbeariumIngot, 1, 0), block_DogbeariumBlock, 0, 500, new FluidStack(moltenDogbearium, TConstruct.ingotLiquidValue));
+ Smeltery.addMelting(block_DogbeariumBlock, 0, 500, new FluidStack(moltenDogbearium, TConstruct.ingotLiquidValue*9));
+
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(item_DogbeariumIngot, 1, 0), new FluidStack(moltenDogbearium, TConstruct.ingotLiquidValue), TConstructRegistry.getItemStack("ingotCast"), false, 50);
+
+ TConstructRegistry.instance.getBasinCasting().addCastingRecipe(new ItemStack(block_DogbeariumBlock, 1, 0), new FluidStack(moltenDogbearium, TConstruct.ingotLiquidValue*9), 100);
+
+ castMolten(moltenDogbearium, 203);
+
+ PatternBuilder.instance.registerFullMaterial(new ItemStack(item_DogbeariumIngot, 1, 0), 2, "Dogbearium", new ItemStack(TinkerTools.toolShard, 1, 203), new ItemStack(TinkerTools.toolRod, 1, 203), 203);
+
+ Smeltery.addAlloyMixing(new FluidStack(moltenDogbearium, 144*2), new FluidStack[] { new FluidStack(TinkerSmeltery.moltenArditeFluid, 144), new FluidStack(TinkerSmeltery.bloodFluid, 160), new FluidStack(TinkerSmeltery.moltenEnderFluid,250) });
+
+ //Shields
+ TConstructRegistry.addToolRecipe(tool_roundShield, TinkerTools.largePlate, TinkerTools.toolRod, TinkerTools.frypanHead);
+
+ TConstructRegistry.addToolRecipe(tool_heaterShield, TinkerTools.largePlate, TinkerTools.toughRod, TinkerTools.largePlate, TinkerTools.toughBinding);
+}
+
+@EventHandler
+public void postInit(FMLPostInitializationEvent e)
+{
+ TConstructClientRegistry.toolButtons.add(TConstructClientRegistry.toolButtons.size(),
+ new ToolGuiElement(1, 0, 0, new int[] { 9, 0, 4, 0 }, new int[] { 2, 3, 2, 0 }, "Round Shield", "A simple shield with average durability and average defense.", "tinkersdefense", "textures/gui/icons.png"));
+ TConstructClientRegistry.tierTwoButtons.add(TConstructClientRegistry.tierTwoButtons.size(),
+ new ToolGuiElement(5, 0, 0, new int[] { 9, 8, 9, 9 }, new int[] { 2, 3, 2, 3 }, "Heater Shield", "An advanced shield with high durability and high defense.", "tinkersdefense", "textures/gui/icons.png"));
+}
+
+public void castMolten(Fluid fluid, int ID)
+{
+ //.addCastingRecipe(output, fluid, cast, hardeningDelay)
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.toolRod, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("toolRodCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.pickaxeHead, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("pickaxeHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.shovelHead, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("shovelHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.hatchetHead, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("hatchetHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.swordBlade, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("swordBladeCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.fullGuard, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("fullGuardCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.wideGuard, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("wideGuardCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.crossbar, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("crossbarCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.binding, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("bindingCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.handGuard, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("handGuardCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.frypanHead, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("frypanHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.signHead, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("signHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.knifeBlade, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("knifeBladeCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.chiselHead, 1, ID),new FluidStack(fluid, (int) (144*0.5D)), TConstructRegistry.getItemStack("chiselHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.toughRod, 1, ID),new FluidStack(fluid, (int) (144*3.0D)), TConstructRegistry.getItemStack("toughRodCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.toughBinding, 1, ID),new FluidStack(fluid, (int) (144*3.0D)), TConstructRegistry.getItemStack("toughBindingCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.largePlate, 1, ID),new FluidStack(fluid, (int) (144*8.0D)), TConstructRegistry.getItemStack("largePlateCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.broadAxeHead, 1, ID),new FluidStack(fluid, (int) (144*8.0D)), TConstructRegistry.getItemStack("broadAxeHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.scytheBlade, 1, ID),new FluidStack(fluid, (int) (144*8.0D)), TConstructRegistry.getItemStack("scytheHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.excavatorHead, 1, ID),new FluidStack(fluid, (int) (144*8.0D)), TConstructRegistry.getItemStack("excavatorHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.largeSwordBlade, 1, ID),new FluidStack(fluid, (int) (144*8.0D)), TConstructRegistry.getItemStack("largeBladeCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.hammerHead, 1, ID),new FluidStack(fluid, (int) (144*8.0D)), TConstructRegistry.getItemStack("hammerHeadCast"),50);
+ TConstructRegistry.instance.getTableCasting().addCastingRecipe(new ItemStack(TinkerTools.arrowhead, 1, ID),new FluidStack(fluid, (int) (144*1.0D)), TConstructRegistry.getItemStack("arrowheadCast"),50);
+
+
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/com/moltenAeonsteelFluid.java b/src/main/java/gmail/Lance5057/com/moltenAeonsteelFluid.java
new file mode 100644
index 0000000..b18f981
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/moltenAeonsteelFluid.java
@@ -0,0 +1,59 @@
+package gmail.Lance5057.com;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.Locale;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.BlockFluidClassic;
+import net.minecraftforge.fluids.Fluid;
+
+public class moltenAeonsteelFluid
+ extends BlockFluidClassic
+{
+ private IIcon stillIcon;
+ private IIcon flowingIcon;
+ private String stillIconTexture = "molten_Aeonsteel";
+ private String flowIconTexture = "molten_Aeonsteel_flow";
+
+ public moltenAeonsteelFluid(Fluid fluid)
+ {
+ super(fluid, Material.lava);
+ setLightLevel(100.0F);
+ setHardness(1.0F);
+ setBlockName("MoltenAeonSteel");
+
+ this.stillIconTexture = ("tinkersdefense:" + stillIconTexture);
+ this.flowIconTexture = ("tinkersdefense:" + flowIconTexture);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void func_149651_a(IIconRegister icon)
+ {
+ this.stillIcon = icon.registerIcon(this.stillIconTexture);
+ this.flowingIcon = icon.registerIcon(this.flowIconTexture);
+
+ getFluid().setIcons(this.stillIcon, this.flowingIcon);
+ }
+
+ public IIcon getStillIcon()
+ {
+ return this.stillIcon;
+ }
+
+ public IIcon getFlowingIcon()
+ {
+ return this.flowingIcon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon func_149691_a(int side, int meta)
+ {
+ if (side <= 1) {
+ return this.stillIcon;
+ }
+ return this.flowingIcon;
+ }
+}
diff --git a/src/main/java/gmail/Lance5057/com/moltenDogbeariumFluid.java b/src/main/java/gmail/Lance5057/com/moltenDogbeariumFluid.java
new file mode 100644
index 0000000..b9d91af
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/moltenDogbeariumFluid.java
@@ -0,0 +1,59 @@
+package gmail.Lance5057.com;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.Locale;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.BlockFluidClassic;
+import net.minecraftforge.fluids.Fluid;
+
+public class moltenDogbeariumFluid
+ extends BlockFluidClassic
+{
+ private IIcon stillIcon;
+ private IIcon flowingIcon;
+ private String stillIconTexture = "molten_Dogbearium";
+ private String flowIconTexture = "molten_Dogbearium_flow";
+
+ public moltenDogbeariumFluid(Fluid fluid)
+ {
+ super(fluid, Material.lava);
+ setLightLevel(100.0F);
+ setHardness(1.0F);
+ setBlockName("MoltenDogbearium");
+
+ this.stillIconTexture = ("tinkersdefense:" + stillIconTexture);
+ this.flowIconTexture = ("tinkersdefense:" + flowIconTexture);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void func_149651_a(IIconRegister icon)
+ {
+ this.stillIcon = icon.registerIcon(this.stillIconTexture);
+ this.flowingIcon = icon.registerIcon(this.flowIconTexture);
+
+ getFluid().setIcons(this.stillIcon, this.flowingIcon);
+ }
+
+ public IIcon getStillIcon()
+ {
+ return this.stillIcon;
+ }
+
+ public IIcon getFlowingIcon()
+ {
+ return this.flowingIcon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon func_149691_a(int side, int meta)
+ {
+ if (side <= 1) {
+ return this.stillIcon;
+ }
+ return this.flowingIcon;
+ }
+}
diff --git a/src/main/java/gmail/Lance5057/com/moltenQueensGoldFluid.java b/src/main/java/gmail/Lance5057/com/moltenQueensGoldFluid.java
new file mode 100644
index 0000000..dc55f19
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/moltenQueensGoldFluid.java
@@ -0,0 +1,59 @@
+package gmail.Lance5057.com;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.Locale;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.BlockFluidClassic;
+import net.minecraftforge.fluids.Fluid;
+
+public class moltenQueensGoldFluid
+ extends BlockFluidClassic
+{
+ private IIcon stillIcon;
+ private IIcon flowingIcon;
+ private String stillIconTexture = "molten_QueensGold";
+ private String flowIconTexture = "molten_QueensGold_flow";
+
+ public moltenQueensGoldFluid(Fluid fluid)
+ {
+ super(fluid, Material.lava);
+ setLightLevel(100.0F);
+ setHardness(1.0F);
+ setBlockName("MoltenQueensGold");
+
+ this.stillIconTexture = ("tinkersdefense:" + stillIconTexture);
+ this.flowIconTexture = ("tinkersdefense:" + flowIconTexture);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void func_149651_a(IIconRegister icon)
+ {
+ this.stillIcon = icon.registerIcon(this.stillIconTexture);
+ this.flowingIcon = icon.registerIcon(this.flowIconTexture);
+
+ getFluid().setIcons(this.stillIcon, this.flowingIcon);
+ }
+
+ public IIcon getStillIcon()
+ {
+ return this.stillIcon;
+ }
+
+ public IIcon getFlowingIcon()
+ {
+ return this.flowingIcon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon func_149691_a(int side, int meta)
+ {
+ if (side <= 1) {
+ return this.stillIcon;
+ }
+ return this.flowingIcon;
+ }
+}
diff --git a/src/main/java/gmail/Lance5057/items/AeonSteelIngot.java b/src/main/java/gmail/Lance5057/items/AeonSteelIngot.java
new file mode 100644
index 0000000..793507a
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/AeonSteelIngot.java
@@ -0,0 +1,12 @@
+package gmail.Lance5057.items;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class AeonSteelIngot extends Item
+{
+ public AeonSteelIngot()
+ {
+
+ }
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/items/DogbeariumIngot.java b/src/main/java/gmail/Lance5057/items/DogbeariumIngot.java
new file mode 100644
index 0000000..539dd08
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/DogbeariumIngot.java
@@ -0,0 +1,11 @@
+package gmail.Lance5057.items;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class DogbeariumIngot extends Item
+{
+ public DogbeariumIngot()
+ {
+
+ }
+}
diff --git a/src/main/java/gmail/Lance5057/items/ModelTinkerArmor.java b/src/main/java/gmail/Lance5057/items/ModelTinkerArmor.java
new file mode 100644
index 0000000..c205c98
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/ModelTinkerArmor.java
@@ -0,0 +1,109 @@
+// Date: 1/19/2015 11:08:25 PM
+// Template version 1.1
+// Java generated by Techne
+// Keep in mind that you still need to fill in some blanks
+// - ZeuX
+
+package gmail.Lance5057.items;
+
+import net.minecraft.client.model.ModelBiped;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+
+public class ModelTinkerArmor extends ModelBiped
+{
+ //fields
+ ModelRenderer BackPlate;
+ ModelRenderer BreastPlate;
+ ModelRenderer Plackart;
+ ModelRenderer PauldronL;
+ ModelRenderer ArmL;
+ ModelRenderer PauldronR;
+ ModelRenderer ArmR;
+
+ public ModelTinkerArmor(float f)
+ {
+ super(f, 0, 64,64);
+ textureWidth = 64;
+ textureHeight = 64;
+
+ BackPlate = new ModelRenderer(this, 0, 56);
+ BackPlate.addBox(-4F, 0F, 1F, 8, 5, 3);
+ BackPlate.setRotationPoint(0F, 0F, 0F);
+ BackPlate.setTextureSize(64, 32);
+ BackPlate.mirror = true;
+ setRotation(BackPlate, -0.0872665F, 0F, 0F);
+ this.bipedBody.addChild(BackPlate);
+
+ BreastPlate = new ModelRenderer(this, 0, 32);
+ BreastPlate.addBox(-4F, -1F, -5F, 8, 6, 4);
+ BreastPlate.setRotationPoint(0F, 0F, 0F);
+ BreastPlate.setTextureSize(64, 32);
+ BreastPlate.mirror = true;
+ setRotation(BreastPlate, 0.4363323F, 0F, 0F);
+ this.bipedBody.addChild(BreastPlate);
+
+ Plackart = new ModelRenderer(this, 0, 42);
+ Plackart.addBox(-4F, 5F, -3F, 8, 7, 6);
+ Plackart.setRotationPoint(0F, 0F, 0F);
+ Plackart.setTextureSize(64, 32);
+ Plackart.mirror = true;
+ setRotation(Plackart, 0F, 0F, 0F);
+ this.bipedBody.addChild(Plackart);
+
+ PauldronL = new ModelRenderer(this, 28, 32);
+ PauldronL.addBox(1F, -2F, -3.5F, 5, 5, 7);
+ PauldronL.setRotationPoint(0F, 0F, 0F);
+ PauldronL.setTextureSize(64, 32);
+ PauldronL.mirror = true;
+ setRotation(PauldronL, 0F, 0F, -0.7853982F);
+ this.bipedLeftArm.addChild(PauldronL);
+
+ ArmL = new ModelRenderer(this, 28, 44);
+ ArmL.addBox(-1F, -2F, -3F, 5, 10, 6);
+ ArmL.setRotationPoint(0F, 0F, 0F);
+ ArmL.setTextureSize(64, 32);
+ ArmL.mirror = true;
+ setRotation(ArmL, 0F, 0F, 0F);
+ this.bipedLeftArm.addChild(ArmL);
+
+ PauldronR = new ModelRenderer(this, 28, 32);
+ PauldronR.mirror = true;
+ PauldronR.addBox(-6F, -2F, -3.5F, 5, 5, 7);
+ PauldronR.setRotationPoint(0F, 0F, 0F);
+ PauldronR.setTextureSize(64, 32);
+ PauldronR.mirror = true;
+ setRotation(PauldronR, 0F, 0F, 0.7853982F);
+ PauldronR.mirror = false;
+ this.bipedRightArm.addChild(PauldronR);
+
+ ArmR = new ModelRenderer(this, 28, 44);
+ ArmR.mirror = true;
+ ArmR.addBox(-4F, -2F, -3F, 5, 10, 6);
+ ArmR.setRotationPoint(0F, 0F, 0F);
+ ArmR.setTextureSize(64, 32);
+ ArmR.mirror = true;
+ setRotation(ArmR, 0F, 0F, 0F);
+ ArmR.mirror = false;
+ this.bipedRightArm.addChild(ArmR);
+ }
+
+ public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ super.render(entity, f, f1, f2, f3, f4, f5);
+ setRotationAngles(f, f1, f2, f3, f4, f5, entity);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z)
+ {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+ public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
+ {
+ super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
+ }
+
+}
diff --git a/src/main/java/gmail/Lance5057/items/QueensGoldIngot.java b/src/main/java/gmail/Lance5057/items/QueensGoldIngot.java
new file mode 100644
index 0000000..74c2708
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/QueensGoldIngot.java
@@ -0,0 +1,11 @@
+package gmail.Lance5057.items;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class QueensGoldIngot extends Item
+{
+ public QueensGoldIngot()
+ {
+
+ }
+}
diff --git a/src/main/java/gmail/Lance5057/items/TinkerArmor.java b/src/main/java/gmail/Lance5057/items/TinkerArmor.java
new file mode 100644
index 0000000..dd632d4
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/TinkerArmor.java
@@ -0,0 +1,76 @@
+package gmail.Lance5057.items;
+
+import gmail.Lance5057.com.mod_TinkersDefense;
+import net.minecraft.client.model.ModelBiped;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemArmor;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+public class TinkerArmor extends ItemArmor
+{
+ public TinkerArmor(ArmorMaterial par2EnumArmorMaterial, int par3, int par4)
+ {
+ super(par2EnumArmorMaterial, par3, par4);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister par1IconRegister)
+ {
+ String itemName = "tinkersdefense:textures/armor/TinkerArmor.png";
+ this.itemIcon = par1IconRegister.registerIcon(itemName);
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
+ {
+ return "tinkersdefense:textures/armor/TinkerArmor.png";
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot)
+ {
+ ModelBiped armorModel = null;
+ if(itemStack != null)
+ {
+ if(itemStack.getItem() instanceof TinkerArmor)
+ {
+ int type = ((ItemArmor)itemStack.getItem()).armorType;
+ if(type == 1 || type == 3)
+ {
+ armorModel = mod_TinkersDefense.proxy.getArmorModel(0);
+ }
+ else
+ {
+ armorModel = mod_TinkersDefense.proxy.getArmorModel(1);
+ }
+
+ }
+ if(armorModel != null)
+ {
+ armorModel.bipedHead.showModel = armorSlot == 0;
+ armorModel.bipedHeadwear.showModel = armorSlot == 0;
+ armorModel.bipedBody.showModel = armorSlot == 1 || armorSlot == 2; armorModel.bipedRightArm.showModel = armorSlot == 1;
+ armorModel.bipedLeftArm.showModel = armorSlot == 1;
+ armorModel.bipedRightLeg.showModel = armorSlot == 2 || armorSlot == 3;
+ armorModel.bipedLeftLeg.showModel = armorSlot == 2 || armorSlot == 3;
+ armorModel.isSneak = entityLiving.isSneaking();
+ armorModel.isRiding = entityLiving.isRiding();
+ armorModel.isChild = entityLiving.isChild();
+ armorModel.heldItemRight = entityLiving.getHeldItem() != null ? 1 :0;
+
+ if(entityLiving instanceof EntityPlayer)
+ {
+ armorModel.aimedBow =((EntityPlayer)entityLiving).getItemInUseDuration() > 2;
+ }
+ return armorModel;
+ }
+ }
+ return armorModel;
+ }
+
+
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/items/TinkerHelm.tcn b/src/main/java/gmail/Lance5057/items/TinkerHelm.tcn
new file mode 100644
index 0000000..4344f18
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/TinkerHelm.tcn
Binary files differ
diff --git a/src/main/java/gmail/Lance5057/proxy/ClientProxy.java b/src/main/java/gmail/Lance5057/proxy/ClientProxy.java
new file mode 100644
index 0000000..db933ea
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/proxy/ClientProxy.java
@@ -0,0 +1,36 @@
+package gmail.Lance5057.proxy;
+
+import gmail.Lance5057.blocks.Renderer_CrestMount;
+import gmail.Lance5057.blocks.TileEntity_CrestMount;
+import gmail.Lance5057.proxy.CommonProxy;
+import gmail.Lance5057.items.ModelTinkerArmor;
+import gmail.Lance5057.items.TinkerArmor;
+import net.minecraft.client.model.ModelBiped;
+import cpw.mods.fml.client.registry.ClientRegistry;
+
+
+public class ClientProxy extends CommonProxy {
+ private static final ModelTinkerArmor tutChest = new ModelTinkerArmor(1.0f);
+
+ @Override
+ public void registerRenderers() {
+ // This is for rendering entities and so forth later on
+ ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_CrestMount.class, new Renderer_CrestMount());
+ }
+
+ public void registerTileEntitySpecialRenderer()
+ {
+
+ }
+ @Override
+ public ModelBiped getArmorModel(int id)
+ {
+ switch (id)
+ {
+ case 0: return tutChest;
+ default: break;
+ }
+ return tutChest; //default, if whenever you should have passed on a wrong id
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/proxy/CommonProxy.java b/src/main/java/gmail/Lance5057/proxy/CommonProxy.java
new file mode 100644
index 0000000..164bf21
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/proxy/CommonProxy.java
@@ -0,0 +1,21 @@
+package gmail.Lance5057.proxy;
+
+import net.minecraft.client.model.ModelBiped;
+
+public class CommonProxy {
+
+ // Client stuff
+ public void registerRenderers() {
+ // Nothing here as the server doesn't render graphics or entities!
+ }
+
+ public void registerTileEntitySpecialRenderer()
+ {
+
+ }
+
+ public ModelBiped getArmorModel(int id)
+ {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/src/main/resources/assets/tinker/lang/en_US.lang b/src/main/resources/assets/tinker/lang/en_US.lang
new file mode 100644
index 0000000..2dff8a7
--- /dev/null
+++ b/src/main/resources/assets/tinker/lang/en_US.lang
@@ -0,0 +1,3 @@
+itemGroup.tabName=Tinkers' Defense
+item.InfiTool.roundshield.name=Round Shield
+tool.roundshield = Round Shield \ No newline at end of file
diff --git a/src/main/resources/assets/tinker/textures/items/AeonSteelIngot.png b/src/main/resources/assets/tinker/textures/items/AeonSteelIngot.png
new file mode 100644
index 0000000..950ef67
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/AeonSteelIngot.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/QueensGoldIngot.png b/src/main/resources/assets/tinker/textures/items/QueensGoldIngot.png
new file mode 100644
index 0000000..ccd3054
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/QueensGoldIngot.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/broadsword/queensgold_broadsword_accessory.png b/src/main/resources/assets/tinker/textures/items/broadsword/queensgold_broadsword_accessory.png
new file mode 100644
index 0000000..142e3a6
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/broadsword/queensgold_broadsword_accessory.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/_shield_binding.png b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_binding.png
new file mode 100644
index 0000000..97438b8
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_binding.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/_shield_edge.png b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_edge.png
new file mode 100644
index 0000000..49f633b
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_edge.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face.png b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face.png
new file mode 100644
index 0000000..e002312
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_broken.png b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_broken.png
new file mode 100644
index 0000000..7e24728
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_broken.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_other.png b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_other.png
new file mode 100644
index 0000000..aa2c757
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_other.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/beheading_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/beheading_shield_effect.png
new file mode 100644
index 0000000..e75b706
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/beheading_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/blaze_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/blaze_shield_effect.png
new file mode 100644
index 0000000..8941f8a
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/blaze_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/diamond_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/diamond_shield_effect.png
new file mode 100644
index 0000000..bbd6bf1
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/diamond_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/emerald_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/emerald_shield_effect.png
new file mode 100644
index 0000000..d62a5be
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/emerald_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/flux_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/flux_shield_effect.png
new file mode 100644
index 0000000..8547016
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/flux_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/lapis_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/lapis_shield_effect.png
new file mode 100644
index 0000000..7bce7eb
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/lapis_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/lava_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/lava_shield_effect.png
new file mode 100644
index 0000000..5bf9183
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/lava_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/moss_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/moss_shield_effect.png
new file mode 100644
index 0000000..ba30b4c
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/moss_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/necrotic_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/necrotic_shield_effect.png
new file mode 100644
index 0000000..bcec218
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/necrotic_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/piston_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/piston_shield_effect.png
new file mode 100644
index 0000000..8520d54
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/piston_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/quartz_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/quartz_shield_effect.png
new file mode 100644
index 0000000..10087c2
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/quartz_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/redstone_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/redstone_shield_effect.png
new file mode 100644
index 0000000..34a53d1
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/redstone_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/reinforced_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/reinforced_shield_effect.png
new file mode 100644
index 0000000..9efbbe0
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/reinforced_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/silk_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/silk_shield_effect.png
new file mode 100644
index 0000000..1e8bc7e
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/silk_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/smite_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/smite_shield_effect.png
new file mode 100644
index 0000000..62b34a2
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/smite_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/heatershield/spider_shield_effect.png b/src/main/resources/assets/tinker/textures/items/heatershield/spider_shield_effect.png
new file mode 100644
index 0000000..7c779f1
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/heatershield/spider_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/longsword/queensgold_longsword_accessory.png b/src/main/resources/assets/tinker/textures/items/longsword/queensgold_longsword_accessory.png
new file mode 100644
index 0000000..6a28d07
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/longsword/queensgold_longsword_accessory.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/rapier/queensgold_rapier_accessory.png b/src/main/resources/assets/tinker/textures/items/rapier/queensgold_rapier_accessory.png
new file mode 100644
index 0000000..db4073a
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/rapier/queensgold_rapier_accessory.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/_shield_boss.png b/src/main/resources/assets/tinker/textures/items/shield/_shield_boss.png
new file mode 100644
index 0000000..d9dc41b
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_boss.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/_shield_edge.png b/src/main/resources/assets/tinker/textures/items/shield/_shield_edge.png
new file mode 100644
index 0000000..9d39ddd
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_edge.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/_shield_face.png b/src/main/resources/assets/tinker/textures/items/shield/_shield_face.png
new file mode 100644
index 0000000..7a55c4f
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_face.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/_shield_face_broken.png b/src/main/resources/assets/tinker/textures/items/shield/_shield_face_broken.png
new file mode 100644
index 0000000..f506b2c
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_face_broken.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/beheading_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/beheading_shield_effect.png
new file mode 100644
index 0000000..5b58489
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/beheading_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/diamond_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/diamond_shield_effect.png
new file mode 100644
index 0000000..f6eba6d
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/diamond_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/emerald_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/emerald_shield_effect.png
new file mode 100644
index 0000000..5a71085
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/emerald_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/flux_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/flux_shield_effect.png
new file mode 100644
index 0000000..f2b5305
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/flux_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/lapis_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/lapis_shield_effect.png
new file mode 100644
index 0000000..7251eae
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/lapis_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/lava_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/lava_shield_effect.png
new file mode 100644
index 0000000..9b5afbc
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/lava_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/moss_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/moss_shield_effect.png
new file mode 100644
index 0000000..1641d23
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/moss_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/necrotic_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/necrotic_shield_effect.png
new file mode 100644
index 0000000..b255548
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/necrotic_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/piston_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/piston_shield_effect.png
new file mode 100644
index 0000000..bb64e1d
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/piston_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/quartz_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/quartz_shield_effect.png
new file mode 100644
index 0000000..b4c9981
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/quartz_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/redstone_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/redstone_shield_effect.png
new file mode 100644
index 0000000..b2bdc2c
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/redstone_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/reinforced_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/reinforced_shield_effect.png
new file mode 100644
index 0000000..973ee52
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/reinforced_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/silk_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/silk_shield_effect.png
new file mode 100644
index 0000000..70d542a
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/silk_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/smite_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/smite_shield_effect.png
new file mode 100644
index 0000000..e8d632c
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/smite_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/spider_shield_effect.png b/src/main/resources/assets/tinker/textures/items/shield/spider_shield_effect.png
new file mode 100644
index 0000000..55f0bdd
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/spider_shield_effect.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/steel_shield_boss.png b/src/main/resources/assets/tinker/textures/items/shield/steel_shield_boss.png
new file mode 100644
index 0000000..0b68181
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/steel_shield_boss.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/steel_shield_edge.png b/src/main/resources/assets/tinker/textures/items/shield/steel_shield_edge.png
new file mode 100644
index 0000000..79bdcaa
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/steel_shield_edge.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/wood_shield_boss.png b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_boss.png
new file mode 100644
index 0000000..acbd23d
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_boss.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/wood_shield_edge.png b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_edge.png
new file mode 100644
index 0000000..6464b86
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_edge.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face.png b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face.png
new file mode 100644
index 0000000..96ab1c9
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face.png
Binary files differ
diff --git a/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face_broken.png b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face_broken.png
new file mode 100644
index 0000000..188228a
--- /dev/null
+++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face_broken.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/lang/en_US.lang b/src/main/resources/assets/tinkersdefense/lang/en_US.lang
new file mode 100644
index 0000000..1bddce3
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/lang/en_US.lang
@@ -0,0 +1,20 @@
+itemGroup.tabName=Tinkers' Defense
+item.AeonSteelIngot.name=Aeon Steel Ingot
+tile.AeonSteelBlock.name=Aeon Steel Block
+tile.MoltenAeonSteel.name=Molten Aeon Steel
+material.aeonsteel=Aeon Steel
+
+item.QueensGoldIngot.name=Queen's Gold Ingot
+tile.QueensGoldBlock.name=Queen's Gold Block
+tile.MoltenQueensGold.name=Molten Queen's Gold
+material.queensgold=Queen's Gold
+
+item.DogbeariumIngot.name=Dogbearium Ingot
+tile.DogbeariumBlock.name=Dogbearium Block
+tile.MoltenDogbearium.name=Molten Dogbearium
+material.dogbearium=Dogbearium
+material.dogbearium.ability=Serrated
+
+tool.roundshield=Round Shield
+tool.heatershield=Heater Shield
+
diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.png b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.png
new file mode 100644
index 0000000..e054750
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcn b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcn
new file mode 100644
index 0000000..f967b25
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcn
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.png b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.png
new file mode 100644
index 0000000..706a34a
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.png b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.png
new file mode 100644
index 0000000..847df01
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.png b/src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.png
new file mode 100644
index 0000000..c18030c
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.png b/src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.png
new file mode 100644
index 0000000..61d6936
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.png b/src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.png
new file mode 100644
index 0000000..462809c
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.png b/src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.png
new file mode 100644
index 0000000..8b091e2
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png
new file mode 100644
index 0000000..9fbe94b
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png.mcmeta b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png.mcmeta
new file mode 100644
index 0000000..0486765
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png.mcmeta
@@ -0,0 +1,45 @@
+{
+ "animation": {
+ "frametime": 2,
+ "frames": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 18,
+ 17,
+ 16,
+ 15,
+ 14,
+ 13,
+ 12,
+ 11,
+ 10,
+ 9,
+ 8,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1
+ ]
+ }
+}
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png
new file mode 100644
index 0000000..8e3f30c
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png.mcmeta b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png.mcmeta
new file mode 100644
index 0000000..8e55e43
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png.mcmeta
@@ -0,0 +1,5 @@
+{
+ "animation": {
+ "frametime": 3
+ }
+}
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png
new file mode 100644
index 0000000..e8fd8f2
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png.mcmeta b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png.mcmeta
new file mode 100644
index 0000000..0486765
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png.mcmeta
@@ -0,0 +1,45 @@
+{
+ "animation": {
+ "frametime": 2,
+ "frames": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 18,
+ 17,
+ 16,
+ 15,
+ 14,
+ 13,
+ 12,
+ 11,
+ 10,
+ 9,
+ 8,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1
+ ]
+ }
+}
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png
new file mode 100644
index 0000000..b7d3593
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png.mcmeta b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png.mcmeta
new file mode 100644
index 0000000..8e55e43
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png.mcmeta
@@ -0,0 +1,5 @@
+{
+ "animation": {
+ "frametime": 3
+ }
+}
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png
new file mode 100644
index 0000000..934642d
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png.mcmeta b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png.mcmeta
new file mode 100644
index 0000000..0486765
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png.mcmeta
@@ -0,0 +1,45 @@
+{
+ "animation": {
+ "frametime": 2,
+ "frames": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 18,
+ 17,
+ 16,
+ 15,
+ 14,
+ 13,
+ 12,
+ 11,
+ 10,
+ 9,
+ 8,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1
+ ]
+ }
+}
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png
new file mode 100644
index 0000000..4067d8e
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png.mcmeta b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png.mcmeta
new file mode 100644
index 0000000..8e55e43
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png.mcmeta
@@ -0,0 +1,5 @@
+{
+ "animation": {
+ "frametime": 3
+ }
+}
diff --git a/src/main/resources/assets/tinkersdefense/textures/gui/icons.png b/src/main/resources/assets/tinkersdefense/textures/gui/icons.png
new file mode 100644
index 0000000..28b7662
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/gui/icons.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.png b/src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.png
new file mode 100644
index 0000000..950ef67
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.png b/src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.png
new file mode 100644
index 0000000..f24049a
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.png b/src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.png
new file mode 100644
index 0000000..ccd3054
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.png
Binary files differ
diff --git a/src/main/resources/assets/tinkersdefense/textures/items/longsword/queensgold_longsword_accessory.png b/src/main/resources/assets/tinkersdefense/textures/items/longsword/queensgold_longsword_accessory.png
new file mode 100644
index 0000000..38cf81c
--- /dev/null
+++ b/src/main/resources/assets/tinkersdefense/textures/items/longsword/queensgold_longsword_accessory.png
Binary files differ
diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info
new file mode 100644
index 0000000..f989c30
--- /dev/null
+++ b/src/main/resources/mcmod.info
@@ -0,0 +1,14 @@
+[
+{
+"modid": "tinkersdefense",
+"name": "Tinkers' Defense",
+"description": "An inbetween mod for Tinkers Construct and Mine and Blade 2 that adds new shields made using tinker parts",
+"version": "1.0",
+"mcversion": "1.7.10",
+"url": "",
+"authorList": ["Sir Lance"],
+"requiredMods": [ "Forge", "TConstruct","battlegear2" ],
+"dependencies": ["TConstruct","battlegear2"],
+"useDependencyInformation": "true"
+}
+] \ No newline at end of file