From 2102db622923fdd2cc76594f33bd71704b1baad9 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 24 Jul 2025 15:12:54 +0200 Subject: [PATCH] RBMK autoloader --- changelog | 5 +- src/main/java/com/hbm/blocks/ModBlocks.java | 12 +- .../hbm/blocks/machine/MachineArcFurnace.java | 288 ----- .../blocks/machine/rbmk/RBMKAutoloader.java | 42 + .../container/ContainerMachineArcFurnace.java | 90 -- .../ContainerMachineReactorBreeding.java | 4 +- .../container/ContainerRBMKAutoloader.java | 54 + .../inventory/gui/GUIMachineArcFurnace.java | 64 - .../hbm/inventory/gui/GUIRBMKAutoloader.java | 72 ++ src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/tool/ItemRebarPlacer.java | 5 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 2 + .../java/com/hbm/main/ResourceManager.java | 2 + .../item/weapon/sedna/ItemRenderFlaregun.java | 7 + .../tileentity/RenderRBMKAutoloader.java | 62 + .../hbm/tileentity/TileEntityProxyCombo.java | 4 +- .../java/com/hbm/tileentity/TileMappings.java | 2 +- .../machine/TileEntityDiFurnaceRTG.java | 2 +- .../machine/TileEntityMachineArcFurnace.java | 419 ------- .../TileEntityMachineElectricFurnace.java | 2 +- .../machine/TileEntityRtgFurnace.java | 2 +- .../rbmk/TileEntityRBMKAutoloader.java | 290 +++++ src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/models/rbmk/autoloader.obj | 1029 +++++++++++++++++ .../hbm/textures/blocks/rbmk_autoloader.png | Bin 0 -> 285 bytes .../assets/hbm/textures/gui/gui_arc.png | Bin 3054 -> 0 bytes .../textures/gui/machine/gui_autoloader.png | Bin 0 -> 1736 bytes .../models/machines/rbmk_autoloader.png | Bin 0 -> 1576 bytes 30 files changed, 1586 insertions(+), 880 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineArcFurnace.java create mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKAutoloader.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerRBMKAutoloader.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnace.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKAutoloader.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderRBMKAutoloader.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAutoloader.java create mode 100644 src/main/resources/assets/hbm/models/rbmk/autoloader.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk_autoloader.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_arc.png create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_autoloader.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/rbmk_autoloader.png diff --git a/changelog b/changelog index fa222ff1a..57f21b30a 100644 --- a/changelog +++ b/changelog @@ -14,7 +14,10 @@ ## Changed * The alternate recipes for nitric acid and xenon gas in the chemical plant now require blueprints * The chemical plant now has a recipe for making cobblestone from 25mB of lava (which can be liquefacted into even more lava, useful for cobblestone generation) +* Removed the old arc furnace ## Fixed * Fixed a few assembler recipes using the old crafting numbers which sometimes exceed the stack limit - * As an extra safeguard, the recipe loader now throws an exception if that happens \ No newline at end of file + * As an extra safeguard, the recipe loader now throws an exception if that happens +* Fixed dupe caused by the breeding reactor +* Fixed a potential crash caused by a change done to tile entity proxies in relation to EnergyControl \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1b7dd0f7d..f9d312fa8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -750,9 +750,6 @@ public class ModBlocks { public static Block machine_microwave; - public static Block machine_arc_furnace_off; - public static Block machine_arc_furnace_on; - //public static Block machine_deuterium; public static Block machine_battery_potato; @@ -1124,6 +1121,7 @@ public class ModBlocks { public static Block rbmk_heater; public static Block rbmk_console; public static Block rbmk_crane_console; + public static Block rbmk_autoloader; public static Block rbmk_loader; public static Block rbmk_steam_inlet; public static Block rbmk_steam_outlet; @@ -1526,7 +1524,7 @@ public class ModBlocks { floodlight = new Floodlight(Material.iron).setBlockName("floodlight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); floodlight_beam = new FloodlightBeam().setBlockName("floodlight_beam"); - rebar = new BlockRebar().setBlockName("rebar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rebar"); + rebar = new BlockRebar().setBlockName("rebar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":rebar"); reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); @@ -1877,8 +1875,6 @@ public class ModBlocks { machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_arc_furnace_off = new MachineArcFurnace(false).setBlockName("machine_arc_furnace_off").setHardness(5.0F).setResistance(10.0F); - machine_arc_furnace_on = new MachineArcFurnace(true).setBlockName("machine_arc_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_arc_furnace = new MachineArcFurnaceLarge().setBlockName("machine_arc_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_microwave = new MachineMicrowave(Material.iron).setBlockName("machine_microwave").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_microwave"); @@ -2173,6 +2169,7 @@ public class ModBlocks { rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); + rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader"); rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet"); @@ -3188,6 +3185,7 @@ public class ModBlocks { GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName()); + register(rbmk_autoloader); register(rbmk_loader); register(rbmk_steam_inlet); register(rbmk_steam_outlet); @@ -3293,8 +3291,6 @@ public class ModBlocks { GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName()); GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_electric_furnace_on, machine_electric_furnace_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_arc_furnace_off, machine_arc_furnace_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_arc_furnace_on, machine_arc_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_microwave, machine_microwave.getUnlocalizedName()); GameRegistry.registerBlock(machine_assembler, machine_assembler.getUnlocalizedName()); register(machine_assembly_machine); diff --git a/src/main/java/com/hbm/blocks/machine/MachineArcFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineArcFurnace.java deleted file mode 100644 index 7b45594c8..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineArcFurnace.java +++ /dev/null @@ -1,288 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; - -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -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.client.renderer.texture.IIconRegister; -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.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class MachineArcFurnace extends BlockContainer { - - private final Random field_149933_a = new Random(); - private final boolean isActive; - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - @SideOnly(Side.CLIENT) - private IIcon iconTop; - @SideOnly(Side.CLIENT) - private IIcon iconBottom; - @SideOnly(Side.CLIENT) - private IIcon iconRods; - - public MachineArcFurnace(boolean blockState) { - super(Material.iron); - isActive = blockState; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_arc_furnace_front_on" : ":machine_arc_furnace_front_off")); - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_arc_furnace_top_on" : ":machine_arc_furnace_top")); - this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":machine_arc_furnace_bottom"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_arc_furnace_side"); - this.iconRods = iconRegister.registerIcon(RefStrings.MODID + ":machine_arc_furnace_top_rods"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - - if(this == ModBlocks.machine_arc_furnace_off) { - - if(side == 1 && metadata > 5) { - return iconRods; - } - } - - if(metadata > 5) - metadata -= 4; - - if(side == 0) - return this.iconBottom; - if(side == 1) - return this.iconTop; - - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_arc_furnace_off); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - this.setDefaultDirection(world, x, y, z); - } - - private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { - Block block1 = world.getBlock(x, y, z - 1); - Block block2 = world.getBlock(x, y, z + 1); - Block block3 = world.getBlock(x - 1, y, z); - Block block4 = world.getBlock(x + 1, y, z); - - byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { - b0 = 3; - } - if(block2.func_149730_j() && !block1.func_149730_j()) - { - b0 = 2; - } - if(block3.func_149730_j() && !block4.func_149730_j()) - { - b0 = 5; - } - if(block4.func_149730_j() && !block3.func_149730_j()) - { - b0 = 4; - } - - world.setBlockMetadataWithNotify(x, y, z, b0, 2); - } - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - - if(itemStack.hasDisplayName()) - { - ((TileEntityMachineArcFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); - } - } - - @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()) - { - TileEntityMachineArcFurnace entity = (TileEntityMachineArcFurnace) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineArcFurnace(); - } - - public static void updateBlockState(boolean isProcessing, World world, int x, int y, int z) { - int i = world.getBlockMetadata(x, y, z); - TileEntity entity = world.getTileEntity(x, y, z); - keepInventory = true; - - if(isProcessing) - { - world.setBlock(x, y, z, ModBlocks.machine_arc_furnace_on); - }else{ - world.setBlock(x, y, z, ModBlocks.machine_arc_furnace_off); - } - - keepInventory = false; - world.setBlockMetadataWithNotify(x, y, z, i, 2); - - if(entity != null) { - entity.validate(); - world.setTileEntity(x, y, z, entity); - } - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineArcFurnace tileentityfurnace = (TileEntityMachineArcFurnace)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) - { - if (isActive) - { - int l = p_149734_1_.getBlockMetadata(x, y, z); - float f = x + 0.5F; - float f1 = y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; - float f2 = z + 0.5F; - float f3 = 0.52F; - float f4 = rand.nextFloat() * 0.6F - 0.3F; - - if (l == 4) - { - p_149734_1_.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 5) - { - p_149734_1_.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 2) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - } - else if (l == 3) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) - { - return Item.getItemFromBlock(ModBlocks.machine_arc_furnace_off); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKAutoloader.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKAutoloader.java new file mode 100644 index 000000000..9eb8f58dc --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKAutoloader.java @@ -0,0 +1,42 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKAutoloader; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class RBMKAutoloader extends BlockDummyable { + + public RBMKAutoloader() { + super(Material.iron); + + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.125, 0, -0.125, 0.125, 4, 0.125)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.5, 4, -0.5, 0.5, 9, 0.5)); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityRBMKAutoloader(); + return new TileEntityProxyCombo().inventory(); + } + + @Override + public int[] getDimensions() { + return new int[] {8, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java deleted file mode 100644 index c3dd0c537..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotSmelting; -import com.hbm.items.ModItems; -import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; - -import api.hbm.energymk2.IBatteryItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerMachineArcFurnace extends Container { - - private TileEntityMachineArcFurnace diFurnace; - - public ContainerMachineArcFurnace(InventoryPlayer invPlayer, TileEntityMachineArcFurnace tedf) { - - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 56, 17)); - this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 1, 116, 35)); - this.addSlotToContainer(new Slot(tedf, 2, 38, 53)); - this.addSlotToContainer(new Slot(tedf, 3, 56, 53)); - this.addSlotToContainer(new Slot(tedf, 4, 74, 53)); - this.addSlotToContainer(new Slot(tedf, 5, 8, 53)); - - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int index) { - ItemStack rStack = null; - Slot slot = (Slot) this.inventorySlots.get(index); - - if(slot != null && slot.getHasStack()) { - ItemStack stack = slot.getStack(); - rStack = stack.copy(); - - if(index <= 5) { - if(!this.mergeItemStack(stack, 6, this.inventorySlots.size(), true)) { - return null; - } - - slot.onSlotChange(stack, rStack); - - } else { - - if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { - if(!this.mergeItemStack(stack, 5, 6, false)) - return null; - - } else if(rStack.getItem() == ModItems.arc_electrode) { - if(!this.mergeItemStack(stack, 2, 5, false)) - return null; - - } else if(!this.mergeItemStack(stack, 0, 1, false)) - return null; - } - - if(stack.stackSize == 0) { - slot.putStack((ItemStack) null); - } else { - slot.onSlotChanged(); - } - } - - return rStack; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java b/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java index 331b69d1d..cab45d330 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java @@ -43,8 +43,8 @@ public class ContainerMachineReactorBreeding extends Container { ItemStack stack = slot.getStack(); var3 = stack.copy(); - if(index <= 1) { - if(!this.mergeItemStack(stack, 1, this.inventorySlots.size(), true)) { + if(index <= 2) { + if(!this.mergeItemStack(stack, 2, this.inventorySlots.size(), true)) { return null; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKAutoloader.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKAutoloader.java new file mode 100644 index 000000000..de34fab6b --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKAutoloader.java @@ -0,0 +1,54 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKAutoloader; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerRBMKAutoloader extends ContainerBase { + + public TileEntityRBMKAutoloader loader; + + public ContainerRBMKAutoloader(InventoryPlayer invPlayer, TileEntityRBMKAutoloader tedf) { + super(invPlayer, tedf); + loader = tedf; + + this.addSlots(loader, 0, 17, 18, 3, 3); + this.addTakeOnlySlots(loader, 9, 107, 18, 3, 3); + this.playerInv(invPlayer, 8, 100); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 17) { + if(!this.mergeItemStack(stack, 18, this.inventorySlots.size(), true)) { + return null; + } + } else { + if(!this.mergeItemStack(stack, 0, 9, false)) return null; + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return loader.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnace.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnace.java deleted file mode 100644 index 5f6e04fdf..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnace.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineArcFurnace; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineArcFurnace extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_arc.png"); - private TileEntityMachineArcFurnace diFurnace; - - public GUIMachineArcFurnace(InventoryPlayer invPlayer, TileEntityMachineArcFurnace tedf) { - super(new ContainerMachineArcFurnace(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 166; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 51 - 34, 16, 34, diFurnace.power, diFurnace.maxPower); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(diFurnace.isInvalid() && diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord) instanceof TileEntityMachineArcFurnace) - diFurnace = (TileEntityMachineArcFurnace) diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord); - - if(diFurnace.hasPower()) { - int i = (int)diFurnace.getPowerRemainingScaled(34); - drawTexturedModalRect(guiLeft + 8, guiTop + 51 - i, 176, 67 - i, 16, i); - } - - if(diFurnace.canProcess() && diFurnace.hasPower()) - { - drawTexturedModalRect(guiLeft + 55, guiTop + 35, 176, 0, 15, 16); - } - - int j1 = diFurnace.getDiFurnaceProgressScaled(24); - drawTexturedModalRect(guiLeft + 79, guiTop + 34, 176, 16, j1 + 1, 17); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKAutoloader.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKAutoloader.java new file mode 100644 index 000000000..2805437f6 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKAutoloader.java @@ -0,0 +1,72 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerRBMKAutoloader; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKAutoloader; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIRBMKAutoloader extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_autoloader.png"); + private TileEntityRBMKAutoloader loader; + + public GUIRBMKAutoloader(InventoryPlayer invPlayer, TileEntityRBMKAutoloader tile) { + super(new ContainerRBMKAutoloader(invPlayer, tile)); + loader = tile; + + this.xSize = 176; + this.ySize = 182; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 74 <= x && guiLeft + 74 + 12 > x && guiTop + 36 < y && guiTop + 36 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("minus", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, loader.xCoord, loader.yCoord, loader.zCoord)); + } + + if(guiLeft + 90 <= x && guiLeft + 90 + 12 > x && guiTop + 36 < y && guiTop + 36 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("plus", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, loader.xCoord, loader.yCoord, loader.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.loader.hasCustomInventoryName() ? this.loader.getInventoryName() : I18n.format(this.loader.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xFFFFFF); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + String percent = loader.cycle + "%"; + this.fontRendererObj.drawString(percent, this.xSize / 2 - this.fontRendererObj.getStringWidth(percent) / 2, 23, 0x00FF00); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index df5e429b2..b8bbdbde8 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4005,7 +4005,7 @@ public class ModItems { upgrade_stack = new ItemMetaUpgrade(3).setUnlocalizedName("upgrade_stack").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_stack"); upgrade_ejector = new ItemMetaUpgrade(3).setUnlocalizedName("upgrade_ejector").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_ejector"); - rebar_placer = new ItemRebarPlacer().setUnlocalizedName("rebar_placer").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":rebar_placer"); + rebar_placer = new ItemRebarPlacer().setUnlocalizedName("rebar_placer").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rebar_placer"); wand = new ItemWand().setUnlocalizedName("wand_k").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":wand"); wand_s = new ItemWandS().setUnlocalizedName("wand_s").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":wand_s"); wand_d = new ItemWandD().setUnlocalizedName("wand_d").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":wand_d"); diff --git a/src/main/java/com/hbm/items/tool/ItemRebarPlacer.java b/src/main/java/com/hbm/items/tool/ItemRebarPlacer.java index 86b120769..d6d5715cd 100644 --- a/src/main/java/com/hbm/items/tool/ItemRebarPlacer.java +++ b/src/main/java/com/hbm/items/tool/ItemRebarPlacer.java @@ -101,7 +101,10 @@ public class ItemRebarPlacer extends Item implements IGUIProvider { @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fx, float fy, float fz) { if(world.isRemote) return true; - if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + if(!stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + ItemStackUtil.addStacksToNBT(stack, new ItemStack[] {new ItemStack(ModBlocks.concrete_rebar)}); + } ItemStack theConk = ItemStackUtil.readStacksFromNBT(stack, 1)[0]; boolean hasConk = theConk != null && isValidConk(theConk.getItem(), theConk.getItemDamage()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 1d934e87d..1661a221b 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -416,6 +416,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKCooler.class, new RenderRBMKLid()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKStorage.class, new RenderRBMKLid()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKHeater.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader()); //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index dffae8513..b1818f018 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1721,6 +1721,8 @@ public class MainRegistry { ignoreMappings.add("hbm:item.journal_pip"); ignoreMappings.add("hbm:item.journal_bj"); ignoreMappings.add("hbm:item.journal_silver"); + ignoreMappings.add("hbm:tile.machine_arc_furnace_off"); + ignoreMappings.add("hbm:tile.machine_arc_furnace_on"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index a1fee2c2c..fb125b628 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1565,10 +1565,12 @@ public class ResourceManager { public static final IModelCustom rbmk_rods_vbo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_rods.obj")).asVBO(); public static final IModelCustom rbmk_crane_console = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/crane_console.obj")).asVBO(); public static final IModelCustom rbmk_crane = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/crane.obj")).asVBO(); + public static final IModelCustom rbmk_autoloader = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/autoloader.obj")).asVBO(); public static final IModelCustom rbmk_console = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_console.obj")).asVBO(); public static final IModelCustom rbmk_debris = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj")); public static final ResourceLocation rbmk_crane_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crane_console.png"); public static final ResourceLocation rbmk_crane_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png"); + public static final ResourceLocation rbmk_autoloader_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_autoloader.png"); public static final ResourceLocation rbmk_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_control.png"); public static final IModelCustom hev_battery = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/battery.obj")); public static final IModelCustom anvil = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/anvil.obj")); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java index 3bcabc96b..d21439d5d 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java @@ -112,6 +112,13 @@ public class ItemRenderFlaregun extends ItemRenderWeaponBase { GL11.glRotated(90, 0, 1, 0); } + @Override + public void setupEntity(ItemStack stack) { + super.setupEntity(stack); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKAutoloader.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKAutoloader.java new file mode 100644 index 000000000..3018364a9 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKAutoloader.java @@ -0,0 +1,62 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKAutoloader; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderRBMKAutoloader extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.rbmk_autoloader_tex); + ResourceManager.rbmk_autoloader.renderPart("Base"); + + TileEntityRBMKAutoloader press = (TileEntityRBMKAutoloader) tile; + double p = (press.lastPiston + (press.renderPiston - press.lastPiston) * interp); + GL11.glTranslated(0, p * -4D, 0); + + GL11.glTranslated(0, 4, 0); + ResourceManager.rbmk_autoloader.renderPart("Piston"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.rbmk_autoloader); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -6, 0); + GL11.glScaled(1.75, 1.75, 1.75); + } + public void renderCommon() { + GL11.glRotated(180, 0, 1, 0); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.rbmk_autoloader_tex); + ResourceManager.rbmk_autoloader.renderPart("Base"); + ResourceManager.rbmk_autoloader.renderPart("Piston"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } + +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index c38e5f51e..fb80aa785 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -75,8 +75,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return this; } - /** Returns the actual tile entity that represents the core. Only for internal use. */ - protected TileEntity getTile() { + /** Returns the actual tile entity that represents the core. Only for internal use, and EnergyControl. */ + public TileEntity getTile() { if(tile == null || tile.isInvalid()) { tile = this.getTE(); } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3b7676d73..7a8f9ead4 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -149,7 +149,6 @@ public class TileMappings { put(TileEntityCoreInjector.class, "tileentity_v0_injector"); put(TileEntityCoreStabilizer.class, "tileentity_v0_stabilizer"); put(TileEntityCore.class, "tileentity_v0"); - put(TileEntityMachineArcFurnace.class, "tileentity_arc_furnace"); put(TileEntityMachineAmgen.class, "tileentity_amgen"); put(TileEntityMachineHephaestus.class, "tileentity_hephaestus"); put(TileEntityGeysir.class, "tileentity_geysir"); @@ -403,6 +402,7 @@ public class TileMappings { put(TileEntityRBMKConsole.class, "tileentity_rbmk_console"); put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet"); put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet"); + put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader"); } private static void putNetwork() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index 5776fa53a..2c4999f23 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -105,7 +105,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU for(int i = 0; i < 2; i++) { if(slots[i].stackSize <= 0) - slots[i] = new ItemStack(slots[i].getItem().setFull3D()); + slots[i] = new ItemStack(slots[i].getItem()); else slots[i].stackSize--; if(slots[i].stackSize <= 0) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java deleted file mode 100644 index 7c6df467c..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ /dev/null @@ -1,419 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.machine.MachineArcFurnace; -import com.hbm.inventory.container.ContainerMachineArcFurnace; -import com.hbm.inventory.gui.GUIMachineArcFurnace; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; -import com.hbm.util.CompatEnergyControl; - -import api.hbm.energymk2.IEnergyReceiverMK2; -import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider, IInfoProviderEC { - - private ItemStack slots[]; - - public int dualCookTime; - public long power; - public static final long maxPower = 50000; - public static final int processingSpeed = 20; - - //0: i - //1: o - //2: 1 - //3: 2 - //4: 3 - //5: b - private static final int[] slots_io = new int[] {0, 1, 2, 3, 4, 5}; - - private String customName; - - public TileEntityMachineArcFurnace() { - slots = new ItemStack[6]; - } - - @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.arcFurnace"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - markDirty(); - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - - if(i == 2 || i == 3 || i == 4) - return itemStack.getItem() == ModItems.arc_electrode; - - if(i == 0) - return FurnaceRecipes.smelting().getSmeltingResult(itemStack) != null; - - return false; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - this.power = nbt.getLong("powerTime"); - this.dualCookTime = nbt.getInteger("cookTime"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - - customName = nbt.getString("name"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("powerTime", power); - nbt.setInteger("cookTime", dualCookTime); - NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - - if (customName != null) { - nbt.setString("name", customName); - } - } - - @Override - public int[] getAccessibleSlotsFromSide(int side) { - return slots_io; - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - - if(i == 1) - return true; - - if(i == 2 || i == 3 || i == 4) - return itemStack.getItem() == ModItems.arc_electrode_burnt; - - return false; - } - - public int getDiFurnaceProgressScaled(int i) { - return (dualCookTime * i) / processingSpeed; - } - - public long getPowerRemainingScaled(long i) { - return (power * i) / maxPower; - } - - public boolean hasPower() { - return power >= 250; - } - - public boolean isProcessing() { - return this.dualCookTime > 0; - } - - private boolean hasElectrodes() { - - if(slots[2] != null && slots[3] != null && slots[4] != null) { - if((slots[2].getItem() == ModItems.arc_electrode) && - (slots[3].getItem() == ModItems.arc_electrode) && - (slots[4].getItem() == ModItems.arc_electrode)) - return true; - } - - return false; - } - - public boolean canProcess() { - - if(!hasElectrodes()) - return false; - - if(slots[0] == null) - { - return false; - } - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); - - if(itemStack == null) - { - return false; - } - - if(slots[1] == null) - { - return true; - } - - if(!slots[1].isItemEqual(itemStack)) { - return false; - } - - if(slots[1].stackSize < getInventoryStackLimit() && slots[1].stackSize < slots[1].getMaxStackSize()) { - return true; - }else{ - return slots[1].stackSize < itemStack.getMaxStackSize(); - } - } - - private void processItem() { - if(canProcess()) { - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); - - if(slots[1] == null) - { - slots[1] = itemStack.copy(); - }else if(slots[1].isItemEqual(itemStack)) { - slots[1].stackSize += itemStack.stackSize; - } - - for(int i = 0; i < 1; i++) - { - if(slots[i].stackSize <= 0) - { - slots[i] = new ItemStack(slots[i].getItem()); - }else{ - slots[i].stackSize--; - } - if(slots[i].stackSize <= 0) - { - slots[i] = null; - } - } - } - } - - //TODO: fix this punjabi trash - @Override - public void updateEntity() { - boolean flag1 = false; - - if(!worldObj.isRemote) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - - if(hasPower() && canProcess()) - { - dualCookTime++; - - power -= 250; - - if(power < 0) - power = 0; - - if(this.dualCookTime == processingSpeed) - { - this.dualCookTime = 0; - this.processItem(); - flag1 = true; - } - }else{ - dualCookTime = 0; - } - - boolean trigger = true; - - if(hasPower() && canProcess() && this.dualCookTime == 0) - { - trigger = false; - } - - if(trigger) - { - flag1 = true; - MachineArcFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - - if(worldObj.getBlock(xCoord, yCoord, zCoord) == ModBlocks.machine_arc_furnace_off) { - - int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); - - if(hasElectrodes() && meta <= 5) { - worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, meta + 4, 2); - } - if(!hasElectrodes() && meta > 5) { - worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, meta - 4, 2); - } - } - - power = Library.chargeTEFromItems(slots, 5, power, maxPower); - - networkPackNT(50); // it makes no sense to refactor this to some, but I want to delete the AuxElectricityPacket already - } - - if(flag1) - { - this.markDirty(); - } - } - - @Override - public void serialize(ByteBuf buf) { - super.serialize(buf); - buf.writeLong(power); - buf.writeInt(dualCookTime); - } - - @Override - public void deserialize(ByteBuf buf) { - super.deserialize(buf); - power = buf.readLong(); - dualCookTime = buf.readInt(); - } - - @Override - public void setPower(long i) { - power = i; - - } - - @Override - public long getPower() { - return power; - - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineArcFurnace(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineArcFurnace(player.inventory, this); - } - - @Override - public void provideExtraInfo(NBTTagCompound data) { - data.setBoolean(CompatEnergyControl.B_ACTIVE, this.hasPower() && this.canProcess()); - data.setInteger(CompatEnergyControl.I_PROGRESS, this.dualCookTime); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 84c1fd378..bd76ff316 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -154,7 +154,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl for(int i = 1; i < 2; i++) { if(slots[i].stackSize <= 0) { - slots[i] = new ItemStack(slots[i].getItem().setFull3D()); + slots[i] = new ItemStack(slots[i].getItem()); } else { slots[i].stackSize--; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java index 72882cabd..f2ac74441 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java @@ -240,7 +240,7 @@ public class TileEntityRtgFurnace extends TileEntity implements ISidedInventory, { if(slots[i].stackSize <= 0) { - slots[i] = new ItemStack(slots[i].getItem().setFull3D()); + slots[i] = new ItemStack(slots[i].getItem()); }else{ slots[i].stackSize--; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAutoloader.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAutoloader.java new file mode 100644 index 000000000..8ba45ef55 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAutoloader.java @@ -0,0 +1,290 @@ +package com.hbm.tileentity.machine.rbmk; + +import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.interfaces.ICopiable; +import com.hbm.inventory.container.ContainerRBMKAutoloader; +import com.hbm.inventory.gui.GUIRBMKAutoloader; +import com.hbm.items.machine.ItemRBMKRod; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class TileEntityRBMKAutoloader extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, ICopiable { + + public double piston; + public double renderPiston; + public double lastPiston; + private double syncPiston; + private int turnProgress; + private boolean isRetracting = true; + private int delay = 0; + + public static double speed = 0.005D; + + public int cycle = 50; + + private AudioWrapper audioLift; + + public TileEntityRBMKAutoloader() { + super(18); + } + + @Override + public String getName() { + return "container.rbmkAutoloader"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(delay > 0) delay--; + + if(delay <= 0 && this.isRetracting && this.piston > 0D) { + this.piston -= this.speed; + if(this.piston <= 0) { + this.piston = 0; + this.delay = 40; + } + } + + // check for connected fuel rod and decide whether to begin working + if(isRetracting && worldObj.getTotalWorldTime() % 20 == 0 && this.hasFuel() && this.hasSpace()) { + Block below = worldObj.getBlock(xCoord, yCoord - 1, zCoord); + if(below instanceof RBMKBase) { + int[] pos = ((RBMKBase) below).findCore(worldObj, xCoord, yCoord - 1, zCoord); + TileEntity tile = worldObj.getTileEntity(pos[0], pos[1], pos[2]); + if(tile instanceof TileEntityRBMKRod) { + TileEntityRBMKRod rod = (TileEntityRBMKRod) tile; + if(rod.slots[0] == null || (rod.slots[0] != null && rod.slots[0].getItem() instanceof ItemRBMKRod && ItemRBMKRod.getEnrichment(rod.slots[0]) * 100 < cycle)) { + this.isRetracting = false; + } + } + } + } + + if(delay <= 0 && !this.isRetracting && this.piston < 1D) { + this.piston += this.speed; + if(this.piston >= 1) { + this.piston = 1; + this.delay = 40; + } + } + + // once the piston is fully extended + if(!isRetracting && this.piston >= 1D) { + this.piston = 1D; + + Block below = worldObj.getBlock(xCoord, yCoord - 1, zCoord); + if(below instanceof RBMKBase) { + int[] pos = ((RBMKBase) below).findCore(worldObj, xCoord, yCoord - 1, zCoord); + TileEntity tile = worldObj.getTileEntity(pos[0], pos[1], pos[2]); + if(tile instanceof TileEntityRBMKRod) { + TileEntityRBMKRod rod = (TileEntityRBMKRod) tile; + // try to take out the old fuel rod + if(rod.slots[0] != null && this.hasSpace()) { + for(int i = 9; i < 18; i++) { + if(slots[i] == null) { + slots[i] = rod.slots[0].copy(); + rod.slots[0] = null; + break; + } + } + } + // if there's space, try and insert a new fuel rod + if(rod.slots[0] == null) { + for(int i = 0; i < 9; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() instanceof ItemRBMKRod && ItemRBMKRod.getEnrichment(stack) * 100 >= cycle) { + rod.slots[0] = stack.copy(); + slots[i] = null; + break; + } + } + } + + this.isRetracting = true; + this.delay = 40; + } + } + } + + this.networkPackNT(100); + } else { + + this.lastPiston = this.renderPiston; + + if(this.turnProgress > 0) { + this.renderPiston = this.renderPiston + ((this.syncPiston - this.renderPiston) / (double) this.turnProgress); + --this.turnProgress; + } else { + this.renderPiston = this.syncPiston; + } + + if(this.renderPiston > 0.01 && this.renderPiston < 0.99) { + if(this.audioLift == null || !this.audioLift.isPlaying()) { + this.audioLift = MainRegistry.proxy.getLoopedSound("hbm:door.wgh_start", xCoord, yCoord, zCoord, this.getVolume(0.75F), 25F, 1.0F, 5); + this.audioLift.startSound(); + } + this.audioLift.updateVolume(this.getVolume(0.75F)); + this.audioLift.keepAlive(); + } else { + if(this.audioLift != null) { + this.audioLift.stopSound(); + this.audioLift = null; + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:door.wgh_stop", this.getVolume(2F), 1F); + } + } + + if(this.renderPiston > 0.99) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "tower"); + data.setFloat("lift", 0F); + data.setFloat("base", 0.25F); + data.setFloat("max", 1.5F); + data.setInteger("life", 70 + worldObj.rand.nextInt(30)); + data.setDouble("posX", xCoord + 0.5 + worldObj.rand.nextGaussian() * 0.125); + data.setDouble("posZ", zCoord + 0.5 + worldObj.rand.nextGaussian() * 0.125); + data.setDouble("posY", yCoord + 0.25); + data.setBoolean("noWind", true); + data.setFloat("alphaMod", 2F); + data.setFloat("strafe", 0.05F); + for(int i = 0; i < 3; i++) MainRegistry.proxy.effectNT(data); + } + } + } + + public boolean hasFuel() { + for(int i = 0; i < 9; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() instanceof ItemRBMKRod && ItemRBMKRod.getEnrichment(stack) * 100 >= cycle) { + return true; + } + } + + return false; + } + + public boolean hasSpace() { + for(int i = 9; i < 18; i++) if(slots[i] == null) return true; + return false; + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeDouble(this.piston); + buf.writeInt(this.cycle); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.syncPiston = buf.readDouble(); + this.cycle = buf.readInt(); + + this.turnProgress = 2; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return stack.getItem() instanceof ItemRBMKRod && ItemRBMKRod.getEnrichment(stack) * 100 >= cycle && i < 9; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return this.piston <= 0 ? new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 } : new int[0]; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i >= 9; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + piston = nbt.getDouble("piston"); + isRetracting = nbt.getBoolean("ret"); + delay = nbt.getInteger("delay"); + cycle = nbt.getInteger("cycle"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setDouble("piston", piston); + nbt.setBoolean("ret", isRetracting); + nbt.setInteger("delay", delay); + nbt.setInteger("cycle", cycle); + } + + protected AxisAlignedBB aabb; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + if(aabb != null) return aabb; + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 9, zCoord + 1); + return aabb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("minus") && this.cycle > 5) this.cycle -= 5; + if(data.hasKey("plus") && this.cycle < 95) this.cycle += 5; + this.cycle = MathHelper.clamp_int(cycle, 5, 95); + this.markChanged(); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerRBMKAutoloader(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIRBMKAutoloader(player.inventory, this); + } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("cycle", cycle); + return data; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("cycle")) { + this.cycle = MathHelper.clamp_int(nbt.getInteger("cycle"), 5, 95); + } + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c3dbefea1..c569a4c24 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -437,6 +437,7 @@ container.radGen=Strahlenbetriebener Generator container.radar=Radar container.radiobox=UKW-Sender container.radiorec=UKW Radio +container.rbmkAutoloader=RBMK-Ladeautomat container.rbmkBoiler=RBMK Dampfkanal container.rbmkControl=RBMK Steuerstäbe container.rbmkControlAuto=RBMK Automatische Steuerstäbe @@ -4729,6 +4730,7 @@ tile.rail_large_switch.name=Normalspur-Weiche (15m, Links) tile.rail_large_switch_flipped.name=Normalspur-Weiche (15m, Rechts) tile.rail_wood.name=Holzschienen tile.rbmk_absorber.name=RBMK Bor-Neutronenabsorber +tile.rbmk_autoloader.name=RBMK-Ladeautomat tile.rbmk_blank.name=RBMK Strukturteil tile.rbmk_boiler.name=RBMK Dampfkanal tile.rbmk_cooler.name=RBMK Kühler diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b02964bcc..f5702bf91 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -841,6 +841,7 @@ container.radar=Radar container.radiobox=FM Transmitter container.radiolysis=RTG and Radiolysis Chamber container.radiorec=FM Radio +container.rbmkAutoloader=RBMK Autoloader container.rbmkBoiler=RBMK Steam Channel container.rbmkControl=RBMK Control Rods container.rbmkControlAuto=RBMK Automatic Control Rods @@ -5877,6 +5878,7 @@ tile.rail_large_switch_flipped.name=Standard Gauge Switch Rail (15m, Right) tile.rail_narrow.name=Narrow Gauge Cart Rail tile.rail_wood.name=Wooden Tracks tile.rbmk_absorber.name=RBMK Boron Neutron Absorber +tile.rbmk_autoloader.name=RBMK Autoloader tile.rbmk_blank.name=RBMK Structural Column tile.rbmk_boiler.name=RBMK Steam Channel tile.rbmk_console.name=RBMK Console diff --git a/src/main/resources/assets/hbm/models/rbmk/autoloader.obj b/src/main/resources/assets/hbm/models/rbmk/autoloader.obj new file mode 100644 index 000000000..4b1dea3a7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/rbmk/autoloader.obj @@ -0,0 +1,1029 @@ +# Blender v2.79 (sub 0) OBJ File: 'autoloader.blend' +# www.blender.org +o Piston +v 0.062500 0.000000 0.312500 +v 0.062500 0.000000 0.187500 +v 0.187500 0.000000 0.062500 +v 0.187500 0.000000 0.437500 +v 0.312500 0.000000 0.437500 +v 0.312500 0.000000 0.062500 +v 0.437500 0.000000 0.187500 +v 0.437500 0.000000 0.312500 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.062500 0.500000 0.312500 +v 0.062500 0.500000 0.187500 +v 0.187500 0.500000 0.062500 +v 0.187500 0.500000 0.437500 +v 0.312500 0.500000 0.437500 +v 0.312500 0.500000 0.062500 +v 0.437500 0.500000 0.187500 +v 0.437500 0.500000 0.312500 +v 0.062500 0.000000 -0.187500 +v 0.062500 0.000000 -0.312500 +v 0.187500 0.000000 -0.437500 +v 0.187500 0.000000 -0.062500 +v 0.312500 0.000000 -0.062500 +v 0.312500 0.000000 -0.437500 +v 0.437500 0.000000 -0.312500 +v 0.437500 0.000000 -0.187500 +v 0.062500 0.500000 -0.187500 +v 0.062500 0.500000 -0.312500 +v 0.187500 0.500000 -0.437500 +v 0.187500 0.500000 -0.062500 +v 0.312500 0.500000 -0.062500 +v 0.312500 0.500000 -0.437500 +v 0.437500 0.500000 -0.312500 +v 0.437500 0.500000 -0.187500 +v -0.437500 0.000000 0.312500 +v -0.437500 0.000000 0.187500 +v -0.312500 0.000000 0.062500 +v -0.312500 0.000000 0.437500 +v -0.187500 0.000000 0.437500 +v -0.187500 0.000000 0.062500 +v -0.062500 0.000000 0.187500 +v -0.062500 0.000000 0.312500 +v -0.437500 0.500000 0.312500 +v -0.437500 0.500000 0.187500 +v -0.312500 0.500000 0.062500 +v -0.312500 0.500000 0.437500 +v -0.187500 0.500000 0.437500 +v -0.187500 0.500000 0.062500 +v -0.062500 0.500000 0.187500 +v -0.062500 0.500000 0.312500 +v -0.437500 0.000000 -0.187500 +v -0.437500 0.000000 -0.312500 +v -0.312500 0.000000 -0.437500 +v -0.312500 0.000000 -0.062500 +v -0.187500 0.000000 -0.062500 +v -0.187500 0.000000 -0.437500 +v -0.062500 0.000000 -0.312500 +v -0.062500 0.000000 -0.187500 +v -0.437500 0.500000 -0.187500 +v -0.437500 0.500000 -0.312500 +v -0.312500 0.500000 -0.437500 +v -0.312500 0.500000 -0.062500 +v -0.187500 0.500000 -0.062500 +v -0.187500 0.500000 -0.437500 +v -0.062500 0.500000 -0.312500 +v -0.062500 0.500000 -0.187500 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 0.500000 +v 0.375000 0.750000 -0.375000 +v -0.375000 0.750000 -0.375000 +v 0.375000 0.750000 0.375000 +v -0.375000 0.750000 0.375000 +v 0.375000 4.500000 -0.375000 +v -0.375000 4.500000 -0.375000 +v 0.375000 4.500000 0.375000 +v -0.375000 4.500000 0.375000 +v 0.437500 4.500000 0.187500 +v 0.437500 4.500000 0.312500 +v 0.437500 0.500000 0.187500 +v 0.437500 0.500000 0.312500 +v 0.375000 4.500000 -0.312500 +v 0.375000 4.500000 -0.187500 +v 0.375000 0.500000 -0.312500 +v 0.375000 0.500000 -0.187500 +v 0.437500 4.500000 -0.312500 +v 0.437500 4.500000 -0.187500 +v 0.437500 0.500000 -0.312500 +v 0.437500 0.500000 -0.187500 +v 0.375000 0.500000 0.312500 +v 0.375000 0.500000 0.187500 +v 0.375000 4.500000 0.312500 +v 0.375000 4.500000 0.187500 +v -0.437500 4.500000 -0.187500 +v -0.437500 4.500000 -0.312500 +v -0.437500 0.500000 -0.187500 +v -0.437500 0.500000 -0.312500 +v -0.375000 4.500000 0.312500 +v -0.375000 4.500000 0.187500 +v -0.375000 0.500000 0.312500 +v -0.375000 0.500000 0.187500 +v -0.437500 4.500000 0.312500 +v -0.437500 4.500000 0.187500 +v -0.437500 0.500000 0.312500 +v -0.437500 0.500000 0.187500 +v -0.375000 0.500000 -0.312500 +v -0.375000 0.500000 -0.187500 +v -0.375000 4.500000 -0.312500 +v -0.375000 4.500000 -0.187500 +v 0.187500 4.500000 -0.437500 +v 0.312500 4.500000 -0.437500 +v 0.187500 0.500000 -0.437500 +v 0.312500 0.500000 -0.437500 +v -0.312500 4.500000 -0.375000 +v -0.187500 4.500000 -0.375000 +v -0.312500 0.500000 -0.375000 +v -0.187500 0.500000 -0.375000 +v -0.312500 4.500000 -0.437500 +v -0.187500 4.500000 -0.437500 +v -0.312500 0.500000 -0.437500 +v -0.187500 0.500000 -0.437500 +v 0.312500 0.500000 -0.375000 +v 0.187500 0.500000 -0.375000 +v 0.312500 4.500000 -0.375000 +v 0.187500 4.500000 -0.375000 +v -0.187500 4.500000 0.437500 +v -0.312500 4.500000 0.437500 +v -0.187500 0.500000 0.437500 +v -0.312500 0.500000 0.437500 +v 0.312500 4.500000 0.375000 +v 0.187500 4.500000 0.375000 +v 0.312500 0.500000 0.375000 +v 0.187500 0.500000 0.375000 +v 0.312500 4.500000 0.437500 +v 0.187500 4.500000 0.437500 +v 0.312500 0.500000 0.437500 +v 0.187500 0.500000 0.437500 +v -0.312500 0.500000 0.375000 +v -0.187500 0.500000 0.375000 +v -0.312500 4.500000 0.375000 +v -0.187500 4.500000 0.375000 +vt 0.736842 0.150943 +vt 0.631579 0.226415 +vt 0.631579 0.150943 +vt 0.611842 0.009434 +vt 0.631579 0.000000 +vt 0.625000 0.028302 +vt 0.559211 0.141509 +vt 0.598684 0.141509 +vt 0.546053 0.141509 +vt 0.526316 0.150943 +vt 0.532895 0.122642 +vt 0.710526 0.000000 +vt 0.697368 0.075472 +vt 0.697368 0.000000 +vt 0.684211 0.075472 +vt 0.684211 0.000000 +vt 0.671053 0.075472 +vt 0.657895 0.000000 +vt 0.671053 0.000000 +vt 0.736842 0.000000 +vt 0.723684 0.075472 +vt 0.723684 0.000000 +vt 0.644737 0.000000 +vt 0.631579 0.075472 +vt 0.631579 0.000000 +vt 0.710526 0.075472 +vt 0.657895 0.075472 +vt 0.657895 0.132075 +vt 0.631579 0.113208 +vt 0.644737 0.075472 +vt 0.710526 0.000000 +vt 0.697368 0.075472 +vt 0.697368 0.000000 +vt 0.684211 0.075472 +vt 0.684211 0.000000 +vt 0.671053 0.075472 +vt 0.657895 0.000000 +vt 0.671053 0.000000 +vt 0.736842 0.000000 +vt 0.723684 0.075472 +vt 0.723684 0.000000 +vt 0.644737 0.000000 +vt 0.631579 0.075472 +vt 0.631579 0.000000 +vt 0.710526 0.075472 +vt 0.657895 0.075472 +vt 0.657895 0.132075 +vt 0.631579 0.113208 +vt 0.644737 0.075472 +vt 0.710526 0.000000 +vt 0.697368 0.075472 +vt 0.697368 0.000000 +vt 0.684211 0.075472 +vt 0.684211 0.000000 +vt 0.671053 0.075472 +vt 0.657895 0.000000 +vt 0.671053 0.000000 +vt 0.736842 0.000000 +vt 0.723684 0.075472 +vt 0.723684 0.000000 +vt 0.644737 0.000000 +vt 0.631579 0.075472 +vt 0.631579 0.000000 +vt 0.710526 0.075472 +vt 0.657895 0.075472 +vt 0.657895 0.132075 +vt 0.631579 0.113208 +vt 0.644737 0.075472 +vt 0.710526 0.000000 +vt 0.697368 0.075472 +vt 0.697368 0.000000 +vt 0.684211 0.075472 +vt 0.684211 0.000000 +vt 0.671053 0.075472 +vt 0.657895 0.000000 +vt 0.671053 0.000000 +vt 0.736842 0.000000 +vt 0.723684 0.075472 +vt 0.723684 0.000000 +vt 0.644737 0.000000 +vt 0.631579 0.075472 +vt 0.631579 0.000000 +vt 0.710526 0.075472 +vt 0.657895 0.075472 +vt 0.657895 0.132075 +vt 0.631579 0.113208 +vt 0.644737 0.075472 +vt 0.546053 0.084906 +vt 0.559211 0.066038 +vt 0.559211 0.084906 +vt 0.572368 0.103774 +vt 0.585526 0.122642 +vt 0.572368 0.122642 +vt 0.598684 0.084906 +vt 0.611842 0.066038 +vt 0.611842 0.084906 +vt 0.572368 0.028302 +vt 0.585526 0.047170 +vt 0.572368 0.047170 +vt 0.598684 0.066038 +vt 0.585526 0.103774 +vt 0.559211 0.009434 +vt 0.585526 0.028302 +vt 0.532895 0.103774 +vt 0.546053 0.066038 +vt 0.625000 0.047170 +vt 0.625000 0.103774 +vt 0.532895 0.028302 +vt 0.526316 0.000000 +vt 0.546053 0.009434 +vt 0.625000 0.122642 +vt 0.611842 0.141509 +vt 0.532895 0.047170 +vt 0.598684 0.009434 +vt 0.842105 0.150943 +vt 0.736842 0.226415 +vt 0.526316 0.226415 +vt 0.421053 0.226415 +vt 0.421053 0.150943 +vt 0.539474 0.264151 +vt 0.434211 0.264151 +vt 0.842105 0.226415 +vt 0.750000 0.264151 +vt 0.644737 0.264151 +vt 0.723684 0.264151 +vt 0.644737 0.830189 +vt 0.513158 0.264151 +vt 0.434211 0.830189 +vt 0.828947 0.264151 +vt 0.750000 0.830189 +vt 0.618421 0.264151 +vt 0.539474 0.830189 +vt 0.993421 0.603774 +vt 0.980263 0.000000 +vt 0.993421 0.000000 +vt 0.993421 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 0.980263 0.000000 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.000000 +vt 0.993421 0.000000 +vt 0.993421 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 0.980263 0.000000 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.000000 +vt 0.993421 0.000000 +vt 0.993421 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 0.980263 0.000000 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.000000 +vt 0.993421 0.000000 +vt 0.993421 0.000000 +vt 1.000000 0.603774 +vt 0.993421 0.603774 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 0.980263 0.000000 +vt 0.980263 0.603774 +vt 0.973684 0.000000 +vt 1.000000 0.603774 +vt 0.736842 0.075472 +vt 0.671053 0.094340 +vt 0.671053 0.113208 +vt 0.644737 0.132075 +vt 0.631579 0.094340 +vt 0.736842 0.075472 +vt 0.671053 0.094340 +vt 0.671053 0.113208 +vt 0.644737 0.132075 +vt 0.631579 0.094340 +vt 0.736842 0.075472 +vt 0.671053 0.094340 +vt 0.671053 0.113208 +vt 0.644737 0.132075 +vt 0.631579 0.094340 +vt 0.736842 0.075472 +vt 0.671053 0.094340 +vt 0.671053 0.113208 +vt 0.644737 0.132075 +vt 0.631579 0.094340 +vt 0.723684 0.830189 +vt 0.513158 0.830189 +vt 0.828947 0.830189 +vt 0.618421 0.830189 +vt 1.000000 0.000000 +vt 0.973684 0.603774 +vt 0.973684 0.603774 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 0.973684 0.603774 +vt 0.973684 0.603774 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 0.973684 0.603774 +vt 0.973684 0.603774 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 0.973684 0.603774 +vt 0.973684 0.603774 +vt 1.000000 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.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 0.4472 0.8944 +vn -0.8944 0.4472 0.0000 +vn 0.0000 0.4472 -0.8944 +s off +f 70/1/1 12/2/1 69/3/1 +f 54/4/2 70/5/2 55/6/2 +f 7/7/2 28/8/2 69/3/2 +f 8/9/2 71/10/2 5/11/2 +f 8/12/3 19/13/3 7/14/3 +f 7/14/4 18/15/4 6/16/4 +f 15/17/5 2/18/5 3/19/5 +f 4/20/1 17/21/1 5/22/1 +f 1/23/6 16/24/6 4/25/6 +f 5/22/7 20/26/7 8/12/7 +f 6/16/8 15/17/8 3/19/8 +f 14/27/9 1/23/9 2/18/9 +f 19/28/2 17/29/2 13/30/2 +f 28/31/3 35/32/3 27/33/3 +f 27/33/4 34/34/4 26/35/4 +f 31/36/5 22/37/5 23/38/5 +f 24/39/1 33/40/1 25/41/1 +f 21/42/6 32/43/6 24/44/6 +f 25/41/7 36/45/7 28/31/7 +f 26/35/8 31/36/8 23/38/8 +f 30/46/9 21/42/9 22/37/9 +f 35/47/2 33/48/2 29/49/2 +f 44/50/3 51/51/3 43/52/3 +f 43/52/4 50/53/4 42/54/4 +f 47/55/5 38/56/5 39/57/5 +f 40/58/1 49/59/1 41/60/1 +f 37/61/6 48/62/6 40/63/6 +f 41/60/7 52/64/7 44/50/7 +f 42/54/8 47/55/8 39/57/8 +f 46/65/9 37/61/9 38/56/9 +f 51/66/2 49/67/2 45/68/2 +f 60/69/3 67/70/3 59/71/3 +f 59/71/4 66/72/4 58/73/4 +f 63/74/5 54/75/5 55/76/5 +f 56/77/1 65/78/1 57/79/1 +f 53/80/6 64/81/6 56/82/6 +f 57/79/7 68/83/7 60/69/7 +f 58/73/8 63/74/8 55/76/8 +f 62/84/9 53/80/9 54/75/9 +f 67/85/2 65/86/2 61/87/2 +f 1/88/2 43/89/2 2/90/2 +f 3/91/2 25/92/2 6/93/2 +f 21/94/2 59/95/2 22/96/2 +f 39/97/2 57/98/2 42/99/2 +f 42/99/2 60/100/2 24/101/2 +f 38/102/2 56/103/2 39/97/2 +f 4/104/2 44/105/2 1/88/2 +f 6/93/2 28/8/2 7/7/2 +f 22/96/2 58/106/2 23/107/2 +f 40/108/2 72/109/2 37/110/2 +f 26/111/2 69/3/2 27/112/2 +f 23/107/2 58/106/2 70/5/2 +f 41/113/2 4/104/2 71/10/2 +f 53/114/2 38/102/2 72/109/2 +f 72/115/3 11/116/3 70/1/3 +f 69/3/9 10/117/9 71/10/9 +f 71/10/8 9/118/8 72/119/8 +f 12/2/10 75/120/10 10/117/10 +f 10/117/11 76/121/11 9/118/11 +f 9/122/12 74/123/12 11/116/12 +f 11/116/13 73/124/13 12/2/13 +f 74/125/1 77/126/1 73/124/1 +f 75/127/8 80/128/8 76/121/8 +f 76/129/3 78/130/3 74/123/3 +f 73/131/9 79/132/9 75/120/9 +f 81/133/9 84/134/9 83/135/9 +f 91/136/1 85/137/1 89/138/1 +f 90/139/8 88/140/8 92/141/8 +f 89/138/9 92/141/9 91/136/9 +f 82/142/8 93/143/8 84/134/8 +f 83/135/1 96/144/1 81/133/1 +f 97/145/3 100/146/3 99/147/3 +f 107/148/8 101/149/8 105/150/8 +f 106/151/1 104/152/1 108/153/1 +f 105/150/3 108/153/3 107/148/3 +f 98/154/1 109/155/1 100/146/1 +f 99/147/8 112/156/8 97/145/8 +f 113/157/1 116/158/1 115/159/1 +f 123/160/3 117/161/3 121/162/3 +f 122/163/9 120/164/9 124/165/9 +f 121/162/1 124/165/1 123/160/1 +f 114/166/9 125/167/9 116/158/9 +f 115/159/3 128/168/3 113/157/3 +f 129/169/8 132/170/8 131/171/8 +f 139/172/9 133/173/9 137/174/9 +f 138/175/3 136/176/3 140/177/3 +f 137/174/8 140/177/8 139/172/8 +f 130/178/3 141/179/3 132/170/3 +f 131/171/9 144/180/9 129/169/9 +f 70/1/1 11/116/1 12/2/1 +f 28/8/2 27/112/2 69/3/2 +f 69/3/2 71/10/2 7/7/2 +f 71/10/2 8/9/2 7/7/2 +f 8/12/3 20/26/3 19/13/3 +f 7/14/4 19/13/4 18/15/4 +f 15/17/5 14/27/5 2/18/5 +f 4/20/1 16/181/1 17/21/1 +f 1/23/6 13/30/6 16/24/6 +f 5/22/7 17/21/7 20/26/7 +f 6/16/8 18/15/8 15/17/8 +f 14/27/9 13/30/9 1/23/9 +f 13/30/2 14/27/2 15/182/2 +f 15/182/2 18/183/2 19/28/2 +f 19/28/2 20/184/2 17/29/2 +f 17/29/2 16/185/2 13/30/2 +f 13/30/2 15/182/2 19/28/2 +f 28/31/3 36/45/3 35/32/3 +f 27/33/4 35/32/4 34/34/4 +f 31/36/5 30/46/5 22/37/5 +f 24/39/1 32/186/1 33/40/1 +f 21/42/6 29/49/6 32/43/6 +f 25/41/7 33/40/7 36/45/7 +f 26/35/8 34/34/8 31/36/8 +f 30/46/9 29/49/9 21/42/9 +f 29/49/2 30/46/2 31/187/2 +f 31/187/2 34/188/2 35/47/2 +f 35/47/2 36/189/2 33/48/2 +f 33/48/2 32/190/2 29/49/2 +f 29/49/2 31/187/2 35/47/2 +f 44/50/3 52/64/3 51/51/3 +f 43/52/4 51/51/4 50/53/4 +f 47/55/5 46/65/5 38/56/5 +f 40/58/1 48/191/1 49/59/1 +f 37/61/6 45/68/6 48/62/6 +f 41/60/7 49/59/7 52/64/7 +f 42/54/8 50/53/8 47/55/8 +f 46/65/9 45/68/9 37/61/9 +f 45/68/2 46/65/2 47/192/2 +f 47/192/2 50/193/2 51/66/2 +f 51/66/2 52/194/2 49/67/2 +f 49/67/2 48/195/2 45/68/2 +f 45/68/2 47/192/2 51/66/2 +f 60/69/3 68/83/3 67/70/3 +f 59/71/4 67/70/4 66/72/4 +f 63/74/5 62/84/5 54/75/5 +f 56/77/1 64/196/1 65/78/1 +f 53/80/6 61/87/6 64/81/6 +f 57/79/7 65/78/7 68/83/7 +f 58/73/8 66/72/8 63/74/8 +f 62/84/9 61/87/9 53/80/9 +f 61/87/2 62/84/2 63/197/2 +f 63/197/2 66/198/2 67/85/2 +f 67/85/2 68/199/2 65/86/2 +f 65/86/2 64/200/2 61/87/2 +f 61/87/2 63/197/2 67/85/2 +f 1/88/2 44/105/2 43/89/2 +f 3/91/2 24/101/2 25/92/2 +f 21/94/2 60/100/2 59/95/2 +f 39/97/2 56/103/2 57/98/2 +f 24/101/2 3/91/2 2/90/2 +f 2/90/2 43/89/2 42/99/2 +f 42/99/2 57/98/2 60/100/2 +f 60/100/2 21/94/2 24/101/2 +f 24/101/2 2/90/2 42/99/2 +f 38/102/2 53/114/2 56/103/2 +f 4/104/2 41/113/2 44/105/2 +f 6/93/2 25/92/2 28/8/2 +f 22/96/2 59/95/2 58/106/2 +f 58/106/2 55/6/2 70/5/2 +f 70/5/2 69/3/2 23/107/2 +f 69/3/2 26/111/2 23/107/2 +f 4/104/2 5/11/2 71/10/2 +f 71/10/2 72/109/2 41/113/2 +f 72/109/2 40/108/2 41/113/2 +f 38/102/2 37/110/2 72/109/2 +f 72/109/2 70/5/2 53/114/2 +f 70/5/2 54/4/2 53/114/2 +f 72/115/3 9/122/3 11/116/3 +f 69/3/9 12/2/9 10/117/9 +f 71/10/8 10/117/8 9/118/8 +f 12/2/10 73/131/10 75/120/10 +f 10/117/11 75/127/11 76/121/11 +f 9/122/12 76/129/12 74/123/12 +f 11/116/13 74/125/13 73/124/13 +f 74/125/1 78/201/1 77/126/1 +f 75/127/8 79/202/8 80/128/8 +f 76/129/3 80/203/3 78/130/3 +f 73/131/9 77/204/9 79/132/9 +f 81/133/9 82/142/9 84/134/9 +f 91/136/1 87/205/1 85/137/1 +f 90/139/8 86/206/8 88/140/8 +f 89/138/9 90/139/9 92/141/9 +f 82/142/8 95/207/8 93/143/8 +f 83/135/1 94/208/1 96/144/1 +f 97/145/3 98/154/3 100/146/3 +f 107/148/8 103/209/8 101/149/8 +f 106/151/1 102/210/1 104/152/1 +f 105/150/3 106/151/3 108/153/3 +f 98/154/1 111/211/1 109/155/1 +f 99/147/8 110/212/8 112/156/8 +f 113/157/1 114/166/1 116/158/1 +f 123/160/3 119/213/3 117/161/3 +f 122/163/9 118/214/9 120/164/9 +f 121/162/1 122/163/1 124/165/1 +f 114/166/9 127/215/9 125/167/9 +f 115/159/3 126/216/3 128/168/3 +f 129/169/8 130/178/8 132/170/8 +f 139/172/9 135/217/9 133/173/9 +f 138/175/3 134/218/3 136/176/3 +f 137/174/8 138/175/8 140/177/8 +f 130/178/3 143/219/3 141/179/3 +f 131/171/9 142/220/9 144/180/9 +o Base +v -0.500000 4.500000 0.500000 +v 0.500000 4.500000 0.500000 +v -0.500000 4.500000 -0.500000 +v 0.500000 4.500000 -0.500000 +v -0.437500 8.000000 0.437500 +v 0.437500 8.000000 0.437500 +v -0.437500 8.000000 -0.437500 +v 0.437500 8.000000 -0.437500 +v -0.125000 0.000000 0.125000 +v 0.125000 0.000000 0.125000 +v -0.125000 0.000000 -0.125000 +v 0.125000 0.000000 -0.125000 +v -0.125000 4.500000 -0.125000 +v -0.125000 4.500000 0.125000 +v 0.125000 4.500000 0.125000 +v 0.125000 4.500000 -0.125000 +v -0.500000 7.750000 -0.500000 +v -0.500000 7.750000 0.500000 +v 0.500000 7.750000 0.500000 +v 0.500000 7.750000 -0.500000 +v 0.437500 7.500000 -0.437500 +v -0.437500 7.500000 -0.437500 +v 0.437500 7.500000 0.437500 +v -0.437500 7.500000 0.437500 +v -0.500000 4.750000 -0.500000 +v -0.500000 4.750000 0.500000 +v 0.500000 4.750000 0.500000 +v 0.500000 4.750000 -0.500000 +v -0.437500 5.000000 -0.437500 +v -0.437500 5.000000 0.437500 +v 0.437500 5.000000 0.437500 +v 0.437500 5.000000 -0.437500 +v -0.500000 9.000000 0.500000 +v 0.500000 9.000000 0.500000 +v -0.500000 9.000000 -0.500000 +v 0.500000 9.000000 -0.500000 +v -0.437500 8.750000 -0.437500 +v -0.437500 8.750000 0.437500 +v 0.437500 8.750000 0.437500 +v 0.437500 8.750000 -0.437500 +v -0.500000 8.000000 -0.500000 +v -0.500000 8.000000 0.500000 +v 0.500000 8.000000 0.500000 +v 0.500000 8.000000 -0.500000 +v -0.500000 8.750000 -0.500000 +v -0.500000 8.750000 0.500000 +v 0.500000 8.750000 0.500000 +v 0.500000 8.750000 -0.500000 +v -0.500000 8.125000 -0.500000 +v -0.500000 8.125000 0.500000 +v 0.500000 8.125000 0.500000 +v 0.500000 8.125000 -0.500000 +v -0.500000 8.625000 -0.500000 +v -0.500000 8.625000 0.500000 +v 0.500000 8.625000 0.500000 +v 0.500000 8.625000 -0.500000 +v 0.500000 4.750000 -0.187500 +v 0.500000 4.750000 -0.312500 +v 0.500000 7.750000 -0.187500 +v 0.500000 7.750000 -0.312500 +v 0.437500 4.750000 -0.187500 +v 0.437500 4.750000 -0.312500 +v 0.437500 7.750000 -0.187500 +v 0.437500 7.750000 -0.312500 +v 0.500000 4.750000 0.312500 +v 0.500000 4.750000 0.187500 +v 0.500000 7.750000 0.312500 +v 0.500000 7.750000 0.187500 +v 0.437500 4.750000 0.312500 +v 0.437500 4.750000 0.187500 +v 0.437500 7.750000 0.312500 +v 0.437500 7.750000 0.187500 +v -0.500000 4.750000 0.187500 +v -0.500000 4.750000 0.312500 +v -0.500000 7.750000 0.187500 +v -0.500000 7.750000 0.312500 +v -0.437500 4.750000 0.187500 +v -0.437500 4.750000 0.312500 +v -0.437500 7.750000 0.187500 +v -0.437500 7.750000 0.312500 +v -0.500000 4.750000 -0.312500 +v -0.500000 4.750000 -0.187500 +v -0.500000 7.750000 -0.312500 +v -0.500000 7.750000 -0.187500 +v -0.437500 4.750000 -0.312500 +v -0.437500 4.750000 -0.187500 +v -0.437500 7.750000 -0.312500 +v -0.437500 7.750000 -0.187500 +v -0.187500 4.750000 -0.500000 +v -0.312500 4.750000 -0.500000 +v -0.187500 7.750000 -0.500000 +v -0.312500 7.750000 -0.500000 +v -0.187500 4.750000 -0.437500 +v -0.312500 4.750000 -0.437500 +v -0.187500 7.750000 -0.437500 +v -0.312500 7.750000 -0.437500 +v 0.312500 4.750000 -0.500000 +v 0.187500 4.750000 -0.500000 +v 0.312500 7.750000 -0.500000 +v 0.187500 7.750000 -0.500000 +v 0.312500 4.750000 -0.437500 +v 0.187500 4.750000 -0.437500 +v 0.312500 7.750000 -0.437500 +v 0.187500 7.750000 -0.437500 +v 0.187500 4.750000 0.500000 +v 0.312500 4.750000 0.500000 +v 0.187500 7.750000 0.500000 +v 0.312500 7.750000 0.500000 +v 0.187500 4.750000 0.437500 +v 0.312500 4.750000 0.437500 +v 0.187500 7.750000 0.437500 +v 0.312500 7.750000 0.437500 +v -0.312500 4.750000 0.500000 +v -0.187500 4.750000 0.500000 +v -0.312500 7.750000 0.500000 +v -0.187500 7.750000 0.500000 +v -0.312500 4.750000 0.437500 +v -0.187500 4.750000 0.437500 +v -0.312500 7.750000 0.437500 +v -0.187500 7.750000 0.437500 +vt 0.210526 -0.000000 +vt 0.105263 0.150943 +vt 0.105263 0.000000 +vt 0.315789 0.707547 +vt 0.217105 0.688679 +vt 0.309211 0.688679 +vt 0.105263 0.679245 +vt 0.210526 0.641509 +vt 0.210526 0.679245 +vt -0.000000 0.641509 +vt 0.098684 0.603774 +vt 0.105263 0.641509 +vt 0.315789 0.679245 +vt 0.421053 0.641509 +vt 0.421053 0.679245 +vt -0.000000 0.679245 +vt 0.894737 0.000000 +vt 0.868421 0.037736 +vt 0.868421 0.000000 +vt 0.842105 0.716981 +vt 0.842105 0.037736 +vt 0.894737 0.037736 +vt 0.868421 0.716981 +vt 0.947368 0.037736 +vt 0.921053 0.716981 +vt 0.921053 0.037736 +vt 0.894737 0.716981 +vt 0.315789 0.641509 +vt 0.309211 0.603774 +vt 0.414474 0.603774 +vt 0.203947 0.603774 +vt 0.105263 0.188679 +vt 0.006579 0.226415 +vt 0.000000 0.188679 +vt 0.315789 0.150943 +vt 0.210526 0.188679 +vt 0.210526 0.150943 +vt 0.000000 0.150943 +vt 0.421053 0.150943 +vt 0.315789 0.188679 +vt 0.111842 0.226415 +vt 0.421053 0.188679 +vt 0.322368 0.226415 +vt 0.217105 0.226415 +vt 0.322368 0.603774 +vt 0.414474 0.226415 +vt 0.217105 0.603774 +vt 0.309211 0.226415 +vt 0.111842 0.603774 +vt 0.203947 0.226415 +vt 0.006579 0.603774 +vt 0.098684 0.226415 +vt 0.105263 0.849057 +vt 0.210526 1.000000 +vt 0.105263 1.000000 +vt 0.421053 0.707547 +vt 0.322368 0.688679 +vt 0.414474 0.688679 +vt 0.210526 0.849057 +vt 0.315789 0.811321 +vt 0.315789 0.849057 +vt -0.000000 0.849057 +vt 0.105263 0.811321 +vt 0.210526 0.811321 +vt 0.421053 0.811321 +vt 0.421053 0.849057 +vt 0.006579 0.688679 +vt 0.098684 0.688679 +vt 0.111842 0.688679 +vt 0.203947 0.688679 +vt 0.414474 0.801887 +vt 0.322368 0.801887 +vt 0.098684 0.801887 +vt -0.000000 0.811321 +vt 0.006579 0.801887 +vt 0.203947 0.801887 +vt 0.111842 0.801887 +vt 0.309211 0.801887 +vt 0.217105 0.801887 +vt 0.210526 0.707547 +vt 0.105263 0.707547 +vt 0.421053 0.783019 +vt 0.105263 0.783019 +vt 0.210526 0.783019 +vt 0.315789 0.783019 +vt 0.000000 0.707547 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.967105 0.452830 +vt 0.953947 0.000000 +vt 0.967105 0.000000 +vt 0.953947 0.452830 +vt 0.947368 0.000000 +vt 0.973684 0.452830 +vt 0.947368 0.716981 +vt 0.000000 0.783019 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vt 0.947368 0.452830 +vt 0.973684 0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.2425 0.9701 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.2425 -0.9701 +vn -0.9701 -0.2425 0.0000 +vn 0.9701 -0.2425 0.0000 +vn 0.0000 0.2425 0.9701 +vn 0.9701 0.2425 0.0000 +vn -0.9701 0.2425 0.0000 +vn 0.0000 0.2425 -0.9701 +vn 0.0000 1.0000 0.0000 +vn -0.8944 -0.4472 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.0000 -0.4472 0.8944 +vn -0.8944 0.4472 0.0000 +vn 0.0000 0.4472 0.8944 +vn 0.8944 0.4472 0.0000 +vn 0.0000 0.4472 -0.8944 +s off +f 147/221/14 146/222/14 145/223/14 +f 193/224/15 152/225/15 151/226/15 +f 187/227/16 164/228/16 188/229/16 +f 162/230/17 167/231/17 163/232/17 +f 185/233/18 162/234/18 186/235/18 +f 186/236/19 163/232/19 187/227/19 +f 155/237/14 154/238/14 153/239/14 +f 154/238/19 158/240/19 153/241/19 +f 156/242/16 159/243/16 154/238/16 +f 153/244/18 157/245/18 155/246/18 +f 155/246/20 160/247/20 156/242/20 +f 188/229/20 161/248/20 185/233/20 +f 164/228/21 166/249/21 161/248/21 +f 161/248/22 168/250/22 162/234/22 +f 163/232/23 165/251/23 164/228/23 +f 171/252/24 174/253/24 170/254/24 +f 147/255/20 172/256/20 148/257/20 +f 146/222/19 170/254/19 145/258/19 +f 148/257/16 171/252/16 146/222/16 +f 145/259/18 169/260/18 147/255/18 +f 172/256/25 175/261/25 171/252/25 +f 170/262/26 173/263/26 169/260/26 +f 169/260/27 176/264/27 172/256/27 +f 166/265/18 174/266/18 168/250/18 +f 165/267/20 173/268/20 166/249/20 +f 167/269/16 176/270/16 165/251/16 +f 168/271/19 175/272/19 167/231/19 +f 178/273/28 179/274/28 177/275/28 +f 194/276/29 151/277/29 149/278/29 +f 180/279/20 189/280/20 179/281/20 +f 177/282/19 191/283/19 178/273/19 +f 178/273/16 192/284/16 180/279/16 +f 179/281/18 190/285/18 177/286/18 +f 151/277/28 186/235/28 149/278/28 +f 149/287/28 187/227/28 150/288/28 +f 150/289/28 188/229/28 152/290/28 +f 152/225/28 185/233/28 151/226/28 +f 182/291/14 189/280/14 181/292/14 +f 183/293/14 190/294/14 182/295/14 +f 184/296/14 191/283/14 183/297/14 +f 181/298/14 192/284/14 184/299/14 +f 196/300/30 150/289/30 152/290/30 +f 195/301/31 149/287/31 150/288/31 +f 181/292/32 198/302/32 182/291/32 +f 182/295/33 199/303/33 183/293/33 +f 183/297/34 200/304/34 184/296/34 +f 184/299/35 197/305/35 181/298/35 +f 198/302/18 193/224/18 194/276/18 +f 199/303/19 194/306/19 195/301/19 +f 200/304/16 195/301/16 196/300/16 +f 197/305/20 196/300/20 193/224/20 +f 204/307/16 201/308/16 202/309/16 +f 203/310/19 205/311/19 201/308/19 +f 202/309/20 208/312/20 204/307/20 +f 212/313/16 209/314/16 210/315/16 +f 211/316/19 213/317/19 209/314/19 +f 210/315/20 216/318/20 212/313/20 +f 220/319/18 217/320/18 218/321/18 +f 219/322/20 221/323/20 217/320/20 +f 218/321/19 224/324/19 220/319/19 +f 228/325/18 225/326/18 226/327/18 +f 227/328/20 229/329/20 225/326/20 +f 226/327/19 232/330/19 228/325/19 +f 236/331/20 233/332/20 234/333/20 +f 235/334/16 237/335/16 233/332/16 +f 234/333/18 240/336/18 236/331/18 +f 244/337/20 241/338/20 242/339/20 +f 243/340/16 245/341/16 241/338/16 +f 242/339/18 248/342/18 244/337/18 +f 252/343/19 249/344/19 250/345/19 +f 251/346/18 253/347/18 249/344/18 +f 250/345/16 256/348/16 252/343/16 +f 260/349/19 257/350/19 258/351/19 +f 259/352/18 261/353/18 257/350/18 +f 258/351/16 264/354/16 260/349/16 +f 147/221/14 148/257/14 146/222/14 +f 193/224/15 196/300/15 152/225/15 +f 187/227/16 163/232/16 164/228/16 +f 162/230/17 168/271/17 167/231/17 +f 185/233/18 161/248/18 162/234/18 +f 186/236/19 162/230/19 163/232/19 +f 155/237/14 156/242/14 154/238/14 +f 154/238/19 159/243/19 158/240/19 +f 156/242/16 160/247/16 159/243/16 +f 153/244/18 158/355/18 157/245/18 +f 155/246/20 157/245/20 160/247/20 +f 188/229/20 164/228/20 161/248/20 +f 164/228/21 165/267/21 166/249/21 +f 161/248/22 166/265/22 168/250/22 +f 163/232/23 167/269/23 165/251/23 +f 171/252/24 175/272/24 174/253/24 +f 147/255/20 169/260/20 172/256/20 +f 146/222/19 171/252/19 170/254/19 +f 148/257/16 172/256/16 171/252/16 +f 145/259/18 170/262/18 169/260/18 +f 172/256/25 176/270/25 175/261/25 +f 170/262/26 174/266/26 173/263/26 +f 169/260/27 173/268/27 176/264/27 +f 166/265/18 173/263/18 174/266/18 +f 165/267/20 176/264/20 173/268/20 +f 167/269/16 175/261/16 176/270/16 +f 168/271/19 174/253/19 175/272/19 +f 178/273/28 180/279/28 179/274/28 +f 194/276/29 193/224/29 151/277/29 +f 180/279/20 192/284/20 189/280/20 +f 177/282/19 190/294/19 191/283/19 +f 178/273/16 191/283/16 192/284/16 +f 179/281/18 189/280/18 190/285/18 +f 151/277/28 185/233/28 186/235/28 +f 149/287/28 186/236/28 187/227/28 +f 150/289/28 187/227/28 188/229/28 +f 152/225/28 188/229/28 185/233/28 +f 182/291/14 190/285/14 189/280/14 +f 183/293/14 191/283/14 190/294/14 +f 184/296/14 192/284/14 191/283/14 +f 181/298/14 189/280/14 192/284/14 +f 196/300/30 195/301/30 150/289/30 +f 195/301/31 194/306/31 149/287/31 +f 181/292/32 197/305/32 198/302/32 +f 182/295/33 198/356/33 199/303/33 +f 183/297/34 199/303/34 200/304/34 +f 184/299/35 200/304/35 197/305/35 +f 198/302/18 197/305/18 193/224/18 +f 199/303/19 198/356/19 194/306/19 +f 200/304/16 199/303/16 195/301/16 +f 197/305/20 200/304/20 196/300/20 +f 204/307/16 203/310/16 201/308/16 +f 203/310/19 207/357/19 205/311/19 +f 202/309/20 206/358/20 208/312/20 +f 212/313/16 211/316/16 209/314/16 +f 211/316/19 215/359/19 213/317/19 +f 210/315/20 214/360/20 216/318/20 +f 220/319/18 219/322/18 217/320/18 +f 219/322/20 223/361/20 221/323/20 +f 218/321/19 222/362/19 224/324/19 +f 228/325/18 227/328/18 225/326/18 +f 227/328/20 231/363/20 229/329/20 +f 226/327/19 230/364/19 232/330/19 +f 236/331/20 235/334/20 233/332/20 +f 235/334/16 239/365/16 237/335/16 +f 234/333/18 238/366/18 240/336/18 +f 244/337/20 243/340/20 241/338/20 +f 243/340/16 247/367/16 245/341/16 +f 242/339/18 246/368/18 248/342/18 +f 252/343/19 251/346/19 249/344/19 +f 251/346/18 255/369/18 253/347/18 +f 250/345/16 254/370/16 256/348/16 +f 260/349/19 259/352/19 257/350/19 +f 259/352/18 263/371/18 261/353/18 +f 258/351/16 262/372/16 264/354/16 diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk_autoloader.png b/src/main/resources/assets/hbm/textures/blocks/rbmk_autoloader.png new file mode 100644 index 0000000000000000000000000000000000000000..84c7faeb761786a0c31b907c3e49d94e8f23c7e1 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#%`9@aupR3lsx5Dm1^`|MWVNNwP+ON%Gdhoyv7fw=gwtO!-;z{Img&{vS?3 zM`nh{7GkU_ib~647PH4zpLThx=e1LS$wOXRLr}8h`=gy53+{iP$jI=eKRrzA<=aO_ z{(|!*87lok*%4Y>+s-(|+m`)PZ%&<;6Y}f!oo#jI7tXk6v~1SO>DhWl<>B7- h(lW-^3y$q&yuYPJaNoq>2%!HMJYD@<);T3K0RWAEZ%_aL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/gui_arc.png b/src/main/resources/assets/hbm/textures/gui/gui_arc.png deleted file mode 100644 index b78524b439a4d95387f2c648710bcb3f0c1f1ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3054 zcmc&$do+~m8h>ZZVT`t0Qtpb}vJ+dHBqX=lF*XK~TPaF%%eV}4QM*LrHf~8#VQUy9 zMUC6El}MAqP$bGNgWL_naK6?)YwdIPT4(J)&L8Jp>s#-)*7H8U_4_@~`+L4G@fWPk z4=8yQ0N@9Vt)&wHFz6KqkiyXB8Ghd%+7K5lFgPT%;*h7W0U%b4u{?r{zBN6-4p!)u zYndB=opv<+QQ(P+E_Gzub8OnNvp-hC5y^Vy6Zf>J%(@6E79|q)u%}e`q3F=wa9B@G zj_)W+TE_aeZTjhEBei!L?9|mM3k|h{{9Oq$0b}cA%E`VepW8^1O8&usvA18{5-D-} zs+G+hw=||>Xm2-LMf|9b^boFYZW-2vI|q5A%nHw57dlS9v4Rtr&@&NX-1qTgca9I~ z+=V-tmJ4bDJv}{-o;FkCeqfaYI=IZC6%CjVrHz&|VLfPcT zv&|!snckbpGmUG(vcmv7{pR)|{#12G#LTA#OB&s^Ea{%@0aF3aQKoeUk26R&+1lo! zx-}tb_;~o?7bzv)XBP$J&5}Vq&u*di$~XxGV5gcuDX}xliKLii9ICD~M=hp8PxD)= ziz6Ubwo~r!h!y>h}0_3k zqRT+(m!gWd>)3^DHfP)nvOB;ncL{Lg*Jp=fK47}zn8nNqZcBMn;N6e!zL*71IzU|Z zGWC|m^T_W!=biFJN7SWY`zB$4-r(^(((Yb(o8#N_?FhZyn9(A$b-&Rf&D@7$c6Vr^ zqgvTj>+%#}es^WVyE)_>f?6|)Rnea zAKKi=q3Uxr&j_M<6~=EaG4B?t8vQI?R|!J`8S9dM=Z@5o=redc_OA3n&cb|Q{;Sc4 z%)8yFpSdqwR>Rz@6nAHbAf$m7qND8oyA`Xfr_4S*pZiLyItn&*dO}Ziv{Tfq!WTPv z98vf`63Z<2=74Htkmg#_l|CL5_}HVA!!6|m8YDr23w>(&(sCTN2EusMqqX%_s*PzZ z0)&SUiC&YFlibKU8qFbQDLZ;!mR23 zT4!>6aq(`iCemU2?XVHzI{HIjU*G%Md9S+2>F47pG_iII_oFP#60 zVUu?LiUh^Knx35e!()$fA$F6Gj1{UmbY*gNHO8gP<#6<@Zz)Vw3Qk|ma!*z5MX3PD zzm75!Ey)Uy+ZwzbQifacUUGh!>WN>_*~4gqmR257FxxD_jF{-mO-`4zJ((#-;j|MI zAZC_pru>Ny)d8sHU$TC-%8!~=!PfS>?6^8l^kMruht$ut61*t{79m!t84cRZ=2OS`b~1@ z*$sVagD^`x{xk+k>W^!jQF*_SS5V+4V>NFQf?g`H8a`&Y`96h-@D-cIF_55Rq5G^M zuH2OqT$^D3DY$mGz?j1$ZnBi(1GWhpl2K~`z);W%afG^@KThWaLL*eEPWVC7=REe9 z`_Otc>2sLYKV4etFbiTwL7kR}i7}X{p5b)_x!>mVm8C*v4|F zo|L>w;o}QTiKPbyoJe}FWf#9g>AW!&YP`v9e;#gI&LDC z*4YXR#T6FdkwGCL?O}>P>gwJfoH-v5V1uD)ZD~$VS$O54M7?(Oh%;ut(EGuujN{s7 zaGveB0V^_a1&THMjp)-4Ga$%G0dKH(dAUX> zE6M1?08q$>&KvKWAb2{=2)lm|mlhY0jNj_wp zizh_16(dDivP1Mye}&oc0-w z^0fT2=*jJ>S#}~U2Qxttp`ijA7C}aSRPXv|eW&U(<>DIGyeK#W1t6hf3XyfDsYAfD z<(uUL!KvLr?q!!nk1e40UB41;EfBN0z_TCLxPwmFcJ=dYO)vh9~@@m=`T7!Z%gZyyI)6nrZN|?@uSe|B%r)N0@f)6@YRQd z2RmTkI28b0YXD@`0JtvoXSm9*KvIh^7vlPV zfcO&7QrC=gE1MI|yP&7LElvrGxT)OppDO)&eB@&|}rN0lZV=Kegy4C|D|e*)-mNG|{Y diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_autoloader.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_autoloader.png new file mode 100644 index 0000000000000000000000000000000000000000..05618d9481f09ec201d8cf826e54661ecd3c03f8 GIT binary patch literal 1736 zcmb_ddoqvWFD;QN3^V1CMyqJD7HM1AH5`v=W*DztMiHThH&LU; zGd5+HvC-I8(@$6orebQwv!zkOnAx#)I{T>8Kl}aTe!u5@@4es8x!=$Cb5r-?T$Poy zl>h+B?rvCb0ASJ(1{CC_&OfT+JE@b4c5&aYAT_GOw=@9c6Wy`S`^g2<+?w$92iG8; z@=Q(5@&0!zA2gKs;15;^SD(LY3V#LjXj@eOOxf&gj>m5H#d}J&czl)3Dg#naSXS%~ zNwt8gS2@aKOcp#DzVm9>^GeYTK7{!uyA+Y>UU zn!wrt$DBH<5L@7A>5|2nD{+EYKJEda>g*3npIx4}zH8 zlZ0t*A>zP9fzZ9rW$c?)amb6{s@7fGRT_;~V3%C+6;zCg-nLi&l2%OOp{$jso%{>jpm z%!lPH$k)io$Z=C_9p2nvVmaaFi6*4Kj-DRrOVxoc(K6>q7NgG<#_SeJWdK+-F*(7} z8S#g*YYp>LD{pv6>h(5fyPs4&dhcwPXexJda#F#p&)0L*8BitS_}h+HEYjh_^ofAnERIB{@a`WsYC$Mx1J9lA_ohs8UftpOZ!Noa>N z)>BFXVthOyYC|qtDd?qmdC3_eLmU8M9c_x0@>=j-`ohYm^1oO~T_S9~^67PkEZdBg O3*C3(u+=U>$NvP_-_mCQ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/rbmk_autoloader.png b/src/main/resources/assets/hbm/textures/models/machines/rbmk_autoloader.png new file mode 100644 index 0000000000000000000000000000000000000000..f15f922bd5ded58c99a8b6ac95367cd53f120b8f GIT binary patch literal 1576 zcmaKseK^x=7{}M4QD|K_nU_LS>{J`&Exjn2GB2Z;Hf$>WPz|xB?Ihw5LwU=Fs8&>J zCZxhhNK55ZSZG#xtJYH3CNn#~{y5k9UKcDOVl@Fs zEO7~aJkEXz`_XYrr6|CLiZqJ0dmERfUbLaSiOQS~D$GxM=*4m?a=YhSM*J8VlasFb zYIRy~)K@>PiJP_a;lZzzeW&FLjVpPhmkK%JZHd$CI~@W>m8U}*9GRYM`$n2&{niGEtW*i+Xgs zE9YjCUb|-9g=##`DQMs;ZXQoG#5mW}!%8mW;z)=w3T_f1+8=R#$Ty;Q;?7_gBzE>g z1 zQ9cpqvIjF``9Hkyw3*);PXTb%3tdEi^T;nnChM7;QKv@)L?4HDRdztCU(7d5Kj8e* zZ?L~zJHbhKtVYjLe~ON@dd^7w? zO0E@iI?RfhP@iuTGw*%qf!S5G|IZA-R=-o%gTrpyQz)EN9Gxp}#MF7q2V8^_L3u)q zxZ^osz+$odu*K%hvh8niT%GpiTY3~mE*TP8IPPnKs1k;=iAw=Fx5Sx#IcuI&vVY-o zR*#PKjf_!?xYtJFGXkT!z!|K3peO$jI~6l*r1E(VdZ|BYjI-VCQuA#7VKCeT&pZf4 z_&@vG^j|ZeY^??9{^k5{*?*gGbxsf@@-7jc;{j?P@1{_4Ln!%^C!x9=Zx!>nyZBZ> zO}?_HWmv{QK8EVF*Svzg+sj`Nl0BM4=YqNTfvF2O(4oy1hf<|m#k?7<_|Ph{T>Obl zkc_?W5*n7LiX%vW6}_#|TV6S2KGaoTH26+tFhi`Cz! zTaNQ5l?K*Nz~AO?b9Nt@(15&?DI-q)h%Y;G@PZgLi9aTb93{N+1WSu`9g_LZ|m<$ z03d~@62cf64qG-H7%Xowr(Dp5Y8+J_OeN%ledxBCx#+{rX2b#97&MC$N%_jOK_sG! oPUkvIqL#dt2b#6noBGJn&`JFM;d7eb!PO7(#Q3^byM?9v1sK8(N&o-= literal 0 HcmV?d00001