diff options
| author | Lance5057 <Lance5057@gmail.com> | 2015-01-21 20:04:34 -0600 |
|---|---|---|
| committer | Lance5057 <Lance5057@gmail.com> | 2015-01-21 20:04:34 -0600 |
| commit | b4eb8f2d65c62afccc898808b44fdddfde0c15d1 (patch) | |
| tree | ee3a9f47a22418a6778c299cc96b4fedc2265afe /src | |
| parent | 39642dce74d23f025b71d5766c1ac8489a41a802 (diff) | |
Startup
I hope I'm doing this right...
Diffstat (limited to 'src')
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 Binary files differnew file mode 100644 index 0000000..4344f18 --- /dev/null +++ b/src/main/java/gmail/Lance5057/items/TinkerHelm.tcn 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 Binary files differnew file mode 100644 index 0000000..950ef67 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/AeonSteelIngot.png diff --git a/src/main/resources/assets/tinker/textures/items/QueensGoldIngot.png b/src/main/resources/assets/tinker/textures/items/QueensGoldIngot.png Binary files differnew file mode 100644 index 0000000..ccd3054 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/QueensGoldIngot.png 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 Binary files differnew file mode 100644 index 0000000..142e3a6 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/broadsword/queensgold_broadsword_accessory.png 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 Binary files differnew file mode 100644 index 0000000..97438b8 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_binding.png 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 Binary files differnew file mode 100644 index 0000000..49f633b --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_edge.png 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 Binary files differnew file mode 100644 index 0000000..e002312 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face.png 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 Binary files differnew file mode 100644 index 0000000..7e24728 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_broken.png 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 Binary files differnew file mode 100644 index 0000000..aa2c757 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/_shield_face_other.png 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 Binary files differnew file mode 100644 index 0000000..e75b706 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/beheading_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..8941f8a --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/blaze_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..bbd6bf1 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/diamond_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..d62a5be --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/emerald_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..8547016 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/flux_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..7bce7eb --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/lapis_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..5bf9183 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/lava_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..ba30b4c --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/moss_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..bcec218 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/necrotic_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..8520d54 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/piston_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..10087c2 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/quartz_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..34a53d1 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/redstone_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..9efbbe0 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/reinforced_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..1e8bc7e --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/silk_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..62b34a2 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/smite_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..7c779f1 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/heatershield/spider_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..6a28d07 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/longsword/queensgold_longsword_accessory.png 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 Binary files differnew file mode 100644 index 0000000..db4073a --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/rapier/queensgold_rapier_accessory.png 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 Binary files differnew file mode 100644 index 0000000..d9dc41b --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_boss.png 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 Binary files differnew file mode 100644 index 0000000..9d39ddd --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_edge.png 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 Binary files differnew file mode 100644 index 0000000..7a55c4f --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_face.png 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 Binary files differnew file mode 100644 index 0000000..f506b2c --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/_shield_face_broken.png 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 Binary files differnew file mode 100644 index 0000000..5b58489 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/beheading_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..f6eba6d --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/diamond_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..5a71085 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/emerald_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..f2b5305 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/flux_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..7251eae --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/lapis_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..9b5afbc --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/lava_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..1641d23 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/moss_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..b255548 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/necrotic_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..bb64e1d --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/piston_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..b4c9981 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/quartz_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..b2bdc2c --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/redstone_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..973ee52 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/reinforced_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..70d542a --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/silk_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..e8d632c --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/smite_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..55f0bdd --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/spider_shield_effect.png 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 Binary files differnew file mode 100644 index 0000000..0b68181 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/steel_shield_boss.png 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 Binary files differnew file mode 100644 index 0000000..79bdcaa --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/steel_shield_edge.png 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 Binary files differnew file mode 100644 index 0000000..acbd23d --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_boss.png 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 Binary files differnew file mode 100644 index 0000000..6464b86 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_edge.png 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 Binary files differnew file mode 100644 index 0000000..96ab1c9 --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face.png 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 Binary files differnew file mode 100644 index 0000000..188228a --- /dev/null +++ b/src/main/resources/assets/tinker/textures/items/shield/wood_shield_face_broken.png 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 Binary files differnew file mode 100644 index 0000000..e054750 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.png diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcn b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcn Binary files differnew file mode 100644 index 0000000..f967b25 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor.tcn diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.png b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.png Binary files differnew file mode 100644 index 0000000..706a34a --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerArmor2.png diff --git a/src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.png b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.png Binary files differnew file mode 100644 index 0000000..847df01 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/armor/TinkerHelm.png diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.png b/src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.png Binary files differnew file mode 100644 index 0000000..c18030c --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/AeonSteelBlock.png diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.png b/src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.png Binary files differnew file mode 100644 index 0000000..61d6936 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/CrestMount.png diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.png b/src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.png Binary files differnew file mode 100644 index 0000000..462809c --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/DogbeariumBlock.png diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.png b/src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.png Binary files differnew file mode 100644 index 0000000..8b091e2 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/QueensGoldBlock.png diff --git a/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png Binary files differnew file mode 100644 index 0000000..9fbe94b --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel.png 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 Binary files differnew file mode 100644 index 0000000..8e3f30c --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Aeonsteel_flow.png 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 Binary files differnew file mode 100644 index 0000000..e8fd8f2 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium.png 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 Binary files differnew file mode 100644 index 0000000..b7d3593 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_Dogbearium_flow.png 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 Binary files differnew file mode 100644 index 0000000..934642d --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold.png 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 Binary files differnew file mode 100644 index 0000000..4067d8e --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/blocks/molten_QueensGold_flow.png 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 Binary files differnew file mode 100644 index 0000000..28b7662 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/gui/icons.png diff --git a/src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.png b/src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.png Binary files differnew file mode 100644 index 0000000..950ef67 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/items/AeonSteelIngot.png diff --git a/src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.png b/src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.png Binary files differnew file mode 100644 index 0000000..f24049a --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/items/DogbeariumIngot.png diff --git a/src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.png b/src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.png Binary files differnew file mode 100644 index 0000000..ccd3054 --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/items/QueensGoldIngot.png 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 Binary files differnew file mode 100644 index 0000000..38cf81c --- /dev/null +++ b/src/main/resources/assets/tinkersdefense/textures/items/longsword/queensgold_longsword_accessory.png 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 |
