diff --git a/changelog b/changelog index 771c4585a..83bd6e7ed 100644 --- a/changelog +++ b/changelog @@ -1,8 +1,16 @@ ## Changed * The fluid burner, heat exchanging heater and cooling tower now use the single steel pipe items instead of the larger steel pipes * Reduced the amount of condensers needed for crafting the cooling towers +* Liquefactors and solidifiers now have a base processing time of 5 seconds per operation (instead of 10) +* Added some info to the coltass about how the coltan deposit works +* Moced some NEI handlers around, fluid containers are now listed last and radiolysis is now listed right after cracking, since they have the same recipes +* The autocrafter's inputs are now limited to 4 items per slot +* Autocrafters can now receive stacked items again (except for items with containers), if they do not exceed the 4 item threshold ## Fixed * Fixed crash caused by decontaminating items with the radiolysis machine * Fixed ICFs not forming correctly depending on the orientation -* Fixed electrolyzer metal recipe config not working \ No newline at end of file +* Fixed electrolyzer metal recipe config not working +* Fixed the meteor charms not working when used on helmets +* Fixed NEI handler for the ICF's consturction showing inconsistent values +* Fixed radiolysis recipes not showing up in NEI unless the usage recipes are loaded first \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/BlockMulti.java b/src/main/java/com/hbm/blocks/BlockMulti.java index 1741d9316..21930f6ff 100644 --- a/src/main/java/com/hbm/blocks/BlockMulti.java +++ b/src/main/java/com/hbm/blocks/BlockMulti.java @@ -31,8 +31,4 @@ public abstract class BlockMulti extends BlockBase implements IBlockMulti { list.add(new ItemStack(item, 1, i)); } } - - public String getUnlocalizedName(ItemStack stack) { - return this.getUnlocalizedName(); - } } diff --git a/src/main/java/com/hbm/blocks/IBlockMulti.java b/src/main/java/com/hbm/blocks/IBlockMulti.java index b0bf10ba6..067b2759e 100644 --- a/src/main/java/com/hbm/blocks/IBlockMulti.java +++ b/src/main/java/com/hbm/blocks/IBlockMulti.java @@ -1,9 +1,20 @@ package com.hbm.blocks; +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; + public interface IBlockMulti { public int getSubCount(); + public default String getUnlocalizedName(ItemStack stack) { + return ((Block)this).getUnlocalizedName(); + } + + public default String getOverrideDisplayName(ItemStack stack) { + return null; + } + public default int rectify(int meta) { return Math.abs(meta % getSubCount()); } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index ca511e9e3..ed1e0b872 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -271,6 +271,7 @@ public class ModBlocks { public static Block pedestal; public static Block bobblehead; public static Block snowglobe; + public static Block plushie; public static Block hazmat; @@ -1454,6 +1455,7 @@ public class ModBlocks { pedestal = new BlockPedestal().setBlockName("pedestal").setCreativeTab(null).setHardness(2.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":pedestal_top"); bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); + plushie = new BlockPlushie().setBlockName("plushie").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); hazmat = new BlockGeneric(Material.cloth).setBlockName("hazmat").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":hazmat"); gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(240.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); @@ -2600,6 +2602,7 @@ public class ModBlocks { GameRegistry.registerBlock(pedestal, pedestal.getUnlocalizedName()); GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); + GameRegistry.registerBlock(plushie, ItemBlockBase.class, plushie.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/BlockPlushie.java b/src/main/java/com/hbm/blocks/generic/BlockPlushie.java new file mode 100644 index 000000000..80a739a0b --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockPlushie.java @@ -0,0 +1,172 @@ +package com.hbm.blocks.generic; + +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.IBlockMulti; +import com.hbm.blocks.ITooltipProvider; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +public class BlockPlushie extends BlockContainer implements IBlockMulti, ITooltipProvider { + + public BlockPlushie() { + super(Material.cloth); + } + + @Override public int getRenderType() { return -1; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + @Override public Item getItemDropped(int i, Random rand, int j) { return null; } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + TileEntityPlushie entity = (TileEntityPlushie) world.getTileEntity(x, y, z); + if(entity != null) return new ItemStack(this, 1, entity.type.ordinal()); + return super.getPickBlock(target, world, x, y, z, player); + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + if(!world.isRemote) { + TileEntityPlushie entity = (TileEntityPlushie) 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())); + item.motionX = 0; + item.motionY = 0; + item.motionZ = 0; + world.spawnEntityInWorld(item); + } + } + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 1; i < PlushieType.values().length; i++) list.add(new ItemStack(item, 1, i)); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int meta = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15; + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + + TileEntityPlushie plushie = (TileEntityPlushie) world.getTileEntity(x, y, z); + plushie.type = PlushieType.values()[Math.abs(stack.getItemDamage()) % PlushieType.values().length]; + plushie.markDirty(); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPlushie(); + } + + @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) { + TileEntityPlushie plushie = (TileEntityPlushie) world.getTileEntity(x, y, z); + plushie.squishTimer = 11; + return true; + } else { + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:block.squeakyToy", 0.25F, 1F); + return true; + } + } + + public static class TileEntityPlushie extends TileEntity { + + public PlushieType type = PlushieType.NONE; + public int squishTimer; + + @Override + public void updateEntity() { + if(squishTimer > 0) squishTimer--; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.type = PlushieType.values()[Math.abs(nbt.getByte("type")) % PlushieType.values().length]; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setByte("type", (byte) type.ordinal()); + } + } + + public static enum PlushieType { + NONE( "NONE", null), + YOMI( "Yomi", "Hi! Can I be your rabbit friend?"), + NUMBERNINE( "Number Nine", "None of y'all deserve coal."); + + public String label; + public String inscription; + + private PlushieType(String label, String inscription) { + this.label = label; + this.inscription = inscription; + } + } + + @Override + public int getSubCount() { + return PlushieType.values().length; + } + + @Override + public String getOverrideDisplayName(ItemStack stack) { + PlushieType type = PlushieType.values()[Math.abs(stack.getItemDamage()) % PlushieType.values().length]; + return StatCollector.translateToLocalFormatted(this.getUnlocalizedName() + ".name", type == PlushieType.NONE ? "" : type.label).trim(); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + PlushieType type = PlushieType.values()[Math.abs(stack.getItemDamage()) % PlushieType.values().length]; + if(type.inscription != null) list.add(type.inscription); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityMovingItem.java b/src/main/java/com/hbm/entity/item/EntityMovingItem.java index 50d39e160..56c291373 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingItem.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingItem.java @@ -35,6 +35,7 @@ public class EntityMovingItem extends EntityMovingConveyorObject implements ICon public boolean interactFirst(EntityPlayer player) { if(!worldObj.isRemote && player.inventory.addItemStackToInventory(this.getItemStack().copy())) { + player.inventoryContainer.detectAndSendChanges(); this.setDead(); } diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 5c3a206c7..485de324f 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -202,15 +202,17 @@ public class BossSpawnHandler { boolean repell = false; boolean strike = true; - if(p.getCurrentArmor(2) != null && ArmorModHandler.hasMods(p.getCurrentArmor(2))) { - ItemStack mod = ArmorModHandler.pryMods(p.getCurrentArmor(2))[ArmorModHandler.helmet_only]; - - if(mod != null) { - if(mod.getItem() == ModItems.protection_charm) { - repell = true; - } - if(mod.getItem() == ModItems.meteor_charm) { - strike = false; + for(int i = 0; i < 4; i++) { + ItemStack armor = p.getCurrentArmor(i); + if(armor != null && ArmorModHandler.hasMods(armor)) { + + for(int j = 0; j < 8; j++) { + ItemStack mod = ArmorModHandler.pryMods(armor)[j]; + + if(mod != null) { + if(mod.getItem() == ModItems.protection_charm) repell = true; + if(mod.getItem() == ModItems.meteor_charm) strike = false; + } } } } diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java index aff8c64c0..05105f579 100644 --- a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -105,7 +105,7 @@ public class ConstructionHandler extends NEIUniversalHandler { ItemStack[] icf = new ItemStack[] { new ItemStack(ModBlocks.icf_component, 50, 0), ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.icf_component, 240, 3), EnumChatFormatting.RED + "3x64 + 48"), - ItemStackUtil.addTooltipToStack(Mats.MAT_DURA.make(ModItems.bolt, 960), EnumChatFormatting.RED + "9x64"), + ItemStackUtil.addTooltipToStack(Mats.MAT_DURA.make(ModItems.bolt, 960), EnumChatFormatting.RED + "15x64"), ItemStackUtil.addTooltipToStack(Mats.MAT_STEEL.make(ModItems.plate_cast, 240), EnumChatFormatting.RED + "3x64 + 48"), ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.icf_component, 117, 1), EnumChatFormatting.RED + "64 + 53"), ItemStackUtil.addTooltipToStack(Mats.MAT_BBRONZE.make(ModItems.plate_cast, 117), EnumChatFormatting.RED + "64 + 53"), diff --git a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java index 84cd78979..1b4707586 100644 --- a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java @@ -14,7 +14,6 @@ import com.hbm.inventory.gui.GUIRadiolysis; import com.hbm.inventory.recipes.RadiolysisRecipes; import com.hbm.lib.RefStrings; -import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; @@ -95,7 +94,7 @@ public class RadiolysisRecipeHandler extends TemplateRecipeHandler implements IC HashMap recipes = (HashMap) RadiolysisRecipes.getRecipesForNEI(); for(Entry recipe : recipes.entrySet()) { - if(NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[0], result) || NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[1], result)) + if(compareFluidStacks((ItemStack)recipe.getValue()[0], result) || compareFluidStacks((ItemStack)recipe.getValue()[1], result)) this.arecipes.add(new RecipeSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1])); } } @@ -115,10 +114,14 @@ public class RadiolysisRecipeHandler extends TemplateRecipeHandler implements IC HashMap recipes = (HashMap) RadiolysisRecipes.getRecipesForNEI(); for(Entry recipe : recipes.entrySet()) { - if(NEIServerUtils.areStacksSameType((ItemStack)recipe.getKey(), ingredient)) + if(compareFluidStacks((ItemStack)recipe.getKey(), ingredient)) this.arecipes.add(new RecipeSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1])); } } + + private boolean compareFluidStacks(ItemStack sta1, ItemStack sta2) { + return sta1.getItem() == sta2.getItem() && sta1.getItemDamage() == sta2.getItemDamage(); + } @Override public void drawExtras(int recipe) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java b/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java index a84b3f81c..0c5c3ff51 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java +++ b/src/main/java/com/hbm/inventory/container/ContainerAutocrafter.java @@ -1,8 +1,10 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotPattern; +import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; @@ -88,6 +90,33 @@ public class ContainerAutocrafter extends ContainerBase { @Override public ItemStack transferStackInSlot(EntityPlayer player, int index) { - return null; + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 20 && index >= 10) { + if(!this.mergeItemStack(stack, 21, this.inventorySlots.size(), true)) { + return null; + } + } else if(index > 20){ + + if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(stack, 20, 21, false)) return null; + } else { + return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; } } diff --git a/src/main/java/com/hbm/items/block/ItemBlockBase.java b/src/main/java/com/hbm/items/block/ItemBlockBase.java index d4976b1ab..97286b3a2 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBase.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBase.java @@ -2,7 +2,6 @@ package com.hbm.items.block; import java.util.List; -import com.hbm.blocks.BlockMulti; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; @@ -18,6 +17,7 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; public class ItemBlockBase extends ItemBlock { @@ -41,14 +41,25 @@ public class ItemBlockBase extends ItemBlock { @Override public String getUnlocalizedName(ItemStack stack) { - if(field_150939_a instanceof BlockMulti) { - return ((BlockMulti)field_150939_a).getUnlocalizedName(stack); + if(field_150939_a instanceof IBlockMulti) { + return ((IBlockMulti) field_150939_a).getUnlocalizedName(stack); } else if(field_150939_a instanceof BlockMetalFence) { - return ((BlockMetalFence)field_150939_a).getUnlocalizedName(stack); // I considered reworking IBlockMulti instead but there are like a bajillion implementers + return ((BlockMetalFence) field_150939_a).getUnlocalizedName(stack); // I considered reworking IBlockMulti instead but there are like a bajillion implementers } else { return super.getUnlocalizedName(stack); } } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + if(field_150939_a instanceof IBlockMulti) { + String override = ((IBlockMulti) field_150939_a).getOverrideDisplayName(stack); + if(override != null) { + return override; + } + } + return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim(); + } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { diff --git a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java index 0d2739cf9..b8cbe6b8e 100644 --- a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java +++ b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java @@ -1,5 +1,6 @@ package com.hbm.items.tool; +import java.util.List; import java.util.Random; import com.hbm.main.MainRegistry; @@ -12,6 +13,7 @@ import net.minecraft.client.renderer.texture.TextureCompass; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.texture.TextureUtil; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -24,6 +26,14 @@ public class ItemColtanCompass extends Item { public int lastZ = 0; public long lease = 0; + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add("Points towards the coltan deposit."); + list.add("The deposit is a large area where coltan ore spawns like standard ore,"); + list.add("it's not one large blob of ore on that exact location, dipshit."); + } + @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean inhand) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 48bec929b..df4694b4a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -53,6 +53,7 @@ import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; +import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; import com.hbm.blocks.machine.MachineFan.TileEntityFan; @@ -192,6 +193,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlushie.class, new RenderPlushie()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth()); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index a2b9b5215..394c4feab 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -5,6 +5,7 @@ import java.util.List; import codechicken.nei.recipe.*; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; +import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.config.CustomMachineConfigJSON; import com.hbm.handler.nei.CustomMachineHandler; import com.hbm.items.ModItems; @@ -104,6 +105,21 @@ public class NEIConfig implements IConfigureNEI { } }); + + API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() { + @Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; + TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TileEntityPlushie) { + TileEntityPlushie plush = (TileEntityPlushie) te; + return new ItemStack(ModBlocks.plushie, 1, plush.type.ordinal()); + } + return null; + } + @Override public List handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List currenttip, Layout layout) { return currenttip; } + }); } public static void registerHandler(Object o) { diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index c17abb8a5..ee7d42e5f 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -16,6 +16,8 @@ public class NEIRegistry { if(!handlers.isEmpty()) return handlers; + handlers.add(new AnvilRecipeHandler()); + handlers.add(new SmithingRecipeHandler()); handlers.add(new AlloyFurnaceRecipeHandler()); handlers.add(new ShredderRecipeHandler()); handlers.add(new PressRecipeHandler()); @@ -27,6 +29,7 @@ public class NEIRegistry { handlers.add(new RefineryRecipeHandler()); handlers.add(new VacuumRecipeHandler()); handlers.add(new CrackingHandler()); + handlers.add(new RadiolysisRecipeHandler()); handlers.add(new ReformingHandler()); handlers.add(new HydrotreatingHandler()); handlers.add(new ChemplantRecipeHandler()); @@ -35,11 +38,7 @@ public class NEIRegistry { handlers.add(new FusionRecipeHandler()); handlers.add(new HadronRecipeHandler()); handlers.add(new SILEXRecipeHandler()); - handlers.add(new SmithingRecipeHandler()); - handlers.add(new AnvilRecipeHandler()); handlers.add(new FuelPoolHandler()); - handlers.add(new FluidRecipeHandler()); - handlers.add(new RadiolysisRecipeHandler()); handlers.add(new CrucibleSmeltingHandler()); handlers.add(new CrucibleAlloyingHandler()); handlers.add(new CrucibleCastingHandler()); @@ -66,6 +65,9 @@ public class NEIRegistry { handlers.add(new ExposureChamberHandler()); handlers.add(new ArcFurnaceSolidHandler()); handlers.add(new ArcFurnaceFluidHandler()); + + //this shit comes last + handlers.add(new FluidRecipeHandler()); return handlers; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderPlushie.java b/src/main/java/com/hbm/render/tileentity/RenderPlushie.java new file mode 100644 index 000000000..c5d3ae829 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPlushie.java @@ -0,0 +1,138 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockPlushie.PlushieType; +import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.loader.HFRWavefrontObject; +import com.hbm.render.util.HorsePronter; +import com.hbm.util.EnumUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRendererProvider { + + public static final IModelCustom yomiModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/yomi.obj"), false).asVBO(); + public static final ResourceLocation yomiTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/yomi.png"); + public static final ResourceLocation numbernineTex = new ResourceLocation(RefStrings.MODID, "textures/models/horse/numbernine.png"); + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glRotated(22.5D * tile.getBlockMetadata() + 90, 0, -1, 0); + TileEntityPlushie te = (TileEntityPlushie) tile; + + if(te.squishTimer > 0) { + double squish = te.squishTimer - interp; + GL11.glScaled(1, 1 + (-(Math.sin(squish)) * squish) * 0.025, 1); + } + + switch(te.type) { + case NONE: break; + case YOMI: GL11.glScaled(0.5, 0.5, 0.5); break; + case NUMBERNINE: GL11.glScaled(0.75, 0.75, 0.75); break; + } + renderPlushie(te.type); + + GL11.glPopMatrix(); + } + + public static void renderPlushie(PlushieType type) { + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + switch(type) { + case NONE: break; + case YOMI: + Minecraft.getMinecraft().getTextureManager().bindTexture(yomiTex); + yomiModel.renderAll(); + break; + case NUMBERNINE: + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(15, -1, 0, 0); + GL11.glTranslated(0, -0.25, 0.75); + Minecraft.getMinecraft().getTextureManager().bindTexture(numbernineTex); + HorsePronter.reset(); + double r = 45; + HorsePronter.pose(HorsePronter.id_body, 0, -r, 0); + HorsePronter.pose(HorsePronter.id_tail, 0, 60, 90); + HorsePronter.pose(HorsePronter.id_lbl, 0, -75 + r, 35); + HorsePronter.pose(HorsePronter.id_rbl, 0, -75 + r, -35); + HorsePronter.pose(HorsePronter.id_lfl, 0, r - 25, 5); + HorsePronter.pose(HorsePronter.id_rfl, 0, r - 25, -5); + HorsePronter.pose(HorsePronter.id_head, 0, r + 15, 0); + HorsePronter.pront(); + GL11.glRotated(15, 1, 0, 0); + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glTranslated(0, 1, -0.6875); + double s = 1.125D; + GL11.glScaled(0.0625 * s, 0.0625 * s, 0.0625 * s); + GL11.glRotated(180, 1, 0, 0); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.no9); + ResourceManager.armor_no9.renderPart("Helmet"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.no9_insignia); + ResourceManager.armor_no9.renderPart("Insignia"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + ItemStack stack = new ItemStack(ModItems.cigarette); + double scale = 0.25; + GL11.glTranslated(-0.06, 1.13, -0.42); + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, -1, 0); + GL11.glRotated(60, 0, 0, -1); + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationItemsTexture); + IIcon icon = stack.getIconIndex(); + ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + break; + } + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.plushie); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -6, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glTranslated(0, 0.25, 0); + GL11.glEnable(GL11.GL_CULL_FACE); + PlushieType type = EnumUtil.grabEnumSafely(PlushieType.class, item.getItemDamage()); + + switch(type) { + case NONE: break; + case YOMI: GL11.glScaled(1.25, 1.25, 1.25); break; + case NUMBERNINE: GL11.glTranslated(0, 0.25, 0.25); GL11.glScaled(1.25, 1.25, 1.25); break; + } + renderPlushie(type); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java b/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java index 5a87ce681..852329df1 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java @@ -13,7 +13,6 @@ import com.hbm.util.EnumUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -28,7 +27,6 @@ public class RenderSnowglobe extends TileEntitySpecialRenderer implements IItemR public static final ResourceLocation socket = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe.png"); public static final ResourceLocation glass = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe_glass.png"); public static final ResourceLocation features = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe_features.png"); - public static RenderBlocks renderer = new RenderBlocks(); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 5d3552835..bc937c5b9 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -13,6 +13,7 @@ import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; +import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; @@ -206,6 +207,7 @@ public class TileMappings { put(TileEntityPedestal.class, "tileentity_ntm_pedestal"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); put(TileEntitySnowglobe.class, "tileentity_ntm_snowglobe"); + put(TileEntityPlushie.class, "tileentity_ntm_plushie"); put(TileEntityEmitter.class, "tileentity_ntm_emitter"); put(TileEntityDoorGeneric.class, "tileentity_ntm_door"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index bda6f27bf..b34010cea 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -197,9 +197,8 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - //automatically prohibit any stacked item, items can only be added one by one - if(stack.stackSize > 1) - return false; + //automatically prohibit stacked container items + if(stack.stackSize > 1 && stack.getItem().hasContainerItem(stack)) return false; //only allow insertion for the nine recipe slots if(slot < 10 || slot > 18) @@ -209,6 +208,10 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen if(slots[slot - 10] == null) return false; + //do not permit total stacking beyond 4 items + if(slots[slot] != null && slots[slot].stackSize + stack.stackSize > 4) return false; + if(stack.stackSize > 4) return false; + //let's find all slots that this item could potentially go in List validSlots = new ArrayList(); for(int i = 0; i < 9; i++) { @@ -354,5 +357,6 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen inv.setInventorySlotContents(slot, new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta"))); nextMode(slot); tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); + updateTemplateGrid(); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 531bebb18..9a88b5e82 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -44,7 +44,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen public static final int usageBase = 500; public int usage; public int progress; - public static final int processTimeBase = 200; + public static final int processTimeBase = 100; public int processTime; public FluidTank tank; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index ae595e10d..725b0ca86 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -42,7 +42,7 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public static final int usageBase = 500; public int usage; public int progress; - public static final int processTimeBase = 200; + public static final int processTimeBase = 100; public int processTime; public FluidTank tank; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index be7ab91b2..ca32aebf9 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4535,6 +4535,7 @@ tile.plant_tall.cd4.name=Senf-Weide (Reif) tile.plant_tall.weed.name=Hanf tile.plasma.name=Plasma tile.plasma_heater.name=Plasmaerhitzer +tile.plushie.name=%s Plüschfigur tile.pole_satellite_receiver.name=Satellitenschüssel tile.pole_top.name=Antennenspitze tile.press_preheater.name=Presse-Vorheizer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index edca0d83b..ca9e21c7b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5614,6 +5614,7 @@ tile.plant_tall.cd4.name=Mustard Willow (Mature) tile.plant_tall.weed.name=Hemp tile.plasma.name=Plasma tile.plasma_heater.name=Plasma Heater +tile.plushie.name=%s Plushie tile.pole_satellite_receiver.name=Satellite Dish tile.pole_top.name=Antenna Top tile.press_preheater.name=Burner Press Preheater diff --git a/src/main/resources/assets/hbm/models/trinkets/yomi.obj b/src/main/resources/assets/hbm/models/trinkets/yomi.obj new file mode 100644 index 000000000..44c0bdac0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/trinkets/yomi.obj @@ -0,0 +1,487 @@ +# Blender v2.79 (sub 0) OBJ File: 'yomi.blend' +# www.blender.org +o Plane +v -0.250000 1.187500 0.250000 +v 0.250000 1.187500 0.250000 +v -0.250000 1.187500 -0.250000 +v 0.250000 1.187500 -0.250000 +v 0.250000 1.000000 0.187500 +v 0.250000 1.000000 -0.187500 +v 0.125000 0.750000 0.187500 +v 0.125000 0.750000 -0.187500 +v 0.125000 1.000000 0.187500 +v 0.125000 1.000000 -0.187500 +v 0.156375 0.937500 -0.031250 +v 0.156375 0.937500 0.031250 +v 0.156375 1.000000 0.031250 +v 0.156375 1.000000 -0.031250 +v 0.125000 0.875000 -0.031250 +v 0.125000 0.875000 -0.187500 +v 0.125000 1.000000 -0.031250 +v 0.187500 1.000000 -0.031250 +v 0.187500 1.000000 -0.187500 +v 0.187500 0.875000 -0.187500 +v 0.187500 0.875000 -0.031250 +v 0.125000 1.000000 0.031250 +v 0.125000 0.875000 0.031250 +v 0.125000 0.875000 0.187500 +v 0.187500 0.875000 0.187500 +v 0.187500 0.875000 0.031250 +v 0.187500 1.000000 0.031250 +v 0.187500 1.000000 0.187500 +v -0.187500 0.750000 0.187500 +v -0.187500 0.750000 -0.187500 +v -0.250000 0.625000 -0.250000 +v -0.250000 0.625000 0.250000 +v 0.250000 0.625000 0.250000 +v 0.250000 0.625000 0.187500 +v 0.250000 0.625000 -0.250000 +v 0.250000 0.625000 -0.187500 +v -0.187500 0.625000 -0.187500 +v -0.187500 0.625000 0.187500 +v -0.218750 0.750000 -0.218750 +v -0.218750 0.750000 0.218750 +v 0.218750 0.750000 0.218750 +v 0.218750 0.750000 -0.218750 +v -0.218750 0.562500 0.218750 +v 0.218750 0.562500 0.218750 +v 0.218750 0.562500 -0.218750 +v -0.218750 0.562500 -0.218750 +v -0.187500 0.562500 -0.187500 +v -0.187500 0.562500 0.187500 +v 0.187500 0.562500 0.187500 +v 0.187500 0.562500 -0.187500 +v -0.187500 0.062500 0.250000 +v 0.187500 0.062500 0.250000 +v 0.187500 0.062500 -0.250000 +v -0.187500 0.062500 -0.250000 +v -0.031250 1.187500 0.218750 +v 0.031250 1.187500 0.218750 +v -0.031250 1.187500 0.031250 +v 0.031250 1.187500 0.031250 +v -0.031250 1.812500 0.031250 +v -0.031250 1.812500 0.218750 +v 0.031250 1.812500 0.218750 +v 0.031250 1.812500 0.031250 +v -0.031250 1.187500 -0.031250 +v 0.031250 1.187500 -0.031250 +v -0.031250 1.187500 -0.218750 +v 0.031250 1.187500 -0.218750 +v -0.031250 1.812500 -0.218750 +v -0.031250 1.812500 -0.031250 +v 0.031250 1.812500 -0.031250 +v 0.031250 1.812500 -0.218750 +v -0.062500 0.000000 -0.062500 +v 0.437500 0.000000 -0.062500 +v -0.062500 0.000000 -0.187500 +v 0.437500 0.000000 -0.187500 +v -0.062500 0.125000 -0.187500 +v -0.062500 0.125000 -0.062500 +v 0.437500 0.125000 -0.062500 +v 0.437500 0.125000 -0.187500 +v 0.562500 0.000000 -0.062500 +v 0.562500 0.000000 -0.187500 +v 0.562500 0.312500 -0.062500 +v 0.562500 0.312500 -0.187500 +v -0.062500 0.000000 0.187500 +v 0.437500 0.000000 0.187500 +v -0.062500 0.000000 0.062500 +v 0.437500 0.000000 0.062500 +v -0.062500 0.125000 0.062500 +v -0.062500 0.125000 0.187500 +v 0.437500 0.125000 0.187500 +v 0.437500 0.125000 0.062500 +v 0.562500 0.000000 0.187500 +v 0.562500 0.000000 0.062500 +v 0.562500 0.312500 0.187500 +v 0.562500 0.312500 0.062500 +v -0.062500 0.562500 -0.099112 +v -0.062500 0.650888 -0.187500 +v -0.062500 0.208947 -0.452665 +v -0.062500 0.297335 -0.541053 +v 0.062500 0.562500 -0.099112 +v 0.062500 0.650888 -0.187500 +v 0.062500 0.208947 -0.452665 +v 0.062500 0.297335 -0.541053 +v -0.062500 0.562500 0.099112 +v -0.062500 0.650888 0.187500 +v -0.062500 0.208947 0.452665 +v -0.062500 0.297335 0.541053 +v 0.062500 0.562500 0.099112 +v 0.062500 0.650888 0.187500 +v 0.062500 0.208947 0.452665 +v 0.062500 0.297335 0.541053 +v 0.135000 0.859375 0.078125 +v 0.135000 0.765625 0.078125 +v 0.135000 0.859375 -0.078125 +v 0.135000 0.765625 -0.078125 +vt 0.166667 0.809524 +vt 0.333333 1.000000 +vt 0.166667 1.000000 +vt 0.166667 0.595238 +vt 0.187500 0.738095 +vt 0.000000 0.595238 +vt 0.000000 0.809524 +vt 0.333333 0.595238 +vt 0.500000 0.809524 +vt 0.333333 0.809524 +vt 0.312500 0.690476 +vt 0.312500 0.738095 +vt 0.166667 0.809524 +vt 0.166667 0.857143 +vt 0.062500 0.857143 +vt 0.187500 0.595238 +vt 0.187500 0.690476 +vt 0.395833 0.523810 +vt 0.416667 0.547619 +vt 0.395833 0.547619 +vt 0.447917 0.547619 +vt 0.500000 0.523810 +vt 0.500000 0.547619 +vt 0.312500 0.428571 +vt 0.333333 0.404762 +vt 0.437500 0.595238 +vt 0.416667 0.547619 +vt 0.437500 0.547619 +vt 0.187500 0.476190 +vt 0.312500 0.595238 +vt 0.500000 0.595238 +vt 0.447917 0.595238 +vt 0.395833 0.547619 +vt 0.416667 0.595238 +vt 0.395833 0.595238 +vt 0.333333 0.547619 +vt 0.385417 0.523810 +vt 0.385417 0.547619 +vt 0.385417 0.595238 +vt 0.333333 0.595238 +vt 0.479167 0.809524 +vt 0.437500 0.857143 +vt 0.333333 0.809524 +vt 0.312500 0.476190 +vt 0.500000 0.595238 +vt 0.666667 0.809524 +vt 0.291667 0.238095 +vt 0.145833 0.404762 +vt 0.145833 0.238095 +vt 0.145833 0.000000 +vt 0.291667 0.166667 +vt 0.145833 0.166667 +vt -0.000000 0.238095 +vt 0.437500 0.166667 +vt 0.437500 0.238095 +vt 0.583333 0.166667 +vt 0.583333 0.238095 +vt 0.833333 0.333333 +vt 0.708333 0.476190 +vt 0.708333 0.333333 +vt 0.687500 0.000000 +vt 0.854167 0.142857 +vt 0.687500 0.142857 +vt 0.833333 0.476190 +vt 0.687500 0.666667 +vt 0.541667 0.333333 +vt 1.000000 0.476190 +vt 0.354167 0.476190 +vt 0.437500 0.500000 +vt 0.354167 0.500000 +vt 0.354167 0.476190 +vt 0.437500 0.500000 +vt 0.354167 0.500000 +vt 0.458333 0.238095 +vt 0.437500 0.476190 +vt 0.437500 0.238095 +vt 0.354167 0.238095 +vt 0.333333 0.476190 +vt 0.333333 0.238095 +vt 0.427083 0.238095 +vt 0.364583 0.476190 +vt 0.364583 0.238095 +vt 0.531250 0.238095 +vt 0.468750 0.476190 +vt 0.468750 0.238095 +vt 0.458333 0.238095 +vt 0.437500 0.476190 +vt 0.437500 0.238095 +vt 0.354167 0.238095 +vt 0.333333 0.476190 +vt 0.333333 0.238095 +vt 0.427083 0.238095 +vt 0.364583 0.476190 +vt 0.364583 0.238095 +vt 0.531250 0.238095 +vt 0.468750 0.476190 +vt 0.468750 0.238095 +vt 0.791667 0.857143 +vt 0.833333 0.666667 +vt 0.833333 0.857143 +vt 0.708333 0.666667 +vt 0.750000 0.857143 +vt 0.708333 0.857143 +vt 0.750000 0.666667 +vt 0.791667 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.857143 +vt 0.833333 0.714286 +vt 0.875000 0.666667 +vt 0.875000 0.785714 +vt 0.708333 0.904762 +vt 0.750000 0.904762 +vt 0.916667 0.666667 +vt 0.875000 0.857143 +vt 0.916667 0.785714 +vt 0.916667 0.857143 +vt 0.916667 0.619048 +vt 0.875000 0.619048 +vt 0.958333 0.714286 +vt 0.958333 0.666667 +vt 0.833333 0.857143 +vt 0.791667 0.666667 +vt 0.791667 0.857143 +vt 0.750000 0.666667 +vt 0.708333 0.857143 +vt 0.750000 0.857143 +vt 0.666667 0.857143 +vt 0.708333 0.666667 +vt 0.666667 0.666667 +vt 0.958333 0.714286 +vt 0.916667 0.666667 +vt 0.916667 0.785714 +vt 0.750000 0.904762 +vt 0.708333 0.904762 +vt 0.875000 0.666667 +vt 0.916667 0.857143 +vt 0.875000 0.785714 +vt 0.875000 0.857143 +vt 0.875000 0.619048 +vt 0.916667 0.619048 +vt 0.833333 0.714286 +vt 0.833333 0.666667 +vt 0.125000 0.595238 +vt 0.166667 0.404762 +vt 0.166667 0.595238 +vt 0.083333 0.357143 +vt 0.041667 0.404762 +vt 0.041667 0.357143 +vt 0.083333 0.404762 +vt 0.041667 0.595238 +vt -0.000000 0.595238 +vt -0.000000 0.404762 +vt 0.125000 0.404762 +vt 0.083333 0.595238 +vt 0.166667 0.404762 +vt 0.125000 0.595238 +vt 0.166667 0.595238 +vt 0.041667 0.404762 +vt 0.083333 0.357143 +vt 0.041667 0.357143 +vt 0.041667 0.595238 +vt 0.083333 0.404762 +vt -0.000000 0.595238 +vt -0.000000 0.404762 +vt 0.083333 0.595238 +vt 0.125000 0.404762 +vt 0.187500 0.428571 +vt 0.166667 0.404762 +vt 0.500000 0.523810 +vt 0.604167 0.595238 +vt 0.500000 0.595238 +vt 0.187500 0.595238 +vt 0.062500 0.952381 +vt 0.020833 0.952381 +vt 0.020833 0.809524 +vt 0.416667 0.523810 +vt 0.447917 0.523810 +vt 0.312500 0.595238 +vt 0.416667 0.595238 +vt 0.416667 0.547619 +vt 0.333333 0.523810 +vt 0.479167 0.952381 +vt 0.437500 0.952381 +vt 0.333333 0.857143 +vt 0.666667 0.595238 +vt 0.291667 0.404762 +vt 0.291667 0.000000 +vt 0.000000 0.166667 +vt 0.854167 0.000000 +vt 0.854167 0.666667 +vt 0.541667 0.476190 +vt 1.000000 0.333333 +vt 0.458333 0.476190 +vt 0.427083 0.476190 +vt 0.531250 0.476190 +vt 0.458333 0.476190 +vt 0.427083 0.476190 +vt 0.531250 0.476190 +vt 0.958333 0.666667 +vt 0.604167 0.523810 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.1240 0.9923 +vn 0.0000 0.1240 -0.9923 +vn -0.8321 0.5547 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +s off +f 2/1/1 3/2/1 1/3/1 +f 33/4/2 5/5/2 2/1/2 +f 32/6/3 2/1/3 1/7/3 +f 35/8/4 3/9/4 4/10/4 +f 5/5/5 10/11/5 6/12/5 +f 38/13/4 29/14/4 7/15/4 +f 7/16/2 10/11/2 9/17/2 +f 12/18/2 14/19/2 13/20/2 +f 21/21/5 16/22/5 20/23/5 +f 35/8/5 37/24/5 31/25/5 +f 18/26/3 15/27/3 21/28/3 +f 29/29/5 8/30/5 7/16/5 +f 21/21/2 19/31/2 18/32/2 +f 26/33/4 22/34/4 27/35/4 +f 25/36/5 23/37/5 26/38/5 +f 25/36/2 27/39/2 28/40/2 +f 36/41/3 8/42/3 37/43/3 +f 29/29/2 37/24/2 30/44/2 +f 31/45/6 1/46/6 3/9/6 +f 42/47/1 40/48/1 41/49/1 +f 43/50/5 45/51/5 44/52/5 +f 40/53/3 44/52/3 41/49/3 +f 41/49/2 45/51/2 42/47/2 +f 42/47/4 46/54/4 39/55/4 +f 39/55/6 43/56/6 40/57/6 +f 50/58/1 48/59/1 49/60/1 +f 51/61/5 53/62/5 52/63/5 +f 47/64/6 51/65/6 48/59/6 +f 48/59/7 52/66/7 49/60/7 +f 49/60/2 53/62/2 50/58/2 +f 50/58/8 54/67/8 47/64/8 +f 69/68/1 67/69/1 68/70/1 +f 61/71/1 59/72/1 60/73/1 +f 57/74/4 62/75/4 58/76/4 +f 56/77/3 60/78/3 55/79/3 +f 58/80/2 61/81/2 56/82/2 +f 55/83/6 59/84/6 57/85/6 +f 65/86/4 70/87/4 66/88/4 +f 64/89/3 68/90/3 63/91/3 +f 66/92/2 69/93/2 64/94/2 +f 63/95/6 67/96/6 65/97/6 +f 73/98/5 72/99/5 71/100/5 +f 77/101/1 75/102/1 76/103/1 +f 73/98/4 78/104/4 74/105/4 +f 72/106/3 76/103/3 71/107/3 +f 77/108/3 79/109/3 81/110/3 +f 71/111/6 75/102/6 73/112/6 +f 80/113/2 81/110/2 79/109/2 +f 77/114/9 82/115/9 78/116/9 +f 74/117/5 79/109/5 72/118/5 +f 78/119/4 80/113/4 74/120/4 +f 85/121/5 84/122/5 83/123/5 +f 89/124/1 87/125/1 88/126/1 +f 85/127/4 90/128/4 86/129/4 +f 84/122/3 88/126/3 83/123/3 +f 89/130/3 91/131/3 93/132/3 +f 83/133/6 87/125/6 85/134/6 +f 92/135/2 93/132/2 91/131/2 +f 89/136/9 94/137/9 90/138/9 +f 86/139/5 91/131/5 84/140/5 +f 90/141/4 92/135/4 86/142/4 +f 96/143/6 97/144/6 95/145/6 +f 98/146/10 101/147/10 97/148/10 +f 102/149/2 99/150/2 101/147/2 +f 101/147/11 95/151/11 97/152/11 +f 98/153/12 100/154/12 102/149/12 +f 105/155/6 104/156/6 103/157/6 +f 109/158/11 106/159/11 105/160/11 +f 107/161/2 110/162/2 109/158/2 +f 103/163/10 109/158/10 105/164/10 +f 108/165/13 106/166/13 110/162/13 +f 6/12/2 2/1/2 5/5/2 +f 6/12/2 35/8/2 4/10/2 +f 38/167/5 33/4/5 32/168/5 +f 38/167/5 31/25/5 37/24/5 +f 112/169/2 113/170/2 111/171/2 +f 2/1/1 4/10/1 3/2/1 +f 33/4/2 34/172/2 5/5/2 +f 32/6/3 33/4/3 2/1/3 +f 35/8/4 31/45/4 3/9/4 +f 5/5/5 9/17/5 10/11/5 +f 9/173/4 5/174/4 7/15/4 +f 5/174/4 34/175/4 7/15/4 +f 34/175/4 38/13/4 7/15/4 +f 7/16/2 8/30/2 10/11/2 +f 12/18/2 11/176/2 14/19/2 +f 21/21/5 15/177/5 16/22/5 +f 35/8/5 36/178/5 37/24/5 +f 18/26/3 17/179/3 15/27/3 +f 29/29/5 30/44/5 8/30/5 +f 21/21/2 20/23/2 19/31/2 +f 26/33/4 23/180/4 22/34/4 +f 25/36/5 24/181/5 23/37/5 +f 25/36/2 26/38/2 27/39/2 +f 36/41/3 6/182/3 8/42/3 +f 6/182/3 10/183/3 8/42/3 +f 8/42/3 30/184/3 37/43/3 +f 29/29/2 38/167/2 37/24/2 +f 31/45/6 32/185/6 1/46/6 +f 42/47/1 39/186/1 40/48/1 +f 43/50/5 46/187/5 45/51/5 +f 40/53/3 43/188/3 44/52/3 +f 41/49/2 44/52/2 45/51/2 +f 42/47/4 45/51/4 46/54/4 +f 39/55/6 46/54/6 43/56/6 +f 50/58/1 47/64/1 48/59/1 +f 51/61/5 54/189/5 53/62/5 +f 47/64/6 54/190/6 51/65/6 +f 48/59/7 51/191/7 52/66/7 +f 49/60/2 52/63/2 53/62/2 +f 50/58/8 53/192/8 54/67/8 +f 69/68/1 70/87/1 67/69/1 +f 61/71/1 62/75/1 59/72/1 +f 57/74/4 59/193/4 62/75/4 +f 56/77/3 61/71/3 60/78/3 +f 58/80/2 62/194/2 61/81/2 +f 55/83/6 60/195/6 59/84/6 +f 65/86/4 67/196/4 70/87/4 +f 64/89/3 69/68/3 68/90/3 +f 66/92/2 70/197/2 69/93/2 +f 63/95/6 68/198/6 67/96/6 +f 73/98/5 74/105/5 72/99/5 +f 77/101/1 78/104/1 75/102/1 +f 73/98/4 75/102/4 78/104/4 +f 72/106/3 77/101/3 76/103/3 +f 77/108/3 72/99/3 79/109/3 +f 71/111/6 76/103/6 75/102/6 +f 80/113/2 82/115/2 81/110/2 +f 77/114/9 81/110/9 82/115/9 +f 74/117/5 80/113/5 79/109/5 +f 78/119/4 82/115/4 80/113/4 +f 85/121/5 86/142/5 84/122/5 +f 89/124/1 90/128/1 87/125/1 +f 85/127/4 87/125/4 90/128/4 +f 84/122/3 89/124/3 88/126/3 +f 89/130/3 84/199/3 91/131/3 +f 83/133/6 88/126/6 87/125/6 +f 92/135/2 94/137/2 93/132/2 +f 89/136/9 93/132/9 94/137/9 +f 86/139/5 92/135/5 91/131/5 +f 90/141/4 94/137/4 92/135/4 +f 96/143/6 98/153/6 97/144/6 +f 98/146/10 102/149/10 101/147/10 +f 102/149/2 100/154/2 99/150/2 +f 101/147/11 99/150/11 95/151/11 +f 98/153/12 96/143/12 100/154/12 +f 105/155/6 106/166/6 104/156/6 +f 109/158/11 110/162/11 106/159/11 +f 107/161/2 108/165/2 110/162/2 +f 103/163/10 107/161/10 109/158/10 +f 108/165/13 104/156/13 106/166/13 +f 6/12/2 4/10/2 2/1/2 +f 6/12/2 36/178/2 35/8/2 +f 38/167/5 34/172/5 33/4/5 +f 38/167/5 32/168/5 31/25/5 +f 112/169/2 114/200/2 113/170/2 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 001fbd52e..b9fe59269 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -64,6 +64,7 @@ "block.fusionReactorRunning": {"category": "block", "sounds": [{"name": "block/fusionReactorSpin", "stream": false}]}, "block.fel": {"category": "block", "sounds": [{"name": "block/fel", "stream": false}]}, "block.hephaestusRunning": {"category": "block", "sounds": [{"name": "block/hephaestusRunning", "stream": false}]}, + "block.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "stream": false}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/squeakyToy.ogg b/src/main/resources/assets/hbm/sounds/block/squeakyToy.ogg new file mode 100644 index 000000000..fe6105266 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/squeakyToy.ogg differ diff --git a/src/main/resources/assets/hbm/textures/models/horse/numbernine.png b/src/main/resources/assets/hbm/textures/models/horse/numbernine.png new file mode 100644 index 000000000..5f82142e0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/horse/numbernine.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/yomi.png b/src/main/resources/assets/hbm/textures/models/trinkets/yomi.png new file mode 100644 index 000000000..03acaa3ed Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/yomi.png differ