diff options
Diffstat (limited to 'src/main/java/lance5057/tDefense/baubles')
11 files changed, 682 insertions, 205 deletions
diff --git a/src/main/java/lance5057/tDefense/baubles/BaublesBase.java b/src/main/java/lance5057/tDefense/baubles/BaublesBase.java index 7152104..b2af546 100644 --- a/src/main/java/lance5057/tDefense/baubles/BaublesBase.java +++ b/src/main/java/lance5057/tDefense/baubles/BaublesBase.java @@ -1,8 +1,40 @@ package lance5057.tDefense.baubles; +import lance5057.tDefense.baubles.tools.TDBaubles; import lance5057.tDefense.util.ModuleBase; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; public class BaublesBase extends ModuleBase { + public static BaublesBase instance = new BaublesBase(); + + public static BaublesItems items; + public static TDBaubles tools; + + @Override + public void preInit(FMLPreInitializationEvent e) + { + items = new BaublesItems(); + tools = new TDBaubles(); + + items.preInit(e); + tools.preInit(e); + } + + @Override + public void init(FMLInitializationEvent e) { + // TODO Auto-generated method stub + items.init(e); + tools.init(e); + } + + @Override + public void postInit(FMLPostInitializationEvent e) { + // TODO Auto-generated method stub + items.postInit(e); + tools.postInit(e); + } } diff --git a/src/main/java/lance5057/tDefense/baubles/BaublesClientProxy.java b/src/main/java/lance5057/tDefense/baubles/BaublesClientProxy.java new file mode 100644 index 0000000..d5603ff --- /dev/null +++ b/src/main/java/lance5057/tDefense/baubles/BaublesClientProxy.java @@ -0,0 +1,91 @@ +package lance5057.tDefense.baubles; + +import java.util.Map; + +import lance5057.tDefense.Reference; +import lance5057.tDefense.baubles.renderers.BaubleRenderer; +import lance5057.tDefense.baubles.renderers.SheatheModel; +import lance5057.tDefense.baubles.tools.TDBaubles; +import lance5057.tDefense.core.tools.TDTools; +import lance5057.tDefense.util.ModuleBase; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.item.Item; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import slimeknights.tconstruct.common.ModelRegisterUtil; +import slimeknights.tconstruct.library.TinkerRegistryClient; +import slimeknights.tconstruct.library.client.ToolBuildGuiInfo; + +public class BaublesClientProxy { + + public SheatheModel sheathe; + + ToolBuildGuiInfo sheatheGUI; + + public void preInit() { + // TODO Auto-generated method stub + + reloadRenderers(); + } + + public void init() { + // TODO Auto-generated method stub + Map<String, RenderPlayer> skinMap = Minecraft.getMinecraft().getRenderManager().getSkinMap(); + RenderPlayer render; + render = skinMap.get("default"); + render.addLayer(new BaubleRenderer()); + + render = skinMap.get("slim"); + render.addLayer(new BaubleRenderer()); + + createToolGuis(); + setupToolGuis(); + registerToolGuis(); + } + + public void postInit() + { + } + + public void registerToolRenderers() + { + ModelRegisterUtil.registerToolModel(TDBaubles.sheathe); + } + + public void createToolGuis() + { + sheatheGUI = new ToolBuildGuiInfo(TDBaubles.sheathe); + } + + public void setupToolGuis() + { + sheatheGUI.addSlotPosition(34, 15+8); + sheatheGUI.addSlotPosition(34, 33+8); + sheatheGUI.addSlotPosition(34, 51+8); + } + + public void registerToolGuis() + { + TinkerRegistryClient.addToolBuilding(sheatheGUI); + } + + public void reloadRenderers() + { + sheathe = new SheatheModel(); + registerToolRenderers(); + } + + public void setToolGuis() + { + sheatheGUI.positions.clear(); + sheatheGUI.addSlotPosition(34, 15); + sheatheGUI.addSlotPosition(34, 33); + sheatheGUI.addSlotPosition(34, 51); + } + +} diff --git a/src/main/java/lance5057/tDefense/baubles/BaublesItems.java b/src/main/java/lance5057/tDefense/baubles/BaublesItems.java index 729654a..69323bb 100644 --- a/src/main/java/lance5057/tDefense/baubles/BaublesItems.java +++ b/src/main/java/lance5057/tDefense/baubles/BaublesItems.java @@ -1,5 +1,28 @@ package lance5057.tDefense.baubles; -public class BaublesItems { +import lance5057.tDefense.util.ItemsBase; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +public class BaublesItems extends ItemsBase +{ + + @Override + public void preInit(FMLPreInitializationEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void init(FMLInitializationEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void postInit(FMLPostInitializationEvent e) { + // TODO Auto-generated method stub + + } } diff --git a/src/main/java/lance5057/tDefense/baubles/blocks/JewelersBench.java b/src/main/java/lance5057/tDefense/baubles/blocks/JewelersBench.java deleted file mode 100644 index e7f54fb..0000000 --- a/src/main/java/lance5057/tDefense/baubles/blocks/JewelersBench.java +++ /dev/null @@ -1,57 +0,0 @@ -package lance5057.tDefense.baubles.blocks; - -import lance5057.tDefense.baubles.tileentities.TileEntity_JewelersBench; -import net.minecraft.block.Block; -import net.minecraft.block.ITileEntityProvider; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class JewelersBench extends Block implements ITileEntityProvider -{ - - public JewelersBench() - { - super(Material.iron); - } - - //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. - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - //This is the icon to use for showing the block in your hand. - @SideOnly(Side.CLIENT) - @Override - public void registerBlockIcons(IIconRegister icon) - { - blockIcon = icon.registerIcon("tinkersdefense:WIP"); - } - - @Override - public TileEntity createNewTileEntity(World w, int md) - { - final TileEntity_JewelersBench te = new TileEntity_JewelersBench(); - return te; - } - -} diff --git a/src/main/java/lance5057/tDefense/baubles/models/ModelJewelersBench.java b/src/main/java/lance5057/tDefense/baubles/models/ModelJewelersBench.java deleted file mode 100644 index 164c522..0000000 --- a/src/main/java/lance5057/tDefense/baubles/models/ModelJewelersBench.java +++ /dev/null @@ -1,104 +0,0 @@ -package lance5057.tDefense.baubles.models; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -/** - * JewelersBench - lance5057 - * Created using Tabula 4.1.1 - */ -public class ModelJewelersBench extends ModelBase -{ - public ModelRenderer TableSide2; - public ModelRenderer SawBlock1; - public ModelRenderer SawBlock2; - public ModelRenderer SawBlock3; - public ModelRenderer SawBlockClamp; - public ModelRenderer Leg1; - public ModelRenderer Leg2; - public ModelRenderer Leg3; - public ModelRenderer Leg4; - public ModelRenderer TableTop; - public ModelRenderer TableBack; - public ModelRenderer TableSide1; - public ModelRenderer Drawer; - public ModelRenderer Handle; - - public ModelJewelersBench() - { - textureWidth = 64; - textureHeight = 64; - SawBlock1 = new ModelRenderer(this, 0, 0); - SawBlock1.setRotationPoint(2.0F, 8.2F, -12.0F); - SawBlock1.addBox(0.0F, 0.0F, 0.0F, 1, 1, 4, 0.0F); - Leg4 = new ModelRenderer(this, 0, 0); - Leg4.setRotationPoint(6.0F, 10.0F, 6.0F); - Leg4.addBox(0.0F, 0.0F, 0.0F, 2, 14, 2, 0.0F); - Drawer = new ModelRenderer(this, 0, 46); - Drawer.setRotationPoint(-6.0F, 11.5F, -8.0F); - Drawer.addBox(0.0F, 0.0F, 0.0F, 12, 2, 16, 0.0F); - TableSide2 = new ModelRenderer(this, 0, 0); - TableSide2.setRotationPoint(-8.0F, 7.0F, -7.0F); - TableSide2.addBox(0.0F, 0.0F, 0.0F, 1, 1, 14, 0.0F); - Leg2 = new ModelRenderer(this, 0, 0); - Leg2.setRotationPoint(6.0F, 10.0F, -8.0F); - Leg2.addBox(0.0F, 0.0F, 0.0F, 2, 14, 2, 0.0F); - TableSide1 = new ModelRenderer(this, 0, 0); - TableSide1.setRotationPoint(7.0F, 7.0F, -7.0F); - TableSide1.addBox(0.0F, 0.0F, 0.0F, 1, 1, 14, 0.0F); - SawBlock3 = new ModelRenderer(this, 0, 0); - SawBlock3.setRotationPoint(3.0F, 8.2F, -11.0F); - SawBlock3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3, 0.0F); - Handle = new ModelRenderer(this, 55, 0); - Handle.setRotationPoint(-2.0F, 12.0F, -9.0F); - Handle.addBox(0.0F, 0.0F, 0.0F, 4, 1, 1, 0.0F); - Leg1 = new ModelRenderer(this, 0, 0); - Leg1.setRotationPoint(-8.0F, 10.0F, -8.0F); - Leg1.addBox(0.0F, 0.0F, 0.0F, 2, 14, 2, 0.0F); - TableTop = new ModelRenderer(this, 0, 28); - TableTop.setRotationPoint(-8.0F, 8.0F, -8.0F); - TableTop.addBox(0.0F, 0.0F, 0.0F, 16, 2, 16, 0.0F); - TableBack = new ModelRenderer(this, 0, 0); - TableBack.setRotationPoint(-8.0F, 7.0F, 7.0F); - TableBack.addBox(0.0F, 0.0F, 0.0F, 16, 1, 1, 0.0F); - SawBlockClamp = new ModelRenderer(this, 54, 0); - SawBlockClamp.setRotationPoint(1.5F, 8.0F, -9.0F); - SawBlockClamp.addBox(0.0F, 0.0F, 0.0F, 4, 2, 1, 0.0F); - Leg3 = new ModelRenderer(this, 0, 0); - Leg3.setRotationPoint(-8.0F, 10.0F, 6.0F); - Leg3.addBox(0.0F, 0.0F, 0.0F, 2, 14, 2, 0.0F); - SawBlock2 = new ModelRenderer(this, 0, 0); - SawBlock2.setRotationPoint(4.0F, 8.2F, -12.0F); - SawBlock2.addBox(0.0F, 0.0F, 0.0F, 1, 1, 4, 0.0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - SawBlock1.render(f5); - Leg4.render(f5); - Drawer.render(f5); - TableSide2.render(f5); - Leg2.render(f5); - TableSide1.render(f5); - SawBlock3.render(f5); - Handle.render(f5); - Leg1.render(f5); - TableTop.render(f5); - TableBack.render(f5); - SawBlockClamp.render(f5); - Leg3.render(f5); - SawBlock2.render(f5); - } - - /** - * This is a helper function from Tabula to set the rotation of model parts - */ - public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } -} diff --git a/src/main/java/lance5057/tDefense/baubles/models/Renderer_JewelersBench.java b/src/main/java/lance5057/tDefense/baubles/models/Renderer_JewelersBench.java deleted file mode 100644 index 8f5608c..0000000 --- a/src/main/java/lance5057/tDefense/baubles/models/Renderer_JewelersBench.java +++ /dev/null @@ -1,43 +0,0 @@ -package lance5057.tDefense.baubles.models; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -public class Renderer_JewelersBench extends TileEntitySpecialRenderer -{ - private final ModelJewelersBench model; - - public Renderer_JewelersBench() - { - model = new ModelJewelersBench(); - } - - @Override - public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); - - final ResourceLocation textures = (new ResourceLocation( - "tinkersdefense:textures/blocks/jewelersbench.png")); - - Minecraft.getMinecraft().renderEngine.bindTexture(textures); - - GL11.glPushMatrix(); - - te.getBlockMetadata(); - - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - - model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - } - -} diff --git a/src/main/java/lance5057/tDefense/baubles/renderers/BaubleRenderer.java b/src/main/java/lance5057/tDefense/baubles/renderers/BaubleRenderer.java new file mode 100644 index 0000000..8c6aec3 --- /dev/null +++ b/src/main/java/lance5057/tDefense/baubles/renderers/BaubleRenderer.java @@ -0,0 +1,108 @@ +package lance5057.tDefense.baubles.renderers; + +import lance5057.tDefense.core.tools.Shield; +import lance5057.tDefense.core.tools.Zweihander; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.ItemShield; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.util.EnumHand; +import slimeknights.tconstruct.library.tools.ToolCore; +import slimeknights.tconstruct.tools.melee.item.Cleaver; + +public class BaubleRenderer implements LayerRenderer<EntityPlayer> { + + @Override + public void doRenderLayer(EntityPlayer entitylivingbaseIn, float limbSwing, float limbSwingAmount, + float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + +// ItemStack stack = entitylivingbaseIn.inventory.getStackInSlot(0); +// ItemStack stackShield = entitylivingbaseIn.inventory.getStackInSlot(1); +// +// ItemStack stackTest = entitylivingbaseIn.getHeldItem(EnumHand.MAIN_HAND); +// +// if (stack != null +// && (stack.getItem() instanceof ToolCore || stack.getItem() instanceof ItemSword) +// && !(stack.getItem() instanceof Shield) +// && stack != stackTest) { +// GlStateManager.pushMatrix(); +// Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); +//// Helper.rotateIfSneaking(player); +//// boolean armor = !player.getItemStackFromSlot(EntityEquipmentSlot.LEGS).isEmpty(); +// //GlStateManager.rotate(90, 0, 1, 0); +// GlStateManager.rotate(20, 0, 0, 1); +// GlStateManager.translate(-0.125, 0.1, 0.25); +// //GlStateManager.scale(0.55, 0.55, 0.55); +// +//// if (renderedOne) +//// GlStateManager.translate(0F, 0F, armor ? 0.55F : 0.5F); +//// else +//// GlStateManager.translate(0F, 0F, armor ? -0.55F : -0.5F); +// +// if(stack.getItem() instanceof Zweihander || stack.getItem() instanceof Cleaver) +// { +// GlStateManager.scale(1.5F, 1.5F, 0.75F); +// GlStateManager.translate(0.1, 0.1, 0); +// } +// else +// GlStateManager.scale(0.75F, 0.75F, 0.75F); +// +// GlStateManager.color(1F, 1F, 1F); +// int light = 15728880; +// int lightmapX = light % 65536; +// int lightmapY = light / 65536; +// OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY); +// Minecraft.getMinecraft().getRenderItem().renderItem(stack, ItemCameraTransforms.TransformType.NONE); +// GlStateManager.popMatrix(); +// } +// +// //Shield +// if (stackShield != null +// && (stackShield.getItem() instanceof Shield || stackShield.getItem() instanceof ItemShield) +// && stackShield != stackTest) { +// GlStateManager.pushMatrix(); +// Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); +//// Helper.rotateIfSneaking(player); +//// boolean armor = !player.getItemStackFromSlot(EntityEquipmentSlot.LEGS).isEmpty(); +// //GlStateManager.rotate(90, 0, 1, 0); +// GlStateManager.rotate(160, 0, 0, 1); +// GlStateManager.translate(0.125, -0.3, 0.3); +// //GlStateManager.scale(0.55, 0.55, 0.55); +// +//// if (renderedOne) +//// GlStateManager.translate(0F, 0F, armor ? 0.55F : 0.5F); +//// else +//// GlStateManager.translate(0F, 0F, armor ? -0.55F : -0.5F); +// +// if(stackShield.getItem() instanceof ItemShield) +// { +// //GlStateManager.scale(1.5F, 1.5F, 0.75F); +// GlStateManager.translate(0.5, 0.5, 0.5); +// } +//// else +// //GlStateManager.scale(0.75F, 0.75F, 0.75F); +// +// GlStateManager.color(1F, 1F, 1F); +// int light = 15728880; +// int lightmapX = light % 65536; +// int lightmapY = light / 65536; +// OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY); +// Minecraft.getMinecraft().getRenderItem().renderItem(stackShield, ItemCameraTransforms.TransformType.NONE); +// GlStateManager.popMatrix(); +// } + } + + @Override + public boolean shouldCombineTextures() { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/src/main/java/lance5057/tDefense/baubles/renderers/SheatheModel.java b/src/main/java/lance5057/tDefense/baubles/renderers/SheatheModel.java new file mode 100644 index 0000000..88177ef --- /dev/null +++ b/src/main/java/lance5057/tDefense/baubles/renderers/SheatheModel.java @@ -0,0 +1,128 @@ +package lance5057.tDefense.baubles.renderers; + +import lance5057.tDefense.core.tools.Shield; +import lance5057.tDefense.core.tools.Zweihander; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.item.ItemShield; +import net.minecraft.item.ItemStack; +import slimeknights.tconstruct.tools.melee.item.Cleaver; + +/** + * Sheathe - Lance5057 Created using Tabula 4.1.1 + */ +public class SheatheModel extends ModelBiped { + public ModelRenderer Sheathe; + public ModelRenderer FrontCap; + public ModelRenderer WaistBelt; + public ModelRenderer BackCap; + public ModelRenderer ShoulderBelt; + + public SheatheModel() { + + // rSword = new RenderItem(Minecraft.getMinecraft().getTextureManager(), + // null, null); + + this.textureWidth = 64; + this.textureHeight = 64; + + this.WaistBelt = new ModelRenderer(this, 0, 32); + this.WaistBelt.setRotationPoint(0.0F, 0.0F, 0.0F); + this.WaistBelt.addBox(-4.5F, 4.5F, -2.5F, 9, 2, 5, -0.3F); + // this.bipedBody.addChild(WaistBelt); + + this.ShoulderBelt = new ModelRenderer(this, 0, 32); + this.ShoulderBelt.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderBelt.addBox(-3.0F, 1.0F, -2.5F, 9, 2, 5, -0.3F); + this.setRotateAngle(ShoulderBelt, 0.0F, 0.0F, 0.7853981633974483F); + // this.bipedBody.addChild(ShoulderBelt); + + this.BackCap = new ModelRenderer(this, 0, 39); + this.BackCap.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackCap.addBox(-2.2F, 3.6F, -2.8F, 3, 3, 2, -0.4F); + this.setRotateAngle(BackCap, 0.0F, 0.0F, -0.4363323129985824F); + // this.bipedBody.addChild(BackCap); + + this.FrontCap = new ModelRenderer(this, 0, 39); + this.FrontCap.setRotationPoint(0.0F, 0.0F, 0.0F); + this.FrontCap.addBox(-2.2F, 3.6F, 0.7F, 3, 3, 2, -0.4F); + this.setRotateAngle(FrontCap, 0.0F, 0.0F, -0.4363323129985824F); + // this.bipedBody.addChild(FrontCap); + + this.Sheathe = new ModelRenderer(this, 28, 32); + this.Sheathe.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Sheathe.addBox(-1.1F, 1.0F, 3.5F, 11, 3, 1, 0.2F); + this.setRotateAngle(Sheathe, 0.0F, 0.0F, 1.1344640137963142F); + // this.bipedBody.addChild(Sheathe); + } + + public void render(float f5, ItemStack weapon, ItemStack shield, ItemStack active, ItemStack offhand) { + + WaistBelt.render(f5); + ShoulderBelt.render(f5); + BackCap.render(f5); + FrontCap.render(f5); + Sheathe.render(f5); + + + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + + if (weapon != null && active != weapon) { + GlStateManager.pushMatrix(); + + GlStateManager.rotate(20, 0, 0, 1); + float s = 13f; + GlStateManager.scale(s, s, s); + GlStateManager.translate(-0.1F, 0.175f, 0.3f); + + if(weapon.getItem() instanceof Zweihander || weapon.getItem() instanceof Cleaver) + { + GlStateManager.scale(2f, 2f, 1f); + } + + Minecraft.getMinecraft().getRenderItem().renderItem(weapon, ItemCameraTransforms.TransformType.NONE); + + GlStateManager.popMatrix(); + } + + if (shield != null && shield != active + && (shield.getItem() instanceof ItemShield || shield.getItem() instanceof Shield)) { + GlStateManager.pushMatrix(); + + GlStateManager.rotate(20, 0, 0, 1); + float s = 13f; + GlStateManager.scale(s, s, s); + GlStateManager.translate(-0.1F, 0.175f, 0.3f); + + if (shield.getItem() instanceof Shield) { + + GlStateManager.rotate(180 - 45, 0, 0, 1); + GlStateManager.translate(-0.0F, -0.3f, 0.1f); + GlStateManager.scale(1.35, 1.35, 1.35); + } else { + GlStateManager.rotate(180 - 45, 0, 0, 1); + GlStateManager.translate(0.7F, 0.2f, 0.7f); + GlStateManager.scale(1.35, 1.35, 1.35); + } + + Minecraft.getMinecraft().getRenderItem().renderItem(shield, ItemCameraTransforms.TransformType.NONE); + + GlStateManager.popMatrix(); + } + + + } + + /** + * This is a helper function from Tabula to set the rotation of model parts + */ + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/lance5057/tDefense/baubles/tools/BaubleTool.java b/src/main/java/lance5057/tDefense/baubles/tools/BaubleTool.java new file mode 100644 index 0000000..b393100 --- /dev/null +++ b/src/main/java/lance5057/tDefense/baubles/tools/BaubleTool.java @@ -0,0 +1,152 @@ +package lance5057.tDefense.baubles.tools; + +import java.util.List; + +import javax.annotation.Nullable; + +import baubles.api.BaubleType; +import baubles.api.IBauble; +import baubles.api.render.IRenderBauble; +import lance5057.tDefense.core.materials.ShieldMaterialStats; +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.EntityLivingBase; +import net.minecraft.entity.IProjectile; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.EnumAction; +import net.minecraft.item.IItemPropertyGetter; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ActionResult; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.Optional; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import slimeknights.tconstruct.library.client.model.ToolModelLoader; +import slimeknights.tconstruct.library.tinkering.PartMaterialType; +import slimeknights.tconstruct.library.tools.ToolCore; +import slimeknights.tconstruct.library.tools.ToolNBT; +import slimeknights.tconstruct.tools.TinkerTools; + +//@Optional.InterfaceList({@Optional.Interface(modid = "battlegear2", iface = "mods.battlegear2.api.ISheathed"), @Optional.Interface(modid = "battlegear2", iface = "mods.battlegear2.api.shield.IArrowCatcher"), @Optional.Interface(modid = "battlegear2", iface = "mods.battlegear2.api.shield.IArrowDisplay"), @Optional.Interface(modid = "battlegear2", iface = "mods.battlegear2.api.shield.IShield")}) +public abstract class BaubleTool extends ToolCore implements IBauble, IRenderBauble +{ + //protected static PartMaterialType ShieldMat = new PartMaterialType(TinkerTools.largePlate, ShieldMaterialStats.TYPE); + + public BaubleTool(PartMaterialType... requiredComponents) + { + super(requiredComponents); + +// this.addPropertyOverride(new ResourceLocation("block"), new IItemPropertyGetter() +// { +// @SideOnly(Side.CLIENT) +// public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) +// { +// float i = entityIn != null && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? 1.0F : 0.0F; +// return i; +// } +// }); + } + + 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) +// { +// return 0.0f; +// } + + /** + * returns the action that specifies what animation to play when the items + * is being used + */ +// @Override +// public EnumAction getItemUseAction(ItemStack par1ItemStack) +// { +// return EnumAction.BLOCK; +// } + +// public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) +// { +// playerIn.setActiveHand(hand); +// return new ActionResult(EnumActionResult.SUCCESS, itemStackIn); +// } +// +// public EnumActionResult onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) +// { +// return super.onItemUse(stack, playerIn, worldIn, pos, hand, facing, hitX, hitY, hitZ); +// } + + /** + * How long it takes to use or consume an item + */ + @Override + public int getMaxItemUseDuration(ItemStack par1ItemStack) + { + return 72000; + } + + @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) +// { +// final EntityPlayerSP player = (EntityPlayerSP) entity; +// final ItemStack usingItem = player.getActiveItemStack(); +// if(usingItem != null && usingItem.getItem() == this) +// { +// player.movementInput.moveForward *= 2.5F; +// player.movementInput.moveStrafe *= 2.5F; +// } +// } + } + + protected String getHarvestType() + { + return null; + } + + @Override + public float damagePotential() { + // TODO Auto-generated method stub + return 0.1f; + } + + @Override + public double attackSpeed() { + // TODO Auto-generated method stub + return 4; + } + + @Override + public NBTTagCompound buildTag( + List<slimeknights.tconstruct.library.materials.Material> materials) { + ToolNBT data = buildDefaultTag(materials); + return data.get(); + } +} diff --git a/src/main/java/lance5057/tDefense/baubles/tools/Sheathe.java b/src/main/java/lance5057/tDefense/baubles/tools/Sheathe.java new file mode 100644 index 0000000..f9c62cc --- /dev/null +++ b/src/main/java/lance5057/tDefense/baubles/tools/Sheathe.java @@ -0,0 +1,48 @@ +package lance5057.tDefense.baubles.tools; + +import baubles.api.BaubleType; +import lance5057.tDefense.Reference; +import lance5057.tDefense.TinkersDefense; +import lance5057.tDefense.baubles.BaublesBase; +import lance5057.tDefense.proxy.ClientProxy; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import slimeknights.tconstruct.library.tinkering.PartMaterialType; +import slimeknights.tconstruct.tools.TinkerTools; + +public class Sheathe extends BaubleTool { + private static final ResourceLocation texture = new ResourceLocation(Reference.MOD_ID, "textures/model/sheathe.png"); + + public Sheathe(PartMaterialType... requiredComponents) { + super(PartMaterialType.head(TinkerTools.largePlate), PartMaterialType.handle(TinkerTools.toolRod), + PartMaterialType.extra(TinkerTools.bowString)); + + } + + @Override + public BaubleType getBaubleType(ItemStack itemstack) { + // TODO Auto-generated method stub + return BaubleType.BODY; + } + + @Override + public void onPlayerBaubleRender(ItemStack stack, EntityPlayer player, RenderType type, float partialTicks) { + // TODO Auto-generated method stub + + if (type == RenderType.BODY) { + float s = 1F / 16F; + GlStateManager.scale(s, s, s); + + GlStateManager.enableLighting(); + GlStateManager.enableRescaleNormal(); + + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + + ClientProxy.baubles.sheathe.render(1f, player.inventory.getStackInSlot(0), player.inventory.getStackInSlot(1), player.getHeldItemMainhand(), player.getHeldItemOffhand()); + } + } + +} diff --git a/src/main/java/lance5057/tDefense/baubles/tools/TDBaubles.java b/src/main/java/lance5057/tDefense/baubles/tools/TDBaubles.java new file mode 100644 index 0000000..f06a217 --- /dev/null +++ b/src/main/java/lance5057/tDefense/baubles/tools/TDBaubles.java @@ -0,0 +1,99 @@ +package lance5057.tDefense.baubles.tools; + +import com.google.common.eventbus.Subscribe; + +import lance5057.tDefense.core.tools.HeaterShield; +import lance5057.tDefense.core.tools.RoundShield; +import lance5057.tDefense.core.tools.TDToolEvents; +import lance5057.tDefense.core.tools.Zweihander; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; +import slimeknights.tconstruct.library.TinkerRegistry; +import slimeknights.tconstruct.library.tools.ToolCore; + +public class TDBaubles +{ + + TDToolEvents events = new TDToolEvents(); + + // Tools + public static ToolCore sheathe = new Sheathe(); + + // Tool Parts + + // Modifiers + + // Helper stuff +// static List<ToolCore> tools = Lists.newLinkedList(); // contains all tools registered in this pulse +// static List<ToolPart> toolparts = Lists.newLinkedList(); // ^ all toolparts +// static List<IModifier> modifiers = Lists.newLinkedList(); // ^ all modifiers + + // PRE-INITIALIZATION + @Subscribe + public void preInit(FMLPreInitializationEvent event) { + // register items + MinecraftForge.EVENT_BUS.register(events); + + regToolParts(); + regTools(); + registerModifiers(); + + // register blocks + + // register entities + + //proxy.preInit(); + } + + private void regToolParts() { + // The order the items are registered in represents the order in the stencil table GUI too + + } + + private void regTools() { + + regTool(sheathe, "sheathe"); + + TinkerRegistry.registerToolStationCrafting(sheathe); + } + + private void regTool(ToolCore tool, String name) + { + tool.setRegistryName(new ResourceLocation("tinkersdefense:" + name)); + TinkerRegistry.registerTool(tool); + GameRegistry.register(tool); + } + + private void registerModifiers() { + + } + + // INITIALIZATION + @Subscribe + public void init(FMLInitializationEvent event) { + regToolBuilding(); + regRecipies(); + + //proxy.init(); + } + + private void regToolBuilding() { + TinkerRegistry.registerToolCrafting(sheathe); + } + + private void regRecipies() { + + } + + // POST-INITIALIZATION + @Subscribe + public void postInit(FMLPostInitializationEvent event) { + //proxy.postInit(); + } + + +}
\ No newline at end of file |
