From 13aa7d8e4c5bff3ea538e66333b2708c790ca935 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 6 Nov 2021 18:26:31 +0100 Subject: [PATCH] fixed recipes, bobbleheads --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../com/hbm/blocks/generic/BlockBobble.java | 52 +- .../com/hbm/blocks/generic/BlockLoot.java | 7 +- .../java/com/hbm/crafting/PowderRecipes.java | 62 +- .../java/com/hbm/crafting/ToolRecipes.java | 3 - .../com/hbm/items/block/ItemBlockMeta.java | 17 + src/main/java/com/hbm/main/ClientProxy.java | 2 + .../com/hbm/render/item/ItemRenderBase.java | 3 + .../hbm/render/item/ItemRenderLibrary.java | 13 + .../hbm/render/tileentity/RenderBobble.java | 109 +++ .../assets/hbm/models/trinkets/bobble.obj | 830 ++++++++++++++++++ .../hbm/textures/items/fluid_tank_lead.png | Bin 0 -> 261 bytes .../items/fluid_tank_lead_overlay.png | Bin 0 -> 132 bytes .../hbm/textures/models/trinkets/cirno.png | Bin 0 -> 1948 bytes .../hbm/textures/models/trinkets/hbm.png | Bin 0 -> 1132 bytes .../hbm/textures/models/trinkets/socket.png | Bin 0 -> 258 bytes 16 files changed, 1056 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/hbm/items/block/ItemBlockMeta.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderBobble.java create mode 100644 src/main/resources/assets/hbm/models/trinkets/bobble.obj create mode 100644 src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png create mode 100644 src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/cirno.png create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/hbm.png create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/socket.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b82465974..8579c41c3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2435,7 +2435,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); - GameRegistry.registerBlock(bobblehead, bobblehead.getUnlocalizedName()); + GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); GameRegistry.registerBlock(hazmat, hazmat.getUnlocalizedName()); GameRegistry.registerBlock(deco_rbmk, deco_rbmk.getUnlocalizedName()); GameRegistry.registerBlock(deco_rbmk_smooth, deco_rbmk_smooth.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index 0248fda75..1e5c1a636 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -1,13 +1,20 @@ package com.hbm.blocks.generic; import java.util.List; +import java.util.Random; + +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.util.Tuple.Quartet; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -41,6 +48,40 @@ public class BlockBobble extends BlockContainer { return false; } + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + if(!world.isRemote) { + TileEntityBobble entity = (TileEntityBobble) world.getTileEntity(x, y, z); + if(entity != null) { + EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal())); + world.spawnEntityInWorld(item); + } + } + + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + + } else if(!player.isSneaking()) { + world.setBlockToAir(x, y, z); + return true; + + } else { + return false; + } + } + @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { @@ -61,7 +102,8 @@ public class BlockBobble extends BlockContainer { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.0625F, 1.0F); + float f = 0.0625F; + this.setBlockBounds(5.5F * f, 0.0F, 5.5F * f, 1.0F - 5.5F * f, 0.625F, 1.0F - 5.5F * f); } @Override @@ -111,18 +153,22 @@ public class BlockBobble extends BlockContainer { public static enum BobbleType { - NONE("null", "null", null, null); + NONE("null", "null", null, null, false), + BOB("HbMinecraft", "HbMinecraft", "Hbm's Nuclear Tech Mod", "eat my shit, tteabag", false), + CIRNO("Cirno", "Cirno", "being a dumb ice fairy", "No brain. Head empty.", true); public String name; //the title of the tooltip public String label; //the name engraved in the socket public String contribution; //what contributions this person has made, if applicable public String inscription; //the flavor text + public boolean skinLayers; - private BobbleType(String name, String label, String contribution, String inscription) { + private BobbleType(String name, String label, String contribution, String inscription, boolean layers) { this.name = name; this.label = label; this.contribution = contribution; this.inscription = inscription; + this.skinLayers = layers; } } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockLoot.java b/src/main/java/com/hbm/blocks/generic/BlockLoot.java index edda47f8d..e13dd5a5e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLoot.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLoot.java @@ -89,12 +89,7 @@ public class BlockLoot extends BlockContainer { return true; } else if(!player.isSneaking()) { - - TileEntityLoot entity = (TileEntityLoot) world.getTileEntity(x, y, z); - if(entity != null) { - world.setBlockToAir(x, y, z); - player.inventoryContainer.detectAndSendChanges(); - } + world.setBlockToAir(x, y, z); return true; } else { diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index c5c7fb346..372923a9a 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -1,11 +1,11 @@ package com.hbm.crafting; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; +import com.hbm.main.CraftingManager; -import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.ShapelessOreRecipe; /** * For recipes mostly involving or resulting in powder @@ -15,41 +15,41 @@ public class PowderRecipes { public static void register() { - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_power, 5), new Object[] { "dustRedstone", "dustGlowstone", "dustDiamond", "dustNeptunium", "dustMagnetizedTungsten" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.ballistite, 3), new Object[] { Items.gunpowder, "dustSaltpeter", Items.sugar })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.ingot_steel_dusted, 1), new Object[] { "ingotSteel", "dustCoal" })); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_power, 5), new Object[] { REDSTONE.dust(), "dustGlowstone", DIAMOND.dust(), NP237.dust(), MAGTUNG.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ballistite, 3), new Object[] { Items.gunpowder, KNO.dust(), Items.sugar }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ingot_steel_dusted, 1), new Object[] { STEEL.ingot(), COAL.dust() }); //Gunpowder - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(Items.gunpowder, 3), new Object[] { "dustSulfur", "dustSaltpeter", "gemCoal" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(Items.gunpowder, 3), new Object[] { "dustSulfur", "dustSaltpeter", new ItemStack(Items.coal, 1, 1) })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(Items.gunpowder, 3), new Object[] { "dustSulfur", "dustSaltpeter", "gemCoal" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(Items.gunpowder, 3), new Object[] { "dustSulfur", "dustSaltpeter", new ItemStack(Items.coal, 1, 1) })); + CraftingManager.addShapelessAuto(new ItemStack(Items.gunpowder, 3), new Object[] { S.dust(), KNO.dust(), COAL.gem() }); + CraftingManager.addShapelessAuto(new ItemStack(Items.gunpowder, 3), new Object[] { S.dust(), KNO.dust(), new ItemStack(Items.coal, 1, 1) }); + CraftingManager.addShapelessAuto(new ItemStack(Items.gunpowder, 3), new Object[] { S.dust(), KNO.dust(), COAL.gem() }); + CraftingManager.addShapelessAuto(new ItemStack(Items.gunpowder, 3), new Object[] { S.dust(), KNO.dust(), new ItemStack(Items.coal, 1, 1) }); //Blends - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { "dustNeptunium", "dustIodine", "dustThorium", "dustAstatine", "dustNeodymium", "dustCaesium" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { "dustStrontium", "dustCobalt", "dustBromine", "dustTennessine", "dustNiobium", "dustCerium" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_spark_mix, 5), new Object[] { "dustDesh", "dustEuphemium", ModItems.powder_meteorite, ModItems.powder_power, ModItems.powder_nitan_mix })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_meteorite, 5), new Object[] { "dustIron", "dustCopper", "dustLithium", "dustTungsten", "dustUranium" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_thermite, 4), new Object[] { "dustIron", "dustIron", "dustIron", "dustAluminum" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_semtex_mix, 3), new Object[] { ModItems.solid_fuel, ModItems.cordite, "dustSaltpeter" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_semtex_mix, 1), new Object[] { ModItems.solid_fuel, ModItems.ballistite, "dustSaltpeter" })); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), CS.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { ST.dust(), CO.dust(), BR.dust(), TS.dust(), NB.dust(), CE.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_spark_mix, 5), new Object[] { DESH.dust(), EUPH.dust(), ModItems.powder_meteorite, ModItems.powder_power, ModItems.powder_nitan_mix }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_meteorite, 5), new Object[] { IRON.dust(), CU.dust(), LI.dust(), W.dust(), U.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_thermite, 4), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), AL.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_semtex_mix, 3), new Object[] { ModItems.solid_fuel, ModItems.cordite, KNO.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_semtex_mix, 1), new Object[] { ModItems.solid_fuel, ModItems.ballistite, KNO.dust() }); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_desh_mix, 1), new Object[] { "dustTinyBoron", "dustTinyBoron", "dustTinyLanthanum", "dustTinyLanthanum", "dustTinyCerium", "dustTinyCobalt", "dustTinyLithium", "dustTinyNeodymium", "dustTinyNiobium" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_desh_mix, 9), new Object[] { "dustBoron", "dustBoron", "dustLanthanum", "dustLanthanum", "dustCerium", "dustCobalt", "dustLithium", "dustNeodymium", "dustNiobium" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_desh_ready, 1), new Object[] { ModItems.powder_desh_mix, ModItems.nugget_mercury, ModItems.nugget_mercury, "dustCoal" })); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_mix, 1), new Object[] { B.dustTiny(), B.dustTiny(), LA.dustTiny(), LA.dustTiny(), CE.dustTiny(), CO.dustTiny(), LI.dustTiny(), ND.dustTiny(), NB.dustTiny() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_mix, 9), new Object[] { B.dust(), B.dust(), LA.dust(), LA.dust(), CE.dust(), CO.dust(), LI.dust(), ND.dust(), NB.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_ready, 1), new Object[] { ModItems.powder_desh_mix, ModItems.nugget_mercury, ModItems.nugget_mercury, COAL.dust() }); //Metal powders - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { "dustRedstone", "dustIron", "dustCoal", "dustCopper" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_advanced_alloy, 3), new Object[] { "dustIron", "dustCoal", "dustMingrade" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_advanced_alloy, 3), new Object[] { "dustRedstone", "dustSteel", "dustCopper" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_advanced_alloy, 2), new Object[] { "dustMingrade", "dustSteel" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { "dustTungsten", "nuggetSchrabidium" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { "dustSteel", "nuggetTechnetium99" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_red_copper, 2), new Object[] { "dustRedstone", "dustCopper" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_steel, 2), new Object[] { "dustIron", "dustCoal" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { "dustSteel", "dustTungsten" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { "dustSteel", "dustCobalt" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { "dustIron", "dustCoal", "dustTungsten", "dustTungsten" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { "dustIron", "dustCoal", "dustCobalt", "dustCobalt" })); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 3), new Object[] { IRON.dust(), COAL.dust(), MINGRADE.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 3), new Object[] { REDSTONE.dust(), STEEL.dust(), CU.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 2), new Object[] { MINGRADE.dust(), STEEL.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_red_copper, 2), new Object[] { REDSTONE.dust(), CU.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_steel, 2), new Object[] { IRON.dust(), COAL.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { STEEL.dust(), W.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { STEEL.dust(), CO.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { IRON.dust(), COAL.dust(), W.dust(), W.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { IRON.dust(), COAL.dust(), CO.dust(), CO.dust() }); } } diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 38efe37e3..3ca599b26 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -7,13 +7,10 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.main.CraftingManager; -import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.ShapedOreRecipe; -import net.minecraftforge.oredict.ShapelessOreRecipe; /** * For mining and utility tools diff --git a/src/main/java/com/hbm/items/block/ItemBlockMeta.java b/src/main/java/com/hbm/items/block/ItemBlockMeta.java new file mode 100644 index 000000000..c840b5bff --- /dev/null +++ b/src/main/java/com/hbm/items/block/ItemBlockMeta.java @@ -0,0 +1,17 @@ +package com.hbm.items.block; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; + +public class ItemBlockMeta extends ItemBlock { + + public ItemBlockMeta(Block p_i45326_1_) { + super(p_i45326_1_); + this.setMaxDamage(0); + this.setHasSubtypes(true); + } + + public int getMetadata(int p_77647_1_) { + return p_77647_1_; + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 75de1504d..cb053d470 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -37,6 +37,7 @@ import java.util.Map.Entry; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; @@ -115,6 +116,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); //bombs ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy()); diff --git a/src/main/java/com/hbm/render/item/ItemRenderBase.java b/src/main/java/com/hbm/render/item/ItemRenderBase.java index d1c8120f3..11524676f 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderBase.java +++ b/src/main/java/com/hbm/render/item/ItemRenderBase.java @@ -53,10 +53,13 @@ public abstract class ItemRenderBase implements IItemRenderer { renderNonInv(); } renderCommon(); + renderCommonWithStack(item); + GL11.glPopMatrix(); } public void renderNonInv() { } public void renderInventory() { } public void renderCommon() { } + public void renderCommonWithStack(ItemStack item) { } } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index bf9c0c66d..16efb8ed9 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -5,12 +5,15 @@ import java.util.HashMap; import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockBobble.BobbleType; import com.hbm.main.ResourceManager; +import com.hbm.render.tileentity.RenderBobble; import com.hbm.render.tileentity.RenderDemonLamp; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; public class ItemRenderLibrary { @@ -1129,6 +1132,16 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.fracking_tower_tex); ResourceManager.fracking_tower.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.bobblehead), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + GL11.glScaled(10, 10, 10); + } + public void renderCommonWithStack(ItemStack stack) { + GL11.glScaled(0.5, 0.5, 0.5); + RenderBobble.instance.renderBobble(BobbleType.values()[stack.getItemDamage()]); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java new file mode 100644 index 000000000..e36f3f922 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -0,0 +1,109 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.blocks.generic.BlockBobble.BobbleType; +import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderBobble extends TileEntitySpecialRenderer { + + public static RenderBobble instance = new RenderBobble(); + + public static final IModelCustom bobble = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/bobble.obj")); + public static final ResourceLocation socket = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/socket.png"); + + public static final ResourceLocation bobble_hbm = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/hbm.png"); + public static final ResourceLocation bobble_cirno = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/cirno.png"); + + @SuppressWarnings("incomplete-switch") //shut up + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + TileEntityBobble te = (TileEntityBobble) tile; + BobbleType type = te.type; + + GL11.glRotated(22.5D * tile.getBlockMetadata() + 90, 0, -1, 0); + + renderBobble(type); + + GL11.glPopMatrix(); + } + + public void renderBobble(BobbleType type) { + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + TextureManager texman = Minecraft.getMinecraft().getTextureManager(); + + texman.bindTexture(socket); + bobble.renderPart("Socket"); + + switch(type) { + case BOB: texman.bindTexture(bobble_hbm); break; + case CIRNO: texman.bindTexture(bobble_cirno); break; + default: texman.bindTexture(ResourceManager.universal); + } + + String suffix = type.skinLayers ? "" : "17"; + + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + bobble.renderPart("LL" + suffix); + bobble.renderPart("RL" + suffix); + bobble.renderPart("LA" + suffix); + bobble.renderPart("RA" + suffix); + bobble.renderPart("Body" + suffix); + + double speed = 0.005; + double amplitude = 1; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.75, 0); + GL11.glRotated(Math.sin(System.currentTimeMillis() * speed) * amplitude, 1, 0, 0); + GL11.glRotated(Math.sin(System.currentTimeMillis() * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); + GL11.glTranslated(0, -1.75, 0); + bobble.renderPart("Head" + suffix); + GL11.glPopMatrix(); + + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.01F; + GL11.glTranslated(0.63, 0.175F, 0.0); + GL11.glScalef(f3, -f3, f3); + GL11.glTranslated(0, 0, font.getStringWidth(type.label) * 0.5D); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + GL11.glRotatef(90, 0, 1, 0); + GL11.glDepthMask(false); + GL11.glTranslatef(0, 1, 0); + font.drawString(type.label, 0, 0, 0xffffff); + GL11.glDepthMask(true); + + GL11.glEnable(GL11.GL_CULL_FACE); + } + +} diff --git a/src/main/resources/assets/hbm/models/trinkets/bobble.obj b/src/main/resources/assets/hbm/models/trinkets/bobble.obj new file mode 100644 index 000000000..626576098 --- /dev/null +++ b/src/main/resources/assets/hbm/models/trinkets/bobble.obj @@ -0,0 +1,830 @@ +# Blender v2.79 (sub 0) OBJ File: 'bobble.blend' +# www.blender.org +o Head +v 0.375000 1.750000 0.375000 +v -0.375000 1.750000 0.375000 +v 0.375000 1.750000 -0.375000 +v -0.375000 1.750000 -0.375000 +v 0.375000 2.500000 0.375000 +v -0.375000 2.500000 0.375000 +v -0.375000 2.500000 -0.375000 +v 0.375000 2.500000 -0.375000 +v 0.421875 1.703125 0.421875 +v -0.421875 1.703125 0.421875 +v 0.421875 1.703125 -0.421875 +v -0.421875 1.703125 -0.421875 +v 0.421875 2.546875 0.421875 +v -0.421875 2.546875 0.421875 +v -0.421875 2.546875 -0.421875 +v 0.421875 2.546875 -0.421875 +vt 0.250000 1.000000 +vt 0.375000 0.875000 +vt 0.375000 1.000000 +vt 0.125000 0.875000 +vt 0.250000 1.000000 +vt 0.125000 1.000000 +vt 0.250000 0.750000 +vt 0.125000 0.750000 +vt -0.000000 0.875000 +vt -0.000000 0.750000 +vt 0.500000 0.750000 +vt 0.375000 0.875000 +vt 0.375000 0.750000 +vt 0.250000 0.875000 +vt 0.750000 1.000000 +vt 0.875000 0.875000 +vt 0.875000 1.000000 +vt 0.625000 0.875000 +vt 0.750000 1.000000 +vt 0.625000 1.000000 +vt 0.750000 0.750000 +vt 0.625000 0.750000 +vt 0.500000 0.875000 +vt 0.500000 0.750000 +vt 1.000000 0.750000 +vt 0.875000 0.875000 +vt 0.875000 0.750000 +vt 0.750000 0.875000 +vt 0.250000 0.875000 +vt 0.500000 0.875000 +vt 0.750000 0.875000 +vt 1.000000 0.875000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 4/1/1 1/2/1 2/3/1 +f 5/4/2 7/5/2 6/6/2 +f 3/7/3 5/4/3 1/8/3 +f 1/8/4 6/9/4 2/10/4 +f 2/11/5 7/12/5 4/13/5 +f 4/13/6 8/14/6 3/7/6 +f 12/15/1 9/16/1 10/17/1 +f 13/18/2 15/19/2 14/20/2 +f 11/21/3 13/18/3 9/22/3 +f 9/22/4 14/23/4 10/24/4 +f 10/25/5 15/26/5 12/27/5 +f 12/27/6 16/28/6 11/21/6 +f 4/1/1 3/29/1 1/2/1 +f 5/4/2 8/14/2 7/5/2 +f 3/7/3 8/14/3 5/4/3 +f 1/8/4 5/4/4 6/9/4 +f 2/11/5 6/30/5 7/12/5 +f 4/13/6 7/12/6 8/14/6 +f 12/15/1 11/31/1 9/16/1 +f 13/18/2 16/28/2 15/19/2 +f 11/21/3 16/28/3 13/18/3 +f 9/22/4 13/18/4 14/23/4 +f 10/25/5 14/32/5 15/26/5 +f 12/27/6 15/26/6 16/28/6 +o LA +v -0.125000 1.000000 -0.250000 +v 0.125000 1.000000 -0.250000 +v -0.125000 1.750000 -0.250000 +v 0.125000 1.750000 -0.250000 +v -0.125000 1.000000 -0.500000 +v 0.125000 1.000000 -0.500000 +v 0.125000 1.750000 -0.500000 +v -0.125000 1.750000 -0.500000 +v -0.156250 0.968750 -0.218750 +v 0.156250 0.968750 -0.218750 +v -0.156250 1.781250 -0.218750 +v 0.156250 1.781250 -0.218750 +v -0.156250 0.968750 -0.531250 +v 0.156250 0.968750 -0.531250 +v -0.156250 1.781250 -0.531250 +v 0.156250 1.781250 -0.531250 +vt 0.625000 0.187500 +vt 0.562500 0.000000 +vt 0.625000 0.000000 +vt 0.687500 0.187500 +vt 0.687500 0.000000 +vt 0.750000 0.187500 +vt 0.562500 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.187500 +vt 0.687500 0.250000 +vt 0.625000 0.250000 +vt 0.500000 0.187500 +vt 0.875000 0.187500 +vt 0.937500 0.250000 +vt 0.875000 0.250000 +vt 0.875000 0.187500 +vt 0.812500 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 0.250000 +vt 0.812500 0.187500 +vt 0.937500 -0.000000 +vt 1.000000 0.187500 +vt 0.937500 0.187500 +vt 0.750000 0.187500 +vt 0.750000 0.000000 +vt 0.625000 0.250000 +vt 0.687500 0.187500 +vt 0.500000 0.000000 +vt 0.937500 0.187500 +vt 0.812500 0.250000 +vt 1.000000 -0.000000 +vt 0.750000 -0.000000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 23/33/7 18/34/7 22/35/7 +f 22/35/8 24/36/8 23/33/8 +f 21/37/9 19/38/9 24/36/9 +f 23/33/10 19/39/10 20/40/10 +f 22/41/11 17/42/11 21/43/11 +f 19/44/12 18/34/12 20/40/12 +f 30/45/11 25/46/11 29/47/11 +f 32/48/7 26/49/7 30/50/7 +f 31/51/10 28/52/10 32/48/10 +f 29/53/9 27/54/9 31/55/9 +f 27/56/12 26/49/12 28/52/12 +f 30/50/8 31/55/8 32/48/8 +f 23/33/7 20/40/7 18/34/7 +f 22/35/8 21/37/8 24/36/8 +f 21/37/9 17/57/9 19/38/9 +f 23/33/10 24/58/10 19/39/10 +f 22/41/11 18/59/11 17/42/11 +f 19/44/12 17/60/12 18/34/12 +f 30/45/11 26/61/11 25/46/11 +f 32/48/7 28/52/7 26/49/7 +f 31/51/10 27/62/10 28/52/10 +f 29/53/9 25/63/9 27/54/9 +f 27/56/12 25/64/12 26/49/12 +f 30/50/8 29/53/8 31/55/8 +o RA +v -0.125000 1.750000 0.250000 +v 0.125000 1.750000 0.250000 +v 0.125000 1.000000 0.250000 +v -0.125000 1.000000 0.250000 +v 0.125000 1.750000 0.500000 +v -0.125000 1.750000 0.500000 +v 0.125000 1.000000 0.500000 +v -0.125000 1.000000 0.500000 +v 0.156250 1.781250 0.218750 +v -0.156250 1.781250 0.218750 +v 0.156250 0.968750 0.218750 +v -0.156250 0.968750 0.218750 +v 0.156250 1.781250 0.531250 +v -0.156250 1.781250 0.531250 +v 0.156250 0.968750 0.531250 +v -0.156250 0.968750 0.531250 +vt 0.750000 0.500000 +vt 0.812500 0.687500 +vt 0.750000 0.687500 +vt 0.625000 0.687500 +vt 0.687500 0.500000 +vt 0.687500 0.687500 +vt 0.812500 0.500000 +vt 0.875000 0.687500 +vt 0.750000 0.687500 +vt 0.812500 0.750000 +vt 0.750000 0.750000 +vt 0.687500 0.750000 +vt 0.750000 0.250000 +vt 0.812500 0.437500 +vt 0.750000 0.437500 +vt 0.625000 0.437500 +vt 0.687500 0.250000 +vt 0.687500 0.437500 +vt 0.812500 0.250000 +vt 0.875000 0.437500 +vt 0.750000 0.500000 +vt 0.750000 0.437500 +vt 0.812500 0.500000 +vt 0.750000 0.500000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.812500 0.687500 +vt 0.750000 0.750000 +vt 0.625000 0.250000 +vt 0.875000 0.250000 +vt 0.687500 0.500000 +vt 0.812500 0.437500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 35/65/13 33/66/13 34/67/13 +f 38/68/14 39/69/14 37/70/14 +f 36/71/15 38/72/15 33/66/15 +f 35/73/16 40/74/16 36/75/16 +f 34/67/17 39/69/17 35/65/17 +f 34/67/18 38/76/18 37/70/18 +f 43/77/13 42/78/13 41/79/13 +f 46/80/14 47/81/14 45/82/14 +f 44/83/15 46/84/15 42/78/15 +f 42/85/18 45/82/18 41/79/18 +f 41/79/17 47/81/17 43/77/17 +f 43/86/16 48/87/16 44/88/16 +f 35/65/13 36/71/13 33/66/13 +f 38/68/14 40/89/14 39/69/14 +f 36/71/15 40/90/15 38/72/15 +f 35/73/16 39/91/16 40/74/16 +f 34/67/17 37/70/17 39/69/17 +f 34/67/18 33/92/18 38/76/18 +f 43/77/13 44/83/13 42/78/13 +f 46/80/14 48/93/14 47/81/14 +f 44/83/15 48/94/15 46/84/15 +f 42/85/18 46/95/18 45/82/18 +f 41/79/17 45/82/17 47/81/17 +f 43/86/16 47/96/16 48/87/16 +o LL +v -0.125000 1.000000 -0.250000 +v -0.125000 0.250000 -0.250000 +v 0.125000 1.000000 -0.250000 +v 0.125000 0.250000 -0.250000 +v -0.125000 1.000000 0.000000 +v -0.125000 0.250000 0.000000 +v 0.125000 1.000000 0.000000 +v 0.125000 0.250000 0.000000 +v -0.156250 1.031250 -0.281250 +v -0.156250 0.218750 -0.281250 +v 0.156250 1.031250 -0.281250 +v 0.156250 0.218750 -0.281250 +v -0.156250 1.031250 0.031250 +v -0.156250 0.218750 0.031250 +v 0.156250 1.031250 0.031250 +v 0.156250 0.218750 0.031250 +vt 0.375000 0.250000 +vt 0.437500 0.187500 +vt 0.437500 0.250000 +vt 0.500000 0.187500 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.312500 0.187500 +vt 0.250000 0.000000 +vt 0.312500 0.000000 +vt 0.375000 0.187500 +vt 0.375000 0.000000 +vt 0.312500 0.250000 +vt 0.375000 0.250000 +vt 0.437500 0.187500 +vt 0.062500 0.250000 +vt 0.125000 0.187500 +vt 0.125000 0.250000 +vt 0.125000 0.250000 +vt 0.187500 0.187500 +vt 0.187500 0.250000 +vt 0.062500 0.000000 +vt 0.125000 0.000000 +vt 0.187500 0.187500 +vt 0.187500 0.000000 +vt 0.250000 0.187500 +vt 0.250000 0.000000 +vt 0.062500 0.187500 +vt 0.000000 0.000000 +vt 0.375000 0.187500 +vt 0.250000 0.187500 +vt 0.125000 0.187500 +vt 0.000000 0.187500 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 50/97/19 56/98/19 54/99/19 +f 53/100/20 50/101/20 54/102/20 +f 55/103/21 54/104/21 56/105/21 +f 51/106/22 56/105/22 52/107/22 +f 53/108/23 51/106/23 49/109/23 +f 49/110/24 52/107/24 50/101/24 +f 61/111/23 59/112/23 57/113/23 +f 58/114/19 64/115/19 62/116/19 +f 59/112/22 64/117/22 60/118/22 +f 57/119/24 60/118/24 58/120/24 +f 61/121/20 58/120/20 62/122/20 +f 63/123/21 62/124/21 64/117/21 +f 50/97/19 52/125/19 56/98/19 +f 53/100/20 49/110/20 50/101/20 +f 55/103/21 53/126/21 54/104/21 +f 51/106/22 55/103/22 56/105/22 +f 53/108/23 55/103/23 51/106/23 +f 49/110/24 51/106/24 52/107/24 +f 61/111/23 63/123/23 59/112/23 +f 58/114/19 60/127/19 64/115/19 +f 59/112/22 63/123/22 64/117/22 +f 57/119/24 59/112/24 60/118/24 +f 61/121/20 57/119/20 58/120/20 +f 63/123/21 61/128/21 62/124/21 +o RL +v 0.125000 0.250000 0.250000 +v 0.125000 1.000000 0.250000 +v -0.125000 0.250000 0.250000 +v -0.125000 1.000000 0.250000 +v 0.125000 0.250000 0.000000 +v 0.125000 1.000000 0.000000 +v -0.125000 0.250000 0.000000 +v -0.125000 1.000000 0.000000 +v 0.156250 0.218750 0.281250 +v 0.156250 1.031250 0.281250 +v -0.156250 0.218750 0.281250 +v -0.156250 1.031250 0.281250 +v 0.156250 0.218750 -0.031250 +v 0.156250 1.031250 -0.031250 +v -0.156250 0.218750 -0.031250 +v -0.156250 1.031250 -0.031250 +vt 0.062500 0.687500 +vt 0.000000 0.500000 +vt 0.062500 0.500000 +vt 0.250000 0.687500 +vt 0.187500 0.500000 +vt 0.250000 0.500000 +vt 0.187500 0.687500 +vt 0.125000 0.500000 +vt 0.125000 0.687500 +vt 0.125000 0.750000 +vt 0.187500 0.687500 +vt 0.187500 0.750000 +vt 0.062500 0.750000 +vt 0.125000 0.750000 +vt 0.062500 0.437500 +vt -0.000000 0.250000 +vt 0.062500 0.250000 +vt 0.250000 0.437500 +vt 0.187500 0.250000 +vt 0.250000 0.250000 +vt 0.187500 0.437500 +vt 0.125000 0.250000 +vt 0.125000 0.437500 +vt 0.125000 0.500000 +vt 0.187500 0.437500 +vt 0.187500 0.500000 +vt 0.062500 0.500000 +vt 0.125000 0.500000 +vt 0.000000 0.687500 +vt 0.125000 0.687500 +vt -0.000000 0.437500 +vt 0.125000 0.437500 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 66/129/25 67/130/25 65/131/25 +f 68/132/26 71/133/26 67/134/26 +f 72/135/27 69/136/27 71/133/27 +f 70/137/28 65/131/28 69/136/28 +f 71/138/29 65/139/29 67/140/29 +f 68/141/30 70/137/30 72/142/30 +f 74/143/25 75/144/25 73/145/25 +f 76/146/26 79/147/26 75/148/26 +f 80/149/27 77/150/27 79/147/27 +f 78/151/28 73/145/28 77/150/28 +f 79/152/29 73/153/29 75/154/29 +f 76/155/30 78/151/30 80/156/30 +f 66/129/25 68/157/25 67/130/25 +f 68/132/26 72/135/26 71/133/26 +f 72/135/27 70/137/27 69/136/27 +f 70/137/28 66/129/28 65/131/28 +f 71/138/29 69/158/29 65/139/29 +f 68/141/30 66/129/30 70/137/30 +f 74/143/25 76/159/25 75/144/25 +f 76/146/26 80/149/26 79/147/26 +f 80/149/27 78/151/27 77/150/27 +f 78/151/28 74/143/28 73/145/28 +f 79/152/29 77/160/29 73/153/29 +f 76/155/30 74/143/30 78/151/30 +o Head17 +v 0.375000 1.750000 0.375000 +v -0.375000 1.750000 0.375000 +v 0.375000 1.750000 -0.375000 +v -0.375000 1.750000 -0.375000 +v 0.375000 2.500000 0.375000 +v -0.375000 2.500000 0.375000 +v -0.375000 2.500000 -0.375000 +v 0.375000 2.500000 -0.375000 +v 0.421875 1.703125 0.421875 +v -0.421875 1.703125 0.421875 +v 0.421875 1.703125 -0.421875 +v -0.421875 1.703125 -0.421875 +v 0.421875 2.546875 0.421875 +v -0.421875 2.546875 0.421875 +v -0.421875 2.546875 -0.421875 +v 0.421875 2.546875 -0.421875 +vt 0.250000 1.000000 +vt 0.375000 0.750000 +vt 0.375000 1.000000 +vt 0.125000 0.750000 +vt 0.250000 1.000000 +vt 0.125000 1.000000 +vt 0.250000 0.500000 +vt 0.125000 0.500000 +vt 0.000000 0.750000 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.375000 0.750000 +vt 0.375000 0.500000 +vt 0.250000 0.750000 +vt 0.750000 1.000000 +vt 0.875000 0.750000 +vt 0.875000 1.000000 +vt 0.625000 0.750000 +vt 0.750000 1.000000 +vt 0.625000 1.000000 +vt 0.750000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 1.000000 0.500000 +vt 0.875000 0.750000 +vt 0.875000 0.500000 +vt 0.750000 0.750000 +vt 0.250000 0.750000 +vt 0.500000 0.750000 +vt 0.750000 0.750000 +vt 1.000000 0.750000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 84/161/31 81/162/31 82/163/31 +f 85/164/32 87/165/32 86/166/32 +f 83/167/33 85/164/33 81/168/33 +f 81/168/34 86/169/34 82/170/34 +f 82/171/35 87/172/35 84/173/35 +f 84/173/36 88/174/36 83/167/36 +f 92/175/31 89/176/31 90/177/31 +f 93/178/32 95/179/32 94/180/32 +f 91/181/33 93/178/33 89/182/33 +f 89/182/34 94/183/34 90/184/34 +f 90/185/35 95/186/35 92/187/35 +f 92/187/36 96/188/36 91/181/36 +f 84/161/31 83/189/31 81/162/31 +f 85/164/32 88/174/32 87/165/32 +f 83/167/33 88/174/33 85/164/33 +f 81/168/34 85/164/34 86/169/34 +f 82/171/35 86/190/35 87/172/35 +f 84/173/36 87/172/36 88/174/36 +f 92/175/31 91/191/31 89/176/31 +f 93/178/32 96/188/32 95/179/32 +f 91/181/33 96/188/33 93/178/33 +f 89/182/34 93/178/34 94/183/34 +f 90/185/35 94/192/35 95/186/35 +f 92/187/36 95/186/36 96/188/36 +o RA17 +v -0.125000 1.750000 0.250000 +v 0.125000 1.750000 0.250000 +v 0.125000 1.000000 0.250000 +v -0.125000 1.000000 0.250000 +v 0.125000 1.750000 0.500000 +v -0.125000 1.750000 0.500000 +v 0.125000 1.000000 0.500000 +v -0.125000 1.000000 0.500000 +vt 0.750000 -0.000000 +vt 0.812500 0.375000 +vt 0.750000 0.375000 +vt 0.625000 0.375000 +vt 0.687500 -0.000000 +vt 0.687500 0.375000 +vt 0.812500 -0.000000 +vt 0.875000 0.375000 +vt 0.750000 0.375000 +vt 0.812500 0.500000 +vt 0.750000 0.500000 +vt 0.687500 0.500000 +vt 0.625000 -0.000000 +vt 0.875000 -0.000000 +vt 0.812500 0.375000 +vt 0.750000 0.500000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 99/193/37 97/194/37 98/195/37 +f 102/196/38 103/197/38 101/198/38 +f 100/199/39 102/200/39 97/194/39 +f 99/201/40 104/202/40 100/203/40 +f 98/195/41 103/197/41 99/193/41 +f 98/195/42 102/204/42 101/198/42 +f 99/193/37 100/199/37 97/194/37 +f 102/196/38 104/205/38 103/197/38 +f 100/199/39 104/206/39 102/200/39 +f 99/201/40 103/207/40 104/202/40 +f 98/195/41 101/198/41 103/197/41 +f 98/195/42 97/208/42 102/204/42 +o LA17 +v -0.125000 1.000000 -0.500000 +v 0.125000 1.000000 -0.500000 +v -0.125000 1.750000 -0.500000 +v 0.125000 1.750000 -0.500000 +v -0.125000 1.000000 -0.250000 +v 0.125000 1.000000 -0.250000 +v 0.125000 1.750000 -0.250000 +v -0.125000 1.750000 -0.250000 +vt 0.687500 -0.000000 +vt 0.625000 0.375000 +vt 0.687500 0.375000 +vt 0.750000 0.375000 +vt 0.687500 0.500000 +vt 0.750000 0.500000 +vt 0.750000 -0.000000 +vt 0.812500 0.500000 +vt 0.750000 0.375000 +vt 0.750000 0.500000 +vt 0.812500 0.375000 +vt 0.875000 0.375000 +vt 0.812500 -0.000000 +vt 0.625000 -0.000000 +vt 0.812500 0.375000 +vt 0.875000 -0.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 -0.0000 +s off +f 106/209/43 107/210/43 108/211/43 +f 111/212/44 107/213/44 112/214/44 +f 106/209/45 111/212/45 110/215/45 +f 105/216/46 110/217/46 109/218/46 +f 112/219/47 110/215/47 111/212/47 +f 107/220/48 109/221/48 112/219/48 +f 106/209/43 105/222/43 107/210/43 +f 111/212/44 108/211/44 107/213/44 +f 106/209/45 108/211/45 111/212/45 +f 105/216/46 106/223/46 110/217/46 +f 112/219/47 109/221/47 110/215/47 +f 107/220/48 105/224/48 109/221/48 +o LL17 +v -0.125000 1.000000 0.000000 +v -0.125000 0.250000 0.000000 +v 0.125000 1.000000 0.000000 +v 0.125000 0.250000 0.000000 +v -0.125000 1.000000 -0.250000 +v -0.125000 0.250000 -0.250000 +v 0.125000 1.000000 -0.250000 +v 0.125000 0.250000 -0.250000 +vt 0.125000 0.375000 +vt 0.062500 0.500000 +vt 0.125000 0.500000 +vt 0.187500 0.375000 +vt 0.125000 0.500000 +vt 0.187500 0.500000 +vt 0.062500 -0.000000 +vt 0.125000 -0.000000 +vt 0.187500 0.375000 +vt 0.187500 -0.000000 +vt 0.250000 0.375000 +vt 0.250000 -0.000000 +vt 0.000000 -0.000000 +vt 0.062500 0.375000 +vt 0.125000 0.375000 +vt 0.000000 0.375000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 115/225/49 117/226/49 113/227/49 +f 120/228/50 114/229/50 118/230/50 +f 120/231/51 115/225/51 116/232/51 +f 116/232/52 113/233/52 114/234/52 +f 114/234/53 117/235/53 118/236/53 +f 118/237/54 119/238/54 120/231/54 +f 115/225/49 119/238/49 117/226/49 +f 120/228/50 116/239/50 114/229/50 +f 120/231/51 119/238/51 115/225/51 +f 116/232/52 115/225/52 113/233/52 +f 114/234/53 113/233/53 117/235/53 +f 118/237/54 117/240/54 119/238/54 +o RL17 +v 0.125000 0.250000 0.250000 +v 0.125000 1.000000 0.250000 +v -0.125000 0.250000 0.250000 +v -0.125000 1.000000 0.250000 +v 0.125000 0.250000 0.000000 +v 0.125000 1.000000 0.000000 +v -0.125000 0.250000 0.000000 +v -0.125000 1.000000 0.000000 +vt 0.062500 0.375000 +vt 0.000000 -0.000000 +vt 0.062500 -0.000000 +vt 0.250000 0.375000 +vt 0.187500 -0.000000 +vt 0.250000 -0.000000 +vt 0.187500 0.375000 +vt 0.125000 -0.000000 +vt 0.125000 0.375000 +vt 0.125000 0.500000 +vt 0.187500 0.375000 +vt 0.187500 0.500000 +vt 0.062500 0.500000 +vt 0.125000 0.500000 +vt 0.000000 0.375000 +vt 0.125000 0.375000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 122/241/55 123/242/55 121/243/55 +f 124/244/56 127/245/56 123/246/56 +f 128/247/57 125/248/57 127/245/57 +f 126/249/58 121/243/58 125/248/58 +f 127/250/59 121/251/59 123/252/59 +f 124/253/60 126/249/60 128/254/60 +f 122/241/55 124/255/55 123/242/55 +f 124/244/56 128/247/56 127/245/56 +f 128/247/57 126/249/57 125/248/57 +f 126/249/58 122/241/58 121/243/58 +f 127/250/59 125/256/59 121/251/59 +f 124/253/60 122/241/60 126/249/60 +o Body17 +v 0.125000 1.750000 0.250000 +v -0.125000 1.750000 0.250000 +v 0.125000 1.750000 -0.250000 +v -0.125000 1.750000 -0.250000 +v 0.125000 1.000000 0.250000 +v -0.125000 1.000000 0.250000 +v -0.125000 1.000000 -0.250000 +v 0.125000 1.000000 -0.250000 +vt 0.312500 0.375000 +vt 0.437500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.500000 0.375000 +vt 0.625000 -0.000000 +vt 0.625000 0.375000 +vt 0.437500 0.375000 +vt 0.500000 -0.000000 +vt 0.437500 -0.000000 +vt 0.250000 0.375000 +vt 0.312500 -0.000000 +vt 0.437500 0.375000 +vt 0.250000 -0.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 129/257/61 132/258/61 130/259/61 +f 135/260/62 133/261/62 134/262/62 +f 132/263/63 134/264/63 130/265/63 +f 131/266/64 135/267/64 132/263/64 +f 129/257/65 136/268/65 131/266/65 +f 130/269/66 133/270/66 129/257/66 +f 129/257/61 131/266/61 132/258/61 +f 135/260/62 136/271/62 133/261/62 +f 132/263/63 135/267/63 134/264/63 +f 131/266/64 136/268/64 135/267/64 +f 129/257/65 133/270/65 136/268/65 +f 130/269/66 134/272/66 133/270/66 +o Socket +v 0.625000 0.000000 0.625000 +v 0.625000 0.000000 -0.625000 +v -0.625000 0.000000 0.625000 +v -0.625000 0.000000 -0.625000 +v -0.625000 0.250000 0.625000 +v 0.625000 0.250000 0.625000 +v 0.625000 0.250000 -0.625000 +v -0.625000 0.250000 -0.625000 +vt 0.000000 1.000000 +vt 1.000000 0.166667 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.000000 0.166667 +vt 1.000000 0.166667 +vt 0.000000 0.166667 +vt 1.000000 0.000000 +vt 1.000000 0.166667 +vt 1.000000 0.000000 +vt 0.000000 0.166667 +vt 0.000000 0.000000 +vt 0.000000 0.166667 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.166667 +vt 0.000000 0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 139/273/67 138/274/67 137/275/67 +f 143/276/68 141/277/68 142/278/68 +f 139/279/69 144/280/69 140/281/69 +f 138/282/70 142/283/70 137/284/70 +f 140/285/71 143/286/71 138/274/71 +f 137/287/72 141/277/72 139/288/72 +f 139/273/67 140/285/67 138/274/67 +f 143/276/68 144/289/68 141/277/68 +f 139/279/69 141/290/69 144/280/69 +f 138/282/70 143/291/70 142/283/70 +f 140/285/71 144/292/71 143/286/71 +f 137/287/72 142/278/72 141/277/72 +o Body +v 0.125000 1.750000 0.250000 +v -0.125000 1.750000 0.250000 +v 0.125000 1.750000 -0.250000 +v -0.125000 1.750000 -0.250000 +v 0.125000 1.000000 0.250000 +v -0.125000 1.000000 0.250000 +v -0.125000 1.000000 -0.250000 +v 0.125000 1.000000 -0.250000 +v 0.156250 1.781250 0.281250 +v -0.156250 1.781250 0.281250 +v 0.156250 1.781250 -0.281250 +v -0.156250 1.781250 -0.281250 +v 0.156250 0.968750 0.281250 +v -0.156250 0.968750 0.281250 +v -0.156250 0.968750 -0.281250 +v 0.156250 0.968750 -0.281250 +vt 0.312500 0.687500 +vt 0.437500 0.750000 +vt 0.312500 0.750000 +vt 0.437500 0.750000 +vt 0.562500 0.687500 +vt 0.562500 0.750000 +vt 0.500000 0.687500 +vt 0.625000 0.500000 +vt 0.625000 0.687500 +vt 0.437500 0.687500 +vt 0.500000 0.500000 +vt 0.437500 0.500000 +vt 0.250000 0.687500 +vt 0.312500 0.500000 +vt 0.312500 0.437500 +vt 0.437500 0.500000 +vt 0.312500 0.500000 +vt 0.562500 0.500000 +vt 0.437500 0.437500 +vt 0.562500 0.437500 +vt 0.500000 0.437500 +vt 0.625000 0.250000 +vt 0.625000 0.437500 +vt 0.437500 0.437500 +vt 0.500000 0.250000 +vt 0.437500 0.250000 +vt 0.250000 0.437500 +vt 0.312500 0.250000 +vt 0.437500 0.687500 +vt 0.250000 0.500000 +vt 0.437500 0.500000 +vt 0.250000 0.250000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 145/293/73 148/294/73 146/295/73 +f 151/296/74 149/297/74 150/298/74 +f 148/299/75 150/300/75 146/301/75 +f 147/302/76 151/303/76 148/299/76 +f 145/293/77 152/304/77 147/302/77 +f 146/305/78 149/306/78 145/293/78 +f 153/307/73 156/308/73 154/309/73 +f 158/310/74 160/311/74 157/312/74 +f 156/313/75 158/314/75 154/315/75 +f 155/316/76 159/317/76 156/313/76 +f 153/307/77 160/318/77 155/316/77 +f 154/319/78 157/320/78 153/307/78 +f 145/293/73 147/302/73 148/294/73 +f 151/296/74 152/321/74 149/297/74 +f 148/299/75 151/303/75 150/300/75 +f 147/302/76 152/304/76 151/303/76 +f 145/293/77 149/306/77 152/304/77 +f 146/305/78 150/322/78 149/306/78 +f 153/307/73 155/316/73 156/308/73 +f 158/310/74 159/323/74 160/311/74 +f 156/313/75 159/317/75 158/314/75 +f 155/316/76 160/318/76 159/317/76 +f 153/307/77 157/320/77 160/318/77 +f 154/319/78 158/324/78 157/320/78 diff --git a/src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png b/src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png new file mode 100644 index 0000000000000000000000000000000000000000..c7db718e32455ef1a4ca7093ec69b8846a2ea4b5 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf{g3~B+%Wl6Q0un6pFZCGzFp<_H)95g%Pw(6OiCYx;;y?Nac7(OVBPBg5!Pjy zhiuM&xR)F$7LmPJZF)#g|B{fiE=|3eKX$Zly5gfU!(&5Gset~B1ey1e3{NWg)_#5G ztr-{^dZ0%4(0tPyVo&BAHsIO)esB9$vjnrh|M>jof6BCF{5dP^sp2Bl%|L%Jc)I$z JtaD0e0suRdYyAKK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png b/src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..2fd03ec75d1b0bb9928ff8e8df98d451f10ec506 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf|!S3j3^P6o;AlU8oev zK9XJ3v$dbJb!z_$pj6PrYkN7_4yr0*3pXWU1ea`d4^Y{V*FNIP;0RSN7;_T?L zPuqWl5ZmwhG%9N!kXs&jd!VxaFmvC)LhR1l0YG({q{v@^s?LDlk^nMbM1jcOvbot)jDT0Qlmd$p4Zj&r~zJ_zILp?n?^;>zgt(R?rs!!X^eZr2h-QMY4#^T=W+8&etlPd%T z0>Rfc5U}zELD1@Py?4m~INA-)b%XN*BF;7_5Q%u(qQwy+9$$dRcjED;hU)Lb@3sfwm;LqsV*wdCe#iEskm1hWw*Wwz{*NFE`e!KsAfE5yXm`;I|KeA8 z)TD*Xf6CTN6(-ZKMwsVivKqSjb#&8>J*y9fbiG{dq=TSxG&{Vs%=zrly8&p#Awi<$ zY-$x3HJl{eD+|dH)-z_v8*gbdO_BU*!31(yIuag==9hg-Gw4&I z+f{S8tHv%5xGwsbRzQhrwd+v<52sZ7S|rV}_QCbV=`z35kR2|HAn*EG(W(1^0W= zn8!)slqZ+#nf{ra;GmCtY)D19nON*{1~o3p_RuuDB>pI|T|)WRMtFef0VvDnJBROH z2#dZAPu_u&HrcV=0wI|v9>}W3W^lWRgaU8U0f|_$DW$lNS7eA=+>T*y*1>xvlko`| zTr!=mu-Ly<0!L#yk7C?sPRZ06CJNnCB?M`hxW}@V#ogD;52xy#xE`=>`jE%bInS|G zh22zdHwvzn)($Kt$?~-ViPncTg9U1z+%TtIpC+Uc2K5SYDc0s!a3ZzMCZuRCf=se{ z(nQdBPdR%@s%khp7uCqW2b8sM2L)k0 zqr-G0m#_5J`TPNz=X=>pdm}y%dS(u5k0v1bWtfwfkrm}Z@o$YkC$)<=^%~}`!t6ZN zM&Gc{UpXL|-Wicxdo?)#`|*-n`72ZFE}gEGVu@{p6Tj8vIjXd4$)g3(Yn19D!QY_O z5w{gHiYrDuJ#SvhFyzJ)+@r(j6$Z-=hisxOFj*HGmb|Y07M`6lykxefI4TI1l~IJ+ zuqgIO zRv6sCL;Ucre^Y)V=xxaBu@B=5os%D$i}7-JO_d&Hy6RaleaR}WT2-?bn@ zUlT~K++MgrK-Jne>aRGs71Lmy!j-)8-YfB?VwA#$veoO{Cb3;aIy%O*EpMmi>yocT z-0^}n#yRm-B|=HC^@96kTb%8nabwU8tfk&xSe6Ev)B?YkCRf;I!nvGyI7WxQ=g5S4 zI#m5-P}rWz=3;L<$A+qOWWAVP%r_i&s!GlZRmmO8Ck{OjYe5V(-ZB{vfjVSwoq#>N zZiDpdX{9s~#pOy1Dv>IJc&iDmMBbfweo^}hLw&rtU_cDQqr@rmV)Uz~TTj5E7uU5b z14oUhMRKll#}}SN$gWGd3WV8CpnK>l-KSJyARsC9NNTuTXFi0Hs<~=^X~Mgq;vxZq zyvw2s-)N}wjF#&ZsT9b&`Q`H@TMQJ@K}5-{=NviA1BH{jw#aICZ^#{3W6%jm8E literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/hbm.png b/src/main/resources/assets/hbm/textures/models/trinkets/hbm.png new file mode 100644 index 0000000000000000000000000000000000000000..e497dc9271688ab97c2b37eec0d85c86e78e99ff GIT binary patch literal 1132 zcmV-y1e5!TP)c6XzsHuU@N zlY+?*K;TjK_NpYz1pxrB1PCb=;3^4!?bo>wprRV^Wbxt&Sg)}&>uqdM&cAD&M}W};kWtBLGpzfh zuzng_G)tQ3Uk9#^3~hrbaNF1R*SfCYmC$Kjdaavl0Fa`+Hl*c%cOf7L+?%5&t*oq^ ztsxufQH71_qVsS#Og^9GEU+exX}gPdOi!I{n4U??%gbpkaqTX{7X0a?0cqz`NUkkD zmkDjITG#EmwGB->53LK~Eo3wr1pr|g8v%*nT8xMHBKXQN;Q7^atZ{w`_~-8sp1%&s zy5kvjEH@fU3tZ=EvfhX`$ADRt%HV3aB2!k zfPCD#pXBTI!z8S0Ljb_XIc~kGfRD#<=A__}7yV8I5d7li=R^RWS^uWkilRh7Sl@|& zdmsLR20-m0Esp?p6M#Je&<2n%ZWk5MtZPd^ z{Q5o&{X09AHtj>30g1$Ie@kU;%L!7_xH2g@5nEHj%ST5?XH0rGJY}5@%!Mfl0ERMz zWvJ+2^Gke&2Vp;wzy<4g7Ch#pmT-RLNdrt`8>QFAYR6>U+Qj9C@eWD=4H@f;rOV;b z)oYaoQ(O&3rAnjh{3*Uk^wC0000~IkIheSm517tlnecb#``_KoyVBT`dISU+9K1MH zt~aQ9s459eRNTS%%^^&=;KLyui(@}{z8simBblLI8B%3jkh*)G`3=t1L2es_!