From 9ad76d3bccb202d4db8a9078212574e8a0e2c2b8 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Sat, 2 Dec 2023 09:24:46 -0500 Subject: [PATCH 01/16] core strand caster stuffs --- .../blocks/machine/MachineStrandCaster.java | 189 +++++++++++++++++ .../container/ContainerStrandCaster.java | 74 +++++++ .../hbm/inventory/gui/GUIStrandCaster.java | 102 +++++++++ .../hbm/tileentity/TileEntityProxyCombo.java | 6 +- .../machine/TileEntityFoundryCastingBase.java | 3 +- .../TileEntityMachineStrandCaster.java | 195 ++++++++++++++++++ .../gui/processing/gui_strand_caster.png | Bin 0 -> 16344 bytes 7 files changed, 567 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java new file mode 100644 index 000000000..7d45b7911 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -0,0 +1,189 @@ +package com.hbm.blocks.machine; + +import api.hbm.block.ICrucibleAcceptor; +import api.hbm.block.IToolable; +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.material.Mats; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMold; +import com.hbm.items.machine.ItemScraps; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityCrucible; +import com.hbm.tileentity.machine.TileEntityFoundryCastingBase; +import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; +import com.hbm.util.I18nUtil; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcceptor, ILookOverlay { + + public MachineStrandCaster() { + super(Material.iron); + } + //reminder, if the machine is a solid brick, get dimensions will already handle it without the need to use fillSapce + //the order is up, down, forward, backward, left, right + //x is for left(-)/right(+), z is for forward(+)/backward(-), y you already know + @Override + public int[] getDimensions() {return new int[]{0, 0, 6, 0, 1, 0};} + + @Override + public int getOffset() { + return 0; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityMachineStrandCaster(); + if(meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal(); + return null; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[]{1, 0, 1, 0, 1, 0}, this, dir); + + this.makeExtra(world, x - dir.offsetX, y, z); + this.makeExtra(world, x, y, z + dir.offsetX * 5); + this.makeExtra(world, x- dir.offsetX, y, z + dir.offsetX * 5); + } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { + + TileEntity poured = world.getTileEntity(x, y, z); + if(!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo)poured).moltenMetal)) return false; + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof TileEntityMachineStrandCaster)) return false; + TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile; + + return caster.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); + } + + @Override + public Mats.MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { + + TileEntity poured = world.getTileEntity(x, y, z); + if(!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo)poured).moltenMetal)) return stack; + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return stack; + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof TileEntityMachineStrandCaster)) return stack; + TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile; + + return caster.pour(world, x, y, z, dX, dY, dZ, side, stack); + } + + @Override + public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { + return false; + } + + @Override + public Mats.MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { + return null; + } + ///entirety of foundry base code here, because dual inheritance is evil apparently + + @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; + } + + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + + //insert mold + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) { + cast.slots[0] = player.getHeldItem().copy(); + cast.slots[0].stackSize = 1; + player.getHeldItem().stackSize--; + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); + cast.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + + } + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool && player.getHeldItem().getItem().getToolClasses(player.getHeldItem()).contains("shovel")) { + if(cast.amount > 0) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount)); + if(!player.inventory.addItemStackToInventory(scrap)) { + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap); + world.spawnEntityInWorld(item); + } else { + player.inventoryContainer.detectAndSendChanges(); + } + cast.amount = 0; + cast.type = null; + cast.markDirty(); + world.markBlockForUpdate(x, y, z); + } + return true; + } + + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int i) { + + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + if(cast.amount > 0) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount)); + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap); + world.spawnEntityInWorld(item); + cast.amount = 0; //just for safety + } + + for(ItemStack stack : cast.slots) { + if(stack != null) { + EntityItem drop = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, stack.copy()); + world.spawnEntityInWorld(drop); + } + } + + super.breakBlock(world, x, y, z, b, i); + } + + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + List text = new ArrayList(); + + if(cast.slots[0] == null) { + text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast")); + } else if(cast.slots[0].getItem() == ModItems.mold){ + ItemMold.Mold mold = ((ItemMold) cast.slots[0].getItem()).getMold(cast.slots[0]); + text.add(EnumChatFormatting.BLUE + mold.getTitle()); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text); + } +} + diff --git a/src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java b/src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java new file mode 100644 index 000000000..f87f592d0 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java @@ -0,0 +1,74 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotNonRetarded; +import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; +import com.hbm.util.InventoryUtil; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerStrandCaster extends Container { + + protected TileEntityMachineStrandCaster caster; + + public ContainerStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { + this.caster = caster; + + //the wretched mold + this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62)); + + //input + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 2; j++) { + this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 3 + 1, 125 + j * 18, 26 + i * 18)); + } + } + + 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, 132 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 190)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); + + if(index <= 6) { + if(!this.mergeItemStack(originalStack, 10, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 10, false)) { + return null; + } + + if(originalStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return caster.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java b/src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java new file mode 100644 index 000000000..9d31e4b1f --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java @@ -0,0 +1,102 @@ +package com.hbm.inventory.gui; + +import com.hbm.inventory.container.ContainerStrandCaster; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; +import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; +import com.hbm.util.I18nUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class GUIStrandCaster extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); + private TileEntityMachineStrandCaster caster; + + public GUIStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { + super(new ContainerStrandCaster(invPlayer, tedf)); + caster = tedf; + + this.xSize = 176; + this.ySize = 214; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + drawStackInfo(x, y, 16, 17); + + caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 38, 16, 24); + caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 89, 16, 24); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.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); + } + + @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); + + caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); + caster.steam.renderTank(guiLeft + 82, guiTop + 89, this.zLevel, 16, 24); + + if (caster.amount != 0) { + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + int targetHeight = (caster.amount) * 79 / caster.getCapacity(); + int offset = caster.type.smeltable == SmeltingBehavior.ADDITIVE ? 34 : 0; //additives use a differnt texture + + int hex = caster.type.moltenColor; + //hex = 0xC18336; + Color color = new Color(hex); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 17, guiTop + 92 - targetHeight, 176 + offset, 89 - targetHeight, 34, targetHeight); + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor4f(1F, 1F, 1F, 0.3F); + drawTexturedModalRect(guiLeft + 17, guiTop + 92 - targetHeight, 176 + offset, 89 - targetHeight, 34, targetHeight); + GL11.glDisable(GL11.GL_BLEND); + } + + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor3f(255, 255, 255); + } + + + + protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { + + List list = new ArrayList(); + + if(caster.type == null) list.add(EnumChatFormatting.RED + "Empty"); + else list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); + } + + + + +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index eb4a603e0..593a33505 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -23,6 +23,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy boolean power; boolean fluid; boolean heat; + public boolean moltenMetal; public TileEntityProxyCombo() { } @@ -41,7 +42,10 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy this.power = true; return this; } - + public TileEntityProxyCombo moltenMetal() { + this.moltenMetal = true; + return this; + } public TileEntityProxyCombo fluid() { this.fluid = true; return this; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java index bf2e63a95..fd3916492 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java @@ -22,7 +22,8 @@ public abstract class TileEntityFoundryCastingBase extends TileEntityFoundryBase public ItemStack slots[] = new ItemStack[2]; public int cooloff = 100; - + + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java new file mode 100644 index 000000000..cf09975e3 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -0,0 +1,195 @@ +package com.hbm.tileentity.machine; + +import api.hbm.block.ICrucibleAcceptor; +import api.hbm.fluid.IFluidStandardTransceiver; +import com.hbm.blocks.BlockDummyable; +import com.hbm.inventory.container.ContainerAssemfac; +import com.hbm.inventory.container.ContainerStrandCaster; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIAssemfac; +import com.hbm.inventory.gui.GUIStrandCaster; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMold; +import com.hbm.packet.NBTPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.util.fauxpointtwelve.DirPos; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +//god thank you bob for this base class +public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor,ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver { + public FluidTank water; + public FluidTank steam; + + public ItemStack[] slots = new ItemStack[6]; + + public TileEntityMachineStrandCaster() { + + water = new FluidTank(Fluids.WATER, 64_000); + steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); + } + int cooldown = 10; + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote) { + + if(this.amount > this.getCapacity()) { + this.amount = this.getCapacity(); + } + + if(this.amount == 0) { + this.type = null; + } + + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.updateConnections(); + } + + for(DirPos pos : getConPos()) { + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + ItemMold.Mold mold = this.getInstalledMold(); + + if(mold != null && this.amount >= this.getCapacity() && slots[1] == null && water.getFill() >= getWaterRequired() ) { + cooldown--; + + if(cooldown <= 0) { + this.amount -= mold.getCost(); + + ItemStack out = mold.getOutput(type); + + for(int i = 1; i < 7; i++) { + if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + continue; + } + + if(slots[i] == null) { + slots[i] = out.copy(); + } else { + slots[i].stackSize += out.stackSize; + } + } + } + + water.setFill(water.getFill() - getWaterRequired()); + steam.setFill(steam.getFill() + getWaterRequired()); + + cooldown = 20; + } + NBTTagCompound data = new NBTTagCompound(); + + water.writeToNBT(data, "w"); + steam.writeToNBT(data, "s"); + + this.networkPack(data, 150); + + } else { + cooldown = 20; + } + } + + + public DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord - dir.offsetX, yCoord, zCoord, rot), + new DirPos(xCoord, yCoord, zCoord + dir.offsetX, rot), + new DirPos(xCoord, yCoord, zCoord + dir.offsetX * 5, rot.getOpposite()), + new DirPos(xCoord- dir.offsetX, yCoord, zCoord + dir.offsetX * 5, rot.getOpposite()), + }; + } + @Override + public int getMoldSize() { + return getInstalledMold().size; + } + + @Override + public int getCapacity() { + ItemMold.Mold mold = this.getInstalledMold(); + return mold == null ? 0 : mold.getCost() * 10; + } + private int getWaterRequired() { + return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 10; + } + private void updateConnections() { + for(DirPos pos : getConPos()) { + this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] { steam }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { water }; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] { water, steam }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerStrandCaster(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIStrandCaster(player.inventory, this); + } + public void networkPack(NBTTagCompound nbt, int range) { + + if(!worldObj.isRemote) + PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Override + public void networkUnpack(NBTTagCompound nbt) { + water.readFromNBT(nbt, "w"); + steam.readFromNBT(nbt, "s"); + } + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + + if(i == 0) { + return stack.getItem() == ModItems.mold; + } + + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 1, 2, 3, 4, 5, 6}; + } + +} diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3253374240386f1091cfcace39043063e5c338 GIT binary patch literal 16344 zcmc(GWmr^yyY3o?k{T2csTsgT>F$=06i|_t?rs*(DBnK4rGp*w<2&`q*WdWcxhV1M$A^!Thi}EXX0HFMN^#iK;Xuk~r(vB($ zvbsLT+v(SnjFdcA3yzIc?QK;Oe)J`9Fq-oSePEW~Q*5zN4zswg#&>@%Nu~*j0>Bsd zEtI1*aS9M2EU&f2F3j zdTkU%pPI&V`20_<`Il)!$>Pb1V~Uh+-JaQ&N`^}GlCJSGS$EKy^F?%F#FJnlpj#_r zmQH?S6LyKTh20i1M~8Y+L?xli_(rshY&U!vg1@6lQ;GV?$&+&@?fj?p;$~mI%x~zS zi@*FMY%-8<&ric2`R&KcjW=`HtmIF-IZe48TeD4^@K-mN3SxJ)NgpNtR^c!H{PTd4 z++z4qPJUY2C$MPpr=TcLPb*WKu3T{ZOKizm_f8pdpG#mY$tL6@O#61P@hZ&*= zn8aSkTwdhNY*m1gUMn~OO(#Q;l!RQr^26ms^|ASqbGZlEmeK~s=Cc(g9ZZr_iCAs_ zFeTL4B*WwJS1-(+^t2pDiuDF(T_4UFItkJ{31eD8Ph>b`(Jifg94{gbf06h z^S>)EPk%2jj?XK8nIT@aO1ql)kuy~k694Stw7eb^u>s~`9xmRb9Vzto`5ox%*a*)3 z(ty%UNKEaReCiK>V+c#XJrICp35|LnGV$2tY_O!KAV3!Dx=CJG#`iv1$%1VDVy?Cm z$~0L&^(m((d+vqRsRPAlDdsuB^ID$Pb;OwL@^h)ov(HBw{!D*}vu?@oDf|fNAm01R zDULeCe9wmII@#q=E7;GmkG|PF9m;FV26L)YSoM~USoM9u>I^?OUdD7^E*33XdCFT_ zzz}#iP}PE3hymjX|3O3H=Hav*#){P}<0fTP?at?CBeviB)IZp%ug)XaVf31-BH_{9 zc6gCDpi?zGQw5`*PXdN4?RLP%_s6JSf6A1xfr1K+)WsS23Yt)TWos~^;>gp=BVag9 z<$0>GAh8B>)A-L)*AZPEOPpednz?$8D6er2Uf?e;uyHe`9EeZud?eA#;#M1*o3&O% zL_{d02WLk|2kJfTW0Znlw4AeZF+B`cJ#~h~^wGXFd|e!J7wzciXf;-3WTnlK?2B2U z50gH{;ZXDQS+B~iqHLX-jEtPgta`P-e>67Ea2Pj?Lr;-&WtJcE^YcsB zdlR{<$Li|p97KhuT|y-D3=@gbv4JZndVW4WvpH%Qx_OVRS?eG<^oF4OhJWV8xBNJ| z)2@v4b=9AGJN>iQF*w5KEAK-wY6d1eAd3LA;iLVY-k!drjA!oWXLh0q5G0h%EvXN! z`LYtPM~+&~{k)s$im&CO%NY^ky>-?V7g;pRCL(T6jrTtJTJ%E8B6MF@R8{4&5DidL zyc=Cgj(K|Ln&?n2868)}94LEzcek2>*~7yl>HGIbs)gBT0YDF|n#fgY`$@;h$dQqz zCo5ps5L{+Ea(}9ZL$9PI;d(N>%Xz%y^BOb>3N{8ZW&5X6Kf_&{;t;G@sCID zEjrHySIX+1j(>Gs5*U(=kcoWq?GM# zksnUV%~_Psmhj4q*Yuv)#Fnf;=F+7|T~2;J7*+!9U}s^e-0;JXS@t}LKn9gJA1-eey(6 z5`_7w+qc6ux_vNNjsj_xt{0w8ZHw-hVOb;3sHE>^RqrkNKBmxcK7YNeT`+2`7Qg@q z_}rYvRi)+%0F`+$lbhI`%!-SgM*|W-Q}61LQaNA)u-skBf{@GdgtH2)iVU(mI$xrG zprL0%o?G5a_A#JqM9U@mPe@RUC*&braFKE2WRHwRj|`=~9LMcbQI=YWZ@$5h^)1EU zsC?%@bX%@s#SFw`(#gqC*Z$PI@y^$kpP5dA-i2g1g(M#j>Q)h65vP>LI%qbv^qD6? zHQLancb{F$b9wc66Lc?x1J@}rCo9`879G}^GPDPBC@No^^6aQd3ygU-3=@ZGznJwc zVO}fNCVsiY|A*6<0kFRQmJ>L;)~r2ZvUj1fY4RN{Ei!(~p2ifj(#Ni5g>s9y{+fl- zikFg4Kwzmoz&i^P1BS4@t~*6O;KmNlB9q)$9$Pw2*9-|g(xW&S@wFBSUs`HDnzZlx zEFa#`)p-aSWK#MGu5RA<9IYK0nz1i3_-*4=>6ud1BwJp-U6|xW;Wb_DZS%Wm(@HP= z0$bA1WsZI#Jk|qdW~kcySsxm3aGoV07Xa&$%1tgfEIJy{^)gL%v@CG}Leggyg(g@DmD+zRsGdqL3`6DP|(`ZNjO zVIi(h>U7}XkuDi47#bpZpoP~qk(VCcc}#zm>p8lR)nSF08UK*rP$~E*HMckZHfcBB zOYx=AAMEzim<9r>gn+}?7&>qeRkWlDI_k@lmV7BJU)jdQL%uA1+%~o-CX(2^v5TLZ z8C6WyW60vGd64mV4CL-9CW8qV{(#)q*}76}4|?Hauo>bl`Izi2f%}Y;R9VSmKMbrf zE|Fod#8Y`I0o>>hgU0S+!`fj(-{ttK*CK995$YkR?8S<@XMUp}O51)OxP%42 zm5t2ct<7g+<>D}z=a%uJ6Qc{A#Cu2&&=TQSGOaPMiurTqT!Wx+?YJ05h)mZ$i^^soL-K`=Hr+69{Q5{7M^drA}!APaahmU@qDAsF$MKTaA(fQ)**yG1 zX`twV`LNTBZ`0<1!Pg>d&G%_i2&OLY%Vhl+>8ZbrQpZwf&bH{rh59*!C`cB$(B zH`tDMn@ycwRsQDqRv-xf^6t$k%d+-a_kwG=oW757q}@mQr~ZB*b8KGtgFbW}DL49Z z=g4~;$4jX`$2V8!F8orm+wVx-^YK>V&y^A4c?Lv%k3Z?ZlqlsS0jz=%4GsKGVbD(G zO;fJLWu*_`FkBa8y;LipdxUCl=Sw^&3d~Qy%HQUj4LZB7w*16iM`(=q9Nwi`{o0BF z5wH(5o&AMkjs$xhE{!Or5AY z7OaQDRacc~Jy$uNs?=qi=iqvSiDWD^Gme}=4Yns9v!`=4%E~&~fmo@zv8t_7ihTF+ z*TI;ZQ&^gH!P}@43!nJf+eP()Tyx5Bv2(|Qgk*IkO@H>)jf55U!w-xQfDAx`NZQDy zl;7O9)+48gz7;x-B*H-d@_0dpk|bBVk)*deu%JPTs@M6n&4_gt1MclhBK2jQN^Qswi zlon&uJd~1bCJs%T4R1A|Zu@4}M$5sY<>9^R!G=;mm>@Ih3``;4q-Y@A+43vWNgX5M zK7)SZb#qLxH>K}+Z$eV)OMGJeO4svGEOx~+wyD(e^UP=!hmf=WgxL$_i{se~FXv^8 zv6w^&%E4Ajs@uU?jjZ=5`IO(UtfUd8N>C+J#Gc0Hv6^npimuu440d_Yv*d51l|v#V zvTnSV$aELFGQvaK)hOZ?2}Exyotm%jvOOxToa5Gyj^|P`dxUYfw&*)yjEnb<|L|T8WzfOay2R_M?40)ygzjBpyY{#y_-EIgJWB*Vae3%mfvJB_=W+tR0T zeJ{Wdl4E`be9#QQ!Wuqd+CNND{{laZN3f6&4Bf7IC+2al4%c0@R|g!%mEI6TH->vTEi_HFv|yI~bZ=%01N=0BU3 z!k_qSbF1}i`CU_6R7VHX)<>VYPMFJ?Z)oJ+@B7&g6%X7-pU55IosZmcjJ9-@VP;H| z@Bmq0D^v7hf2XNNM6sJpO&|(vN+GK&L!~foz;SRaZ!Dq?bYgziZg0%`1{! z)rf>ZCuSe6Cd3^fOa4l_!K@O|*i&T8hb{`heV=g{u0h=4zFrMVlM(R; zX3y#ln4BdVy|`1}?E9f*tRg$~aRs*O+w!yLLd=^(Z6$|lG0`=+;DE7@(qlA)^Oj!l zZSwwi?TTD51UQY|nniB)Bz_F8&e^^K<&;z;){wvU#U6jspF)_w>Z@VV2hH~jUxg31~Iui!AKj8F7m-xpN&_d#P4`hhpN&}k=8L13@JOHD8lw^CJy2# zVixYFw`)f+1GzrHC^5^DHD}Aak!@o*AOJM$i)-y&{Mty|#lSDH%qt0hda3(5PXJ0A|rDPmG!Pv zU~pPwa9STu@*#W*0}r&nMHEh+J3Ex8VS07R&sqt&-O$s6|ls zUrCr;2l$}@+|x?bC6)^TmO^j`g!%$MZ}UqboZCVIAZ`+w_m}j)Z4;z+a(7CX;FzFxCvyqo8nqg4Aw?AR zq1df#6OSI5e4t#i0cx@cLS_i=^w#@*{tFUGTO~vGb^0B3KYuxK!J+eJ=98(Kg15uS zFyrx;V#PV(4QFuO9ATI5<@_Mq&Z@uJsWG}>* z!)ScUi~Gs0jHrzkB1-DDQ4k6RG0xThi5B`4KSuif_ch;@M1)-cZ*pL%AOO)NGY zfVp)g0G>F!oQsX11)!3ps`i+RDFnViUBc8>0+hemcLE~!^nvj81f8MTl!s8D_sxut zC_&EWUySV$Bs2kKQr0A+Kpj1KU(`n`Q%k5SFKG2l1eJuJsm8(JpxB#xI^ zSP_cg!#*nl?5wNl(vk^n{*7PA(yydItI%#R9C64uA=_VVV`$*ive%ldLI zXPbkHu_4@nGpeEnCV{?B&;R0)i1**wqN~gd)2uswfk=hG*C-$0XSFsHq~W;F8Tq2V zwZhwTiW}+bn*&`BP^{o-0*fXdI%yvhYokVEvt87y{xMC;a~vo z+RXg?acZdofb%+pDZq87IlHu9^<3)wgzV_S@BO;3p2^Q9bPYIj{o`M8<{l3fNsX}F zBD_VL?d6htI#k}c@^!a)Dq!RBUDdAmE=JmW&0@(17+xE6(z|2Iw4 z{u#0g4-8~G^RNH%gNOrystTp(MhfmhAb%NKn zw$x+|m0SH=p{-($6wgG%8j?=P7Z%zVnPNZ7!n@>kkNU;3J|mJeUMzx?F9jmkBN@X# zs$S4Zqj~GAVLfhlSf0pGP2|j#%#T~rWXFV9V9hOu{mE2|S^RO@EU`@)_gdlFZ|bTi z@>aT^#(mgwBH+DrH%OZ~Go7zqI#t3}ueq zymgK1TLEv#a8B#{mL3KwGm{rEe7nRZ!Iu9{+z?5_Wzd2599moB`RR3W+N2>;Mb3y$ zp5YPN$523@L7g1L!if-}q90*4ogA=`p=vl@dIG(92l9&5mAw-jkure;^kSOT^;f16 zg_HX_rwYMqsp6C=)y2kE>l9O=L@|8hlQMY8SJo()N}ox}Z#!cT|94w(Tcu`?~$n z^iFWYt*tFjY+Qn79?9@>_hpM6NfD6%r3S|`TdpOGMP*`$bnN4A&UK`qrIy@rjJu^6 zO_L@PciMdVG4?&l@1|4Q&3Ow_uQ;0;>cwG^b_aal@~y1AoLLv>vuLvxNVbHsM#CK8 zj`YaIlqt|XzGnZ%_wny1q_CE_U$!zFICRNb_(oO@q5>QS_DO^wzUY| zU%4+I^40w7Q4+U{ZvVD}_^^e!BGd#ouI$I{YnYN=_ITC&g_KeMNkmr(1RWEtW2HZu zuF5c0$l<9nSFXiSR>k$3zj3vR2~(IKcdoXS$Msuh$-$^5OwI4H4@@N_0<$z>RR3*A zD5c0b&{w`P|NA$Amja{XfnsAXem^IGpXM@@I~h0Xnf~$8ygc82oZ1*4CjbTRi)Y`B zxUcX=#70G!8_G$l!txLcz%3&}sRt4zKD?{xXaI2Qcy|{y4fo0``0E=rz*>FQm{~Kh zqqF?w^8USW8<_(BkrfyH+F1GM5twA$0};yyuV$W=R9}Xmg99`YHf3Lp4$tc=a&*C( zK0S^y_n$C^@QJ9l2R;=gmx8a}^FgVKa_@{gO8bjI+p6R{*#^KOF7q<)J0RE0Ekzzc@wt`8T-s*Z*V4|M zXQ6sX5*ZE{n(77x`I^`~i^a_w`jb%{GQ%a|nN3nrN?}XkvmcR}dhYV88UMf%GZ+r;g`# zDMZW9hIoeagt~VIKAsz5oghmhn#>ot@*pRt8i)Mt58*d<>_mBd!viHQpi0wmlIJVl zv&T*t>5H9I;~rnv;|t7R-n}W{Sv_EeOHh!Z;s~9%4Pmjf+63F!ey?_~ww<9jYqjm1 zMvrluI2fFo8Ji&6?a4{I=k^L<$|kOFNldYK6FG+ZjWnpcne#67G6)FDmDb4>-qOHuJA#~?P9VDpfMEEi< zo9&t>lXzNk=lrLhftUuQ*BKehMM(@pi$mt3!d6MNwy#!u?B(C!bD zr(f?SR?H6?Lr`zoY+01&f9G~*I-u*zvqVlijXy$YKT~GMCkJ71cka>NSbJdLonoNB zfy!-j9Hk$}_u*%&cDktFOq;QgAVg8TR-*1lyy>ijDGZ$qQM49sL<;vpERfxa4dTR+ z6ZHaN8;0g`(497@^_^_Rqq@x^3>!E01Kz5?SY^=e1G9Vm;#(I?Z-S4dvi#Ok(ukHw zwbQ*w1)eh`Hy|I+WR2U$cHSRXJ4%W7pa^NX|HgwJgw7#6Ecw%&Rx7PxXO}_FCuhNB zNW3wS=l{1<>Bp}ZHj0*|c&KA{#QQD-P7LtiupM|4srhcBcTtFVO6<-l@U#?^vDx_(F&r>w=53RPA%~O-|r=8{ODQds)lT(&LC%d>#}!OW;GC)`qt5v%{6eG+ zA(w!!GJ=z%VF-_Y&}8xra980z&~9NpEtU45XsjkFfV~~uWjqknU>Wl2z6qO&R=ohQ z?YO<74(_};*KC4IAIYD4Y20e|I6XopPU$G)7~6^KS9AiN-eV!L?e`5Q@-{u8+C&I& zkfgoqGHXhdlR&tudlFDVSWb^uhfp$2&E$Kyo|h7Y$Unc1+)X8BF;+xCL~oo+5HG}Ax41C?QaLV(-B zq;7l8|C4{{0aR2n1QM%MB_i~^>s5nE+Tq#8Aa;@2y{i+gXwNoJ=81ezMOSL13_h@|=jPTG_ z)8crCr|T3s*;ZkoJUYxLXTL@3;h^P=ox_rI%Z6pc);GkyJfFGozU%MdKnK1e;?KMII}1rl=n!*vITj@Y z0uFx}txQ_>t(UhN&v7ZIx7g#u_qq41mB!Yb`B*O|cwam40=u0nxkQyp3B|TIq6wXO zuZF9KB=cRvj~$Qi+Uc4av($IU7(XmbHhcYZ%o|pH=uNQNDb;%H-D2w{Uk7q=$%I+t zUCyZ&C+I3<(RuG=YD+T!e?byei!6Ch<_0n{hVe*F@M3{9y&1{VoXT(K_~Uu*+tcdj zGD>v(rL@7f2+We0q2;bgsOQYTP`i0Y@K-{aoccJ@b%2w3}f}4j&Hd0XYQTSF~C%6%tspvVi}U&WTv3(t?_w3^>>FQajt4H;PXGF{kt< zk~US5M&4^Z3uKv{(OH*dG-2f~l1v~*WrVW4J^T{0p>r{q?Bq{*RW`L?ES#Ge)xq$VL)BMyj74CM@4$#P9T)S2=elBv8;5UsoDPmPgJrUsjhfm zd)tl&IS}8EnWtAf_C;o{E)=8%9LA6euvoMNgp=EtH~e*=qLyK+c%aV^$1osOzR6O` z?TgkSl8Fuj(|4?`kC;ChY-I5ewkI2$7ooD1DG>_j>6Bd}G8JkE+t6@cYi-WlMTB&V zeyPjh1@8zGvOnN4vsLTARF_+kwz#}#dctD15V*uYmk?#PUUY%k3?BFd4>~?`|B>gN zDQ)66JZH1y3&57|MiB!%b3^Z`Zlkj#d6(Da&AH^6NP?}FZ+{uA_U;#gp`9e96#n=C ztV=u88pQ)Xl(oyr#DjnQJbHFdM^=9k%h1h-!mCW^=}##3Kxg~mJG`AoyKw_SJIBX5 z1*21mVNqOwK3t6CQsN}B38yTE=&Z@N7q{DlHQ?vc4;D_vkxG--e4(<O8*5!nk~$mSW%YC9*C)R8gU1_u-AUQZ66BwDedq|wCZFQ92)B*I?#RHP#L%VL zD#z4&ZrZ*Krk(HMm64HR$jU+z;dZe4T}O9@$CfJ>wR2n7OcgmAf~gM6Xt9 zGmWv{2{`h@@sy3cB6I28SbjHZ5wHf|6@p=>!W%zf*2uUu^XK@(gGFyXg9AA?sR&y8 z@xBQ^M?4r?8yGSnySz9}n4U(Qqj$iUV^;%a2tGx{SYB(YC zXKQyXPhE=xT2j1N$ocpT%bfO(kf9s#j{C=eL>BSBfT&K8me5iug>r1hL zkfOJzsArkP6dVH~yTN$aT{YeE0=R@jMM+s6XXn78M~p7&_+ck zZ>!FpOG#sEh;lJkMe-t>8+eeH=dQ_8#63pt?9+2!s>*@HiUB>fj6m0;-BW9O1*AO% zC~KOEn1BA5sw^l-n*BW%U^2v0pzt80H-}s{1)gA5pRW4Wtgch7`tociUReNUQ~349 zvSkdZ@|)Z+@}zEuq+du-t6RExN55#8DS7_u(KvjE)JlAYgc#+f=7U~%XaPy)U1#Oc zuOIv;3cl~6Xi<3nLv&i&sXyhZyTe0E#R5hYFYmEpc90m`uQd8(9_!BFT3on)P9=<+ zfBR0XNm2T(@`0US0oGhU7iL-gGrkvA;oFRPiuVTeYJVh7-5;jtneY&fm*ks|m<~6u z_Ka2|Ivr}Uo0po`x=f-kE)uTySLDwOs!Ne()Zsu-8J_z>2QoH9ckzP%`Ycmq+O}>P zchOXekq&wxHt@AiYG7Ve0S*;VkcjzM_ViSuAwKSTbH+Qjkz}q1q%5rW%Qs<*wBETA z?LR+` zdu)|YGtr|_FE#8bT4Rox`5{4DvnU#y>e&nYZ1JWbFrhyeeeEp+LYN}63?F$t{?fl4 zF(U80YtI*;Nbt8dY_ob@xBAtH9&Ig%%JJ1rknHUb-U$H1G{^)LMP@6&f{*ujt`HeM zeRP>0?ZudZZe^>j3SS3N3b%YrqX1d}aQ@VUM@J|?u#}wa$FDJ;=2h4Mu z&foqBN`gEaJq=&Ho~^xFr;0duU_4=f7okrPRzA;t)`2YvYu2n%5Z}Sv)dNY*{fZ#ov({{~8M`)^2}x`V2!3c!64 z?S#)X0;v&UT=-GM!p-X>U+|4*vm6Ep0F${n4=f*3`F!Tp`B|D!fY(@Uz(0dV?3ZPJ z6>v#u-k(wF9ls!Asmo-h^@AU(>}-R0PSeMSPy|)w-D|-%5(t6V!c}6GrMb*I(3a+H z(XD%K>Ru8E^WJQbaxu|?CFm_9f?^oZ3Yyyo0xNcHRGtt##W(NO_9EZCY1=X*B)ASX z`^$vSDuO>SLs-`Ra1H1JVINzdRSK8_NPc$a*z1hlLP=(p;u60F;HLt3Kl#@CQvesm zwXg9X-()=-yQ(s9x8PQ<75XIX7eOL}u-r(I&2_SF{7llpiUZ*R-g_(v=KnWWAgfa0 zTJVYfK&GxSe)P3qE(vG#{h$})_h|5Jfs=f)CAlalzgHgA(iqNA1UP)kWw$=;r=?skcBO_u0-+1Wu^FwM%v6Bvf_oyKNN)aov5AeJh z3Trr{8vgi^f(=yh&_eFRNM1kf;GKL4op;6f7hb*NotbW&LG$PmeYnp2w`=u1F``yr z=J0@Uc^{{@lt$B9&NgNKD2U-v_O+vaeT(6_*F9uZFpn*8tr#!sQ@x6xHzo5Iunwd(oIACd3 zg%KdetNWy<%}TCI6TDaSKFeQF=aBn37C$_`DuANe93qKbntr4+LeBmkj*Y*2=nrB3 zcwtan@h4I~CW*6iYRd&OB6X_RK^`Z!`tCY}ePGy`jwe!>gIjRQ=KHk3i-crj@jx|> zH#hjDKBC#?*nZ5vqkhm=x+B#s{<@w*emUOCQHKX5V4~J<{^fP+A&jd)K=pfXpZzfG zS2YjI@q0Gux{_Z)az2%(IAYWl*{e>GFs1plc8qW85ats;(Qrr`7d!Bi&ft$bew2YH zz5S3hdjX-W)g#JW&}5zVo`XYpI94h|77vp)Y#cN0OpZ9(JR4@=$`zV}-EV~WcFcFn zFUmlf-X9F8v}q#9E%_?K-D6H&(}@T;V-n}W&sL?5Yp-h9E~zU;BZ#l(mS;eh;=B*j zxX@T2xIVp2?N77r@?r-V@su08FD`H5 zX#oJ9Qa)bq?M&Jip%|8h1ef35?iLXx_+=mcN;5Iaqe~$(BcLVx%yZ1h`kithZe`>g zewmGqeen+=7*iNUjI_W*9h*63V%1D8lqm&t4TM2V?_Ws_Z;gu}JvAk%ml6mEHET)u zZH++pwjMQbiPtuR>U_4y7!aAvs5EJH#g>E#LlJEB__kpS9vMJxeMS>fLPJS^R%Jbx zN!0E4*@$_S` zWvBu(zXhco9%x8SS9`)olP?@w>Z)EiA9^QIpz%Xm;G?Qahnlf>zZCpkyYlMRNTS&t z6KoO6aCIS|C4F@&uiUan`Te(06h2g{1kIT&a~EE@mX;gxeAdc;qbJ;VsG3%y%a4T? z1(3xJW~U_%pWM0@$)1t*;>kw#_Tkuh|6M-w;mNU=&r_q{xz$g{WiDAAvIryJ8~i3! z5&s{n8C2yN3r(S(g0oBIi=ex&G>g%6##ihgWX!`YmDO=8ni>Ib2X0cs3zylNu9wE8 zl2~`<)ycRWJhbL??(*b^i0r)P$?#wN^D>zbp4VqD?wz7Te3Vq~UzL(r?ZDf4yj^9F zF_{P&)b*-J=`#>YtqSq)D|O^ffk~e>Og!Bxze9}brhd@a10HS5EN8y9S618f4SeYR z_5K2#&N6qA#6FM<{wSu&Ggis-KBqHu7hT2+K8$+%`|_eqQ$Omg2Q$#aZo=)T#1rk$ z{zK^{_QQjq1JtXJ6iY#Ms|covkuS)pr|YZeI`^Y>)w`1iF0(FD)vIDIzJFOve2WSV zS6yQ!z}}qfUv9>_pvNCpD}|dGf{i z0)4d9xkY6?{abg8nfk@fh#wWBpDkb7ZU$;p;veG$<0Js{>U0g@~-OVB-@8rTGCLn+|Qgp z=ad36elK)V;>3^~gzKJ9ZDd+-b~ zVRzjIoTc?v228bcO~esW0@P^8&qsI5dz)4X0h5GU58vY%TCF3uMbIXXw8&&Wld#s4 z0cq>Ib=M|NE=&fD$z<P&NVv#KCJ0)F_e6XRU`cq@i;EeEgc08F&5s_?)JkaKi;d zaLkgod8Yf2OJtbR+mS#5@lNJx;IG0~GVX>J4HJDx7H#@4;4oRi4$s#5bRX|R2PV#| zo6jA+?5^K!`IO)CG%(c6Np|eoLmKznlfeJ$Z=DxlD{dm(NvCv%REkvK_E=zFz^eG1 zN~StYU*ol5&+@ceFXwtWP{%L`doKh8fK>LnH3Nqm4u3fRaYM`WvXl382Xa?}_K3It z*Awv$4Gn$V*xl8nAScg0+MUZ3b6Zm0*js4Jho2th;0d(JlTGmYMz6I&*81()#wp{u zQuFY>T~#TgbcI2@03+TlEWCC<+Ir=FwW%R0YKz0~q^zxdYcw`CcCxdxb16)ooYdEO z{@fD3{LzQsX4&Q)3+O(@uj7zDQHzX>)C(??eG#FO{dZ%-PSsRd-^9fE(c{OQrB4i| zHu1b}etCKM*(LZtYP-+EVd3eb;AP=tV^cCV_#2tnfSg=D z?c2!3#YL}>c0AQips%m*Mab8Qp}$F6_?48S@x%tm6@=8l2Q$3A=|>q!NhP_W=h*&! zjj3k*euIyL11dKC>|hoCpJy~pk#8X+yQR0vl)~_%k9Tc*yK?D?z4#X)LBZsEstJ0S z*?%9|u3%)8F8FH*W#cGN&Of%E>CVj09P4KM?AdFTdYd6ORZ|nRR2Bt7?gn-Aw}ZB! zQ3w1!j}QeleE;t+AxI~ZkxhOBOiVf6_n-6LZWhZcF!?wjY08;fV%>M-z@!ZfQ z)t1xiib$sX$jUvIR5CI$VqW}_=vDf0MxX?xBn-_cu@qvgyh4h-7O?&Fupc`q3 z+fz<9Sr?LmdOabSgri-ol&o)h7@IocNhZlOaG*Z@&JaaVBG z(qPvIY|JY7CvRVq*X!S(|Js;bzguKJySUa?pc!ZZ?-CXkesHn10oHnGc8wFoA*J-R zA5WiIi;kvL)fNz5wXs8sL{WDCmkMQGbgij*qPzvlz;8nvvgO@K`o2q{V^>sXi7P<( zGlFeveU=4TBIJ09W#^c#04eOy=>jDP%eHZ<5NYqH!>6?Wf=xTY+t5PF=&ooK`GhNl zI`h3OC2j28f9&8o9TMzF&dPcR?k=RvB#6J^3%k0JM6_0Ko*=#*bq6wH2o8QolPJQ| z$C^b%@a*9VOH%9y_Gl|b`>)CAwHlXcn@Q`)PwpMttd3qXG1>nMEeuo&pOfymoO?z@ zfMY0P&8pbd&Hq+i{wrX6dz(F? zXNf6y`&z@XjSEQ+H2BMp+J4@1zu}s&)w%EnJUH?bR*E*TtE)`ea;h=AV#q~D=sZja4^jQ$VPYm%6i+ZMRRV^o~#Xh9laiLKTLd!l_M8FL5Vl- z`jBgN620$_{=7|pdd%AFFj3Z?+4wIc_`DI^a168&4V4wm5h5+|Ki;9a;v3vx4r1X{ zxMik40;SHRP>=R{AnhxH|EkyaWP7GjJwW@jt+y^p{HOO1AD) zTr7Cv-j67&uyz}JCO<>#Gia<^|F~rKpDPXB1C(^HRELtSxe!xm7wsfc;hkdTAXphc zTwpExM^ZQN7UFvKKM$=0{{@I}W-AeScaf#Ru8}L8{6{z{BFG!p>}9Az&7yx2F3IS~ z>sRbM;J^5f>lWGJ`8CvqOrnU29E0+i7lA8;S{gdbW0=|x@9l#B2}B^?(&|$ae zgs?PbW@ax`#)bH*jVs!8hks`mH;P7Q+fS}NyvOv!k4HR%F`RNv9bRK zzo|Z#l~}*H0NMlm-xkrrN-R6U^0-~$@nU6o3zDWU>Q?x;jdRgJ9fE~{wuYx7t#$9Y z2Ht5W@m~Q>`z;Z{(3OOq5EA_22yZ~%Hj^6^`5&&p^u4^yKcF`i!CacP;$N8mYvm9M zdD}5cK4!E09!tcge73RALTIc{4e1kILk?KWY@@#pGM-|DIrd8_>w`|J6wwQ+M31hg z#%k~giZ}l(IsQzAWNodaI%~il(d5K@coH~|+eA{WGBHjv+?1c4prN{Z3c}GF>OQoB z(uJPQx4Z$fM?7t2c4t=aqcO&< Date: Sun, 24 Dec 2023 14:14:35 -0500 Subject: [PATCH 02/16] caster o' strands, part deux --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../blocks/machine/MachineStrandCaster.java | 118 +- ...java => ContainerMachineStrandCaster.java} | 15 +- ...aster.java => GUIMachineStrandCaster.java} | 32 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 10 +- .../render/tileentity/RenderStrandCaster.java | 63 + .../hbm/tileentity/TileEntityProxyCombo.java | 37 +- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityFoundryBasin.java | 11 +- .../machine/TileEntityFoundryCastingBase.java | 9 +- .../machine/TileEntityFoundryMold.java | 11 +- .../TileEntityMachineStrandCaster.java | 210 ++- src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../hbm/models/machines/strand_caster.obj | 1214 +++++++++++++++++ 15 files changed, 1602 insertions(+), 135 deletions(-) rename src/main/java/com/hbm/inventory/container/{ContainerStrandCaster.java => ContainerMachineStrandCaster.java} (81%) rename src/main/java/com/hbm/inventory/gui/{GUIStrandCaster.java => GUIMachineStrandCaster.java} (77%) create mode 100644 src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java create mode 100644 src/main/resources/assets/hbm/models/machines/strand_caster.obj diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7c656c712..3261a803d 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -694,6 +694,7 @@ public class ModBlocks { public static Block foundry_channel; public static Block foundry_tank; public static Block foundry_outlet; + public static Block machine_strand_caster; public static Block foundry_slagtap; public static Block slag; @@ -1854,6 +1855,7 @@ public class ModBlocks { machine_stirling_steel = new MachineStirling().setBlockName("machine_stirling_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_stirling_creative = new MachineStirling().setBlockName("machine_stirling_creative").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_sawmill = new MachineSawmill().setBlockName("machine_sawmill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_strand_caster = new MachineStrandCaster().setBlockName("machine_strand_caster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); machine_crucible = new MachineCrucible().setBlockName("machine_crucible").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); machine_boiler = new MachineHeatBoiler().setBlockName("machine_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); machine_industrial_boiler = new MachineHeatBoilerIndustrial().setBlockName("machine_industrial_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3152,6 +3154,7 @@ public class ModBlocks { register(machine_stirling_creative); register(machine_sawmill); register(machine_crucible); + register(machine_strand_caster); register(machine_boiler); register(machine_industrial_boiler); register(foundry_mold); diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index 7d45b7911..f515325ee 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -63,11 +63,15 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce x += dir.offsetX * o; z += dir.offsetZ * o; - MultiblockHandlerXR.fillSpace(world, x, y, z, new int[]{1, 0, 1, 0, 1, 0}, this, dir); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + //up,down;forward,backward;left,right + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, this, dir); + + this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX * 5, y, z - dir.offsetZ * 5); + this.makeExtra(world, x + rot.offsetX - dir.offsetX * 5, y, z + rot.offsetZ - dir.offsetZ * 5); - this.makeExtra(world, x - dir.offsetX, y, z); - this.makeExtra(world, x, y, z + dir.offsetX * 5); - this.makeExtra(world, x- dir.offsetX, y, z + dir.offsetX * 5); } @Override @@ -109,7 +113,6 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public Mats.MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { return null; } - ///entirety of foundry base code here, because dual inheritance is evil apparently @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { @@ -117,73 +120,82 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce return true; } - TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); - - //insert mold - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) { - cast.slots[0] = player.getHeldItem().copy(); - cast.slots[0].stackSize = 1; - player.getHeldItem().stackSize--; - world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); - cast.markDirty(); - world.markBlockForUpdate(x, y, z); - return true; - - } - - if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool && player.getHeldItem().getItem().getToolClasses(player.getHeldItem()).contains("shovel")) { - if(cast.amount > 0) { - ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount)); - if(!player.inventory.addItemStackToInventory(scrap)) { - EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap); - world.spawnEntityInWorld(item); - } else { - player.inventoryContainer.detectAndSendChanges(); - } - cast.amount = 0; - cast.type = null; + int[] coords = findCore(world, x, y, z); + TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); + if(cast != null) { + //insert mold + if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) { + cast.slots[0] = player.getHeldItem().copy(); + cast.slots[0].stackSize = 1; + player.getHeldItem().stackSize--; + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); cast.markDirty(); world.markBlockForUpdate(x, y, z); - } - return true; - } + return true; + } + + if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool && player.getHeldItem().getItem().getToolClasses(player.getHeldItem()).contains("shovel")) { + if (cast.amount > 0) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount)); + if (!player.inventory.addItemStackToInventory(scrap)) { + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap); + world.spawnEntityInWorld(item); + } else { + player.inventoryContainer.detectAndSendChanges(); + } + cast.amount = 0; + cast.type = null; + cast.markDirty(); + world.markBlockForUpdate(x, y, z); + } + return true; + } + } return this.standardOpenBehavior(world, x, y, z, player, 0); } @Override public void breakBlock(World world, int x, int y, int z, Block b, int i) { - TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); - if(cast.amount > 0) { - ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount)); - EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap); - world.spawnEntityInWorld(item); - cast.amount = 0; //just for safety - } + TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TileEntityMachineStrandCaster) { + TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) te; - for(ItemStack stack : cast.slots) { - if(stack != null) { - EntityItem drop = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, stack.copy()); - world.spawnEntityInWorld(drop); + if (cast.amount > 0) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount)); + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap); + world.spawnEntityInWorld(item); + cast.amount = 0; //just for safety } } - super.breakBlock(world, x, y, z, b, i); } public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { - TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + int[] coords = findCore(world, x, y, z); + if(coords == null) return; + + TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); + List text = new ArrayList(); - - if(cast.slots[0] == null) { - text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast")); - } else if(cast.slots[0].getItem() == ModItems.mold){ - ItemMold.Mold mold = ((ItemMold) cast.slots[0].getItem()).getMold(cast.slots[0]); - text.add(EnumChatFormatting.BLUE + mold.getTitle()); + if(cast != null) { + if (cast.slots[0] == null) { + text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast")); + } else if (cast.slots[0].getItem() == ModItems.mold) { + ItemMold.Mold mold = ((ItemMold) cast.slots[0].getItem()).getMold(cast.slots[0]); + text.add(EnumChatFormatting.BLUE + mold.getTitle()); + } } - ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text); } + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + x += dir.offsetX * o; + z += dir.offsetZ * o; + + if(!MultiblockHandlerXR.checkSpace(world, x, y , z, getDimensions(), x, y, z, dir)) return false; + return MultiblockHandlerXR.checkSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, x, y, z, dir); + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java similarity index 81% rename from src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java rename to src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java index f87f592d0..1742c470c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerStrandCaster.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java @@ -9,22 +9,23 @@ import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class ContainerStrandCaster extends Container { +public class ContainerMachineStrandCaster extends Container { protected TileEntityMachineStrandCaster caster; - public ContainerStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { + public ContainerMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { this.caster = caster; //the wretched mold this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62)); - //input + //output for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { - this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 3 + 1, 125 + j * 18, 26 + i * 18)); + this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); } } + for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { @@ -47,18 +48,18 @@ public class ContainerStrandCaster extends Container { stack = originalStack.copy(); if(index <= 6) { - if(!this.mergeItemStack(originalStack, 10, this.inventorySlots.size(), true)) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) { return null; } slot.onSlotChange(originalStack, stack); - } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 10, false)) { + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 7, false)) { return null; } if(originalStack.stackSize == 0) { - slot.putStack((ItemStack) null); + slot.putStack(null); } else { slot.onSlotChanged(); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java similarity index 77% rename from src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java rename to src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java index 9d31e4b1f..16a151207 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIStrandCaster.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java @@ -1,9 +1,7 @@ package com.hbm.inventory.gui; -import com.hbm.inventory.container.ContainerStrandCaster; +import com.hbm.inventory.container.ContainerMachineStrandCaster; import com.hbm.inventory.material.Mats; -import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; @@ -20,15 +18,14 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.util.ArrayList; import java.util.List; -import java.util.Locale; -public class GUIStrandCaster extends GuiInfoContainer { +public class GUIMachineStrandCaster extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); private TileEntityMachineStrandCaster caster; - public GUIStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { - super(new ContainerStrandCaster(invPlayer, tedf)); + public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { + super(new ContainerMachineStrandCaster(invPlayer, tedf)); caster = tedf; this.xSize = 176; @@ -41,47 +38,48 @@ public class GUIStrandCaster extends GuiInfoContainer { drawStackInfo(x, y, 16, 17); - caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 38, 16, 24); - caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 89, 16, 24); + caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); + caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); 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); - caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); - caster.steam.renderTank(guiLeft + 82, guiTop + 89, this.zLevel, 16, 24); - if (caster.amount != 0) { GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); int targetHeight = (caster.amount) * 79 / caster.getCapacity(); - int offset = caster.type.smeltable == SmeltingBehavior.ADDITIVE ? 34 : 0; //additives use a differnt texture int hex = caster.type.moltenColor; //hex = 0xC18336; Color color = new Color(hex); GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - drawTexturedModalRect(guiLeft + 17, guiTop + 92 - targetHeight, 176 + offset, 89 - targetHeight, 34, targetHeight); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(1F, 1F, 1F, 0.3F); - drawTexturedModalRect(guiLeft + 17, guiTop + 92 - targetHeight, 176 + offset, 89 - targetHeight, 34, targetHeight); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); GL11.glDisable(GL11.GL_BLEND); - } + } OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glColor3f(255, 255, 255); + + caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); + caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24); + } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ab715f454..fa932c02a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -307,6 +307,7 @@ public class ClientProxy extends ServerProxy { //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineStrandCaster.class, new RenderStrandCaster()); //AMS ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSBase.class, new RenderAMSBase()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSEmitter.class, new RenderAMSEmitter()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 38837f228..349d6da07 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -50,7 +50,10 @@ public class ResourceManager { public static final IModelCustom boiler_burst = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler_burst.obj")); public static final IModelCustom boiler_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/industrial_boiler.obj")); public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj")); - + + //Caster o' Strands + public static final IModelCustom strand_caster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/strand_caster.obj")); + //Furnaces public static final IModelCustom furnace_iron = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_iron.obj")); public static final IModelCustom furnace_steel = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_steel.obj")); @@ -447,7 +450,10 @@ public class ResourceManager { public static final ResourceLocation boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/boiler.png"); public static final ResourceLocation boiler_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/industrial_boiler.png"); public static final ResourceLocation hephaestus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/hephaestus.png"); - + + //Strand Caster + public static final ResourceLocation strand_caster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/strand_caster.png"); + //Furnaces public static final ResourceLocation furnace_iron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/furnace_iron.png"); public static final ResourceLocation furnace_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/furnace_steel.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java new file mode 100644 index 000000000..cba933802 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java @@ -0,0 +1,63 @@ +package com.hbm.render.tileentity; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; +import org.lwjgl.opengl.GL11; + +public class RenderStrandCaster extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + + GL11.glTranslated(x, y, z); + switch(te.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glRotated(180, 0, 1, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.strand_caster_tex); + ResourceManager.strand_caster.renderAll(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_strand_caster); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(1, 1, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.strand_caster_tex); ResourceManager.strand_caster.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }; + } + +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 593a33505..edf40ace1 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -1,6 +1,7 @@ package com.hbm.tileentity; +import api.hbm.block.ICrucibleAcceptor; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.fluid.FluidType; @@ -9,14 +10,16 @@ import api.hbm.energy.IEnergyConnector; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidConnector; import api.hbm.tile.IHeatSource; +import com.hbm.inventory.material.Mats; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource { +public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor { TileEntity tile; boolean inventory; @@ -501,4 +504,36 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy ((IHeatSource)getTile()).useUpHeat(heat); } } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { + if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){ + return ((ICrucibleAcceptor)getTile()).canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); + } + return false; + } + + @Override + public Mats.MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { + if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){ + return ((ICrucibleAcceptor)getTile()).pour(world, x, y, z, dX, dY, dZ, side, stack); + } + return null; + } + + @Override + public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { + if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){ + return ((ICrucibleAcceptor)getTile()).canAcceptPartialFlow(world, x, y, z, side, stack); + } + return false; + } + + @Override + public Mats.MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { + if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){ + return ((ICrucibleAcceptor)getTile()).flow(world, x, y, z, side, stack); + } + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index d51bdab4b..807e3e8df 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -297,6 +297,7 @@ public class TileMappings { put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet"); put(TileEntityFoundrySlagtap.class, "tileentity_foundry_slagtap"); put(TileEntitySlag.class, "tileentity_foundry_slag"); + put(TileEntityMachineStrandCaster.class, "tileentity_strand_caster"); put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter"); put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java index 145c2159a..9003229c6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java @@ -7,7 +7,16 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFoundryBasin extends TileEntityFoundryCastingBase implements IRenderFoundry { - + + public TileEntityFoundryBasin() { + super(2); + } + + @Override + public String getName() { + return null; + } + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java index fd3916492..3267ac602 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java @@ -7,6 +7,7 @@ import com.hbm.items.machine.ItemMold.Mold; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -19,11 +20,15 @@ import net.minecraftforge.common.util.ForgeDirection; * */ public abstract class TileEntityFoundryCastingBase extends TileEntityFoundryBase implements ISidedInventory { - - public ItemStack slots[] = new ItemStack[2]; + public ItemStack[] slots; + public TileEntityFoundryCastingBase(int slotCount) { + slots = new ItemStack[slotCount]; + } public int cooloff = 100; + public abstract String getName(); + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java index 607b1d13c..146e79b1b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java @@ -3,7 +3,16 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.material.NTMMaterial; public class TileEntityFoundryMold extends TileEntityFoundryCastingBase implements IRenderFoundry { - + + public TileEntityFoundryMold() { + super(2); + } + + @Override + public String getName() { + return null; + } + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index cf09975e3..188dd6ab2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -3,14 +3,15 @@ package com.hbm.tileentity.machine; import api.hbm.block.ICrucibleAcceptor; import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; -import com.hbm.inventory.container.ContainerAssemfac; -import com.hbm.inventory.container.ContainerStrandCaster; +import com.hbm.inventory.container.ContainerMachineStrandCaster; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIAssemfac; -import com.hbm.inventory.gui.GUIStrandCaster; +import com.hbm.inventory.gui.GUIMachineStrandCaster; +import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMold; +import com.hbm.items.machine.ItemScraps; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; @@ -20,120 +21,169 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //god thank you bob for this base class -public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor,ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver { +public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor,ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { + public FluidTank water; public FluidTank steam; - - public ItemStack[] slots = new ItemStack[6]; + @Override + public String getName() { + return "container.machineStrandCaster"; + } + @Override + public String getInventoryName() { + return getName(); + } public TileEntityMachineStrandCaster() { - + super(7); water = new FluidTank(Fluids.WATER, 64_000); steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); } - int cooldown = 10; + + @Override public void updateEntity() { - super.updateEntity(); - if(!worldObj.isRemote) { + if (!worldObj.isRemote) { - if(this.amount > this.getCapacity()) { - this.amount = this.getCapacity(); + if (this.lastType != this.type || this.lastAmount != this.amount) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + this.lastType = this.type; + this.lastAmount = this.amount; } - if(this.amount == 0) { + if (this.amount >= this.getCapacity()) { + if(amount > getCapacity()) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount)); + EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord, zCoord + 0.5, scrap); + worldObj.spawnEntityInWorld(item); + } + this.amount = this.getCapacity(); + + } + + if (this.amount == 0) { this.type = null; } - if(worldObj.getTotalWorldTime() % 20 == 0) { + if (worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } - for(DirPos pos : getConPos()) { - this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - } ItemMold.Mold mold = this.getInstalledMold(); - if(mold != null && this.amount >= this.getCapacity() && slots[1] == null && water.getFill() >= getWaterRequired() ) { - cooldown--; + if (canProcess()) { - if(cooldown <= 0) { - this.amount -= mold.getCost(); + int itemsCasted = Math.min(amount / mold.getCost(), 9); - ItemStack out = mold.getOutput(type); + for (int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); - for(int i = 1; i < 7; i++) { - if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - continue; - } + ItemStack out = mold.getOutput(type); + + for (int i = 1; i < 7; i++) { + if (slots[i] == null){ + slots[i] = out.copy(); + break; + } + + if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } - if(slots[i] == null) { - slots[i] = out.copy(); - } else { - slots[i].stackSize += out.stackSize; } } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); } + } - water.setFill(water.getFill() - getWaterRequired()); - steam.setFill(steam.getFill() + getWaterRequired()); + NBTTagCompound data = new NBTTagCompound(); - cooldown = 20; - } - NBTTagCompound data = new NBTTagCompound(); + water.writeToNBT(data, "w"); + steam.writeToNBT(data, "s"); - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); + this.networkPack(data, 150); - this.networkPack(data, 150); + } + + public boolean canProcess() { + ItemMold.Mold mold = this.getInstalledMold(); + if(type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { + for (int i = 1; i < 7; i++) { + + if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) + return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill();; - } else { - cooldown = 20; } } - + return false; + } public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); return new DirPos[] { - new DirPos(xCoord - dir.offsetX, yCoord, zCoord, rot), - new DirPos(xCoord, yCoord, zCoord + dir.offsetX, rot), - new DirPos(xCoord, yCoord, zCoord + dir.offsetX * 5, rot.getOpposite()), - new DirPos(xCoord- dir.offsetX, yCoord, zCoord + dir.offsetX * 5, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord - rot.offsetX, yCoord, zCoord - rot.offsetZ, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), + new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ + dir.offsetZ * 5, rot.getOpposite()), }; } @Override + public ItemMold.Mold getInstalledMold() { + if(slots[0] == null) return null; + + if(slots[0].getItem() == ModItems.mold) { + return ((ItemMold) slots[0].getItem()).getMold(slots[0]); + } + + return null; + } + @Override public int getMoldSize() { return getInstalledMold().size; } - + @Override + public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { + if(this.type != null && this.type != stack.material) return false; + return this.amount >= this.getCapacity() && getInstalledMold() == null; + } @Override public int getCapacity() { ItemMold.Mold mold = this.getInstalledMold(); - return mold == null ? 0 : mold.getCost() * 10; + return mold == null ? 50000 : mold.getCost() * 50; } private int getWaterRequired() { - return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 10; + return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 50; } + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } + for(DirPos pos : getConPos()) { + sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } } @Override @@ -153,14 +203,15 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerStrandCaster(player.inventory, this); + return new ContainerMachineStrandCaster(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIStrandCaster(player.inventory, this); + return new GUIMachineStrandCaster(player.inventory, this); } + public void networkPack(NBTTagCompound nbt, int range) { if(!worldObj.isRemote) @@ -170,6 +221,20 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public void networkUnpack(NBTTagCompound nbt) { water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); + + } + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + water.writeToNBT(nbt, "w"); + steam.writeToNBT(nbt, "s"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + water.readFromNBT(nbt, "w"); + steam.readFromNBT(nbt, "s"); } @Override public boolean isItemValidForSlot(int i, ItemStack stack) { @@ -192,4 +257,47 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase return new int[] { 1, 2, 3, 4, 5, 6}; } + public void markChanged() { + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + @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) <= 128; + } + } + + + @Override + public boolean canInsertItem(int slot, ItemStack itemStack, int side) { + return this.isItemValidForSlot(slot, itemStack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return !this.isItemValidForSlot(slot, itemStack); + } + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 7 + ); + } + + return bb; + } + + + } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f9681a2c0..7e4307b2a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -720,6 +720,7 @@ container.machineSelenium=Radial Performance Engine container.machineShredder=Shredder container.machineSILEX=SILEX container.machineSolidifier=Solidifier +container.machineStrandCaster=Strand Caster container.machineTurbine=Steam Turbine container.machineTurbofan=Turbofan container.machineWoodBurner=Wood-Burner @@ -5190,6 +5191,7 @@ tile.machine_stirling_creative.desc=Turns heat into energy. Requires external he tile.machine_stirling_steel.name=Heavy Stirling Engine tile.machine_stirling_steel.desc=Turns heat into energy. Requires external heat source.$Uses a much heavier gear to support higher temperatures.$Heat transfer rate: T*0.1 TU/t$Max intake: 1500 TU/t$Efficiency: 50%% tile.machine_storage_drum.name=Nuclear Waste Disposal Drum +tile.machine_strand_caster.name=Strand Caster tile.machine_telelinker.name=Turret Telemetry Linker tile.machine_teleporter.name=Teleporter tile.machine_tower_large.name=Cooling Tower diff --git a/src/main/resources/assets/hbm/models/machines/strand_caster.obj b/src/main/resources/assets/hbm/models/machines/strand_caster.obj new file mode 100644 index 000000000..2a3ac8b78 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/strand_caster.obj @@ -0,0 +1,1214 @@ +# Blender v2.79 (sub 0) OBJ File: 'strand_caster.blend' +# www.blender.org +o Plane +v -1.000000 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v -1.000000 0.000000 -6.000000 +v 1.000000 0.000000 -6.000000 +v -1.000000 0.750000 -6.000000 +v -1.000000 0.750000 1.000000 +v 1.000000 0.750000 1.000000 +v 1.000000 0.750000 -6.000000 +v -1.000000 2.000000 1.000000 +v 1.000000 2.000000 1.000000 +v -1.000000 3.000000 1.000000 +v 1.000000 3.000000 1.000000 +v -1.000000 2.000000 -1.000000 +v 1.000000 2.000000 -1.000000 +v -1.000000 3.000000 -1.000000 +v 1.000000 3.000000 -1.000000 +v -0.875000 3.000000 0.875000 +v 0.875000 3.000000 0.875000 +v -0.875000 3.000000 -0.875000 +v 0.875000 3.000000 -0.875000 +v -0.875000 2.125000 0.875000 +v 0.875000 2.125000 0.875000 +v -0.875000 2.125000 -0.875000 +v 0.875000 2.125000 -0.875000 +v -0.750000 2.000000 0.750000 +v 0.750000 2.000000 0.750000 +v -0.750000 2.000000 -0.750000 +v 0.750000 2.000000 -0.750000 +v -0.750000 0.500000 -1.500000 +v -0.750000 0.500000 0.750000 +v 0.750000 0.500000 0.750000 +v 0.750000 0.500000 -1.500000 +v -0.750000 0.750000 -5.750000 +v -0.750000 0.750000 0.750000 +v 0.750000 0.750000 0.750000 +v 0.750000 0.750000 -5.750000 +v -0.750000 0.500000 -5.750000 +v -0.750000 0.500000 0.750000 +v 0.750000 0.500000 0.750000 +v 0.750000 0.500000 -5.750000 +v -0.500000 0.937500 -1.500000 +v 0.500000 0.937500 -1.500000 +v -0.500000 0.937500 -5.250000 +v 0.500000 0.937500 -5.250000 +v -0.500000 1.062500 -5.250000 +v -0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -5.250000 +v 0.750000 1.250000 -1.500000 +v -0.750000 1.250000 -1.500000 +v 0.750000 0.812500 -3.125000 +v -0.750000 0.812500 -3.125000 +v -0.750000 0.812500 -2.125000 +v 0.750000 0.812500 -2.125000 +v -0.750000 0.724112 -2.088388 +v 0.750000 0.724112 -2.088388 +v -0.750000 0.687500 -2.000000 +v 0.750000 0.687500 -2.000000 +v -0.750000 0.724112 -1.911612 +v 0.750000 0.724112 -1.911612 +v -0.750000 0.812500 -1.875000 +v 0.750000 0.812500 -1.875000 +v -0.750000 0.900888 -1.911612 +v 0.750000 0.900888 -1.911612 +v -0.750000 0.937500 -2.000000 +v 0.750000 0.937500 -2.000000 +v -0.750000 0.900888 -2.088388 +v 0.750000 0.900888 -2.088388 +v -0.750000 0.724112 -3.088388 +v 0.750000 0.724112 -3.088388 +v -0.750000 0.687500 -3.000000 +v 0.750000 0.687500 -3.000000 +v -0.750000 0.724112 -2.911612 +v 0.750000 0.724112 -2.911612 +v -0.750000 0.812500 -2.875000 +v 0.750000 0.812500 -2.875000 +v -0.750000 0.900888 -2.911612 +v 0.750000 0.900888 -2.911612 +v -0.750000 0.937500 -3.000000 +v 0.750000 0.937500 -3.000000 +v -0.750000 0.900888 -3.088388 +v 0.750000 0.900888 -3.088388 +v 0.750000 0.812500 -4.125000 +v -0.750000 0.812500 -4.125000 +v -0.750000 0.724112 -4.088388 +v 0.750000 0.724112 -4.088388 +v -0.750000 0.687500 -4.000000 +v 0.750000 0.687500 -4.000000 +v -0.750000 0.724112 -3.911612 +v 0.750000 0.724112 -3.911612 +v -0.750000 0.812500 -3.875000 +v 0.750000 0.812500 -3.875000 +v -0.750000 0.900888 -3.911612 +v 0.750000 0.900888 -3.911612 +v -0.750000 0.937500 -4.000000 +v 0.750000 0.937500 -4.000000 +v -0.750000 0.900888 -4.088388 +v 0.750000 0.900888 -4.088388 +v 0.750000 0.812500 -5.125000 +v -0.750000 0.812500 -5.125000 +v -0.750000 0.724112 -5.088388 +v 0.750000 0.724112 -5.088388 +v -0.750000 0.687500 -5.000000 +v 0.750000 0.687500 -5.000000 +v -0.750000 0.724112 -4.911612 +v 0.750000 0.724112 -4.911612 +v -0.750000 0.812500 -4.875000 +v 0.750000 0.812500 -4.875000 +v -0.750000 0.900888 -4.911612 +v 0.750000 0.900888 -4.911612 +v -0.750000 0.937500 -5.000000 +v 0.750000 0.937500 -5.000000 +v -0.750000 0.900888 -5.088388 +v 0.750000 0.900888 -5.088388 +v 0.750000 1.187500 -3.625000 +v -0.750000 1.187500 -3.625000 +v -0.750000 1.187500 -2.625000 +v 0.750000 1.187500 -2.625000 +v -0.750000 1.099112 -2.588388 +v 0.750000 1.099112 -2.588388 +v -0.750000 1.062500 -2.500000 +v 0.750000 1.062500 -2.500000 +v -0.750000 1.099112 -2.411612 +v 0.750000 1.099112 -2.411612 +v -0.750000 1.187500 -2.375000 +v 0.750000 1.187500 -2.375000 +v -0.750000 1.275888 -2.411612 +v 0.750000 1.275888 -2.411612 +v -0.750000 1.312500 -2.500000 +v 0.750000 1.312500 -2.500000 +v -0.750000 1.275888 -2.588388 +v 0.750000 1.275888 -2.588388 +v -0.750000 1.099112 -3.588388 +v 0.750000 1.099112 -3.588388 +v -0.750000 1.062500 -3.500000 +v 0.750000 1.062500 -3.500000 +v -0.750000 1.099112 -3.411612 +v 0.750000 1.099112 -3.411612 +v -0.750000 1.187500 -3.375000 +v 0.750000 1.187500 -3.375000 +v -0.750000 1.275888 -3.411612 +v 0.750000 1.275888 -3.411612 +v -0.750000 1.312500 -3.500000 +v 0.750000 1.312500 -3.500000 +v -0.750000 1.275888 -3.588388 +v 0.750000 1.275888 -3.588388 +v 0.750000 1.187500 -4.625000 +v -0.750000 1.187500 -4.625000 +v -0.750000 1.099112 -4.588388 +v 0.750000 1.099112 -4.588388 +v -0.750000 1.062500 -4.500000 +v 0.750000 1.062500 -4.500000 +v -0.750000 1.099112 -4.411612 +v 0.750000 1.099112 -4.411612 +v -0.750000 1.187500 -4.375000 +v 0.750000 1.187500 -4.375000 +v -0.750000 1.275888 -4.411612 +v 0.750000 1.275888 -4.411612 +v -0.750000 1.312500 -4.500000 +v 0.750000 1.312500 -4.500000 +v -0.750000 1.275888 -4.588388 +v 0.750000 1.275888 -4.588388 +v 0.750000 0.937500 -2.125000 +v 0.875000 0.937500 -2.125000 +v 0.750000 0.937500 -2.375000 +v 0.875000 0.937500 -2.375000 +v 0.750000 1.062500 -2.375000 +v -0.750000 1.312500 -2.125000 +v -0.875000 1.312500 -2.125000 +v 0.875000 1.062500 -2.375000 +v -0.750000 1.062500 -2.375000 +v 0.750000 1.312500 -2.125000 +v 0.875000 1.312500 -2.125000 +v -0.875000 1.062500 -2.375000 +v 0.875000 1.062500 -4.625000 +v 0.750000 1.062500 -4.625000 +v -0.750000 0.937500 -2.375000 +v -0.875000 0.937500 -2.375000 +v -0.750000 0.937500 -2.125000 +v -0.875000 0.937500 -2.125000 +v 0.875000 1.312500 -4.875000 +v 0.750000 1.312500 -4.875000 +v 0.875000 0.937500 -4.625000 +v 0.750000 0.937500 -4.625000 +v 0.875000 0.937500 -4.875000 +v 0.750000 0.937500 -4.875000 +v -0.750000 1.062500 -4.625000 +v -0.875000 1.062500 -4.625000 +v -0.750000 1.312500 -4.875000 +v -0.875000 1.312500 -4.875000 +v -0.750000 0.937500 -4.625000 +v -0.875000 0.937500 -4.625000 +v -0.750000 0.937500 -4.875000 +v -0.875000 0.937500 -4.875000 +v 0.750000 0.937500 -1.625000 +v 0.875000 0.937500 -1.625000 +v -0.750000 0.937500 -1.625000 +v -0.875000 0.937500 -1.625000 +v 0.750000 0.937500 -5.375000 +v 0.875000 0.937500 -5.375000 +v -0.750000 0.937500 -5.375000 +v -0.875000 0.937500 -5.375000 +v 0.750000 0.750000 -1.625000 +v 0.875000 0.750000 -1.625000 +v -0.875000 0.750000 -1.625000 +v -0.750000 0.750000 -1.625000 +v 0.750000 0.750000 -5.375000 +v 0.875000 0.750000 -5.375000 +v -0.875000 0.750000 -5.375000 +v -0.750000 0.750000 -5.375000 +v 0.250000 1.250000 -1.500000 +v 0.161612 1.275888 -1.474112 +v 0.125000 1.338388 -1.411612 +v 0.161612 1.400888 -1.349112 +v 0.250000 1.426777 -1.323223 +v 0.338388 1.400888 -1.349112 +v 0.375000 1.338388 -1.411612 +v 0.338388 1.275888 -1.474112 +v 0.250000 1.426777 -1.573223 +v 0.161612 1.426777 -1.536612 +v 0.125000 1.426777 -1.448223 +v 0.161612 1.426777 -1.359835 +v 0.338388 1.426777 -1.359835 +v 0.375000 1.426777 -1.448223 +v 0.338388 1.426777 -1.536612 +v 0.250000 1.603553 -1.500000 +v 0.161612 1.577665 -1.474112 +v 0.125000 1.515165 -1.411612 +v 0.161612 1.452665 -1.349112 +v 0.338388 1.452665 -1.349112 +v 0.375000 1.515165 -1.411612 +v 0.338388 1.577665 -1.474112 +v -0.161612 1.275888 -1.474112 +v -0.125000 1.338388 -1.411612 +v -0.161612 1.400888 -1.349112 +v -0.250000 1.426777 -1.323223 +v -0.338388 1.400888 -1.349112 +v -0.375000 1.338388 -1.411612 +v -0.338388 1.275888 -1.474112 +v -0.250000 1.250000 -1.500000 +v 0.161612 2.152189 -0.899587 +v 0.250000 2.178077 -0.925476 +v 0.125000 2.089689 -0.837087 +v 0.161612 2.027189 -0.774587 +v 0.375000 2.089689 -0.837087 +v 0.338388 2.027189 -0.774587 +v 0.338388 2.152189 -0.899587 +v 0.250000 2.001301 -0.748699 +v -0.250000 1.426777 -1.573223 +v -0.338388 1.426777 -1.536612 +v -0.375000 1.426777 -1.448223 +v -0.338388 1.426777 -1.359835 +v -0.161612 1.426777 -1.359835 +v -0.125000 1.426777 -1.448223 +v -0.161612 1.426777 -1.536612 +v -0.250000 1.603553 -1.500000 +v -0.338388 1.577665 -1.474112 +v -0.375000 1.515165 -1.411612 +v -0.338388 1.452665 -1.349112 +v -0.161612 1.452665 -1.349112 +v -0.125000 1.515165 -1.411612 +v -0.161612 1.577665 -1.474112 +v -0.338388 2.152189 -0.899587 +v -0.250000 2.178077 -0.925476 +v -0.375000 2.089689 -0.837087 +v -0.338388 2.027189 -0.774587 +v -0.125000 2.089689 -0.837087 +v -0.161612 2.027189 -0.774587 +v -0.161612 2.152189 -0.899587 +v -0.250000 2.001301 -0.748699 +v 0.750000 0.750000 -0.125000 +v 0.750000 2.000000 -0.125000 +v 0.838388 0.750000 -0.088388 +v 0.838388 2.000000 -0.088388 +v 0.875000 0.750000 0.000000 +v 0.875000 2.000000 0.000000 +v 0.838388 0.750000 0.088388 +v 0.838388 2.000000 0.088388 +v 0.750000 0.750000 0.125000 +v 0.750000 2.000000 0.125000 +v 0.750000 0.750000 0.375000 +v 0.750000 2.000000 0.375000 +v 0.838388 0.750000 0.411612 +v 0.838388 2.000000 0.411612 +v 0.875000 0.750000 0.500000 +v 0.875000 2.000000 0.500000 +v 0.838388 0.750000 0.588388 +v 0.838388 2.000000 0.588388 +v 0.750000 0.750000 0.625000 +v 0.750000 2.000000 0.625000 +v 0.750000 0.750000 -0.625000 +v 0.750000 2.000000 -0.625000 +v 0.838388 0.750000 -0.588388 +v 0.838388 2.000000 -0.588388 +v 0.875000 0.750000 -0.500000 +v 0.875000 2.000000 -0.500000 +v 0.838388 0.750000 -0.411612 +v 0.838388 2.000000 -0.411612 +v 0.750000 0.750000 -0.375000 +v 0.750000 2.000000 -0.375000 +v -0.750000 0.750000 -0.125000 +v -0.750000 2.000000 -0.125000 +v -0.750000 0.750000 0.125000 +v -0.750000 2.000000 0.125000 +v -0.838388 0.750000 0.088388 +v -0.838388 2.000000 0.088388 +v -0.875000 0.750000 0.000000 +v -0.875000 2.000000 0.000000 +v -0.838388 0.750000 -0.088388 +v -0.838388 2.000000 -0.088388 +v -0.750000 0.750000 0.375000 +v -0.750000 2.000000 0.375000 +v -0.750000 0.750000 0.625000 +v -0.750000 2.000000 0.625000 +v -0.838388 0.750000 0.588388 +v -0.838388 2.000000 0.588388 +v -0.875000 0.750000 0.500000 +v -0.875000 2.000000 0.500000 +v -0.838388 0.750000 0.411612 +v -0.838388 2.000000 0.411612 +v -0.750000 0.750000 -0.625000 +v -0.750000 2.000000 -0.625000 +v -0.750000 0.750000 -0.375000 +v -0.750000 2.000000 -0.375000 +v -0.838388 0.750000 -0.411612 +v -0.838388 2.000000 -0.411612 +v -0.875000 0.750000 -0.500000 +v -0.875000 2.000000 -0.500000 +v -0.838388 0.750000 -0.588388 +v -0.838388 2.000000 -0.588388 +vt 0.484375 0.100000 +vt 0.046875 0.366667 +vt 0.046875 0.100000 +vt 0.484375 0.733333 +vt 0.468750 0.500000 +vt 0.484375 0.466667 +vt 0.531250 0.366667 +vt 0.484375 0.366667 +vt -0.000000 0.100000 +vt 0.046875 0.466667 +vt 0.484375 -0.000000 +vt 0.656250 0.600000 +vt 0.531250 0.466667 +vt 0.656250 0.466667 +vt 0.656250 0.466667 +vt 0.531250 0.600000 +vt 0.531250 0.466667 +vt 0.531250 0.466667 +vt 0.656250 0.600000 +vt 0.531250 0.600000 +vt 0.531250 0.200000 +vt 0.656250 0.466667 +vt 0.656250 0.600000 +vt 0.531250 0.466667 +vt 0.656250 0.466667 +vt 0.539062 0.616667 +vt 0.531250 0.600000 +vt 0.648438 0.616667 +vt 0.539062 0.733333 +vt 0.539062 0.616667 +vt 0.656250 0.600000 +vt 0.539062 0.616667 +vt 0.539062 0.616667 +vt 0.531250 0.600000 +vt 0.539062 0.733333 +vt 0.648438 0.966667 +vt 0.539062 0.966667 +vt 0.648438 0.616667 +vt 0.539062 0.733333 +vt 0.648438 0.616667 +vt 0.648438 0.616667 +vt 0.539062 0.733333 +vt 0.468750 0.733333 +vt 0.062500 0.766667 +vt 0.062500 0.733333 +vt 0.062500 0.700000 +vt 0.046875 0.733333 +vt 0.531250 -0.000000 +vt 0.671875 -0.000000 +vt 0.671875 0.100000 +vt 0.812500 0.200000 +vt 0.765625 -0.000000 +vt 0.906250 -0.000000 +vt 0.765625 0.100000 +vt 0.906250 0.200000 +vt 1.000000 -0.000000 +vt 1.000000 0.200000 +vt 0.058594 0.500000 +vt 0.468750 0.700000 +vt 0.468750 0.966667 +vt 0.062500 0.966667 +vt 0.062500 1.000000 +vt 0.468750 1.000000 +vt 0.484375 0.966667 +vt 0.468750 0.766667 +vt 0.484375 0.766667 +vt 0.046875 0.766667 +vt 0.046875 0.966667 +vt 0.890625 0.566667 +vt 0.656250 0.700000 +vt 0.656250 0.566667 +vt 0.656250 0.566667 +vt 0.890625 0.700000 +vt 0.656250 0.700000 +vt 0.664062 0.700000 +vt 0.656250 0.566667 +vt 0.664062 0.566667 +vt 0.890625 0.683333 +vt 0.656250 0.700000 +vt 0.656250 0.683333 +vt 0.656250 0.583333 +vt 0.890625 0.566667 +vt 0.890625 0.583333 +vt 0.671875 0.200000 +vt 0.765625 0.200000 +vt 0.695312 0.550000 +vt 0.679688 0.566667 +vt 0.679688 0.516667 +vt 0.875000 0.500000 +vt 0.851562 0.516667 +vt 0.851562 0.500000 +vt 0.687500 0.433333 +vt 0.695312 0.450000 +vt 0.687500 0.450000 +vt 0.695312 0.466667 +vt 0.679688 0.450000 +vt 0.695312 0.450000 +vt 0.835938 0.550000 +vt 0.851562 0.566667 +vt 0.835938 0.566667 +vt 0.679688 0.500000 +vt 0.656250 0.516667 +vt 0.656250 0.500000 +vt 0.695312 0.433333 +vt 0.835938 0.450000 +vt 0.695312 0.450000 +vt 0.835938 0.433333 +vt 0.843750 0.450000 +vt 0.695312 0.466667 +vt 0.679688 0.500000 +vt 0.851562 0.500000 +vt 0.679688 0.450000 +vt 0.695312 0.450000 +vt 0.835938 0.466667 +vt 0.851562 0.450000 +vt 0.695312 0.433333 +vt 0.835938 0.450000 +vt 0.679688 0.516667 +vt 0.835938 0.550000 +vt 0.851562 0.566667 +vt 0.835938 0.566667 +vt 0.656250 0.516667 +vt 0.656250 0.500000 +vt 0.695312 0.550000 +vt 0.679688 0.566667 +vt 0.835938 0.466667 +vt 0.851562 0.450000 +vt 0.835938 0.433333 +vt 0.843750 0.450000 +vt 0.687500 0.433333 +vt 0.687500 0.450000 +vt 0.875000 0.500000 +vt 0.851562 0.516667 +vt 0.902344 0.391667 +vt 0.667969 0.408333 +vt 0.667969 0.391667 +vt 0.902344 0.391667 +vt 0.667969 0.408333 +vt 0.667969 0.391667 +vt 0.902344 0.366667 +vt 0.914062 0.408333 +vt 0.902344 0.408333 +vt 0.656250 0.391667 +vt 0.667969 0.433333 +vt 0.902344 0.408333 +vt 0.667969 0.433333 +vt 0.914062 0.408333 +vt 0.656250 0.391667 +vt 0.902344 0.366667 +vt 0.531250 0.100000 +vt 0.000000 0.366667 +vt 0.046875 -0.000000 +vt 0.656250 0.200000 +vt 0.648438 0.733333 +vt 0.648438 0.733333 +vt 0.648438 0.733333 +vt 0.648438 0.733333 +vt 0.621094 0.200000 +vt 0.531250 0.200000 +vt 0.890625 0.700000 +vt 0.890625 0.566667 +vt 0.656250 0.700000 +vt 0.890625 0.700000 +vt 0.656250 0.566667 +vt 0.695312 0.566667 +vt 0.875000 0.516667 +vt 0.843750 0.433333 +vt 0.835938 0.450000 +vt 0.695312 0.566667 +vt 0.835938 0.450000 +vt 0.843750 0.433333 +vt 0.875000 0.516667 +vt 0.667969 0.366667 +vt 0.914062 0.391667 +vt 0.656250 0.408333 +vt 0.902344 0.433333 +vt 0.902344 0.433333 +vt 0.914062 0.391667 +vt 0.656250 0.408333 +vt 0.667969 0.366667 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.921875 0.400000 +vt 0.960938 0.200000 +vt 0.968750 0.400000 +vt 0.960938 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.929688 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.921875 0.400000 +vt 0.914062 0.400000 +vt 0.921875 0.200000 +vt 0.921875 0.400000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.929688 0.200000 +vt 0.937500 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.400000 +vt 0.929688 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.200000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.921875 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.929688 0.200000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.921875 0.400000 +vt 0.960938 0.200000 +vt 0.968750 0.400000 +vt 0.960938 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.929688 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.921875 0.400000 +vt 0.914062 0.400000 +vt 0.921875 0.200000 +vt 0.921875 0.400000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.929688 0.200000 +vt 0.937500 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.400000 +vt 0.929688 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.200000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.695312 0.341667 +vt 0.703125 0.333333 +vt 0.703125 0.350000 +vt 0.710938 0.358333 +vt 0.718750 0.333333 +vt 0.718750 0.358333 +vt 0.726562 0.358333 +vt 0.734375 0.333333 +vt 0.742188 0.341667 +vt 0.734375 0.350000 +vt 0.710938 0.333333 +vt 0.726562 0.333333 +vt 0.726562 0.308333 +vt 0.734375 0.316667 +vt 0.742188 0.333333 +vt 0.703125 0.316667 +vt 0.695312 0.325000 +vt 0.695312 0.333333 +vt 0.710938 0.308333 +vt 0.687500 0.333333 +vt 0.750000 0.333333 +vt 0.742188 0.325000 +vt 0.742188 0.200000 +vt 0.750000 0.308333 +vt 0.742188 0.308333 +vt 0.718750 0.358333 +vt 0.726562 0.333333 +vt 0.726562 0.358333 +vt 0.734375 0.200000 +vt 0.734375 0.308333 +vt 0.695312 0.200000 +vt 0.703125 0.308333 +vt 0.695312 0.308333 +vt 0.718750 0.200000 +vt 0.718750 0.308333 +vt 0.703125 0.200000 +vt 0.695312 0.341667 +vt 0.703125 0.333333 +vt 0.703125 0.350000 +vt 0.687500 0.200000 +vt 0.687500 0.308333 +vt 0.710938 0.333333 +vt 0.710938 0.358333 +vt 0.718750 0.333333 +vt 0.726562 0.308333 +vt 0.703125 0.316667 +vt 0.734375 0.333333 +vt 0.742188 0.341667 +vt 0.734375 0.350000 +vt 0.734375 0.316667 +vt 0.742188 0.333333 +vt 0.710938 0.200000 +vt 0.695312 0.333333 +vt 0.710938 0.308333 +vt 0.687500 0.333333 +vt 0.695312 0.325000 +vt 0.750000 0.333333 +vt 0.742188 0.325000 +vt 0.742188 0.200000 +vt 0.750000 0.308333 +vt 0.742188 0.308333 +vt 0.734375 0.200000 +vt 0.734375 0.308333 +vt 0.695312 0.200000 +vt 0.703125 0.308333 +vt 0.695312 0.308333 +vt 0.718750 0.200000 +vt 0.718750 0.308333 +vt 0.703125 0.200000 +vt 0.687500 0.200000 +vt 0.687500 0.308333 +vt 0.710938 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.679688 0.200000 +vt 0.687500 0.366667 +vt 0.687500 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.679688 0.200000 +vt 0.687500 0.366667 +vt 0.687500 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.750000 0.200000 +vt 0.726562 0.200000 +vt 0.750000 0.200000 +vt 0.726562 0.200000 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 0.7071 0.7071 +vn -0.7311 0.2611 0.6303 +vn -0.9955 -0.0000 -0.0949 +vn -0.9947 -0.0393 -0.0948 +vn -0.6333 -0.2962 -0.7150 +vn -0.0000 -0.3827 -0.9239 +vn 0.6333 -0.2962 -0.7150 +vn 0.9955 -0.0000 -0.0949 +vn 0.7311 0.2611 0.6303 +vn 0.9947 -0.0393 -0.0948 +vn -0.6630 -0.0000 -0.7486 +vn 0.6630 -0.0000 -0.7486 +vn 0.6794 0.4063 -0.6110 +vn 0.9987 0.0196 -0.0473 +vn 0.7574 -0.0000 0.6530 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.3800 0.5728 +vn -0.7574 -0.0000 0.6530 +vn -0.6794 0.4063 -0.6110 +vn 0.0000 -0.5562 0.8311 +vn 0.7263 -0.3800 0.5728 +vn 0.7071 -0.5000 0.5000 +vn -0.7071 -0.5000 0.5000 +vn 0.0000 0.5628 -0.8266 +vn -0.7071 0.5000 -0.5000 +vn 0.3827 0.0000 -0.9239 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.3827 0.0000 0.9239 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 -0.9239 +vn 0.7071 0.5000 -0.5000 +s off +f 3/1/1 2/2/1 1/3/1 +f 5/4/2 36/5/2 8/6/2 +f 3/1/3 8/7/3 4/8/3 +f 2/2/4 6/9/4 1/3/4 +f 4/8/5 7/10/5 2/2/5 +f 1/3/6 5/11/6 3/1/6 +f 12/12/4 9/13/4 10/14/4 +f 13/15/3 16/16/3 14/17/3 +f 10/18/5 16/19/5 12/20/5 +f 9/21/1 14/22/1 10/18/1 +f 11/23/6 13/24/6 9/25/6 +f 11/23/2 19/26/2 15/27/2 +f 17/28/5 23/29/5 19/26/5 +f 16/19/2 18/30/2 12/20/2 +f 15/31/2 20/32/2 16/16/2 +f 12/12/2 17/33/2 11/34/2 +f 22/35/2 23/36/2 21/37/2 +f 19/38/4 24/39/4 20/32/4 +f 20/40/6 22/35/6 18/30/6 +f 18/41/3 21/42/3 17/33/3 +f 36/43/6 39/44/6 35/45/6 +f 7/10/2 34/46/2 6/47/2 +f 31/48/5 32/49/5 49/50/5 +f 27/51/6 29/52/6 30/53/6 +f 49/50/3 29/52/3 50/54/3 +f 25/55/4 31/56/4 26/57/4 +f 8/6/2 35/58/2 7/10/2 +f 6/47/2 33/59/2 5/4/2 +f 39/44/2 37/60/2 38/61/2 +f 34/62/5 37/60/5 33/63/5 +f 33/64/4 40/65/4 36/66/4 +f 35/67/3 38/61/3 34/68/3 +f 43/69/1 42/70/1 41/71/1 +f 47/72/2 45/73/2 46/74/2 +f 43/75/3 48/76/3 44/77/3 +f 44/78/5 47/79/5 42/80/5 +f 41/81/6 45/82/6 43/83/6 +f 28/84/7 50/54/7 27/85/7 +f 167/86/6 163/87/6 172/88/6 +f 193/89/3 190/90/3 189/91/3 +f 165/92/3 170/93/3 166/94/3 +f 170/95/5 164/96/5 166/97/5 +f 188/98/6 194/99/6 192/100/6 +f 173/101/4 163/102/4 164/103/4 +f 174/104/1 187/105/1 171/106/1 +f 188/107/4 191/108/4 187/105/4 +f 171/109/5 189/91/5 168/110/5 +f 181/111/2 172/88/2 173/101/2 +f 171/109/5 179/112/5 177/113/5 +f 187/114/5 193/115/5 189/91/5 +f 167/116/1 175/117/1 170/93/1 +f 189/91/2 169/118/2 168/110/2 +f 176/119/6 186/120/6 184/121/6 +f 170/95/5 181/111/5 173/101/5 +f 172/88/6 176/119/6 167/86/6 +f 168/110/4 180/122/4 179/123/4 +f 169/118/6 188/98/6 174/124/6 +f 174/124/6 180/125/6 169/118/6 +f 175/126/5 185/127/5 181/111/5 +f 176/128/4 183/129/4 175/117/4 +f 178/130/3 171/106/3 177/131/3 +f 185/132/3 182/133/3 181/111/3 +f 201/134/2 198/135/2 197/136/2 +f 200/137/2 195/138/2 196/139/2 +f 197/136/5 210/140/5 201/134/5 +f 200/137/3 207/141/3 199/142/3 +f 195/138/4 204/143/4 196/139/4 +f 199/142/6 203/144/6 195/138/6 +f 202/145/6 205/146/6 198/135/6 +f 201/134/3 209/147/3 202/145/3 +f 198/135/4 206/148/4 197/136/4 +f 196/139/5 208/149/5 200/137/5 +f 3/1/1 4/8/1 2/2/1 +f 5/4/2 33/59/2 36/5/2 +f 3/1/3 5/150/3 8/7/3 +f 2/2/4 7/151/4 6/9/4 +f 4/8/5 8/6/5 7/10/5 +f 1/3/6 6/152/6 5/11/6 +f 12/12/4 11/34/4 9/13/4 +f 13/15/3 15/31/3 16/16/3 +f 10/18/5 14/22/5 16/19/5 +f 9/21/1 13/153/1 14/22/1 +f 11/23/6 15/27/6 13/24/6 +f 11/23/2 17/28/2 19/26/2 +f 17/28/5 21/154/5 23/29/5 +f 16/19/2 20/40/2 18/30/2 +f 15/31/2 19/38/2 20/32/2 +f 12/12/2 18/41/2 17/33/2 +f 22/35/2 24/155/2 23/36/2 +f 19/38/4 23/156/4 24/39/4 +f 20/40/6 24/155/6 22/35/6 +f 18/41/3 22/157/3 21/42/3 +f 36/43/6 40/65/6 39/44/6 +f 7/10/2 35/58/2 34/46/2 +f 49/50/5 28/158/5 31/48/5 +f 28/158/5 26/159/5 31/48/5 +f 30/53/6 25/55/6 27/51/6 +f 27/51/6 50/54/6 29/52/6 +f 49/50/3 32/49/3 29/52/3 +f 25/55/4 30/53/4 31/56/4 +f 8/6/2 36/5/2 35/58/2 +f 6/47/2 34/46/2 33/59/2 +f 39/44/2 40/65/2 37/60/2 +f 34/62/5 38/61/5 37/60/5 +f 33/64/4 37/60/4 40/65/4 +f 35/67/3 39/44/3 38/61/3 +f 43/69/1 44/160/1 42/70/1 +f 47/72/2 48/161/2 45/73/2 +f 43/75/3 45/162/3 48/76/3 +f 44/78/5 48/163/5 47/79/5 +f 41/81/6 46/164/6 45/82/6 +f 28/84/7 49/50/7 50/54/7 +f 167/86/6 165/165/6 163/87/6 +f 193/89/3 194/166/3 190/90/3 +f 165/92/3 167/116/3 170/93/3 +f 170/95/5 173/101/5 164/96/5 +f 188/98/6 190/90/6 194/99/6 +f 173/101/4 172/88/4 163/102/4 +f 174/104/1 188/107/1 187/105/1 +f 188/107/4 192/167/4 191/108/4 +f 171/109/5 187/114/5 189/91/5 +f 181/111/2 182/133/2 172/88/2 +f 171/109/5 168/110/5 179/112/5 +f 187/114/5 191/168/5 193/115/5 +f 167/116/1 176/128/1 175/117/1 +f 189/91/2 190/90/2 169/118/2 +f 176/119/6 182/133/6 186/120/6 +f 170/95/5 175/126/5 181/111/5 +f 172/88/6 182/133/6 176/119/6 +f 168/110/4 169/118/4 180/122/4 +f 169/118/6 190/90/6 188/98/6 +f 174/124/6 178/169/6 180/125/6 +f 175/126/5 183/170/5 185/127/5 +f 176/128/4 184/171/4 183/129/4 +f 178/130/3 174/104/3 171/106/3 +f 185/132/3 186/172/3 182/133/3 +f 201/134/2 202/145/2 198/135/2 +f 200/137/2 199/142/2 195/138/2 +f 197/136/5 206/173/5 210/140/5 +f 200/137/3 208/174/3 207/141/3 +f 195/138/4 203/175/4 204/143/4 +f 199/142/6 207/176/6 203/144/6 +f 202/145/6 209/177/6 205/146/6 +f 201/134/3 210/178/3 209/147/3 +f 198/135/4 205/179/4 206/148/4 +f 196/139/5 204/180/5 208/149/5 +s 1 +f 90/181/8 91/182/4 89/183/8 +f 54/184/3 55/185/9 53/186/3 +f 78/187/10 79/188/2 77/189/10 +f 56/190/9 57/191/1 55/185/9 +f 94/192/10 95/193/2 93/194/10 +f 76/195/4 77/189/10 75/196/4 +f 58/197/1 59/198/8 57/199/1 +f 74/200/8 75/196/4 73/201/8 +f 60/202/8 61/203/4 59/198/8 +f 72/204/1 73/201/8 71/205/1 +f 62/206/4 63/207/10 61/203/4 +f 82/208/7 52/209/3 81/210/7 +f 70/211/9 71/212/1 69/213/9 +f 64/214/10 65/215/2 63/207/10 +f 51/216/3 69/213/9 52/209/3 +f 66/217/2 67/218/7 65/215/2 +f 92/219/4 93/194/10 91/182/4 +f 80/220/2 81/210/7 79/188/2 +f 68/221/7 53/186/3 67/218/7 +f 88/222/1 89/183/8 87/223/1 +f 98/224/7 84/225/3 97/226/7 +f 86/227/9 87/228/1 85/229/9 +f 83/230/3 85/229/9 84/225/3 +f 96/231/2 97/226/7 95/193/2 +f 106/232/8 107/233/4 105/234/8 +f 110/235/10 111/236/2 109/237/10 +f 108/238/4 109/237/10 107/233/4 +f 104/239/1 105/234/8 103/240/1 +f 114/241/7 100/242/3 113/243/7 +f 102/244/9 103/245/1 101/246/9 +f 99/247/3 101/246/9 100/242/3 +f 112/248/2 113/243/7 111/236/2 +f 154/249/8 155/250/4 153/251/8 +f 118/252/3 119/253/9 117/254/3 +f 142/255/10 143/256/2 141/257/10 +f 120/258/9 121/259/1 119/253/9 +f 158/260/10 159/261/2 157/262/10 +f 140/263/4 141/257/10 139/264/4 +f 122/265/1 123/266/8 121/267/1 +f 138/268/8 139/264/4 137/269/8 +f 124/270/8 125/271/4 123/266/8 +f 136/272/1 137/269/8 135/273/1 +f 126/274/4 127/275/10 125/271/4 +f 146/276/7 116/277/3 145/278/7 +f 134/279/9 135/280/1 133/281/9 +f 128/282/10 129/283/2 127/275/10 +f 115/284/3 133/281/9 116/277/3 +f 130/285/2 131/286/7 129/283/2 +f 156/287/4 157/262/10 155/250/4 +f 144/288/2 145/278/7 143/256/2 +f 132/289/7 117/254/3 131/286/7 +f 152/290/1 153/251/8 151/291/1 +f 162/292/7 148/293/3 161/294/7 +f 150/295/9 151/296/1 149/297/9 +f 147/298/3 149/297/9 148/293/3 +f 160/299/2 161/294/7 159/261/2 +f 214/300/11 221/301/12 213/302/13 +f 212/303/14 219/304/3 211/305/15 +f 219/304/3 218/306/16 211/305/15 +f 224/307/17 216/308/18 217/309/19 +f 213/302/13 220/310/20 212/303/14 +f 225/311/21 217/309/19 218/306/16 +f 219/304/3 232/312/22 225/311/21 +f 231/313/23 223/314/24 224/307/17 +f 228/315/25 220/310/20 221/301/12 +f 225/311/21 231/313/23 224/307/17 +f 229/316/26 221/301/12 222/317/27 +f 227/318/28 219/304/3 220/310/20 +f 214/300/11 215/319/29 222/317/27 +f 222/317/27 215/319/29 229/316/26 +f 215/320/29 216/308/18 223/314/24 +f 223/314/24 230/321/30 215/320/29 +f 246/322/31 215/323/29 230/324/30 +f 240/325/15 255/326/21 233/327/16 +f 232/312/22 245/328/5 231/329/23 +f 244/330/32 228/331/25 229/332/26 +f 242/333/7 232/312/22 226/334/33 +f 245/328/5 230/324/30 231/329/23 +f 243/335/6 227/318/28 228/331/25 +f 237/336/11 251/337/12 238/338/13 +f 248/339/8 229/332/26 215/340/29 +f 238/338/13 250/341/20 239/342/14 +f 249/343/3 262/344/22 255/326/21 +f 258/345/25 250/341/20 251/337/12 +f 250/341/20 240/325/15 239/342/14 +f 254/346/17 235/347/18 234/348/19 +f 255/326/21 234/348/19 233/327/16 +f 261/349/23 253/350/24 254/346/17 +f 241/351/34 226/334/33 227/318/28 +f 255/326/21 261/349/23 254/346/17 +f 252/352/27 258/345/25 251/337/12 +f 257/353/28 249/343/3 250/341/20 +f 237/336/11 236/354/29 252/352/27 +f 252/352/27 236/354/29 259/355/26 +f 236/356/29 235/347/18 253/350/24 +f 253/350/24 260/357/30 236/356/29 +f 268/358/31 236/359/29 260/360/30 +f 262/344/22 267/361/5 261/362/23 +f 266/363/32 258/364/25 259/365/26 +f 264/366/7 262/344/22 256/367/33 +f 267/361/5 260/360/30 261/362/23 +f 265/368/6 257/353/28 258/364/25 +f 270/369/8 259/365/26 236/370/29 +f 263/371/34 256/367/33 257/353/28 +f 272/372/35 273/373/36 271/374/35 +f 274/375/36 275/376/5 273/373/36 +f 276/377/5 277/378/37 275/376/5 +f 278/379/37 279/380/38 277/378/37 +f 284/381/36 285/382/5 283/383/36 +f 282/384/35 283/383/36 281/385/35 +f 286/386/5 287/387/37 285/382/5 +f 288/388/37 289/389/38 287/387/37 +f 294/390/36 295/391/5 293/392/36 +f 292/393/35 293/392/36 291/394/35 +f 296/395/5 297/396/37 295/391/5 +f 298/397/37 299/398/38 297/396/37 +f 304/399/39 305/400/40 303/401/39 +f 306/402/40 307/403/6 305/400/40 +f 308/404/6 309/405/41 307/403/6 +f 310/406/41 301/407/42 309/405/41 +f 314/408/39 315/409/40 313/410/39 +f 316/411/40 317/412/6 315/409/40 +f 318/413/6 319/414/41 317/412/6 +f 320/415/41 311/416/42 319/414/41 +f 324/417/39 325/418/40 323/419/39 +f 326/420/40 327/421/6 325/418/40 +f 328/422/6 329/423/41 327/421/6 +f 330/424/41 321/425/42 329/423/41 +f 90/181/8 92/219/4 91/182/4 +f 54/184/3 56/190/9 55/185/9 +f 78/187/10 80/220/2 79/188/2 +f 56/190/9 58/426/1 57/191/1 +f 94/192/10 96/231/2 95/193/2 +f 76/195/4 78/187/10 77/189/10 +f 58/197/1 60/202/8 59/198/8 +f 74/200/8 76/195/4 75/196/4 +f 60/202/8 62/206/4 61/203/4 +f 72/204/1 74/200/8 73/201/8 +f 62/206/4 64/214/10 63/207/10 +f 82/208/7 51/216/3 52/209/3 +f 70/211/9 72/427/1 71/212/1 +f 64/214/10 66/217/2 65/215/2 +f 51/216/3 70/211/9 69/213/9 +f 66/217/2 68/221/7 67/218/7 +f 92/219/4 94/192/10 93/194/10 +f 80/220/2 82/208/7 81/210/7 +f 68/221/7 54/184/3 53/186/3 +f 88/222/1 90/181/8 89/183/8 +f 98/224/7 83/230/3 84/225/3 +f 86/227/9 88/428/1 87/228/1 +f 83/230/3 86/227/9 85/229/9 +f 96/231/2 98/224/7 97/226/7 +f 106/232/8 108/238/4 107/233/4 +f 110/235/10 112/248/2 111/236/2 +f 108/238/4 110/235/10 109/237/10 +f 104/239/1 106/232/8 105/234/8 +f 114/241/7 99/247/3 100/242/3 +f 102/244/9 104/429/1 103/245/1 +f 99/247/3 102/244/9 101/246/9 +f 112/248/2 114/241/7 113/243/7 +f 154/249/8 156/287/4 155/250/4 +f 118/252/3 120/258/9 119/253/9 +f 142/255/10 144/288/2 143/256/2 +f 120/258/9 122/430/1 121/259/1 +f 158/260/10 160/299/2 159/261/2 +f 140/263/4 142/255/10 141/257/10 +f 122/265/1 124/270/8 123/266/8 +f 138/268/8 140/263/4 139/264/4 +f 124/270/8 126/274/4 125/271/4 +f 136/272/1 138/268/8 137/269/8 +f 126/274/4 128/282/10 127/275/10 +f 146/276/7 115/284/3 116/277/3 +f 134/279/9 136/431/1 135/280/1 +f 128/282/10 130/285/2 129/283/2 +f 115/284/3 134/279/9 133/281/9 +f 130/285/2 132/289/7 131/286/7 +f 156/287/4 158/260/10 157/262/10 +f 144/288/2 146/276/7 145/278/7 +f 132/289/7 118/252/3 117/254/3 +f 152/290/1 154/249/8 153/251/8 +f 162/292/7 147/298/3 148/293/3 +f 150/295/9 152/432/1 151/296/1 +f 147/298/3 150/295/9 149/297/9 +f 160/299/2 162/292/7 161/294/7 +f 214/300/11 222/317/27 221/301/12 +f 212/303/14 220/310/20 219/304/3 +f 219/304/3 225/311/21 218/306/16 +f 224/307/17 223/314/24 216/308/18 +f 213/302/13 221/301/12 220/310/20 +f 225/311/21 224/307/17 217/309/19 +f 219/304/3 226/334/33 232/312/22 +f 231/313/23 230/321/30 223/314/24 +f 228/315/25 227/318/28 220/310/20 +f 225/311/21 232/312/22 231/313/23 +f 229/316/26 228/315/25 221/301/12 +f 227/318/28 226/334/33 219/304/3 +f 246/322/31 248/433/8 215/323/29 +f 240/325/15 249/343/3 255/326/21 +f 232/312/22 247/434/43 245/328/5 +f 244/330/32 243/335/6 228/331/25 +f 242/333/7 247/434/43 232/312/22 +f 245/328/5 246/322/31 230/324/30 +f 243/335/6 241/351/34 227/318/28 +f 237/336/11 252/352/27 251/337/12 +f 248/339/8 244/330/32 229/332/26 +f 238/338/13 251/337/12 250/341/20 +f 249/343/3 256/367/33 262/344/22 +f 258/345/25 257/353/28 250/341/20 +f 250/341/20 249/343/3 240/325/15 +f 254/346/17 253/350/24 235/347/18 +f 255/326/21 254/346/17 234/348/19 +f 261/349/23 260/357/30 253/350/24 +f 241/351/34 242/333/7 226/334/33 +f 255/326/21 262/344/22 261/349/23 +f 252/352/27 259/355/26 258/345/25 +f 257/353/28 256/367/33 249/343/3 +f 268/358/31 270/435/8 236/359/29 +f 262/344/22 269/436/43 267/361/5 +f 266/363/32 265/368/6 258/364/25 +f 264/366/7 269/436/43 262/344/22 +f 267/361/5 268/358/31 260/360/30 +f 265/368/6 263/371/34 257/353/28 +f 270/369/8 266/363/32 259/365/26 +f 263/371/34 264/366/7 256/367/33 +f 272/372/35 274/375/36 273/373/36 +f 274/375/36 276/377/5 275/376/5 +f 276/377/5 278/379/37 277/378/37 +f 278/379/37 280/437/38 279/380/38 +f 284/381/36 286/386/5 285/382/5 +f 282/384/35 284/381/36 283/383/36 +f 286/386/5 288/388/37 287/387/37 +f 288/388/37 290/438/38 289/389/38 +f 294/390/36 296/395/5 295/391/5 +f 292/393/35 294/390/36 293/392/36 +f 296/395/5 298/397/37 297/396/37 +f 298/397/37 300/439/38 299/398/38 +f 304/399/39 306/402/40 305/400/40 +f 306/402/40 308/404/6 307/403/6 +f 308/404/6 310/406/41 309/405/41 +f 310/406/41 302/440/42 301/407/42 +f 314/408/39 316/411/40 315/409/40 +f 316/411/40 318/413/6 317/412/6 +f 318/413/6 320/415/41 319/414/41 +f 320/415/41 312/441/42 311/416/42 +f 324/417/39 326/420/40 325/418/40 +f 326/420/40 328/422/6 327/421/6 +f 328/422/6 330/424/41 329/423/41 +f 330/424/41 322/442/42 321/425/42 From b6f1d422e8156cb1bf818ca4c6920963943d234d Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Thu, 28 Dec 2023 10:53:07 -0500 Subject: [PATCH 03/16] my workspace died again --- .../blocks/machine/MachineStrandCaster.java | 11 +++-- .../render/tileentity/RenderStrandCaster.java | 6 +-- .../hbm/tileentity/TileEntityProxyCombo.java | 2 + .../TileEntityMachineStrandCaster.java | 46 ++++++++++++++----- 4 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index f515325ee..34b5b4384 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -67,11 +67,16 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce //up,down;forward,backward;left,right MultiblockHandlerXR.fillSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, this, dir); - - this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + //Fluid ports + this.makeExtra(world, x + rot.offsetX - dir.offsetX, y, z + rot.offsetZ - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); this.makeExtra(world, x - dir.offsetX * 5, y, z - dir.offsetZ * 5); this.makeExtra(world, x + rot.offsetX - dir.offsetX * 5, y, z + rot.offsetZ - dir.offsetZ * 5); - + //Molten slop ports + this.makeExtra(world, x + rot.offsetX - dir.offsetX, y + 2, z + rot.offsetZ - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y + 2, z - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX, y + 2, z + rot.offsetZ); + this.makeExtra(world, x, y + 2, z); } @Override diff --git a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java index cba933802..f7ec4d092 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java +++ b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java @@ -16,16 +16,16 @@ public class RenderStrandCaster extends TileEntitySpecialRenderer implements IIt public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { GL11.glPushMatrix(); - - GL11.glTranslated(x, y, z); + GL11.glTranslated(x + 0.5, y, z + 0.5); switch(te.getBlockMetadata() - BlockDummyable.offset) { case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; } - + GL11.glTranslated( 0.5, 0, 0.5); GL11.glRotated(180, 0, 1, 0); + GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index edf40ace1..c0957eb69 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -432,6 +432,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy this.inventory = nbt.getBoolean("inv"); this.power = nbt.getBoolean("power"); this.fluid = nbt.getBoolean("fluid"); + this.moltenMetal = nbt.getBoolean("metal"); this.heat = nbt.getBoolean("heat"); } @@ -442,6 +443,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy nbt.setBoolean("inv", inventory); nbt.setBoolean("power", power); nbt.setBoolean("fluid", fluid); + nbt.setBoolean("metal", moltenMetal); nbt.setBoolean("heat", heat); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 188dd6ab2..f06552fcc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -4,7 +4,6 @@ import api.hbm.block.ICrucibleAcceptor; import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; import com.hbm.inventory.container.ContainerMachineStrandCaster; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineStrandCaster; @@ -28,7 +27,6 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -79,10 +77,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase this.type = null; } - if (worldObj.getTotalWorldTime() % 20 == 0) { - this.updateConnections(); - } - + this.updateConnections(); ItemMold.Mold mold = this.getInstalledMold(); @@ -137,18 +132,31 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase return false; } - public DirPos[] getConPos() { + public DirPos[] getFluidConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); return new DirPos[] { - new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), - new DirPos(xCoord - rot.offsetX, yCoord, zCoord - rot.offsetZ, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), + new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ + dir.offsetZ * 5, rot.getOpposite()), }; } + + public int[][] getMetalPourPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new int[][] { + new int[]{xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ}, + new int[]{xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ}, + new int[]{xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ}, + new int[]{xCoord, yCoord + 2, zCoord}, + }; + } @Override public ItemMold.Mold getInstalledMold() { if(slots[0] == null) return null; @@ -163,10 +171,24 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public int getMoldSize() { return getInstalledMold().size; } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { + + if(side != ForgeDirection.UP) return false; + for (int[] pos : getMetalPourPos()) { + if (pos[0]== x && pos[1] == y && pos[2] == z){ + return this.standardCheck(world, x, y, z, side, stack); + } + } + return false; + + } + @Override public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { if(this.type != null && this.type != stack.material) return false; - return this.amount >= this.getCapacity() && getInstalledMold() == null; + return !(this.amount >= this.getCapacity() || getInstalledMold() == null); } @Override public int getCapacity() { @@ -178,10 +200,10 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } private void updateConnections() { - for(DirPos pos : getConPos()) { + for(DirPos pos : getFluidConPos()) { this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - for(DirPos pos : getConPos()) { + for(DirPos pos : getFluidConPos()) { sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } From 9340287403688e4b92f1c30cd6ad1f3c72295d68 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Sun, 31 Dec 2023 15:56:09 -0500 Subject: [PATCH 04/16] caster is finished, woo! --- .../blocks/machine/MachineStrandCaster.java | 62 +- .../ContainerMachineStrandCaster.java | 104 +- .../inventory/gui/GUIMachineStrandCaster.java | 108 +- .../inventory/recipes/AssemblerRecipes.java | 9 + .../render/tileentity/RenderStrandCaster.java | 72 +- .../machine/TileEntityCrucible.java | 4 +- .../TileEntityMachineStrandCaster.java | 122 +- .../hbm/models/machines/strand_caster.obj | 1200 +++++++---------- 8 files changed, 760 insertions(+), 921 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index 34b5b4384..ee6dab3a8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -32,16 +32,19 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcceptor, ILookOverlay { +public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcceptor, ILookOverlay, IToolable { public MachineStrandCaster() { super(Material.iron); } + //reminder, if the machine is a solid brick, get dimensions will already handle it without the need to use fillSapce //the order is up, down, forward, backward, left, right //x is for left(-)/right(+), z is for forward(+)/backward(-), y you already know @Override - public int[] getDimensions() {return new int[]{0, 0, 6, 0, 1, 0};} + public int[] getDimensions() { + return new int[]{0, 0, 6, 0, 1, 0}; + } @Override public int getOffset() { @@ -51,8 +54,8 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) return new TileEntityMachineStrandCaster(); - if(meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal(); + if (meta >= 12) return new TileEntityMachineStrandCaster(); + if (meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal(); return null; } @@ -83,12 +86,12 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { TileEntity poured = world.getTileEntity(x, y, z); - if(!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo)poured).moltenMetal)) return false; + if (!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo) poured).moltenMetal)) return false; int[] pos = this.findCore(world, x, y, z); - if(pos == null) return false; + if (pos == null) return false; TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); - if(!(tile instanceof TileEntityMachineStrandCaster)) return false; + if (!(tile instanceof TileEntityMachineStrandCaster)) return false; TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile; return caster.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); @@ -98,12 +101,12 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public Mats.MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { TileEntity poured = world.getTileEntity(x, y, z); - if(!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo)poured).moltenMetal)) return stack; + if (!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo) poured).moltenMetal)) return stack; int[] pos = this.findCore(world, x, y, z); - if(pos == null) return stack; + if (pos == null) return stack; TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); - if(!(tile instanceof TileEntityMachineStrandCaster)) return stack; + if (!(tile instanceof TileEntityMachineStrandCaster)) return stack; TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile; return caster.pour(world, x, y, z, dX, dY, dZ, side, stack); @@ -121,13 +124,13 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce @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) { + if (world.isRemote) { return true; } int[] coords = findCore(world, x, y, z); TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); - if(cast != null) { + if (cast != null) { //insert mold if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) { cast.slots[0] = player.getHeldItem().copy(); @@ -164,7 +167,7 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public void breakBlock(World world, int x, int y, int z, Block b, int i) { TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TileEntityMachineStrandCaster) { + if (te instanceof TileEntityMachineStrandCaster) { TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) te; if (cast.amount > 0) { @@ -179,12 +182,12 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { int[] coords = findCore(world, x, y, z); - if(coords == null) return; + if (coords == null) return; TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); List text = new ArrayList(); - if(cast != null) { + if (cast != null) { if (cast.slots[0] == null) { text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast")); } else if (cast.slots[0].getItem() == ModItems.mold) { @@ -194,13 +197,40 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text); } + @Override protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { x += dir.offsetX * o; z += dir.offsetZ * o; - if(!MultiblockHandlerXR.checkSpace(world, x, y , z, getDimensions(), x, y, z, dir)) return false; + if (!MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir)) return false; return MultiblockHandlerXR.checkSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, x, y, z, dir); } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + if (tool != ToolType.SCREWDRIVER) + return false; + + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + + if (cast.slots[0] == null) + return false; + + if (!player.inventory.addItemStackToInventory(cast.slots[0].copy())) { + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, cast.slots[0].copy()); + world.spawnEntityInWorld(item); + } else { + player.inventoryContainer.detectAndSendChanges(); + } + + cast.markDirty(); + world.markBlockForUpdate(x, y, z); + + cast.slots[0] = null; + cast.markDirty(); + + return true; + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java index 1742c470c..bc9e89e46 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java @@ -11,65 +11,65 @@ import net.minecraft.item.ItemStack; public class ContainerMachineStrandCaster extends Container { - protected TileEntityMachineStrandCaster caster; + protected TileEntityMachineStrandCaster caster; - public ContainerMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { - this.caster = caster; - - //the wretched mold - this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62)); - - //output - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 2; j++) { - this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); - } - } + public ContainerMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { + this.caster = caster; - - 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, 132 + i * 18)); - } - } + //the wretched mold + this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62)); - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 190)); - } - } + //output + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 2; j++) { + this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); + } + } - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int index) { - ItemStack stack = null; - Slot slot = (Slot) this.inventorySlots.get(index); - if(slot != null && slot.getHasStack()) { - ItemStack originalStack = slot.getStack(); - stack = originalStack.copy(); + 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, 132 + i * 18)); + } + } - if(index <= 6) { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) { - return null; - } - - slot.onSlotChange(originalStack, stack); - - } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 7, false)) { - return null; - } + for (int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 190)); + } + } - if(originalStack.stackSize == 0) { - slot.putStack(null); - } else { - slot.onSlotChanged(); - } - } + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); - return stack; - } + if (slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); - @Override - public boolean canInteractWith(EntityPlayer player) { - return caster.isUseableByPlayer(player); - } + if (index <= 6) { + if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 7, false)) { + return null; + } + + if (originalStack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return caster.isUseableByPlayer(player); + } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java index 16a151207..a2e959621 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java @@ -21,80 +21,78 @@ import java.util.List; public class GUIMachineStrandCaster extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); - private TileEntityMachineStrandCaster caster; + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); + private TileEntityMachineStrandCaster caster; - public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { - super(new ContainerMachineStrandCaster(invPlayer, tedf)); - caster = tedf; + public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { + super(new ContainerMachineStrandCaster(invPlayer, tedf)); + caster = tedf; - this.xSize = 176; - this.ySize = 214; - } + this.xSize = 176; + this.ySize = 214; + } - @Override - public void drawScreen(int x, int y, float interp) { - super.drawScreen(x, y, interp); + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); - drawStackInfo(x, y, 16, 17); + drawStackInfo(x, y, 16, 17); - caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); - caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24); - } + caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); + caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24); + } - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); + 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_) { + @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); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (caster.amount != 0) { + if (caster.amount != 0) { - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - int targetHeight = (caster.amount) * 79 / caster.getCapacity(); + int targetHeight = Math.min((caster.amount) * 79 / caster.getCapacity(), 92); - int hex = caster.type.moltenColor; - //hex = 0xC18336; - Color color = new Color(hex); - GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor4f(1F, 1F, 1F, 0.3F); - drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); - GL11.glDisable(GL11.GL_BLEND); + int hex = caster.type.moltenColor; + //hex = 0xC18336; + Color color = new Color(hex); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor4f(1F, 1F, 1F, 0.3F); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); + GL11.glDisable(GL11.GL_BLEND); - } - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor3f(255, 255, 255); + } + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor3f(255, 255, 255); - caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); - caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24); + caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); + caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24); - } + } - - protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { - - List list = new ArrayList(); - - if(caster.type == null) list.add(EnumChatFormatting.RED + "Empty"); - else list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); - } - + List list = new ArrayList(); + + if (caster.type == null) list.add(EnumChatFormatting.RED + "Empty"); + else + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); + } - } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index bb377f685..444f6cf72 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -445,6 +445,15 @@ public class AssemblerRecipes { new ComparableStack(ModItems.wire_red_copper, 24), new ComparableStack(ModItems.circuit_copper, 1) }, 300); + + makeRecipe(new ComparableStack(ModBlocks.machine_strand_caster, 1), new AStack[] { + new ComparableStack(ModItems.ingot_firebrick, 12), + new OreDictStack(STEEL.plateCast(), 6), + new OreDictStack(CU.plateWelded(), 2), + new ComparableStack(ModItems.tank_steel, 2), + new OreDictStack(ANY_CONCRETE.any(), 8) + }, 100); + makeRecipe(new ComparableStack(ModItems.piston_set, 1, EnumPistonType.STEEL.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 16), new OreDictStack(CU.plate(), 4), diff --git a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java index f7ec4d092..6d9579ab0 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java +++ b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java @@ -2,18 +2,34 @@ package com.hbm.render.tileentity; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; +import java.awt.*; +import java.nio.DoubleBuffer; + public class RenderStrandCaster extends TileEntitySpecialRenderer implements IItemRendererProvider { + public static final ResourceLocation lava = new ResourceLocation(RefStrings.MODID, "textures/models/machines/lava_gray.png"); + private static DoubleBuffer buf = null; @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) te; + + if(buf == null){ + buf = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer(); + } GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); @@ -31,8 +47,54 @@ public class RenderStrandCaster extends TileEntitySpecialRenderer implements IIt GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.strand_caster_tex); - ResourceManager.strand_caster.renderAll(); - + ResourceManager.strand_caster.renderPart("caster"); + + + if (caster.amount != 0 && caster.getInstalledMold() != null) { + + double level = ((double) caster.amount / (double) caster.getCapacity()) * 0.675D; + double offset = ((double) caster.amount / (double) caster.getInstalledMold().getCost()) * 0.375D; + + int color = caster.type.moltenColor; + + int r = color >> 16 & 0xFF; + int g = color >> 8 & 0xFF; + int b = color & 0xFF; + + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + + GL11.glPushMatrix(); + GL11.glColor3f( r/ 255F, g/ 255F, b/ 255F); + GL11.glEnable(GL11.GL_CLIP_PLANE0); + buf.put(new double[] { 0, 0, -1, 0.5} ); + buf.rewind(); + GL11.glClipPlane(GL11.GL_CLIP_PLANE0, buf); + GL11.glTranslated(0,0,-offset + 3.4); + ResourceManager.strand_caster.renderPart("plate"); + GL11.glDisable(GL11.GL_CLIP_PLANE0); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + Tessellator tess = Tessellator.instance; + tess.setNormal(0F, 1F, 0F); + tess.setColorOpaque_F(r / 255F, g / 255F, b / 255F); + bindTexture(lava); + tess.startDrawingQuads(); + tess.addVertexWithUV(-0.9, 2.3 + level, -0.999, 0, 0); + tess.addVertexWithUV(-0.9, 2.3 + level, 0.999, 0, 1); + tess.addVertexWithUV(0.9, 2.3 + level, 0.999, 1, 1); + tess.addVertexWithUV(0.9, 2.3 + level, -0.999, 1, 0); + tess.draw(); + + GL11.glPopMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + } + + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); @@ -48,11 +110,11 @@ public class RenderStrandCaster extends TileEntitySpecialRenderer implements IIt public IItemRenderer getRenderer() { return new ItemRenderBase( ) { public void renderInventory() { - GL11.glTranslated(1, 1, 0); - GL11.glScaled(2.5, 2.5, 2.5); + GL11.glTranslated(2, 0, 2); + GL11.glScaled( 2, 2, 2); } public void renderCommon() { - GL11.glScaled(0.5, 0.5, 0.5); + GL11.glScaled(1, 1, 1); GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.strand_caster_tex); ResourceManager.strand_caster.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index a6ee9501c..e486b7a60 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -158,7 +158,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(2), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(3), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); @@ -198,7 +198,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(2), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index f06552fcc..dc9e30c83 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -32,14 +32,16 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //god thank you bob for this base class -public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor,ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { +public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor, ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { public FluidTank water; public FluidTank steam; + @Override public String getName() { return "container.machineStrandCaster"; } + @Override public String getInventoryName() { return getName(); @@ -64,12 +66,12 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } if (this.amount >= this.getCapacity()) { - if(amount > getCapacity()) { + if (amount > getCapacity()) { ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount)); EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord, zCoord + 0.5, scrap); worldObj.spawnEntityInWorld(item); } - this.amount = this.getCapacity(); + this.amount = this.getCapacity(); } @@ -83,61 +85,61 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase if (canProcess()) { - int itemsCasted = Math.min(amount / mold.getCost(), 9); + int itemsCasted = Math.min(amount / mold.getCost(), 9); - for (int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); + for (int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); - ItemStack out = mold.getOutput(type); - - for (int i = 1; i < 7; i++) { - if (slots[i] == null){ - slots[i] = out.copy(); - break; - } - - if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } + ItemStack out = mold.getOutput(type); + for (int i = 1; i < 7; i++) { + if (slots[i] == null) { + slots[i] = out.copy(); + break; } + + if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + } - markChanged(); - - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); } - - NBTTagCompound data = new NBTTagCompound(); - - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); - } + NBTTagCompound data = new NBTTagCompound(); + + water.writeToNBT(data, "w"); + steam.writeToNBT(data, "s"); + + this.networkPack(data, 150); + + } + public boolean canProcess() { ItemMold.Mold mold = this.getInstalledMold(); - if(type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { + if (type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { for (int i = 1; i < 7; i++) { - - if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) - return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill();; + if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) + return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); } } return false; } + public DirPos[] getFluidConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new DirPos[] { + return new DirPos[]{ new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), @@ -150,23 +152,25 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new int[][] { + return new int[][]{ new int[]{xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ}, new int[]{xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ}, new int[]{xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ}, new int[]{xCoord, yCoord + 2, zCoord}, }; } + @Override public ItemMold.Mold getInstalledMold() { - if(slots[0] == null) return null; + if (slots[0] == null) return null; - if(slots[0].getItem() == ModItems.mold) { + if (slots[0].getItem() == ModItems.mold) { return ((ItemMold) slots[0].getItem()).getMold(slots[0]); } return null; } + @Override public int getMoldSize() { return getInstalledMold().size; @@ -175,9 +179,9 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { - if(side != ForgeDirection.UP) return false; + if (side != ForgeDirection.UP) return false; for (int[] pos : getMetalPourPos()) { - if (pos[0]== x && pos[1] == y && pos[2] == z){ + if (pos[0] == x && pos[1] == y && pos[2] == z) { return this.standardCheck(world, x, y, z, side, stack); } } @@ -187,40 +191,42 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { - if(this.type != null && this.type != stack.material) return false; + if (this.type != null && this.type != stack.material) return false; return !(this.amount >= this.getCapacity() || getInstalledMold() == null); } + @Override public int getCapacity() { ItemMold.Mold mold = this.getInstalledMold(); - return mold == null ? 50000 : mold.getCost() * 50; + return mold == null ? 50000 : mold.getCost() * 10; } + private int getWaterRequired() { return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 50; } private void updateConnections() { - for(DirPos pos : getFluidConPos()) { + for (DirPos pos : getFluidConPos()) { this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - for(DirPos pos : getFluidConPos()) { + for (DirPos pos : getFluidConPos()) { sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] { steam }; + return new FluidTank[]{steam}; } @Override public FluidTank[] getReceivingTanks() { - return new FluidTank[] { water }; + return new FluidTank[]{water}; } @Override public FluidTank[] getAllTanks() { - return new FluidTank[] { water, steam }; + return new FluidTank[]{water, steam}; } @Override @@ -235,16 +241,17 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) + if (!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } + @Override public void networkUnpack(NBTTagCompound nbt) { water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); } + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -258,10 +265,11 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); } + @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 0) { + if (i == 0) { return stack.getItem() == ModItems.mold; } @@ -276,15 +284,16 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public int[] getAccessibleSlotsFromSide(int meta) { - return new int[] { 1, 2, 3, 4, 5, 6}; + return new int[]{1, 2, 3, 4, 5, 6}; } public void markChanged() { this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); } + @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; } else { return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; @@ -301,25 +310,24 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return !this.isItemValidForSlot(slot, itemStack); } + AxisAlignedBB bb = null; @Override public AxisAlignedBB getRenderBoundingBox() { - if(bb == null) { + if (bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, yCoord, zCoord - 1, - xCoord + 2, + xCoord + 6, yCoord + 3, - zCoord + 7 + zCoord + 6 ); } - return bb; } - } diff --git a/src/main/resources/assets/hbm/models/machines/strand_caster.obj b/src/main/resources/assets/hbm/models/machines/strand_caster.obj index 2a3ac8b78..2a009d538 100644 --- a/src/main/resources/assets/hbm/models/machines/strand_caster.obj +++ b/src/main/resources/assets/hbm/models/machines/strand_caster.obj @@ -1,10 +1,11 @@ -# Blender v2.79 (sub 0) OBJ File: 'strand_caster.blend' +# Blender 3.6.1 # www.blender.org -o Plane +mtllib strand_caster.mtl +o caster v -1.000000 0.000000 1.000000 v 1.000000 0.000000 1.000000 -v -1.000000 0.000000 -6.000000 -v 1.000000 0.000000 -6.000000 +v -1.000000 -0.000000 -6.000000 +v 1.000000 -0.000000 -6.000000 v -1.000000 0.750000 -6.000000 v -1.000000 0.750000 1.000000 v 1.000000 0.750000 1.000000 @@ -31,24 +32,14 @@ v -0.750000 2.000000 -0.750000 v 0.750000 2.000000 -0.750000 v -0.750000 0.500000 -1.500000 v -0.750000 0.500000 0.750000 -v 0.750000 0.500000 0.750000 v 0.750000 0.500000 -1.500000 v -0.750000 0.750000 -5.750000 v -0.750000 0.750000 0.750000 v 0.750000 0.750000 0.750000 v 0.750000 0.750000 -5.750000 v -0.750000 0.500000 -5.750000 -v -0.750000 0.500000 0.750000 v 0.750000 0.500000 0.750000 v 0.750000 0.500000 -5.750000 -v -0.500000 0.937500 -1.500000 -v 0.500000 0.937500 -1.500000 -v -0.500000 0.937500 -5.250000 -v 0.500000 0.937500 -5.250000 -v -0.500000 1.062500 -5.250000 -v -0.500000 1.062500 -1.500000 -v 0.500000 1.062500 -1.500000 -v 0.500000 1.062500 -5.250000 v 0.750000 1.250000 -1.500000 v -0.750000 1.250000 -1.500000 v 0.750000 0.812500 -3.125000 @@ -275,8 +266,8 @@ v 0.750000 0.750000 -0.125000 v 0.750000 2.000000 -0.125000 v 0.838388 0.750000 -0.088388 v 0.838388 2.000000 -0.088388 -v 0.875000 0.750000 0.000000 -v 0.875000 2.000000 0.000000 +v 0.875000 0.750000 -0.000000 +v 0.875000 2.000000 -0.000000 v 0.838388 0.750000 0.088388 v 0.838388 2.000000 0.088388 v 0.750000 0.750000 0.125000 @@ -307,8 +298,8 @@ v -0.750000 0.750000 0.125000 v -0.750000 2.000000 0.125000 v -0.838388 0.750000 0.088388 v -0.838388 2.000000 0.088388 -v -0.875000 0.750000 0.000000 -v -0.875000 2.000000 0.000000 +v -0.875000 0.750000 -0.000000 +v -0.875000 2.000000 -0.000000 v -0.838388 0.750000 -0.088388 v -0.838388 2.000000 -0.088388 v -0.750000 0.750000 0.375000 @@ -331,6 +322,49 @@ v -0.875000 0.750000 -0.500000 v -0.875000 2.000000 -0.500000 v -0.838388 0.750000 -0.588388 v -0.838388 2.000000 -0.588388 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 0.7071 0.7071 +vn -0.7311 0.2611 0.6303 +vn -0.9955 -0.0000 -0.0949 +vn -0.9947 -0.0393 -0.0948 +vn -0.6333 -0.2962 -0.7150 +vn -0.0000 -0.3827 -0.9239 +vn 0.6333 -0.2962 -0.7150 +vn 0.9955 -0.0000 -0.0949 +vn 0.7311 0.2611 0.6303 +vn 0.9947 -0.0393 -0.0948 +vn -0.6630 -0.0000 -0.7486 +vn 0.6630 -0.0000 -0.7486 +vn 0.6794 0.4063 -0.6110 +vn 0.9987 0.0196 -0.0473 +vn 0.7574 -0.0000 0.6530 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.3800 0.5728 +vn -0.7574 -0.0000 0.6530 +vn -0.6794 0.4063 -0.6110 +vn -0.0000 -0.5562 0.8311 +vn 0.7263 -0.3800 0.5728 +vn 0.7071 -0.5000 0.5000 +vn -0.7071 -0.5000 0.5000 +vn -0.0000 0.5628 -0.8266 +vn -0.7071 0.5000 -0.5000 +vn 0.3827 -0.0000 -0.9239 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn 0.3827 -0.0000 0.9239 +vn -0.3827 -0.0000 0.9239 +vn -0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.3827 -0.0000 -0.9239 +vn 0.7071 0.5000 -0.5000 vt 0.484375 0.100000 vt 0.046875 0.366667 vt 0.046875 0.100000 @@ -345,34 +379,13 @@ vt 0.484375 -0.000000 vt 0.656250 0.600000 vt 0.531250 0.466667 vt 0.656250 0.466667 -vt 0.656250 0.466667 -vt 0.531250 0.600000 -vt 0.531250 0.466667 -vt 0.531250 0.466667 -vt 0.656250 0.600000 vt 0.531250 0.600000 vt 0.531250 0.200000 -vt 0.656250 0.466667 -vt 0.656250 0.600000 -vt 0.531250 0.466667 -vt 0.656250 0.466667 vt 0.539062 0.616667 -vt 0.531250 0.600000 vt 0.648438 0.616667 vt 0.539062 0.733333 -vt 0.539062 0.616667 -vt 0.656250 0.600000 -vt 0.539062 0.616667 -vt 0.539062 0.616667 -vt 0.531250 0.600000 -vt 0.539062 0.733333 vt 0.648438 0.966667 vt 0.539062 0.966667 -vt 0.648438 0.616667 -vt 0.539062 0.733333 -vt 0.648438 0.616667 -vt 0.648438 0.616667 -vt 0.539062 0.733333 vt 0.468750 0.733333 vt 0.062500 0.766667 vt 0.062500 0.733333 @@ -399,21 +412,6 @@ vt 0.468750 0.766667 vt 0.484375 0.766667 vt 0.046875 0.766667 vt 0.046875 0.966667 -vt 0.890625 0.566667 -vt 0.656250 0.700000 -vt 0.656250 0.566667 -vt 0.656250 0.566667 -vt 0.890625 0.700000 -vt 0.656250 0.700000 -vt 0.664062 0.700000 -vt 0.656250 0.566667 -vt 0.664062 0.566667 -vt 0.890625 0.683333 -vt 0.656250 0.700000 -vt 0.656250 0.683333 -vt 0.656250 0.583333 -vt 0.890625 0.566667 -vt 0.890625 0.583333 vt 0.671875 0.200000 vt 0.765625 0.200000 vt 0.695312 0.550000 @@ -427,7 +425,6 @@ vt 0.695312 0.450000 vt 0.687500 0.450000 vt 0.695312 0.466667 vt 0.679688 0.450000 -vt 0.695312 0.450000 vt 0.835938 0.550000 vt 0.851562 0.566667 vt 0.835938 0.566667 @@ -436,37 +433,10 @@ vt 0.656250 0.516667 vt 0.656250 0.500000 vt 0.695312 0.433333 vt 0.835938 0.450000 -vt 0.695312 0.450000 vt 0.835938 0.433333 vt 0.843750 0.450000 -vt 0.695312 0.466667 -vt 0.679688 0.500000 -vt 0.851562 0.500000 -vt 0.679688 0.450000 -vt 0.695312 0.450000 vt 0.835938 0.466667 vt 0.851562 0.450000 -vt 0.695312 0.433333 -vt 0.835938 0.450000 -vt 0.679688 0.516667 -vt 0.835938 0.550000 -vt 0.851562 0.566667 -vt 0.835938 0.566667 -vt 0.656250 0.516667 -vt 0.656250 0.500000 -vt 0.695312 0.550000 -vt 0.679688 0.566667 -vt 0.835938 0.466667 -vt 0.851562 0.450000 -vt 0.835938 0.433333 -vt 0.843750 0.450000 -vt 0.687500 0.433333 -vt 0.687500 0.450000 -vt 0.875000 0.500000 -vt 0.851562 0.516667 -vt 0.902344 0.391667 -vt 0.667969 0.408333 -vt 0.667969 0.391667 vt 0.902344 0.391667 vt 0.667969 0.408333 vt 0.667969 0.391667 @@ -475,42 +445,19 @@ vt 0.914062 0.408333 vt 0.902344 0.408333 vt 0.656250 0.391667 vt 0.667969 0.433333 -vt 0.902344 0.408333 -vt 0.667969 0.433333 -vt 0.914062 0.408333 -vt 0.656250 0.391667 -vt 0.902344 0.366667 vt 0.531250 0.100000 vt 0.000000 0.366667 vt 0.046875 -0.000000 vt 0.656250 0.200000 vt 0.648438 0.733333 -vt 0.648438 0.733333 -vt 0.648438 0.733333 -vt 0.648438 0.733333 vt 0.621094 0.200000 -vt 0.531250 0.200000 -vt 0.890625 0.700000 -vt 0.890625 0.566667 -vt 0.656250 0.700000 -vt 0.890625 0.700000 -vt 0.656250 0.566667 vt 0.695312 0.566667 vt 0.875000 0.516667 vt 0.843750 0.433333 -vt 0.835938 0.450000 -vt 0.695312 0.566667 -vt 0.835938 0.450000 -vt 0.843750 0.433333 -vt 0.875000 0.516667 vt 0.667969 0.366667 vt 0.914062 0.391667 vt 0.656250 0.408333 vt 0.902344 0.433333 -vt 0.902344 0.433333 -vt 0.914062 0.391667 -vt 0.656250 0.408333 -vt 0.667969 0.366667 vt 0.921875 0.200000 vt 0.929688 0.400000 vt 0.921875 0.400000 @@ -522,113 +469,11 @@ vt 0.945312 0.400000 vt 0.937500 0.400000 vt 0.968750 0.200000 vt 0.976562 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 -vt 0.929688 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.921875 0.400000 -vt 0.914062 0.400000 -vt 0.921875 0.200000 -vt 0.921875 0.400000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.929688 0.200000 -vt 0.937500 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.400000 -vt 0.929688 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.200000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.921875 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 vt 0.929688 0.200000 vt 0.914062 0.200000 vt 0.914062 0.400000 vt 0.953125 0.200000 -vt 0.960938 0.400000 vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.921875 0.400000 -vt 0.960938 0.200000 -vt 0.968750 0.400000 -vt 0.960938 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 -vt 0.929688 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.921875 0.400000 -vt 0.914062 0.400000 -vt 0.921875 0.200000 -vt 0.921875 0.400000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.929688 0.200000 -vt 0.937500 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.400000 -vt 0.929688 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.200000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.960938 0.200000 vt 0.945312 0.200000 vt 0.695312 0.341667 vt 0.703125 0.333333 @@ -655,42 +500,6 @@ vt 0.742188 0.325000 vt 0.742188 0.200000 vt 0.750000 0.308333 vt 0.742188 0.308333 -vt 0.718750 0.358333 -vt 0.726562 0.333333 -vt 0.726562 0.358333 -vt 0.734375 0.200000 -vt 0.734375 0.308333 -vt 0.695312 0.200000 -vt 0.703125 0.308333 -vt 0.695312 0.308333 -vt 0.718750 0.200000 -vt 0.718750 0.308333 -vt 0.703125 0.200000 -vt 0.695312 0.341667 -vt 0.703125 0.333333 -vt 0.703125 0.350000 -vt 0.687500 0.200000 -vt 0.687500 0.308333 -vt 0.710938 0.333333 -vt 0.710938 0.358333 -vt 0.718750 0.333333 -vt 0.726562 0.308333 -vt 0.703125 0.316667 -vt 0.734375 0.333333 -vt 0.742188 0.341667 -vt 0.734375 0.350000 -vt 0.734375 0.316667 -vt 0.742188 0.333333 -vt 0.710938 0.200000 -vt 0.695312 0.333333 -vt 0.710938 0.308333 -vt 0.687500 0.333333 -vt 0.695312 0.325000 -vt 0.750000 0.333333 -vt 0.742188 0.325000 -vt 0.742188 0.200000 -vt 0.750000 0.308333 -vt 0.742188 0.308333 vt 0.734375 0.200000 vt 0.734375 0.308333 vt 0.695312 0.200000 @@ -704,511 +513,434 @@ vt 0.687500 0.308333 vt 0.710938 0.200000 vt 0.687500 0.366667 vt 0.679688 0.200000 -vt 0.687500 0.200000 vt 0.679688 0.366667 -vt 0.671875 0.200000 vt 0.671875 0.366667 vt 0.664062 0.200000 vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.679688 0.200000 -vt 0.687500 0.366667 -vt 0.687500 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.679688 0.200000 -vt 0.687500 0.366667 -vt 0.687500 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.687500 0.366667 -vt 0.679688 0.200000 -vt 0.687500 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.687500 0.366667 -vt 0.679688 0.200000 -vt 0.687500 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.687500 0.366667 -vt 0.679688 0.200000 -vt 0.687500 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 vt 0.976562 0.200000 vt 0.750000 0.200000 vt 0.726562 0.200000 -vt 0.750000 0.200000 -vt 0.726562 0.200000 vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.7071 -0.7071 -vn -0.0000 -0.7071 0.7071 -vn -0.0000 -0.7071 -0.7071 -vn -0.0000 0.7071 0.7071 -vn -0.7311 0.2611 0.6303 -vn -0.9955 -0.0000 -0.0949 -vn -0.9947 -0.0393 -0.0948 -vn -0.6333 -0.2962 -0.7150 -vn -0.0000 -0.3827 -0.9239 -vn 0.6333 -0.2962 -0.7150 -vn 0.9955 -0.0000 -0.0949 -vn 0.7311 0.2611 0.6303 -vn 0.9947 -0.0393 -0.0948 -vn -0.6630 -0.0000 -0.7486 -vn 0.6630 -0.0000 -0.7486 -vn 0.6794 0.4063 -0.6110 -vn 0.9987 0.0196 -0.0473 -vn 0.7574 -0.0000 0.6530 -vn -0.9987 0.0196 -0.0473 -vn -0.7263 -0.3800 0.5728 -vn -0.7574 -0.0000 0.6530 -vn -0.6794 0.4063 -0.6110 -vn 0.0000 -0.5562 0.8311 -vn 0.7263 -0.3800 0.5728 -vn 0.7071 -0.5000 0.5000 -vn -0.7071 -0.5000 0.5000 -vn 0.0000 0.5628 -0.8266 -vn -0.7071 0.5000 -0.5000 -vn 0.3827 0.0000 -0.9239 -vn 0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 0.7071 -vn 0.3827 0.0000 0.9239 -vn -0.3827 0.0000 0.9239 -vn -0.7071 0.0000 0.7071 -vn -0.7071 0.0000 -0.7071 -vn -0.3827 0.0000 -0.9239 -vn 0.7071 0.5000 -0.5000 -s off +s 0 +usemtl f 3/1/1 2/2/1 1/3/1 -f 5/4/2 36/5/2 8/6/2 +f 5/4/2 35/5/2 8/6/2 f 3/1/3 8/7/3 4/8/3 f 2/2/4 6/9/4 1/3/4 f 4/8/5 7/10/5 2/2/5 f 1/3/6 5/11/6 3/1/6 f 12/12/4 9/13/4 10/14/4 -f 13/15/3 16/16/3 14/17/3 -f 10/18/5 16/19/5 12/20/5 -f 9/21/1 14/22/1 10/18/1 -f 11/23/6 13/24/6 9/25/6 -f 11/23/2 19/26/2 15/27/2 -f 17/28/5 23/29/5 19/26/5 -f 16/19/2 18/30/2 12/20/2 -f 15/31/2 20/32/2 16/16/2 -f 12/12/2 17/33/2 11/34/2 -f 22/35/2 23/36/2 21/37/2 -f 19/38/4 24/39/4 20/32/4 -f 20/40/6 22/35/6 18/30/6 -f 18/41/3 21/42/3 17/33/3 -f 36/43/6 39/44/6 35/45/6 -f 7/10/2 34/46/2 6/47/2 -f 31/48/5 32/49/5 49/50/5 -f 27/51/6 29/52/6 30/53/6 -f 49/50/3 29/52/3 50/54/3 -f 25/55/4 31/56/4 26/57/4 -f 8/6/2 35/58/2 7/10/2 -f 6/47/2 33/59/2 5/4/2 -f 39/44/2 37/60/2 38/61/2 -f 34/62/5 37/60/5 33/63/5 -f 33/64/4 40/65/4 36/66/4 -f 35/67/3 38/61/3 34/68/3 -f 43/69/1 42/70/1 41/71/1 -f 47/72/2 45/73/2 46/74/2 -f 43/75/3 48/76/3 44/77/3 -f 44/78/5 47/79/5 42/80/5 -f 41/81/6 45/82/6 43/83/6 -f 28/84/7 50/54/7 27/85/7 -f 167/86/6 163/87/6 172/88/6 -f 193/89/3 190/90/3 189/91/3 -f 165/92/3 170/93/3 166/94/3 -f 170/95/5 164/96/5 166/97/5 -f 188/98/6 194/99/6 192/100/6 -f 173/101/4 163/102/4 164/103/4 -f 174/104/1 187/105/1 171/106/1 -f 188/107/4 191/108/4 187/105/4 -f 171/109/5 189/91/5 168/110/5 -f 181/111/2 172/88/2 173/101/2 -f 171/109/5 179/112/5 177/113/5 -f 187/114/5 193/115/5 189/91/5 -f 167/116/1 175/117/1 170/93/1 -f 189/91/2 169/118/2 168/110/2 -f 176/119/6 186/120/6 184/121/6 -f 170/95/5 181/111/5 173/101/5 -f 172/88/6 176/119/6 167/86/6 -f 168/110/4 180/122/4 179/123/4 -f 169/118/6 188/98/6 174/124/6 -f 174/124/6 180/125/6 169/118/6 -f 175/126/5 185/127/5 181/111/5 -f 176/128/4 183/129/4 175/117/4 -f 178/130/3 171/106/3 177/131/3 -f 185/132/3 182/133/3 181/111/3 -f 201/134/2 198/135/2 197/136/2 -f 200/137/2 195/138/2 196/139/2 -f 197/136/5 210/140/5 201/134/5 -f 200/137/3 207/141/3 199/142/3 -f 195/138/4 204/143/4 196/139/4 -f 199/142/6 203/144/6 195/138/6 -f 202/145/6 205/146/6 198/135/6 -f 201/134/3 209/147/3 202/145/3 -f 198/135/4 206/148/4 197/136/4 -f 196/139/5 208/149/5 200/137/5 +f 13/14/3 16/15/3 14/13/3 +f 10/13/5 16/12/5 12/15/5 +f 9/16/1 14/14/1 10/13/1 +f 11/12/6 13/13/6 9/14/6 +f 11/12/2 19/17/2 15/15/2 +f 17/18/5 23/19/5 19/17/5 +f 16/12/2 18/17/2 12/15/2 +f 15/12/2 20/17/2 16/15/2 +f 12/12/2 17/17/2 11/15/2 +f 22/19/2 23/20/2 21/21/2 +f 19/18/4 24/19/4 20/17/4 +f 20/18/6 22/19/6 18/17/6 +f 18/18/3 21/19/3 17/17/3 +f 35/22/6 37/23/6 34/24/6 +f 7/10/2 33/25/2 6/26/2 +f 37/27/5 31/28/5 39/29/5 +f 27/30/6 29/31/6 30/32/6 +f 39/29/3 29/31/3 40/33/3 +f 25/34/4 37/35/4 26/36/4 +f 8/6/2 34/37/2 7/10/2 +f 6/26/2 32/38/2 5/4/2 +f 37/23/2 36/39/2 30/40/2 +f 33/41/5 36/39/5 32/42/5 +f 32/43/4 38/44/4 35/45/4 +f 34/46/3 30/40/3 33/47/3 +f 28/48/7 40/33/7 27/49/7 +f 157/50/6 153/51/6 162/52/6 +f 183/53/3 180/54/3 179/55/3 +f 155/56/3 160/57/3 156/58/3 +f 160/59/5 154/60/5 156/57/5 +f 178/61/6 184/62/6 182/63/6 +f 163/64/4 153/65/4 154/66/4 +f 164/67/1 177/68/1 161/57/1 +f 178/69/4 181/70/4 177/68/4 +f 161/59/5 179/55/5 158/64/5 +f 171/55/2 162/52/2 163/64/2 +f 161/59/5 169/60/5 167/57/5 +f 177/71/5 183/72/5 179/55/5 +f 157/67/1 165/68/1 160/57/1 +f 179/55/2 159/52/2 158/64/2 +f 166/61/6 176/62/6 174/63/6 +f 160/59/5 171/55/5 163/64/5 +f 162/52/6 166/61/6 157/50/6 +f 158/64/4 170/65/4 169/66/4 +f 159/52/6 178/61/6 164/50/6 +f 164/50/6 170/51/6 159/52/6 +f 165/71/5 175/72/5 171/55/5 +f 166/69/4 173/70/4 165/68/4 +f 168/56/3 161/57/3 167/58/3 +f 175/53/3 172/54/3 171/55/3 +f 191/73/2 188/74/2 187/75/2 +f 190/73/2 185/74/2 186/75/2 +f 187/75/5 200/76/5 191/73/5 +f 190/73/3 197/77/3 189/78/3 +f 185/74/4 194/79/4 186/75/4 +f 189/78/6 193/80/6 185/74/6 +f 192/78/6 195/80/6 188/74/6 +f 191/73/3 199/77/3 192/78/3 +f 188/74/4 196/79/4 187/75/4 +f 186/75/5 198/76/5 190/73/5 f 3/1/1 4/8/1 2/2/1 -f 5/4/2 33/59/2 36/5/2 -f 3/1/3 5/150/3 8/7/3 -f 2/2/4 7/151/4 6/9/4 +f 5/4/2 32/38/2 35/5/2 +f 3/1/3 5/81/3 8/7/3 +f 2/2/4 7/82/4 6/9/4 f 4/8/5 8/6/5 7/10/5 -f 1/3/6 6/152/6 5/11/6 -f 12/12/4 11/34/4 9/13/4 -f 13/15/3 15/31/3 16/16/3 -f 10/18/5 14/22/5 16/19/5 -f 9/21/1 13/153/1 14/22/1 -f 11/23/6 15/27/6 13/24/6 -f 11/23/2 17/28/2 19/26/2 -f 17/28/5 21/154/5 23/29/5 -f 16/19/2 20/40/2 18/30/2 -f 15/31/2 19/38/2 20/32/2 -f 12/12/2 18/41/2 17/33/2 -f 22/35/2 24/155/2 23/36/2 -f 19/38/4 23/156/4 24/39/4 -f 20/40/6 24/155/6 22/35/6 -f 18/41/3 22/157/3 21/42/3 -f 36/43/6 40/65/6 39/44/6 -f 7/10/2 35/58/2 34/46/2 -f 49/50/5 28/158/5 31/48/5 -f 28/158/5 26/159/5 31/48/5 -f 30/53/6 25/55/6 27/51/6 -f 27/51/6 50/54/6 29/52/6 -f 49/50/3 32/49/3 29/52/3 -f 25/55/4 30/53/4 31/56/4 -f 8/6/2 36/5/2 35/58/2 -f 6/47/2 34/46/2 33/59/2 -f 39/44/2 40/65/2 37/60/2 -f 34/62/5 38/61/5 37/60/5 -f 33/64/4 37/60/4 40/65/4 -f 35/67/3 39/44/3 38/61/3 -f 43/69/1 44/160/1 42/70/1 -f 47/72/2 48/161/2 45/73/2 -f 43/75/3 45/162/3 48/76/3 -f 44/78/5 48/163/5 47/79/5 -f 41/81/6 46/164/6 45/82/6 -f 28/84/7 49/50/7 50/54/7 -f 167/86/6 165/165/6 163/87/6 -f 193/89/3 194/166/3 190/90/3 -f 165/92/3 167/116/3 170/93/3 -f 170/95/5 173/101/5 164/96/5 -f 188/98/6 190/90/6 194/99/6 -f 173/101/4 172/88/4 163/102/4 -f 174/104/1 188/107/1 187/105/1 -f 188/107/4 192/167/4 191/108/4 -f 171/109/5 187/114/5 189/91/5 -f 181/111/2 182/133/2 172/88/2 -f 171/109/5 168/110/5 179/112/5 -f 187/114/5 191/168/5 193/115/5 -f 167/116/1 176/128/1 175/117/1 -f 189/91/2 190/90/2 169/118/2 -f 176/119/6 182/133/6 186/120/6 -f 170/95/5 175/126/5 181/111/5 -f 172/88/6 182/133/6 176/119/6 -f 168/110/4 169/118/4 180/122/4 -f 169/118/6 190/90/6 188/98/6 -f 174/124/6 178/169/6 180/125/6 -f 175/126/5 183/170/5 185/127/5 -f 176/128/4 184/171/4 183/129/4 -f 178/130/3 174/104/3 171/106/3 -f 185/132/3 186/172/3 182/133/3 -f 201/134/2 202/145/2 198/135/2 -f 200/137/2 199/142/2 195/138/2 -f 197/136/5 206/173/5 210/140/5 -f 200/137/3 208/174/3 207/141/3 -f 195/138/4 203/175/4 204/143/4 -f 199/142/6 207/176/6 203/144/6 -f 202/145/6 209/177/6 205/146/6 -f 201/134/3 210/178/3 209/147/3 -f 198/135/4 205/179/4 206/148/4 -f 196/139/5 204/180/5 208/149/5 +f 1/3/6 6/83/6 5/11/6 +f 12/12/4 11/15/4 9/13/4 +f 13/14/3 15/12/3 16/15/3 +f 10/13/5 14/14/5 16/12/5 +f 9/16/1 13/84/1 14/14/1 +f 11/12/6 15/15/6 13/13/6 +f 11/12/2 17/18/2 19/17/2 +f 17/18/5 21/85/5 23/19/5 +f 16/12/2 20/18/2 18/17/2 +f 15/12/2 19/18/2 20/17/2 +f 12/12/2 18/18/2 17/17/2 +f 22/19/2 24/85/2 23/20/2 +f 19/18/4 23/85/4 24/19/4 +f 20/18/6 24/85/6 22/19/6 +f 18/18/3 22/85/3 21/19/3 +f 35/22/6 38/44/6 37/23/6 +f 7/10/2 34/37/2 33/25/2 +f 39/29/5 28/86/5 37/27/5 +f 28/86/5 26/16/5 37/27/5 +f 30/32/6 25/34/6 27/30/6 +f 27/30/6 40/33/6 29/31/6 +f 39/29/3 31/28/3 29/31/3 +f 25/34/4 30/32/4 37/35/4 +f 8/6/2 35/5/2 34/37/2 +f 6/26/2 33/25/2 32/38/2 +f 37/23/2 38/44/2 36/39/2 +f 33/41/5 30/40/5 36/39/5 +f 32/43/4 36/39/4 38/44/4 +f 34/46/3 37/23/3 30/40/3 +f 28/48/7 39/29/7 40/33/7 +f 157/50/6 155/87/6 153/51/6 +f 183/53/3 184/88/3 180/54/3 +f 155/56/3 157/67/3 160/57/3 +f 160/59/5 163/64/5 154/60/5 +f 178/61/6 180/54/6 184/62/6 +f 163/64/4 162/52/4 153/65/4 +f 164/67/1 178/69/1 177/68/1 +f 178/69/4 182/89/4 181/70/4 +f 161/59/5 177/71/5 179/55/5 +f 171/55/2 172/54/2 162/52/2 +f 161/59/5 158/64/5 169/60/5 +f 177/71/5 181/68/5 183/72/5 +f 157/67/1 166/69/1 165/68/1 +f 179/55/2 180/54/2 159/52/2 +f 166/61/6 172/54/6 176/62/6 +f 160/59/5 165/71/5 171/55/5 +f 162/52/6 172/54/6 166/61/6 +f 158/64/4 159/52/4 170/65/4 +f 159/52/6 180/54/6 178/61/6 +f 164/50/6 168/87/6 170/51/6 +f 165/71/5 173/68/5 175/72/5 +f 166/69/4 174/89/4 173/70/4 +f 168/56/3 164/67/3 161/57/3 +f 175/53/3 176/88/3 172/54/3 +f 191/73/2 192/78/2 188/74/2 +f 190/73/2 189/78/2 185/74/2 +f 187/75/5 196/90/5 200/76/5 +f 190/73/3 198/91/3 197/77/3 +f 185/74/4 193/92/4 194/79/4 +f 189/78/6 197/93/6 193/80/6 +f 192/78/6 199/93/6 195/80/6 +f 191/73/3 200/91/3 199/77/3 +f 188/74/4 195/92/4 196/79/4 +f 186/75/5 194/90/5 198/76/5 s 1 -f 90/181/8 91/182/4 89/183/8 -f 54/184/3 55/185/9 53/186/3 -f 78/187/10 79/188/2 77/189/10 -f 56/190/9 57/191/1 55/185/9 -f 94/192/10 95/193/2 93/194/10 -f 76/195/4 77/189/10 75/196/4 -f 58/197/1 59/198/8 57/199/1 -f 74/200/8 75/196/4 73/201/8 -f 60/202/8 61/203/4 59/198/8 -f 72/204/1 73/201/8 71/205/1 -f 62/206/4 63/207/10 61/203/4 -f 82/208/7 52/209/3 81/210/7 -f 70/211/9 71/212/1 69/213/9 -f 64/214/10 65/215/2 63/207/10 -f 51/216/3 69/213/9 52/209/3 -f 66/217/2 67/218/7 65/215/2 -f 92/219/4 93/194/10 91/182/4 -f 80/220/2 81/210/7 79/188/2 -f 68/221/7 53/186/3 67/218/7 -f 88/222/1 89/183/8 87/223/1 -f 98/224/7 84/225/3 97/226/7 -f 86/227/9 87/228/1 85/229/9 -f 83/230/3 85/229/9 84/225/3 -f 96/231/2 97/226/7 95/193/2 -f 106/232/8 107/233/4 105/234/8 -f 110/235/10 111/236/2 109/237/10 -f 108/238/4 109/237/10 107/233/4 -f 104/239/1 105/234/8 103/240/1 -f 114/241/7 100/242/3 113/243/7 -f 102/244/9 103/245/1 101/246/9 -f 99/247/3 101/246/9 100/242/3 -f 112/248/2 113/243/7 111/236/2 -f 154/249/8 155/250/4 153/251/8 -f 118/252/3 119/253/9 117/254/3 -f 142/255/10 143/256/2 141/257/10 -f 120/258/9 121/259/1 119/253/9 -f 158/260/10 159/261/2 157/262/10 -f 140/263/4 141/257/10 139/264/4 -f 122/265/1 123/266/8 121/267/1 -f 138/268/8 139/264/4 137/269/8 -f 124/270/8 125/271/4 123/266/8 -f 136/272/1 137/269/8 135/273/1 -f 126/274/4 127/275/10 125/271/4 -f 146/276/7 116/277/3 145/278/7 -f 134/279/9 135/280/1 133/281/9 -f 128/282/10 129/283/2 127/275/10 -f 115/284/3 133/281/9 116/277/3 -f 130/285/2 131/286/7 129/283/2 -f 156/287/4 157/262/10 155/250/4 -f 144/288/2 145/278/7 143/256/2 -f 132/289/7 117/254/3 131/286/7 -f 152/290/1 153/251/8 151/291/1 -f 162/292/7 148/293/3 161/294/7 -f 150/295/9 151/296/1 149/297/9 -f 147/298/3 149/297/9 148/293/3 -f 160/299/2 161/294/7 159/261/2 -f 214/300/11 221/301/12 213/302/13 -f 212/303/14 219/304/3 211/305/15 -f 219/304/3 218/306/16 211/305/15 -f 224/307/17 216/308/18 217/309/19 -f 213/302/13 220/310/20 212/303/14 -f 225/311/21 217/309/19 218/306/16 -f 219/304/3 232/312/22 225/311/21 -f 231/313/23 223/314/24 224/307/17 -f 228/315/25 220/310/20 221/301/12 -f 225/311/21 231/313/23 224/307/17 -f 229/316/26 221/301/12 222/317/27 -f 227/318/28 219/304/3 220/310/20 -f 214/300/11 215/319/29 222/317/27 -f 222/317/27 215/319/29 229/316/26 -f 215/320/29 216/308/18 223/314/24 -f 223/314/24 230/321/30 215/320/29 -f 246/322/31 215/323/29 230/324/30 -f 240/325/15 255/326/21 233/327/16 -f 232/312/22 245/328/5 231/329/23 -f 244/330/32 228/331/25 229/332/26 -f 242/333/7 232/312/22 226/334/33 -f 245/328/5 230/324/30 231/329/23 -f 243/335/6 227/318/28 228/331/25 -f 237/336/11 251/337/12 238/338/13 -f 248/339/8 229/332/26 215/340/29 -f 238/338/13 250/341/20 239/342/14 -f 249/343/3 262/344/22 255/326/21 -f 258/345/25 250/341/20 251/337/12 -f 250/341/20 240/325/15 239/342/14 -f 254/346/17 235/347/18 234/348/19 -f 255/326/21 234/348/19 233/327/16 -f 261/349/23 253/350/24 254/346/17 -f 241/351/34 226/334/33 227/318/28 -f 255/326/21 261/349/23 254/346/17 -f 252/352/27 258/345/25 251/337/12 -f 257/353/28 249/343/3 250/341/20 -f 237/336/11 236/354/29 252/352/27 -f 252/352/27 236/354/29 259/355/26 -f 236/356/29 235/347/18 253/350/24 -f 253/350/24 260/357/30 236/356/29 -f 268/358/31 236/359/29 260/360/30 -f 262/344/22 267/361/5 261/362/23 -f 266/363/32 258/364/25 259/365/26 -f 264/366/7 262/344/22 256/367/33 -f 267/361/5 260/360/30 261/362/23 -f 265/368/6 257/353/28 258/364/25 -f 270/369/8 259/365/26 236/370/29 -f 263/371/34 256/367/33 257/353/28 -f 272/372/35 273/373/36 271/374/35 -f 274/375/36 275/376/5 273/373/36 -f 276/377/5 277/378/37 275/376/5 -f 278/379/37 279/380/38 277/378/37 -f 284/381/36 285/382/5 283/383/36 -f 282/384/35 283/383/36 281/385/35 -f 286/386/5 287/387/37 285/382/5 -f 288/388/37 289/389/38 287/387/37 -f 294/390/36 295/391/5 293/392/36 -f 292/393/35 293/392/36 291/394/35 -f 296/395/5 297/396/37 295/391/5 -f 298/397/37 299/398/38 297/396/37 -f 304/399/39 305/400/40 303/401/39 -f 306/402/40 307/403/6 305/400/40 -f 308/404/6 309/405/41 307/403/6 -f 310/406/41 301/407/42 309/405/41 -f 314/408/39 315/409/40 313/410/39 -f 316/411/40 317/412/6 315/409/40 -f 318/413/6 319/414/41 317/412/6 -f 320/415/41 311/416/42 319/414/41 -f 324/417/39 325/418/40 323/419/39 -f 326/420/40 327/421/6 325/418/40 -f 328/422/6 329/423/41 327/421/6 -f 330/424/41 321/425/42 329/423/41 -f 90/181/8 92/219/4 91/182/4 -f 54/184/3 56/190/9 55/185/9 -f 78/187/10 80/220/2 79/188/2 -f 56/190/9 58/426/1 57/191/1 -f 94/192/10 96/231/2 95/193/2 -f 76/195/4 78/187/10 77/189/10 -f 58/197/1 60/202/8 59/198/8 -f 74/200/8 76/195/4 75/196/4 -f 60/202/8 62/206/4 61/203/4 -f 72/204/1 74/200/8 73/201/8 -f 62/206/4 64/214/10 63/207/10 -f 82/208/7 51/216/3 52/209/3 -f 70/211/9 72/427/1 71/212/1 -f 64/214/10 66/217/2 65/215/2 -f 51/216/3 70/211/9 69/213/9 -f 66/217/2 68/221/7 67/218/7 -f 92/219/4 94/192/10 93/194/10 -f 80/220/2 82/208/7 81/210/7 -f 68/221/7 54/184/3 53/186/3 -f 88/222/1 90/181/8 89/183/8 -f 98/224/7 83/230/3 84/225/3 -f 86/227/9 88/428/1 87/228/1 -f 83/230/3 86/227/9 85/229/9 -f 96/231/2 98/224/7 97/226/7 -f 106/232/8 108/238/4 107/233/4 -f 110/235/10 112/248/2 111/236/2 -f 108/238/4 110/235/10 109/237/10 -f 104/239/1 106/232/8 105/234/8 -f 114/241/7 99/247/3 100/242/3 -f 102/244/9 104/429/1 103/245/1 -f 99/247/3 102/244/9 101/246/9 -f 112/248/2 114/241/7 113/243/7 -f 154/249/8 156/287/4 155/250/4 -f 118/252/3 120/258/9 119/253/9 -f 142/255/10 144/288/2 143/256/2 -f 120/258/9 122/430/1 121/259/1 -f 158/260/10 160/299/2 159/261/2 -f 140/263/4 142/255/10 141/257/10 -f 122/265/1 124/270/8 123/266/8 -f 138/268/8 140/263/4 139/264/4 -f 124/270/8 126/274/4 125/271/4 -f 136/272/1 138/268/8 137/269/8 -f 126/274/4 128/282/10 127/275/10 -f 146/276/7 115/284/3 116/277/3 -f 134/279/9 136/431/1 135/280/1 -f 128/282/10 130/285/2 129/283/2 -f 115/284/3 134/279/9 133/281/9 -f 130/285/2 132/289/7 131/286/7 -f 156/287/4 158/260/10 157/262/10 -f 144/288/2 146/276/7 145/278/7 -f 132/289/7 118/252/3 117/254/3 -f 152/290/1 154/249/8 153/251/8 -f 162/292/7 147/298/3 148/293/3 -f 150/295/9 152/432/1 151/296/1 -f 147/298/3 150/295/9 149/297/9 -f 160/299/2 162/292/7 161/294/7 -f 214/300/11 222/317/27 221/301/12 -f 212/303/14 220/310/20 219/304/3 -f 219/304/3 225/311/21 218/306/16 -f 224/307/17 223/314/24 216/308/18 -f 213/302/13 221/301/12 220/310/20 -f 225/311/21 224/307/17 217/309/19 -f 219/304/3 226/334/33 232/312/22 -f 231/313/23 230/321/30 223/314/24 -f 228/315/25 227/318/28 220/310/20 -f 225/311/21 232/312/22 231/313/23 -f 229/316/26 228/315/25 221/301/12 -f 227/318/28 226/334/33 219/304/3 -f 246/322/31 248/433/8 215/323/29 -f 240/325/15 249/343/3 255/326/21 -f 232/312/22 247/434/43 245/328/5 -f 244/330/32 243/335/6 228/331/25 -f 242/333/7 247/434/43 232/312/22 -f 245/328/5 246/322/31 230/324/30 -f 243/335/6 241/351/34 227/318/28 -f 237/336/11 252/352/27 251/337/12 -f 248/339/8 244/330/32 229/332/26 -f 238/338/13 251/337/12 250/341/20 -f 249/343/3 256/367/33 262/344/22 -f 258/345/25 257/353/28 250/341/20 -f 250/341/20 249/343/3 240/325/15 -f 254/346/17 253/350/24 235/347/18 -f 255/326/21 254/346/17 234/348/19 -f 261/349/23 260/357/30 253/350/24 -f 241/351/34 242/333/7 226/334/33 -f 255/326/21 262/344/22 261/349/23 -f 252/352/27 259/355/26 258/345/25 -f 257/353/28 256/367/33 249/343/3 -f 268/358/31 270/435/8 236/359/29 -f 262/344/22 269/436/43 267/361/5 -f 266/363/32 265/368/6 258/364/25 -f 264/366/7 269/436/43 262/344/22 -f 267/361/5 268/358/31 260/360/30 -f 265/368/6 263/371/34 257/353/28 -f 270/369/8 266/363/32 259/365/26 -f 263/371/34 264/366/7 256/367/33 -f 272/372/35 274/375/36 273/373/36 -f 274/375/36 276/377/5 275/376/5 -f 276/377/5 278/379/37 277/378/37 -f 278/379/37 280/437/38 279/380/38 -f 284/381/36 286/386/5 285/382/5 -f 282/384/35 284/381/36 283/383/36 -f 286/386/5 288/388/37 287/387/37 -f 288/388/37 290/438/38 289/389/38 -f 294/390/36 296/395/5 295/391/5 -f 292/393/35 294/390/36 293/392/36 -f 296/395/5 298/397/37 297/396/37 -f 298/397/37 300/439/38 299/398/38 -f 304/399/39 306/402/40 305/400/40 -f 306/402/40 308/404/6 307/403/6 -f 308/404/6 310/406/41 309/405/41 -f 310/406/41 302/440/42 301/407/42 -f 314/408/39 316/411/40 315/409/40 -f 316/411/40 318/413/6 317/412/6 -f 318/413/6 320/415/41 319/414/41 -f 320/415/41 312/441/42 311/416/42 -f 324/417/39 326/420/40 325/418/40 -f 326/420/40 328/422/6 327/421/6 -f 328/422/6 330/424/41 329/423/41 -f 330/424/41 322/442/42 321/425/42 +f 80/94/8 81/95/4 79/96/8 +f 44/97/3 45/98/9 43/99/3 +f 68/100/10 69/101/2 67/102/10 +f 46/103/9 47/104/1 45/98/9 +f 84/100/10 85/101/2 83/102/10 +f 66/105/4 67/102/10 65/95/4 +f 48/106/1 49/96/8 47/107/1 +f 64/94/8 65/95/4 63/96/8 +f 50/94/8 51/95/4 49/96/8 +f 62/106/1 63/96/8 61/107/1 +f 52/105/4 53/102/10 51/95/4 +f 72/108/7 42/99/3 71/109/7 +f 60/103/9 61/104/1 59/98/9 +f 54/100/10 55/101/2 53/102/10 +f 41/97/3 59/98/9 42/99/3 +f 56/110/2 57/109/7 55/101/2 +f 82/105/4 83/102/10 81/95/4 +f 70/110/2 71/109/7 69/101/2 +f 58/108/7 43/99/3 57/109/7 +f 78/106/1 79/96/8 77/107/1 +f 88/108/7 74/99/3 87/109/7 +f 76/103/9 77/104/1 75/98/9 +f 73/97/3 75/98/9 74/99/3 +f 86/110/2 87/109/7 85/101/2 +f 96/94/8 97/95/4 95/96/8 +f 100/100/10 101/101/2 99/102/10 +f 98/105/4 99/102/10 97/95/4 +f 94/106/1 95/96/8 93/107/1 +f 104/108/7 90/99/3 103/109/7 +f 92/103/9 93/104/1 91/98/9 +f 89/97/3 91/98/9 90/99/3 +f 102/110/2 103/109/7 101/101/2 +f 144/94/8 145/95/4 143/96/8 +f 108/97/3 109/98/9 107/99/3 +f 132/100/10 133/101/2 131/102/10 +f 110/103/9 111/104/1 109/98/9 +f 148/100/10 149/101/2 147/102/10 +f 130/105/4 131/102/10 129/95/4 +f 112/106/1 113/96/8 111/107/1 +f 128/94/8 129/95/4 127/96/8 +f 114/94/8 115/95/4 113/96/8 +f 126/106/1 127/96/8 125/107/1 +f 116/105/4 117/102/10 115/95/4 +f 136/108/7 106/99/3 135/109/7 +f 124/103/9 125/104/1 123/98/9 +f 118/100/10 119/101/2 117/102/10 +f 105/97/3 123/98/9 106/99/3 +f 120/110/2 121/109/7 119/101/2 +f 146/105/4 147/102/10 145/95/4 +f 134/110/2 135/109/7 133/101/2 +f 122/108/7 107/99/3 121/109/7 +f 142/106/1 143/96/8 141/107/1 +f 152/108/7 138/99/3 151/109/7 +f 140/103/9 141/104/1 139/98/9 +f 137/97/3 139/98/9 138/99/3 +f 150/110/2 151/109/7 149/101/2 +f 204/111/11 211/112/12 203/113/13 +f 202/114/14 209/115/3 201/116/15 +f 209/115/3 208/117/16 201/116/15 +f 214/118/17 206/119/18 207/120/19 +f 203/113/13 210/121/20 202/114/14 +f 215/122/21 207/120/19 208/117/16 +f 209/115/3 222/123/22 215/122/21 +f 221/124/23 213/125/24 214/118/17 +f 218/126/25 210/121/20 211/112/12 +f 215/122/21 221/124/23 214/118/17 +f 219/127/26 211/112/12 212/128/27 +f 217/129/28 209/115/3 210/121/20 +f 204/111/11 205/130/29 212/128/27 +f 212/128/27 205/130/29 219/127/26 +f 205/131/29 206/119/18 213/125/24 +f 213/125/24 220/132/30 205/131/29 +f 236/133/31 205/134/29 220/135/30 +f 230/116/15 245/122/21 223/117/16 +f 222/123/22 235/136/5 221/137/23 +f 234/138/32 218/139/25 219/140/26 +f 232/141/7 222/123/22 216/142/33 +f 235/136/5 220/135/30 221/137/23 +f 233/143/6 217/129/28 218/139/25 +f 227/111/11 241/112/12 228/113/13 +f 238/144/8 219/140/26 205/145/29 +f 228/113/13 240/121/20 229/114/14 +f 239/115/3 252/123/22 245/122/21 +f 248/126/25 240/121/20 241/112/12 +f 240/121/20 230/116/15 229/114/14 +f 244/118/17 225/119/18 224/120/19 +f 245/122/21 224/120/19 223/117/16 +f 251/124/23 243/125/24 244/118/17 +f 231/146/34 216/142/33 217/129/28 +f 245/122/21 251/124/23 244/118/17 +f 242/128/27 248/126/25 241/112/12 +f 247/129/28 239/115/3 240/121/20 +f 227/111/11 226/130/29 242/128/27 +f 242/128/27 226/130/29 249/127/26 +f 226/131/29 225/119/18 243/125/24 +f 243/125/24 250/132/30 226/131/29 +f 258/133/31 226/134/29 250/135/30 +f 252/123/22 257/136/5 251/137/23 +f 256/138/32 248/139/25 249/140/26 +f 254/141/7 252/123/22 246/142/33 +f 257/136/5 250/135/30 251/137/23 +f 255/143/6 247/129/28 248/139/25 +f 260/144/8 249/140/26 226/145/29 +f 253/146/34 246/142/33 247/129/28 +f 262/147/35 263/148/36 261/144/35 +f 264/149/36 265/48/5 263/148/36 +f 266/150/5 267/151/37 265/48/5 +f 268/152/37 269/84/38 267/151/37 +f 274/149/36 275/48/5 273/148/36 +f 272/147/35 273/148/36 271/144/35 +f 276/150/5 277/151/37 275/48/5 +f 278/152/37 279/84/38 277/151/37 +f 284/149/36 285/48/5 283/148/36 +f 282/147/35 283/148/36 281/144/35 +f 286/150/5 287/151/37 285/48/5 +f 288/152/37 289/84/38 287/151/37 +f 294/147/39 295/148/40 293/144/39 +f 296/149/40 297/48/6 295/148/40 +f 298/150/6 299/151/41 297/48/6 +f 300/152/41 291/84/42 299/151/41 +f 304/147/39 305/148/40 303/144/39 +f 306/149/40 307/48/6 305/148/40 +f 308/150/6 309/151/41 307/48/6 +f 310/152/41 301/84/42 309/151/41 +f 314/147/39 315/148/40 313/144/39 +f 316/149/40 317/48/6 315/148/40 +f 318/150/6 319/151/41 317/48/6 +f 320/152/41 311/84/42 319/151/41 +f 80/94/8 82/105/4 81/95/4 +f 44/97/3 46/103/9 45/98/9 +f 68/100/10 70/110/2 69/101/2 +f 46/103/9 48/153/1 47/104/1 +f 84/100/10 86/110/2 85/101/2 +f 66/105/4 68/100/10 67/102/10 +f 48/106/1 50/94/8 49/96/8 +f 64/94/8 66/105/4 65/95/4 +f 50/94/8 52/105/4 51/95/4 +f 62/106/1 64/94/8 63/96/8 +f 52/105/4 54/100/10 53/102/10 +f 72/108/7 41/97/3 42/99/3 +f 60/103/9 62/153/1 61/104/1 +f 54/100/10 56/110/2 55/101/2 +f 41/97/3 60/103/9 59/98/9 +f 56/110/2 58/108/7 57/109/7 +f 82/105/4 84/100/10 83/102/10 +f 70/110/2 72/108/7 71/109/7 +f 58/108/7 44/97/3 43/99/3 +f 78/106/1 80/94/8 79/96/8 +f 88/108/7 73/97/3 74/99/3 +f 76/103/9 78/153/1 77/104/1 +f 73/97/3 76/103/9 75/98/9 +f 86/110/2 88/108/7 87/109/7 +f 96/94/8 98/105/4 97/95/4 +f 100/100/10 102/110/2 101/101/2 +f 98/105/4 100/100/10 99/102/10 +f 94/106/1 96/94/8 95/96/8 +f 104/108/7 89/97/3 90/99/3 +f 92/103/9 94/153/1 93/104/1 +f 89/97/3 92/103/9 91/98/9 +f 102/110/2 104/108/7 103/109/7 +f 144/94/8 146/105/4 145/95/4 +f 108/97/3 110/103/9 109/98/9 +f 132/100/10 134/110/2 133/101/2 +f 110/103/9 112/153/1 111/104/1 +f 148/100/10 150/110/2 149/101/2 +f 130/105/4 132/100/10 131/102/10 +f 112/106/1 114/94/8 113/96/8 +f 128/94/8 130/105/4 129/95/4 +f 114/94/8 116/105/4 115/95/4 +f 126/106/1 128/94/8 127/96/8 +f 116/105/4 118/100/10 117/102/10 +f 136/108/7 105/97/3 106/99/3 +f 124/103/9 126/153/1 125/104/1 +f 118/100/10 120/110/2 119/101/2 +f 105/97/3 124/103/9 123/98/9 +f 120/110/2 122/108/7 121/109/7 +f 146/105/4 148/100/10 147/102/10 +f 134/110/2 136/108/7 135/109/7 +f 122/108/7 108/97/3 107/99/3 +f 142/106/1 144/94/8 143/96/8 +f 152/108/7 137/97/3 138/99/3 +f 140/103/9 142/153/1 141/104/1 +f 137/97/3 140/103/9 139/98/9 +f 150/110/2 152/108/7 151/109/7 +f 204/111/11 212/128/27 211/112/12 +f 202/114/14 210/121/20 209/115/3 +f 209/115/3 215/122/21 208/117/16 +f 214/118/17 213/125/24 206/119/18 +f 203/113/13 211/112/12 210/121/20 +f 215/122/21 214/118/17 207/120/19 +f 209/115/3 216/142/33 222/123/22 +f 221/124/23 220/132/30 213/125/24 +f 218/126/25 217/129/28 210/121/20 +f 215/122/21 222/123/22 221/124/23 +f 219/127/26 218/126/25 211/112/12 +f 217/129/28 216/142/33 209/115/3 +f 236/133/31 238/154/8 205/134/29 +f 230/116/15 239/115/3 245/122/21 +f 222/123/22 237/155/43 235/136/5 +f 234/138/32 233/143/6 218/139/25 +f 232/141/7 237/155/43 222/123/22 +f 235/136/5 236/133/31 220/135/30 +f 233/143/6 231/146/34 217/129/28 +f 227/111/11 242/128/27 241/112/12 +f 238/144/8 234/138/32 219/140/26 +f 228/113/13 241/112/12 240/121/20 +f 239/115/3 246/142/33 252/123/22 +f 248/126/25 247/129/28 240/121/20 +f 240/121/20 239/115/3 230/116/15 +f 244/118/17 243/125/24 225/119/18 +f 245/122/21 244/118/17 224/120/19 +f 251/124/23 250/132/30 243/125/24 +f 231/146/34 232/141/7 216/142/33 +f 245/122/21 252/123/22 251/124/23 +f 242/128/27 249/127/26 248/126/25 +f 247/129/28 246/142/33 239/115/3 +f 258/133/31 260/154/8 226/134/29 +f 252/123/22 259/155/43 257/136/5 +f 256/138/32 255/143/6 248/139/25 +f 254/141/7 259/155/43 252/123/22 +f 257/136/5 258/133/31 250/135/30 +f 255/143/6 253/146/34 247/129/28 +f 260/144/8 256/138/32 249/140/26 +f 253/146/34 254/141/7 246/142/33 +f 262/147/35 264/149/36 263/148/36 +f 264/149/36 266/150/5 265/48/5 +f 266/150/5 268/152/37 267/151/37 +f 268/152/37 270/156/38 269/84/38 +f 274/149/36 276/150/5 275/48/5 +f 272/147/35 274/149/36 273/148/36 +f 276/150/5 278/152/37 277/151/37 +f 278/152/37 280/156/38 279/84/38 +f 284/149/36 286/150/5 285/48/5 +f 282/147/35 284/149/36 283/148/36 +f 286/150/5 288/152/37 287/151/37 +f 288/152/37 290/156/38 289/84/38 +f 294/147/39 296/149/40 295/148/40 +f 296/149/40 298/150/6 297/48/6 +f 298/150/6 300/152/41 299/151/41 +f 300/152/41 292/156/42 291/84/42 +f 304/147/39 306/149/40 305/148/40 +f 306/149/40 308/150/6 307/48/6 +f 308/150/6 310/152/41 309/151/41 +f 310/152/41 302/156/42 301/84/42 +f 314/147/39 316/149/40 315/148/40 +f 316/149/40 318/150/6 317/48/6 +f 318/150/6 320/152/41 319/151/41 +f 320/152/41 312/156/42 311/84/42 +o plate +v -0.500000 0.937500 -1.500000 +v 0.500000 0.937500 -1.500000 +v -0.500000 0.937500 -5.250000 +v 0.500000 0.937500 -5.250000 +v -0.500000 1.062500 -5.250000 +v -0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -5.250000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vt 0.890625 0.566667 +vt 0.656250 0.700000 +vt 0.656250 0.566667 +vt 0.890625 0.700000 +vt 0.664062 0.700000 +vt 0.664062 0.566667 +vt 0.890625 0.683333 +vt 0.656250 0.683333 +vt 0.656250 0.583333 +vt 0.890625 0.583333 +s 0 +usemtl +f 323/157/44 322/158/44 321/159/44 +f 327/159/45 325/160/45 326/158/45 +f 323/161/46 328/159/46 324/162/46 +f 324/163/47 327/158/47 322/164/47 +f 321/165/48 325/157/48 323/166/48 +f 323/157/44 324/160/44 322/158/44 +f 327/159/45 328/157/45 325/160/45 +f 323/161/46 325/158/46 328/159/46 +f 324/163/47 328/160/47 327/158/47 +f 321/165/48 326/159/48 325/157/48 From 102f26c8d319cc161189c3539e6ed66ee3a7cd7a Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:31:57 -0500 Subject: [PATCH 05/16] sweet baby ray's honey mustard fixed boundingbox problems and a crash --- .../java/com/hbm/blocks/machine/MachineStrandCaster.java | 4 ++-- .../tileentity/machine/TileEntityMachineStrandCaster.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index ee6dab3a8..9f4a7f745 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -53,7 +53,6 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce @Override public TileEntity createNewTileEntity(World world, int meta) { - if (meta >= 12) return new TileEntityMachineStrandCaster(); if (meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal(); return null; @@ -212,7 +211,8 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce if (tool != ToolType.SCREWDRIVER) return false; - TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + int[] coords = findCore(world, x, y, z); + TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); if (cast.slots[0] == null) return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index dc9e30c83..b7044b33f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -318,12 +318,12 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase if (bb == null) { bb = AxisAlignedBB.getBoundingBox( - xCoord - 1, + xCoord - 7, yCoord, - zCoord - 1, - xCoord + 6, + zCoord - 7, + xCoord + 7, yCoord + 3, - zCoord + 6 + zCoord + 7 ); } return bb; From eb3c0ff9b1c60892680e65999ca248822c776074 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 10 Jan 2024 16:12:22 +0100 Subject: [PATCH 06/16] fixes, radiation config for crater biome --- changelog | 2 ++ src/main/java/com/hbm/config/WorldConfig.java | 14 +++++++--- .../com/hbm/handler/EntityEffectHandler.java | 26 +++++++++++++++++++ .../java/com/hbm/hazard/HazardRegistry.java | 23 ++++++++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) diff --git a/changelog b/changelog index 8e9ac0516..4add55244 100644 --- a/changelog +++ b/changelog @@ -2,6 +2,7 @@ * Nuclear craters have been reworked * The fallout effect no longer creates dead grass, instead it converts the area into three new biomes, the outer crater, crater and inner crater * The entire crater is now slaked sellafite which now has texture variance to look more like debris, as well as getting darker towards the center + * The biomes being overridden means that nukes are now a solution to thaumcraft taint. Yay! * The watz now cools up to 20% of its current heat level instead of 10%, making reactors a lot cooler and therefore react faster, which means more energy and faster depletion rates * Mud production rates have been halved, to prevent currently working setups from exploding instantly * This is your reminder that you can achieve more power, mud and depletion by building larger watz powerplants, i.e. stacking more watz segments on top of each other. Your tiny poo reactors make me sick. @@ -12,3 +13,4 @@ ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes +* Fixed PWR fuel rods not having any radiation value assigned to them diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 30b356306..4aa3068b1 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -111,6 +111,10 @@ public class WorldConfig { public static int craterBiomeId = 80; public static int craterBiomeInnerId = 81; public static int craterBiomeOuterId = 82; + public static float craterBiomeRad = 5F; + public static float craterBiomeInnerRad = 25F; + public static float craterBiomeOuterRad = 0.5F; + public static float craterBiomeWaterMult = 5F; public static void loadFromConfig(Configuration config) { @@ -223,9 +227,13 @@ public class WorldConfig { meteorShowerDuration = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.05_meteorShowerDuration", "Max duration of meteor shower in ticks", 20 * 60 * 30); final String CATEGORY_BIOMES = CommonConfig.CATEGORY_BIOMES; - craterBiomeId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.00_craterBiomeId", "The numeric ID for the crater biome", 80); - craterBiomeInnerId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.01_craterBiomeInnerId", "The numeric ID for the inner crater biome", 81); - craterBiomeOuterId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.02_craterBiomeOuterId", "The numeric ID for the outer crater biome", 82); + craterBiomeId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.B00_craterBiomeId", "The numeric ID for the crater biome", 80); + craterBiomeInnerId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.B01_craterBiomeInnerId", "The numeric ID for the inner crater biome", 81); + craterBiomeOuterId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.B02_craterBiomeOuterId", "The numeric ID for the outer crater biome", 82); + craterBiomeRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R00_craterBiomeRad", "RAD/s for the crater biome", 0.5D); + craterBiomeInnerRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R01_craterBiomeInnerRad", "RAD/s for the inner crater biome", 5D); + craterBiomeOuterRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R02_craterBiomeOuterRad", "RAD/s for the outer crater biome", 25D); + craterBiomeWaterMult = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R03_craterBiomeWaterMult", "Multiplier for RAD/s in crater biomes when in water", 5D); radioStructure = CommonConfig.setDefZero(radioStructure, 1000); antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 296724e2d..b9ec033e7 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.config.BombConfig; import com.hbm.config.GeneralConfig; import com.hbm.config.RadiationConfig; +import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; @@ -30,6 +31,7 @@ import com.hbm.util.ContaminationUtil; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; +import com.hbm.world.biome.BiomeGenCraterBase; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; @@ -48,6 +50,7 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; public class EntityEffectHandler { @@ -57,6 +60,17 @@ public class EntityEffectHandler { HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); HbmLivingProps.setRadEnv(entity, 0); } + + if(entity instanceof EntityPlayer && entity == MainRegistry.proxy.me()) { + EntityPlayer player = MainRegistry.proxy.me(); + if(player != null) { + BiomeGenBase biome = player.worldObj.getBiomeGenForCoords((int) Math.floor(player.posX), (int) Math.floor(player.posZ)); + if(biome == BiomeGenCraterBase.craterBiome || biome == BiomeGenCraterBase.craterInnerBiome) { + Random rand = player.getRNG(); + for(int i = 0; i < 3; i++) player.worldObj.spawnParticle("townaura", player.posX + rand.nextGaussian() * 3, player.posY + rand.nextGaussian() * 2, player.posZ + rand.nextGaussian() * 3, 0, 0, 0); + } + } + } if(entity instanceof EntityPlayerMP) { HbmLivingProps props = HbmLivingProps.getData(entity); @@ -89,6 +103,18 @@ public class EntityEffectHandler { if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { entity.setFire(5); } + + BiomeGenBase biome = entity.worldObj.getBiomeGenForCoords((int) Math.floor(entity.posX), (int) Math.floor(entity.posZ)); + float radiation = 0; + if(biome == BiomeGenCraterBase.craterOuterBiome) radiation = WorldConfig.craterBiomeOuterRad; + if(biome == BiomeGenCraterBase.craterBiome) radiation = WorldConfig.craterBiomeRad; + if(biome == BiomeGenCraterBase.craterInnerBiome) radiation = WorldConfig.craterBiomeInnerRad; + + if(entity.isWet()) radiation *= WorldConfig.craterBiomeWaterMult; + + if(radiation > 0) { + ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, radiation / 20F); + } } handleContamination(entity); diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index b670bfde7..4b0476d24 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -13,6 +13,7 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; @@ -442,6 +443,22 @@ public class HazardRegistry { HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4)); HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4)); HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4)); + + registerPWRFuel(EnumPWRFuel.MEU, uf * billet * 2); + registerPWRFuel(EnumPWRFuel.HEU233, u233 * billet * 2); + registerPWRFuel(EnumPWRFuel.HEU235, u235 * billet * 2); + registerPWRFuel(EnumPWRFuel.MEN, npf * billet * 2); + registerPWRFuel(EnumPWRFuel.HEN237, np237 * billet * 2); + registerPWRFuel(EnumPWRFuel.MOX, mox * billet * 2); + registerPWRFuel(EnumPWRFuel.MEP, purg * billet * 2); + registerPWRFuel(EnumPWRFuel.HEP239, pu239 * billet * 2); + registerPWRFuel(EnumPWRFuel.HEP241, pu241 * billet * 2); + registerPWRFuel(EnumPWRFuel.MEA, amrg * billet * 2); + registerPWRFuel(EnumPWRFuel.HEA242, am242 * billet * 2); + registerPWRFuel(EnumPWRFuel.HES326, sa326 * billet * 2); + registerPWRFuel(EnumPWRFuel.HES327, sa327 * billet * 2); + registerPWRFuel(EnumPWRFuel.BFB_AM_MIX, amrg * billet); + registerPWRFuel(EnumPWRFuel.BFB_PU241, pu241 * billet); HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder)); HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult)); @@ -535,6 +552,12 @@ public class HazardRegistry { private static HazardData makeData(HazardTypeBase hazard, float level) { return new HazardData().addEntry(hazard, level); } private static HazardData makeData(HazardTypeBase hazard, float level, boolean override) { return new HazardData().addEntry(hazard, level, override); } + private static void registerPWRFuel(EnumPWRFuel fuel, float baseRad) { + HazardSystem.register(DictFrame.fromOne(ModItems.pwr_fuel, fuel), makeData(RADIATION, baseRad)); + HazardSystem.register(DictFrame.fromOne(ModItems.pwr_fuel_hot, fuel), makeData(RADIATION, baseRad * 10).addEntry(HOT, 5)); + HazardSystem.register(DictFrame.fromOne(ModItems.pwr_fuel_depleted, fuel), makeData(RADIATION, baseRad * 10)); + } + private static void registerRBMKPellet(Item pellet, float base, float dep) { registerRBMKPellet(pellet, base, dep, false, 0F, 0F); } private static void registerRBMKPellet(Item pellet, float base, float dep, boolean linear) { registerRBMKPellet(pellet, base, dep, linear, 0F, 0F); } private static void registerRBMKPellet(Item pellet, float base, float dep, boolean linear, float blinding, float digamma) { From 3dcf5a8e4784df304e861004b548d3fff4dc9675 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 10 Jan 2024 20:48:34 +0100 Subject: [PATCH 07/16] killed useless blocks, sellafite ores --- changelog | 3 + src/main/java/com/hbm/blocks/ModBlocks.java | 40 +- .../com/hbm/blocks/generic/BlockCrate.java | 3 +- .../blocks/generic/BlockSellafieldOre.java | 93 ++++ .../hbm/blocks/machine/DummyBlockDrill.java | 61 --- .../blocks/machine/MachineMiningDrill.java | 232 -------- .../com/hbm/config/FalloutConfigJSON.java | 7 +- src/main/java/com/hbm/config/WorldConfig.java | 14 +- .../hbm/entity/effect/EntityNukeTorex.java | 4 +- .../ContainerMachineMiningDrill.java | 116 ---- .../inventory/gui/GUIMachineMiningDrill.java | 69 --- .../com/hbm/items/special/ItemStarterKit.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 - src/main/java/com/hbm/main/MainRegistry.java | 6 + src/main/java/com/hbm/main/NEIConfig.java | 3 - .../com/hbm/packet/LoopedSoundPacket.java | 12 - .../java/com/hbm/packet/PacketDispatcher.java | 2 - .../java/com/hbm/packet/TEDrillPacket.java | 67 --- .../hbm/render/item/ItemRenderLibrary.java | 13 - .../render/tileentity/RenderMiningDrill.java | 68 --- .../java/com/hbm/sound/SoundLoopMiner.java | 39 -- .../java/com/hbm/tileentity/TileMappings.java | 1 - .../machine/TileEntityMachineMiningDrill.java | 495 ------------------ .../textures/blocks/ore_overlay_diamond.png | Bin 0 -> 212 bytes .../textures/blocks/ore_overlay_emerald.png | Bin 0 -> 143 bytes 25 files changed, 124 insertions(+), 1227 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java delete mode 100644 src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java delete mode 100644 src/main/java/com/hbm/packet/TEDrillPacket.java delete mode 100644 src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java delete mode 100644 src/main/java/com/hbm/sound/SoundLoopMiner.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_overlay_diamond.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_overlay_emerald.png diff --git a/changelog b/changelog index 4add55244..ff00a3277 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,8 @@ * The fallout effect no longer creates dead grass, instead it converts the area into three new biomes, the outer crater, crater and inner crater * The entire crater is now slaked sellafite which now has texture variance to look more like debris, as well as getting darker towards the center * The biomes being overridden means that nukes are now a solution to thaumcraft taint. Yay! + * There are now new ore variants for the block conversions which match the surrounding sellafite + * Berylliumm ore now has a 100% chance of being converted into emerald * The watz now cools up to 20% of its current heat level instead of 10%, making reactors a lot cooler and therefore react faster, which means more energy and faster depletion rates * Mud production rates have been halved, to prevent currently working setups from exploding instantly * This is your reminder that you can achieve more power, mud and depletion by building larger watz powerplants, i.e. stacking more watz segments on top of each other. Your tiny poo reactors make me sick. @@ -10,6 +12,7 @@ * Adjusted the nuclear flash's intensity, the flash will now deal less and less radiation the longer it goes on * The nuclear flash now bypasses radiation resistance, being only affected by blocks and distance * Mushroom clouds' initial scale is now based on the total scale instead of all spawning roughly at the same size, causing fireballs to be comically small for huge bombs +* Removed the old mining drill for good ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 613279cd8..5b304c9ce 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -534,12 +534,8 @@ public class ModBlocks { public static Block sellafield_slaked; public static Block sellafield; - /*public static Block sellafield_0; - public static Block sellafield_1; - public static Block sellafield_2; - public static Block sellafield_3; - public static Block sellafield_4; - public static Block sellafield_core;*/ + public static Block ore_sellafield_diamond; + public static Block ore_sellafield_emerald; public static Block geysir_water; public static Block geysir_chlorine; @@ -783,8 +779,6 @@ public class ModBlocks { public static Block capacitor_tantalium; public static Block capacitor_schrabidate; - @Deprecated public static Block machine_coal_off; - @Deprecated public static Block machine_coal_on; public static Block machine_wood_burner; public static Block red_wire_coated; @@ -1035,10 +1029,7 @@ public class ModBlocks { public static Block machine_deaerator; public static final int guiID_machine_deaerator = 74; - public static Block machine_drill; - public static Block drill_pipe; public static Block machine_excavator; - public static Block machine_autosaw; public static Block machine_mining_laser; @@ -1260,8 +1251,6 @@ public class ModBlocks { public static Block volcano_core; - public static Block dummy_block_drill; - public static Block dummy_port_drill; public static Block dummy_block_ams_limiter; public static Block dummy_port_ams_limiter; public static Block dummy_block_ams_emitter; @@ -1778,12 +1767,8 @@ public class ModBlocks { sellafield_slaked = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); sellafield = new BlockSellafield(Material.rock).setBlockName("sellafield").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); - /*sellafield_0 = new BlockHazard(Material.rock).setBlockName("sellafield_0").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); - sellafield_1 = new BlockHazard(Material.rock).setBlockName("sellafield_1").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_1"); - sellafield_2 = new BlockHazard(Material.rock).setBlockName("sellafield_2").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_2"); - sellafield_3 = new BlockHazard(Material.rock).setBlockName("sellafield_3").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_3"); - sellafield_4 = new BlockHazard(Material.rock).setBlockName("sellafield_4").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_4"); - sellafield_core = new BlockHazard(Material.rock).setBlockName("sellafield_core").setStepSound(Block.soundTypeStone).setHardness(10.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_core");*/ + ore_sellafield_diamond = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_diamond").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_diamond"); + ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); geysir_water = new BlockGeysir(Material.rock).setBlockName("geysir_water").setStepSound(Block.soundTypeStone).setHardness(5.0F); geysir_chlorine = new BlockGeysir(Material.rock).setBlockName("geysir_chlorine").setStepSound(Block.soundTypeStone).setHardness(5.0F); @@ -1948,10 +1933,7 @@ public class ModBlocks { capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); - machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); - machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); machine_wood_burner = new MachineWoodBurner(Material.iron).setBlockName("machine_wood_burner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_diesel = new MachineDiesel().setBlockName("machine_diesel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2295,9 +2277,7 @@ public class ModBlocks { machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); @@ -2446,8 +2426,6 @@ public class ModBlocks { Fluid liquidConcrete = new GenericFluid("concrete_liquid").setViscosity(2000); concrete_liquid = new GenericFiniteFluid(liquidConcrete, Material.rock, "concrete_liquid", "concrete_liquid_flowing").setQuantaPerBlock(4).setBlockName("concrete_liquid").setResistance(500F); - dummy_block_drill = new DummyBlockDrill(Material.iron, false).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); - dummy_port_drill = new DummyBlockDrill(Material.iron, true).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); dummy_block_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_block_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_port_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_port_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_block_ams_emitter = new DummyBlockAMSEmitter(Material.iron).setBlockName("dummy_block_ams_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); @@ -2975,7 +2953,9 @@ public class ModBlocks { GameRegistry.registerBlock(impact_dirt, impact_dirt.getUnlocalizedName()); //RAD - GameRegistry.registerBlock(sellafield_slaked, sellafield_slaked.getUnlocalizedName()); + register(sellafield_slaked); + register(ore_sellafield_diamond); + register(ore_sellafield_emerald); GameRegistry.registerBlock(sellafield, ItemBlockNamedMeta.class, sellafield.getUnlocalizedName()); //Geysirs @@ -3184,8 +3164,6 @@ public class ModBlocks { GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_coal_off, machine_coal_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_coal_on, machine_coal_on.getUnlocalizedName()); register(machine_wood_burner); register(machine_diesel); register(machine_selenium); @@ -3399,7 +3377,6 @@ public class ModBlocks { register(machine_catalytic_cracker); register(machine_catalytic_reformer); register(machine_coker); - register(machine_drill); register(machine_autosaw); register(machine_excavator); register(machine_mining_laser); @@ -3594,8 +3571,6 @@ public class ModBlocks { //GameRegistry.registerBlock(concrete_liquid, concrete_liquid.getUnlocalizedName()); //Multiblock Dummy Blocks - GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_limiter, dummy_block_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_ams_limiter, dummy_port_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_emitter, dummy_block_ams_emitter.getUnlocalizedName()); @@ -3614,7 +3589,6 @@ public class ModBlocks { //Other Technical Blocks GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); - GameRegistry.registerBlock(drill_pipe, drill_pipe.getUnlocalizedName()); GameRegistry.registerBlock(vent_chlorine, vent_chlorine.getUnlocalizedName()); GameRegistry.registerBlock(vent_cloud, vent_cloud.getUnlocalizedName()); GameRegistry.registerBlock(vent_pink_cloud, vent_pink_cloud.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index 412b7ed2d..219d3d70a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -124,7 +124,7 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_coal_off), 10); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_wood_burner), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_selenium), 7); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4); @@ -134,7 +134,6 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 8); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_assembler), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_fluidtank), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_drill), 4); BlockCrate.addToListWithWeight(metalList, ModItems.centrifuge_element, 6); BlockCrate.addToListWithWeight(metalList, ModItems.motor, 8); BlockCrate.addToListWithWeight(metalList, ModItems.coil_tungsten, 7); diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java new file mode 100644 index 000000000..6c17f2143 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java @@ -0,0 +1,93 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; +import com.hbm.render.block.RenderBlockMultipass; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; + +public class BlockSellafieldOre extends BlockSellafieldSlaked implements IBlockMultiPass { + + public BlockSellafieldOre(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(this.getTextureName()); + super.registerBlockIcons(reg); + } + + @Override + public int getRenderType() { + return IBlockMultiPass.getRenderType(); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + if(RenderBlockMultipass.currentPass == 1) return this.blockIcon; + return super.getIcon(world, x, y, z, side); + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + if(RenderBlockMultipass.currentPass == 1) return 0xffffff; + return super.colorMultiplier(world, x, y, z); + } + + @Override + public int getPasses() { + return 2; + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + if(this == ModBlocks.ore_sellafield_diamond) return Items.diamond; + if(this == ModBlocks.ore_sellafield_emerald) return Items.emerald; + return null; + } + + @Override + public int quantityDropped(Random rand) { + return 1; + } + + @Override + public int quantityDroppedWithBonus(int fortune, Random rand) { + if(fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, rand, fortune)) { + int j = rand.nextInt(fortune + 2) - 1; + if(j < 0) j = 0; + return this.quantityDropped(rand) * (j + 1); + } else { + return this.quantityDropped(rand); + } + } + + private Random rand = new Random(); + + @Override + public int getExpDrop(IBlockAccess world, int meta, int fortune) { + if(this.getItemDropped(meta, rand, fortune) != Item.getItemFromBlock(this)) { + int j1 = 0; + + if(this == ModBlocks.ore_sellafield_diamond) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); + if(this == ModBlocks.ore_sellafield_emerald) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); + + return j1; + } + return 0; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java b/src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java deleted file mode 100644 index 752120244..000000000 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hbm.blocks.machine; - - -import com.hbm.blocks.ModBlocks; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityDummy; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class DummyBlockDrill extends DummyOldBase { - - public DummyBlockDrill(Material p_i45386_1_, boolean port) { - super(p_i45386_1_, port); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityDummy(); - } - - @Override - @SideOnly(Side.CLIENT) - public Item getItem(World world, int x, int y, int z) - { - return Item.getItemFromBlock(ModBlocks.machine_drill); - } - - @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()) - { - TileEntity te = world.getTileEntity(x, y, z); - if(te != null && te instanceof TileEntityDummy) { - int a = ((TileEntityDummy)te).targetX; - int b = ((TileEntityDummy)te).targetY; - int c = ((TileEntityDummy)te).targetZ; - - TileEntityMachineMiningDrill entity = (TileEntityMachineMiningDrill) world.getTileEntity(a, b, c); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, a, b, c); - } - } - return true; - } else { - return false; - } - } - -} diff --git a/src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java b/src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java deleted file mode 100644 index c4aa5e156..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.MultiblockHandler; -import com.hbm.interfaces.IMultiblock; -import com.hbm.tileentity.machine.TileEntityDummy; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class MachineMiningDrill extends BlockContainer implements IMultiblock { - - public MachineMiningDrill(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineMiningDrill(); - - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.machine_drill); - } - - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @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, 5, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x + 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x - 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x, y, z + 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x, y, z - 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x + 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x - 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x, y, z + 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x, y, z - 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - } - - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - - @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) - { - ISidedInventory tileentityfurnace = (ISidedInventory)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_); - } -} diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 5c59d3a83..f9ac9452d 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -75,8 +75,6 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange)); entries.add(new FalloutEntry().mB(Blocks.mossy_cobblestone).prim(new Triplet(Blocks.coal_ore, 0, 1))); - entries.add(new FalloutEntry().mB(Blocks.coal_ore).prim(new Triplet(Blocks.diamond_ore, 0, 3), new Triplet(Blocks.emerald_ore, 0, 2)).c(0.5)); - entries.add(new FalloutEntry().mB(ModBlocks.ore_lignite).prim(new Triplet(Blocks.diamond_ore, 0, 1)).c(0.2)); entries.add(new FalloutEntry().mB(ModBlocks.ore_uranium).prim(new Triplet(ModBlocks.ore_schrabidium, 0, 1), new Triplet(ModBlocks.ore_uranium_scorched, 0, 99))); entries.add(new FalloutEntry().mB(ModBlocks.ore_nether_uranium).prim(new Triplet(ModBlocks.ore_nether_schrabidium, 0, 1), new Triplet(ModBlocks.ore_nether_uranium_scorched, 0, 99))); entries.add(new FalloutEntry().mB(ModBlocks.ore_gneiss_uranium).prim(new Triplet(ModBlocks.ore_gneiss_schrabidium, 0, 1), new Triplet(ModBlocks.ore_gneiss_uranium_scorched, 0, 99))); @@ -85,8 +83,11 @@ public class FalloutConfigJSON { Block stone = Compat.tryLoadBlock(Compat.MOD_EF, "stone"); for(int i = 1; i <= 10; i++) { + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, 10 - i, 3), new Triplet(ModBlocks.ore_sellafield_emerald, 10 - i, 2)).c(0.5).max(i * 5).sol(true).mB(Blocks.coal_ore)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, 10 - i, 1)).c(0.2).max(i * 5).sol(true).mB(ModBlocks.ore_lignite)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_emerald, 10 - i, 1)).max(i * 5).sol(true).mB(ModBlocks.ore_beryllium)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.rock)); - entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mB(Blocks.gravel)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.sand)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.ground)); if(i <= 9) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.grass)); if(deepslate != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mB(deepslate)); diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 4aa3068b1..801563946 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -227,13 +227,13 @@ public class WorldConfig { meteorShowerDuration = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.05_meteorShowerDuration", "Max duration of meteor shower in ticks", 20 * 60 * 30); final String CATEGORY_BIOMES = CommonConfig.CATEGORY_BIOMES; - craterBiomeId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.B00_craterBiomeId", "The numeric ID for the crater biome", 80); - craterBiomeInnerId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.B01_craterBiomeInnerId", "The numeric ID for the inner crater biome", 81); - craterBiomeOuterId = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "17.B02_craterBiomeOuterId", "The numeric ID for the outer crater biome", 82); - craterBiomeRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R00_craterBiomeRad", "RAD/s for the crater biome", 0.5D); - craterBiomeInnerRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R01_craterBiomeInnerRad", "RAD/s for the inner crater biome", 5D); - craterBiomeOuterRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R02_craterBiomeOuterRad", "RAD/s for the outer crater biome", 25D); - craterBiomeWaterMult = (float) CommonConfig.createConfigDouble(config, CATEGORY_METEOR, "17.R03_craterBiomeWaterMult", "Multiplier for RAD/s in crater biomes when in water", 5D); + craterBiomeId = CommonConfig.createConfigInt(config, CATEGORY_BIOMES, "17.B00_craterBiomeId", "The numeric ID for the crater biome", 80); + craterBiomeInnerId = CommonConfig.createConfigInt(config, CATEGORY_BIOMES, "17.B01_craterBiomeInnerId", "The numeric ID for the inner crater biome", 81); + craterBiomeOuterId = CommonConfig.createConfigInt(config, CATEGORY_BIOMES, "17.B02_craterBiomeOuterId", "The numeric ID for the outer crater biome", 82); + craterBiomeRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R00_craterBiomeRad", "RAD/s for the crater biome", 5D); + craterBiomeInnerRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R01_craterBiomeInnerRad", "RAD/s for the inner crater biome", 25D); + craterBiomeOuterRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R02_craterBiomeOuterRad", "RAD/s for the outer crater biome", 0.5D); + craterBiomeWaterMult = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R03_craterBiomeWaterMult", "Multiplier for RAD/s in crater biomes when in water", 5D); radioStructure = CommonConfig.setDefZero(radioStructure, 1000); antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000); diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java index 0ded68a02..8959e0685 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java @@ -117,7 +117,7 @@ public class EntityNukeTorex extends Entity { // spawn condensation clouds if(ticksExisted > 200 && ticksExisted < 600) { - for(int i = 0; i < 50; i++) { + for(int i = 0; i < 20; i++) { for(int j = 0; j < 4; j++) { float angle = (float) (Math.PI * 2 * rand.nextDouble()); Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * 3, 0, 0); @@ -131,7 +131,7 @@ public class EntityNukeTorex extends Entity { } if(ticksExisted > 300 && ticksExisted < 600) { - for(int i = 0; i < 50; i++) { + for(int i = 0; i < 20; i++) { for(int j = 0; j < 4; j++) { float angle = (float) (Math.PI * 2 * rand.nextDouble()); Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * 2, 0, 0); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java b/src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java deleted file mode 100644 index 4bc3aa5c0..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -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 ContainerMachineMiningDrill extends Container { - -private TileEntityMachineMiningDrill nukeBoy; - - private int warning; - - public ContainerMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { - - nukeBoy = tedf; - - //Battery - this.addSlotToContainer(new Slot(tedf, 0, 44, 53)); - //Outputs - this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); - this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); - this.addSlotToContainer(new Slot(tedf, 4, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 5, 98, 35)); - this.addSlotToContainer(new Slot(tedf, 6, 116, 35)); - this.addSlotToContainer(new Slot(tedf, 7, 80, 53)); - this.addSlotToContainer(new Slot(tedf, 8, 98, 53)); - this.addSlotToContainer(new Slot(tedf, 9, 116, 53)); - //Upgrades - this.addSlotToContainer(new Slot(tedf, 10, 152, 17)); - this.addSlotToContainer(new Slot(tedf, 11, 152, 35)); - this.addSlotToContainer(new Slot(tedf, 12, 152, 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)); - } - - this.detectAndSendChanges(); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 12) { - if (!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(var5, 0, 13, false)) - { - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return nukeBoy.isUseableByPlayer(player); - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) { - ICrafting par1 = (ICrafting) this.crafters.get(i); - - if(this.warning != this.nukeBoy.warning) { - par1.sendProgressBarUpdate(this, 1, this.nukeBoy.warning); - } - } - - this.warning = this.nukeBoy.warning; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) { - nukeBoy.warning = j; - } - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java b/src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java deleted file mode 100644 index c027203dc..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineMiningDrill; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; -import com.hbm.util.I18nUtil; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineMiningDrill extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_drill.png"); - private TileEntityMachineMiningDrill diFurnace; - - public GUIMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { - super(new ContainerMachineMiningDrill(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 + 69 - 52, 16, 52, diFurnace.power, diFurnace.maxPower); - - String[] upgradeText = new String[4]; - upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); - upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); - upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.effectiveness"); - upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.power"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 141, guiTop + 39, 8, 8, guiLeft + 100, guiTop + 39 + 16 + 8, upgradeText); - } - - @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.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); - } - - int k = diFurnace.warning; - if(k == 2) - drawTexturedModalRect(guiLeft + 44, guiTop + 17, 192, 0, 16, 16); - if(k == 1) - drawTexturedModalRect(guiLeft + 44, guiTop + 17, 208, 0, 16, 16); - - this.drawInfoPanel(guiLeft + 141, guiTop + 39, 8, 8, 8); - } -} diff --git a/src/main/java/com/hbm/items/special/ItemStarterKit.java b/src/main/java/com/hbm/items/special/ItemStarterKit.java index 1890a002d..a13c09e92 100644 --- a/src/main/java/com/hbm/items/special/ItemStarterKit.java +++ b/src/main/java/com/hbm/items/special/ItemStarterKit.java @@ -215,7 +215,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_lithium, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_potato, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.screwdriver, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_coal_off, 3)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_excavator, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_diesel, 2)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_selenium, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.red_cable, 64)); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c86d957a1..2f05943e1 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -223,7 +223,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssemfac.class, new RenderAssemfac()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 050d0c61a..60d667a0b 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1194,6 +1194,12 @@ public class MainRegistry { ignoreMappings.add("hbm:item.bolt_dura_steel"); ignoreMappings.add("hbm:tile.rail_large_curve_wide"); ignoreMappings.add("hbm:tile.nuke_n45"); + ignoreMappings.add("hbm:tile.machine_coal_off"); + ignoreMappings.add("hbm:tile.machine_coal_on"); + ignoreMappings.add("hbm:tile.machine_drill"); + ignoreMappings.add("hbm:tile.drill_pipe"); + ignoreMappings.add("hbm:tile.dummy_block_drill"); + ignoreMappings.add("hbm:tile.dummy_port_drill"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 1d1697804..11cdcbcb9 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -88,7 +88,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); API.hideItem(ItemBattery.getFullBattery(ModItems.memory)); - API.hideItem(new ItemStack(ModBlocks.machine_coal_on)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on)); @@ -110,7 +109,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModItems.burnt_bark)); API.hideItem(new ItemStack(ModItems.ams_core_thingy)); } - API.hideItem(new ItemStack(ModBlocks.dummy_block_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_emitter)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_limiter)); @@ -118,7 +116,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.dummy_block_blast)); API.hideItem(new ItemStack(ModBlocks.dummy_block_uf6)); API.hideItem(new ItemStack(ModBlocks.dummy_block_puf6)); - API.hideItem(new ItemStack(ModBlocks.dummy_port_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_emitter)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_limiter)); diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java index ed0ff966b..0312680a0 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/LoopedSoundPacket.java @@ -54,18 +54,6 @@ public class LoopedSoundPacket implements IMessage { @SideOnly(Side.CLIENT) public IMessage onMessage(LoopedSoundPacket m, MessageContext ctx) { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineMiningDrill) { - - boolean flag = true; - for(int i = 0; i < SoundLoopMiner.list.size(); i++) { - if(SoundLoopMiner.list.get(i).getTE() == te && !SoundLoopMiner.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineMiningDrill)te).torque > 0.2F) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopMiner(new ResourceLocation("hbm:block.minerOperate"), te)); - } if (te != null && te instanceof TileEntityMachineAssembler) { diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 9414d49a0..629b49309 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -17,8 +17,6 @@ public class PacketDispatcher { //Machine type for marker rendering wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); - //Mining drill rotation for rendering - wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); //Fluid packet for GUI wrapper.registerMessage(TEFluidPacket.Handler.class, TEFluidPacket.class, i++, Side.CLIENT); //Sound packet that keeps client and server separated diff --git a/src/main/java/com/hbm/packet/TEDrillPacket.java b/src/main/java/com/hbm/packet/TEDrillPacket.java deleted file mode 100644 index f157550f0..000000000 --- a/src/main/java/com/hbm/packet/TEDrillPacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEDrillPacket implements IMessage { - - int x; - int y; - int z; - float spin; - float torque; - - public TEDrillPacket() - { - - } - - public TEDrillPacket(int x, int y, int z, float spin, float torque) - { - this.x = x; - this.y = y; - this.z = z; - this.spin = spin; - this.torque = torque; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - spin = buf.readFloat(); - torque = buf.readFloat(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeFloat(spin); - buf.writeFloat(torque); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEDrillPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineMiningDrill) { - - TileEntityMachineMiningDrill gen = (TileEntityMachineMiningDrill) te; - gen.rotation = m.spin; - gen.torque = m.torque; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index c9ca79fb9..afc1b518d 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -322,19 +322,6 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_drill), new ItemRenderBase() { - public void renderInventory() { - GL11.glTranslated(0, -2, 0); - GL11.glScaled(3, 3, 3); - } - public void renderCommon() { - GL11.glRotated(180, 0, 1, 0); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.drill_body_tex); ResourceManager.drill_body.renderAll(); - bindTexture(ResourceManager.drill_bolt_tex); ResourceManager.drill_bolt.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_mining_laser), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -0.5, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java b/src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java deleted file mode 100644 index a034556c5..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; - -public class RenderMiningDrill extends TileEntitySpecialRenderer { - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - } - - bindTexture(ResourceManager.drill_body_tex); - - ResourceManager.drill_body.renderAll(); - - GL11.glPopMatrix(); - - renderTileEntityAt2(tileEntity, x, y, z, f); - } - - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - - GL11.glRotatef(((TileEntityMachineMiningDrill)tileEntity).rotation, 0F, 1F, 0F); - - bindTexture(ResourceManager.drill_bolt_tex); - ResourceManager.drill_bolt.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/sound/SoundLoopMiner.java b/src/main/java/com/hbm/sound/SoundLoopMiner.java deleted file mode 100644 index 0655f0bdf..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopMiner.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopMiner extends SoundLoopMachine { - - public static List list = new ArrayList(); - - public SoundLoopMiner(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - } - - @Override - public void update() { - super.update(); - - if(te instanceof TileEntityMachineMiningDrill) { - TileEntityMachineMiningDrill drill = (TileEntityMachineMiningDrill)te; - - if(this.volume != 3) - volume = 3; - - if(drill.torque <= 0.5F) - this.donePlaying = true; - } - } - - public TileEntity getTE() { - return te; - } - -} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index ea45e6402..b9469a2cf 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -95,7 +95,6 @@ public class TileMappings { put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); put(TileEntityStructureMarker.class, "tileentity_structure_marker"); - put(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); put(TileEntityMachineExcavator.class, "tileentity_ntm_excavator"); put(TileEntityFluidDuctSimple.class, "tileentity_universal_duct_simple"); put(TileEntityFluidDuct.class, "tileentity_universal_duct"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java deleted file mode 100644 index f34c79c98..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java +++ /dev/null @@ -1,495 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; -import com.hbm.inventory.container.ContainerMachineMiningDrill; -import com.hbm.inventory.gui.GUIMachineMiningDrill; -import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.LoopedSoundPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEDrillPacket; -import com.hbm.sound.SoundLoopMachine; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.block.IDrillInteraction; -import api.hbm.block.IMiningDrill; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; - -public class TileEntityMachineMiningDrill extends TileEntityMachineBase implements IEnergyUser, IMiningDrill, IGUIProvider { - - public long power; - public int warning; - public static final long maxPower = 100000; - int age = 0; - int timer = 50; - int radius = 100; - int consumption = 100; - int fortune = 0; - boolean flag = true; - public float torque; - public float rotation; - SoundLoopMachine sound; - - public TileEntityMachineMiningDrill() { - super(13); - } - - @Override - public String getName() { - return "container.miningDrill"; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 0) - if(itemStack.getItem() instanceof IBatteryItem) - return true; - - if(i == 1) - return true; - - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("power"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - this.updateConnections(); - - this.consumption = 100; - this.timer = 50; - this.radius = 1; - this.fortune = 0; - - UpgradeManager.eval(slots, 10, 12); - this.radius += Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); - this.consumption += Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3) * 80; - - this.timer -= Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) * 15; - this.consumption += Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) * 300; - - this.consumption -= Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3) * 30; - this.timer += Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3) * 5; - - this.fortune += Math.min(UpgradeManager.getLevel(UpgradeType.FORTUNE), 3); - this.timer += Math.min(UpgradeManager.getLevel(UpgradeType.FORTUNE), 3) * 15; - - age++; - if(age >= timer) - age -= timer; - - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - - if(power >= consumption) { - - //operation start - - if(age == timer - 1) { - warning = 0; - - //warning 0, green: drill is operational - //warning 1, red: drill is full, has no power or the drill is jammed - //warning 2, yellow: drill has reached max depth - - for(int i = this.yCoord - 1; i > this.yCoord - 1 - 100; i--) { - - if(i <= 3) { - //Code 2: The drilling ended - warning = 2; - break; - } - - if(worldObj.getBlock(xCoord, i, zCoord) != ModBlocks.drill_pipe) { - - if(worldObj.getBlock(xCoord, i, zCoord).isReplaceable(worldObj, xCoord, i, zCoord) || this.tryDrill(xCoord, i, zCoord)) { - - if(worldObj.getBlock(xCoord, i, zCoord).isReplaceable(worldObj, xCoord, i, zCoord)) { - worldObj.setBlock(xCoord, i, zCoord, ModBlocks.drill_pipe); - } - - break; - - } else { - this.warning = 1; - break; - } - } - - if(this.drill(xCoord, i, zCoord, radius)) - break; - } - } - - //operation end - - power -= consumption; - } else { - warning = 1; - } - - int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - TileEntity te = null; - if(meta == 2) { - te = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - if(meta == 3) { - te = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - if(meta == 4) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - if(meta == 5) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - - if(te != null && te instanceof IInventory) { - IInventory chest = (IInventory)te; - - for(int i = 1; i < 10; i++) - if(tryFillContainer(chest, i)) - break; - } - - if(warning == 0) { - torque += 0.1; - if(torque > (100/timer)) - torque = (100/timer); - } else { - torque -= 0.1F; - if(torque < -(100/timer)) - torque = -(100/timer); - } - - if(torque < 0) { - torque = 0; - } - rotation += torque; - if(rotation >= 360) - rotation -= 360; - - PacketDispatcher.wrapper.sendToAllAround(new TEDrillPacket(xCoord, yCoord, zCoord, rotation, torque), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - private void updateConnections() { - this.getBlockMetadata(); - - if(this.blockMetadata == 5 || this.blockMetadata == 4) { - this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - - } else if(this.blockMetadata == 3 || this.blockMetadata == 2) { - this.trySubscribe(worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - } - } - - public boolean tryFillContainer(IInventory inventory, int slot) { - - int size = inventory.getSizeInventory(); - - for(int i = 0; i < size; i++) { - if(inventory.getStackInSlot(i) != null) { - - if(slots[slot] == null) - return false; - - ItemStack sta1 = inventory.getStackInSlot(i).copy(); - ItemStack sta2 = slots[slot].copy(); - - if(!inventory.isItemValidForSlot(i, sta2)) - continue; - - if(sta1 != null && sta2 != null) { - sta1.stackSize = 1; - sta2.stackSize = 1; - - if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - ItemStack sta3 = inventory.getStackInSlot(i).copy(); - sta3.stackSize++; - inventory.setInventorySlotContents(i, sta3); - - return true; - } - } - } - } - for(int i = 0; i < size; i++) { - - if(slots[slot] == null) - return false; - - ItemStack sta2 = slots[slot].copy(); - - if(!inventory.isItemValidForSlot(i, sta2)) - continue; - - if(inventory.getStackInSlot(i) == null && sta2 != null) { - sta2.stackSize = 1; - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - inventory.setInventorySlotContents(i, sta2); - - return true; - } - } - - return false; - } - - //Method: isOre - //"make it oreo!" - //"ok" - public boolean isOreo(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - float hardness = b.getBlockHardness(worldObj, x, y, z); - - return hardness < 70 && hardness >= 0; - } - - public boolean isMinableOreo(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - float hardness = b.getBlockHardness(worldObj, x, y, z); - - return (hardness < 70 && hardness >= 0) || b instanceof IDrillInteraction; - } - - /** - * returns true if there has been a successful mining operation - * returns false if no block could be mined and the drill is ready to extend - * */ - public boolean drill(int x, int y, int z, int rad) { - - if(!flag) - return false; - - for(int ix = x - rad; ix <= x + rad; ix++) { - for(int iz = z - rad; iz <= z + rad; iz++) { - - if(ix != x || iz != z) - if(tryDrill(ix, y, iz)) - return true; - } - } - - return false; - } - - /** - * returns true if there has been a successful mining operation - * returns false if no block could be mined, as it is either air or unmineable - * */ - public boolean tryDrill(int x, int y, int z) { - - if(worldObj.getBlock(x, y, z).isAir(worldObj, x, y, z) || !isMinableOreo(x, y, z)) - return false; - if(worldObj.getBlock(x, y, z).getMaterial().isLiquid()) { - worldObj.func_147480_a(x, y, z, false); - return false; - } - - Block b = worldObj.getBlock(x, y, z); - int meta = worldObj.getBlockMetadata(x, y, z); - - if(b instanceof IDrillInteraction) { - IDrillInteraction in = (IDrillInteraction) b; - - ItemStack sta = in.extractResource(worldObj, x, y, z, meta, this); - - if(sta != null && hasSpace(sta)) { - this.addItemToInventory(sta); - } - - if(!in.canBreak(worldObj, x, y, z, meta, this)) - return true; //true because the block is still there and mining should continue - } - - ItemStack stack = new ItemStack(b.getItemDropped(meta, worldObj.rand, fortune), b.quantityDropped(meta, fortune, worldObj.rand), b.damageDropped(meta)); - - //yup that worked - if(stack != null && stack.getItem() == null) { - worldObj.func_147480_a(x, y, z, false); - return true; - } - - if(hasSpace(stack)) { - this.addItemToInventory(stack); - worldObj.func_147480_a(x, y, z, false); - return true; - } - - return true; - } - - public boolean hasSpace(ItemStack stack) { - - ItemStack st = stack.copy(); - - if(st == null) - return true; - - for(int i = 1; i < 10; i++) { - if(slots[i] == null) - return true; - } - - st.stackSize = 1; - - ItemStack[] fakeArray = slots.clone(); - boolean flag = true; - for(int i = 0; i < stack.stackSize; i++) { - if(!canAddItemToArray(st, fakeArray)) - flag = false; - } - - return flag; - } - - public void addItemToInventory(ItemStack stack) { - - ItemStack st = stack.copy(); - - if(st == null) - return; - - int size = st.stackSize; - st.stackSize = 1; - - for(int i = 0; i < size; i++) - canAddItemToArray(st, this.slots); - - } - - public boolean canAddItemToArray(ItemStack stack, ItemStack[] array) { - - ItemStack st = stack.copy(); - - if(stack == null || st == null) - return true; - - for(int i = 1; i < 10; i++) { - - if(array[i] != null) { - ItemStack sta = array[i].copy(); - - if(stack == null || st == null) - return true; - - if(sta != null && sta.getItem() == st.getItem() && sta.stackSize < st.getMaxStackSize()) { - array[i].stackSize++; - return true; - } - } - } - - for(int i = 1; i < 10; i++) { - if(array[i] == null) { - array[i] = stack.copy(); - return true; - } - } - - return false; - } - - @Override - public void setPower(long i) { - power = i; - - } - - @Override - public long getPower() { - return power; - - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - @Override - public DrillType getDrillTier() { - return DrillType.INDUSTRIAL; - } - - @Override - public int getDrillRating() { - return 50; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineMiningDrill(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineMiningDrill(player.inventory, this); - } -} diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_diamond.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..af9244eddcecd3103ba842ca6b5eec77b9849999 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfW0>-d7j?yusKfzD#^boFyt=akR{0ETW> AbpQYW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_emerald.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_emerald.png new file mode 100644 index 0000000000000000000000000000000000000000..60d3d6548701cbe0ffe682df01c209703bd30e21 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf=&{xbbr6@|tG2Lb|&_o7LS3j3^P6 Date: Wed, 10 Jan 2024 18:13:46 -0500 Subject: [PATCH 08/16] coca cola, dont forget the ice! fixed various strand caster problems --- .../java/com/hbm/blocks/machine/MachineStrandCaster.java | 4 ---- .../inventory/container/ContainerMachineStrandCaster.java | 5 +++-- src/main/java/com/hbm/main/ResourceManager.java | 2 +- .../com/hbm/tileentity/machine/TileEntityFoundryBasin.java | 5 ----- .../hbm/tileentity/machine/TileEntityFoundryCastingBase.java | 3 --- .../com/hbm/tileentity/machine/TileEntityFoundryMold.java | 5 ----- .../tileentity/machine/TileEntityMachineStrandCaster.java | 4 ++-- 7 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index 9f4a7f745..9b2c6ced5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -137,7 +137,6 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce player.getHeldItem().stackSize--; world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); cast.markDirty(); - world.markBlockForUpdate(x, y, z); return true; } @@ -154,7 +153,6 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce cast.amount = 0; cast.type = null; cast.markDirty(); - world.markBlockForUpdate(x, y, z); } return true; } @@ -225,10 +223,8 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce } cast.markDirty(); - world.markBlockForUpdate(x, y, z); cast.slots[0] = null; - cast.markDirty(); return true; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java index bc9e89e46..6c503f6ce 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotCraftingOutput; import com.hbm.inventory.SlotNonRetarded; import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; import com.hbm.util.InventoryUtil; @@ -22,7 +23,7 @@ public class ContainerMachineStrandCaster extends Container { //output for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { - this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); } } @@ -54,7 +55,7 @@ public class ContainerMachineStrandCaster extends Container { slot.onSlotChange(originalStack, stack); - } else if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 7, false)) { + } else if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 1, 2, false)) { return null; } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index e846749c5..7ea56b820 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -52,7 +52,7 @@ public class ResourceManager { public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj")); //Caster o' Strands - public static final IModelCustom strand_caster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/strand_caster.obj")); + public static final IModelCustom strand_caster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/strand_caster.obj")); //Furnaces public static final IModelCustom furnace_iron = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_iron.obj")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java index 9003229c6..6c65fb4c2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBasin.java @@ -12,11 +12,6 @@ public class TileEntityFoundryBasin extends TileEntityFoundryCastingBase impleme super(2); } - @Override - public String getName() { - return null; - } - @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java index 3267ac602..da2a8d8a5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryCastingBase.java @@ -26,9 +26,6 @@ public abstract class TileEntityFoundryCastingBase extends TileEntityFoundryBase } public int cooloff = 100; - - public abstract String getName(); - @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java index 146e79b1b..f2e476a3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryMold.java @@ -8,11 +8,6 @@ public class TileEntityFoundryMold extends TileEntityFoundryCastingBase implemen super(2); } - @Override - public String getName() { - return null; - } - @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index b7044b33f..62f04d8e4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -37,7 +37,6 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public FluidTank water; public FluidTank steam; - @Override public String getName() { return "container.machineStrandCaster"; } @@ -66,9 +65,10 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } if (this.amount >= this.getCapacity()) { + //In case of overfill problems, spit out the excess as scrap if (amount > getCapacity()) { ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount)); - EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord, zCoord + 0.5, scrap); + EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); worldObj.spawnEntityInWorld(item); } this.amount = this.getCapacity(); From a647f93f15ab7aef05b68ca9f12eaecff52411a9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 11 Jan 2024 16:35:55 +0100 Subject: [PATCH 09/16] incinerated old garbage --- changelog | 4 +- .../java/com/hbm/blocks/IBlockMultiPass.java | 3 + src/main/java/com/hbm/blocks/ModBlocks.java | 25 +- .../com/hbm/blocks/generic/BlockMarker.java | 159 ---- .../hbm/blocks/generic/BlockSellafield.java | 68 +- .../blocks/generic/BlockSellafieldOre.java | 14 +- .../blocks/generic/BlockSellafieldSlaked.java | 2 +- .../hbm/blocks/machine/MachineCMBFactory.java | 131 --- .../com/hbm/blocks/machine/MachineCoal.java | 21 - .../java/com/hbm/blocks/machine/WatzCore.java | 20 - .../com/hbm/blocks/machine/WatzHatch.java | 158 ---- .../com/hbm/config/FalloutConfigJSON.java | 23 +- .../com/hbm/inventory/OreDictManager.java | 4 +- .../container/ContainerMachineCMBFactory.java | 115 --- .../container/ContainerWatzCore.java | 138 --- .../inventory/gui/GUIMachineCMBFactory.java | 59 -- .../com/hbm/inventory/gui/GUIWatzCore.java | 61 -- .../java/com/hbm/items/tool/ItemWandS.java | 10 +- .../com/hbm/items/weapon/ItemAmmoHIMARS.java | 2 +- src/main/java/com/hbm/lib/Library.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 - .../java/com/hbm/main/CraftingManager.java | 2 - src/main/java/com/hbm/main/MainRegistry.java | 4 + .../com/hbm/main/ModEventHandlerRenderer.java | 84 +- .../java/com/hbm/packet/PacketDispatcher.java | 2 - .../com/hbm/packet/TEStructurePacket.java | 62 -- .../render/block/RenderBlockMultipass.java | 52 +- .../tileentity/RenderStructureMaker.java | 239 ------ .../render/util/RenderAccessoryUtility.java | 6 +- .../java/com/hbm/tileentity/TileMappings.java | 3 - .../machine/TileEntityMachineCMBFactory.java | 385 --------- .../machine/TileEntityStructureMarker.java | 39 - .../machine/TileEntityWatzCore.java | 787 ----------------- .../machine/storage/TileEntityBarrel.java | 7 +- src/main/java/com/hbm/util/ArmorUtil.java | 1 + .../com/hbm/world/machine/NuclearReactor.java | 208 ----- src/main/java/com/hbm/world/machine/Watz.java | 795 ------------------ src/main/resources/assets/hbm/lang/en_US.lang | 4 +- .../blocks/ore_overlay_schrabidium.png | Bin 0 -> 245 bytes .../textures/blocks/ore_overlay_uranium.png | Bin 0 -> 260 bytes .../blocks/ore_overlay_uranium_scorched.png | Bin 0 -> 673 bytes .../hbm/textures/models/capes/CapeAlcater.png | Bin 0 -> 1281 bytes .../hbm/textures/models/capes/CapeHbm.png | Bin 1876 -> 0 bytes 43 files changed, 215 insertions(+), 3485 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockMarker.java delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineCoal.java delete mode 100644 src/main/java/com/hbm/blocks/machine/WatzCore.java delete mode 100644 src/main/java/com/hbm/blocks/machine/WatzHatch.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerWatzCore.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIWatzCore.java delete mode 100644 src/main/java/com/hbm/packet/TEStructurePacket.java delete mode 100644 src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java delete mode 100644 src/main/java/com/hbm/world/machine/NuclearReactor.java delete mode 100644 src/main/java/com/hbm/world/machine/Watz.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_overlay_schrabidium.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium_scorched.png create mode 100644 src/main/resources/assets/hbm/textures/models/capes/CapeAlcater.png delete mode 100644 src/main/resources/assets/hbm/textures/models/capes/CapeHbm.png diff --git a/changelog b/changelog index ff00a3277..b9c3bc58e 100644 --- a/changelog +++ b/changelog @@ -12,8 +12,10 @@ * Adjusted the nuclear flash's intensity, the flash will now deal less and less radiation the longer it goes on * The nuclear flash now bypasses radiation resistance, being only affected by blocks and distance * Mushroom clouds' initial scale is now based on the total scale instead of all spawning roughly at the same size, causing fireballs to be comically small for huge bombs -* Removed the old mining drill for good +* Removed the old mining drill, combustion generator, old watz core, structure marker and CMB furnace for good ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes * Fixed PWR fuel rods not having any radiation value assigned to them +* Fixed trenchmaster helmet not having gas mask protection +* Fixed large thermobaric artillery rocket still using the wrong slag block diff --git a/src/main/java/com/hbm/blocks/IBlockMultiPass.java b/src/main/java/com/hbm/blocks/IBlockMultiPass.java index da8739558..c5140f394 100644 --- a/src/main/java/com/hbm/blocks/IBlockMultiPass.java +++ b/src/main/java/com/hbm/blocks/IBlockMultiPass.java @@ -11,4 +11,7 @@ public interface IBlockMultiPass { return renderID; } + public default boolean shouldRenderItemMulti() { + return false; + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5b304c9ce..7e2d27e99 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -536,6 +536,8 @@ public class ModBlocks { public static Block sellafield; public static Block ore_sellafield_diamond; public static Block ore_sellafield_emerald; + public static Block ore_sellafield_uranium_scorched; + public static Block ore_sellafield_schrabidium; public static Block geysir_water; public static Block geysir_chlorine; @@ -627,8 +629,6 @@ public class ModBlocks { public static Block tesla; - public static Block marker_structure; - public static Block muffler; public static Block sat_mapper; @@ -929,9 +929,7 @@ public class ModBlocks { public static Block watz_control; public static Block watz_cooler; public static Block watz_end; - public static Block watz_hatch; public static Block watz_conductor; - public static Block watz_core; public static Block fwatz_conductor; public static Block fwatz_cooler; @@ -970,8 +968,6 @@ public class ModBlocks { public static Block machine_shredder_large; public static final int guiID_machine_shredder_large = 76; - public static Block machine_combine_factory; - public static Block machine_teleporter; public static Block teleanchor; public static Block field_disturber; @@ -1769,6 +1765,8 @@ public class ModBlocks { sellafield = new BlockSellafield(Material.rock).setBlockName("sellafield").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); ore_sellafield_diamond = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_diamond").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_diamond"); ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); + ore_sellafield_uranium_scorched = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_uranium_scorched").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_uranium_scorched"); + ore_sellafield_schrabidium = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_schrabidium").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_schrabidium"); geysir_water = new BlockGeysir(Material.rock).setBlockName("geysir_water").setStepSound(Block.soundTypeStone).setHardness(5.0F); geysir_chlorine = new BlockGeysir(Material.rock).setBlockName("geysir_chlorine").setStepSound(Block.soundTypeStone).setHardness(5.0F); @@ -1940,8 +1938,6 @@ public class ModBlocks { machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_shredder_large = new MachineShredderLarge(Material.iron).setBlockName("machine_shredder_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":code"); - machine_combine_factory = new MachineCMBFactory(Material.iron).setBlockName("machine_combine_factory").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); - machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); @@ -2094,9 +2090,7 @@ public class ModBlocks { watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); - watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); - watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_computer"); watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2161,8 +2155,6 @@ public class ModBlocks { tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); - marker_structure = new BlockMarker(Material.iron).setBlockName("marker_structure").setHardness(0.1F).setResistance(0.1F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":marker_structure"); - muffler = new BlockGeneric(Material.cloth).setBlockName("muffler").setHardness(0.8F).setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":muffler"); launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); @@ -2956,6 +2948,8 @@ public class ModBlocks { register(sellafield_slaked); register(ore_sellafield_diamond); register(ore_sellafield_emerald); + register(ore_sellafield_uranium_scorched); + register(ore_sellafield_schrabidium); GameRegistry.registerBlock(sellafield, ItemBlockNamedMeta.class, sellafield.getUnlocalizedName()); //Geysirs @@ -3384,7 +3378,6 @@ public class ModBlocks { register(machine_turbofan); register(machine_turbinegas); GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); - GameRegistry.registerBlock(machine_combine_factory, machine_combine_factory.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); @@ -3395,9 +3388,6 @@ public class ModBlocks { GameRegistry.registerBlock(radiorec, radiorec.getUnlocalizedName()); GameRegistry.registerBlock(radiobox, radiobox.getUnlocalizedName()); - //Multiblock Helpers - GameRegistry.registerBlock(marker_structure, marker_structure.getUnlocalizedName()); - //The muffler GameRegistry.registerBlock(muffler, muffler.getUnlocalizedName()); @@ -3463,7 +3453,6 @@ public class ModBlocks { GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); GameRegistry.registerBlock(fusion_hatch, fusion_hatch.getUnlocalizedName()); - //GameRegistry.registerBlock(fusion_core, fusion_core.getUnlocalizedName()); GameRegistry.registerBlock(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); @@ -3472,9 +3461,7 @@ public class ModBlocks { GameRegistry.registerBlock(watz_control, watz_control.getUnlocalizedName()); GameRegistry.registerBlock(watz_cooler, watz_cooler.getUnlocalizedName()); register(watz_end); - GameRegistry.registerBlock(watz_hatch, watz_hatch.getUnlocalizedName()); GameRegistry.registerBlock(watz_conductor, watz_conductor.getUnlocalizedName()); - GameRegistry.registerBlock(watz_core, watz_core.getUnlocalizedName()); GameRegistry.registerBlock(watz, watz.getUnlocalizedName()); GameRegistry.registerBlock(watz_pump, watz_pump.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockMarker.java b/src/main/java/com/hbm/blocks/generic/BlockMarker.java deleted file mode 100644 index 25e70dd8c..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockMarker.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.Random; - -import com.hbm.tileentity.machine.TileEntityStructureMarker; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class BlockMarker extends BlockContainer { - - public BlockMarker(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityStructureMarker(); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { - return null; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - public int getRenderType() { - return 2; - } - - private boolean func_150107_m(World p_150107_1_, int p_150107_2_, int p_150107_3_, int p_150107_4_) { - if(World.doesBlockHaveSolidTopSurface(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_)) { - return true; - } else { - Block block = p_150107_1_.getBlock(p_150107_2_, p_150107_3_, p_150107_4_); - return block.canPlaceTorchOnTop(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_); - } - } - - @Override - public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) { - return func_150107_m(p_149742_1_, p_149742_2_, p_149742_3_ - 1, p_149742_4_); - } - - @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, 6, 2); - } - if(i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 7, 2); - } - if(i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 8, 2); - } - if(i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 9, 2); - } - } - - @Override - public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) { - super.updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_); - - if(p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_) == 0) { - this.onBlockAdded(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); - } - } - - @Override - public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { - this.func_150108_b(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); - } - - protected boolean func_150108_b(World p_150108_1_, int p_150108_2_, int p_150108_3_, int p_150108_4_, Block p_150108_5_) { - if(this.func_150109_e(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_)) { - boolean flag = false; - - if(!this.func_150107_m(p_150108_1_, p_150108_2_, p_150108_3_ - 1, p_150108_4_)) { - flag = true; - } - - if(flag) { - this.dropBlockAsItem(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_, p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_), 0); - p_150108_1_.setBlockToAir(p_150108_2_, p_150108_3_, p_150108_4_); - return true; - } else { - return false; - } - } else { - return true; - } - } - - protected boolean func_150109_e(World p_150109_1_, int p_150109_2_, int p_150109_3_, int p_150109_4_) { - if(!this.canPlaceBlockAt(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_)) { - if(p_150109_1_.getBlock(p_150109_2_, p_150109_3_, p_150109_4_) == this) { - this.dropBlockAsItem(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_, p_150109_1_.getBlockMetadata(p_150109_2_, p_150109_3_, p_150109_4_), 0); - p_150109_1_.setBlockToAir(p_150109_2_, p_150109_3_, p_150109_4_); - } - - return false; - } else { - return true; - } - } - - @Override - public MovingObjectPosition collisionRayTrace(World p_149731_1_, int p_149731_2_, int p_149731_3_, int p_149731_4_, Vec3 p_149731_5_, Vec3 p_149731_6_) { - float f = 0.15F; - f = 0.1F; - this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f); - - return super.collisionRayTrace(p_149731_1_, p_149731_2_, p_149731_3_, p_149731_4_, p_149731_5_, p_149731_6_); - } - - @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) { - int i = ((TileEntityStructureMarker) world.getTileEntity(x, y, z)).type + 1; - if(i > 2) i -= 3; - if(i == 0) player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor")); - if(i == 1) player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Watz Power Plant")); - if(i == 2) player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusionary Watz Plant")); - return true; - } else if(!player.isSneaking()) { - if(world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileEntityStructureMarker) { - ((TileEntityStructureMarker) world.getTileEntity(x, y, z)).type++; - } - return true; - } else { - return false; - } - } - -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafield.java b/src/main/java/com/hbm/blocks/generic/BlockSellafield.java index 03c53b9f4..aea70d140 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafield.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafield.java @@ -8,11 +8,14 @@ import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; +import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; +import com.hbm.render.icon.TextureAtlasSpriteMutatable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -20,12 +23,17 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockSellafield extends BlockHazard { - //Sellafite blocks should probably be entirely metadata, but removing them now might mess with shit - //...Ah, fuck it! Noone cares anyway. + @SideOnly(Side.CLIENT) + protected IIcon[][] icons; + + public static final int SELLAFITE_LEVELS = 6; + public static final int TEXTURE_VARIANTS = 4; + public BlockSellafield(Material mat) { super(mat); this.setCreativeTab(MainRegistry.blockTab); @@ -56,10 +64,6 @@ public class BlockSellafield extends BlockHazard { } @Override public void onBlockAdded(World world, int x, int y, int z) { } - - - @SideOnly(Side.CLIENT) - protected IIcon[] icons; @Override public int damageDropped(int meta) { @@ -69,24 +73,62 @@ public class BlockSellafield extends BlockHazard { @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tabs, List list) { - for(byte i = 0; i < 6; i++) { + for(byte i = 0; i < SELLAFITE_LEVELS; i++) { list.add(new ItemStack(item, 1, i)); } } @Override @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - super.registerBlockIcons(iconRegister); - icons = new IIcon[6]; + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + icons = new IIcon[SELLAFITE_LEVELS][TEXTURE_VARIANTS]; + String[] names = new String[] { + RefStrings.MODID + ":sellafield_slaked", + RefStrings.MODID + ":sellafield_slaked_1", + RefStrings.MODID + ":sellafield_slaked_2", + RefStrings.MODID + ":sellafield_slaked_3" + }; - for(byte i = 0; i < 6; i++) - icons[i] = iconRegister.registerIcon(RefStrings.MODID + ":sellafield_" + i); + if(reg instanceof TextureMap) { + TextureMap map = (TextureMap) reg; + + int[][] colors = new int[][] { + {0x4C7939, 0x41463F}, + {0x418223, 0x3E443B}, + {0x338C0E, 0x3B5431}, + {0x1C9E00, 0x394733}, + {0x02B200, 0x37492F}, + {0x00D300, 0x324C26} + }; + + for(int level = 0; level < SELLAFITE_LEVELS; level++) { + int[] tint = colors[level]; + + for(int subtype = 0; subtype < TEXTURE_VARIANTS; subtype++) { + String texName = names[subtype]; + String placeholderName = texName + "-" + level + "-" + subtype; + TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0x858384, 0x434343, tint[0], tint[1])).setBlockAtlas(); + map.setTextureEntry(placeholderName, mutableIcon); + icons[level][subtype] = mutableIcon; + } + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + long l = (long) (x * 3129871) ^ (long)y * 116129781L ^ (long)z; + l = l * l * 42317861L + l * 11L; + int i = (int)(l >> 16 & 3L); + int meta = world.getBlockMetadata(x, y, z); + return icons[(int)(Math.abs(meta) % SELLAFITE_LEVELS)][(int)(Math.abs(i) % TEXTURE_VARIANTS)]; } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - return this.icons[meta % this.icons.length]; + return this.icons[(int) Math.abs(meta) % this.icons.length][0]; } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java index 6c17f2143..a923c5343 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java @@ -41,6 +41,13 @@ public class BlockSellafieldOre extends BlockSellafieldSlaked implements IBlockM return super.getIcon(world, x, y, z, side); } + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(RenderBlockMultipass.currentPass == 1) return this.blockIcon; + return icons[0]; + } + @Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockAccess world, int x, int y, int z) { @@ -53,11 +60,16 @@ public class BlockSellafieldOre extends BlockSellafieldSlaked implements IBlockM return 2; } + @Override + public boolean shouldRenderItemMulti() { + return true; + } + @Override public Item getItemDropped(int meta, Random rand, int fortune) { if(this == ModBlocks.ore_sellafield_diamond) return Items.diamond; if(this == ModBlocks.ore_sellafield_emerald) return Items.emerald; - return null; + return Item.getItemFromBlock(this); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java index d30efb41a..6812249a4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java @@ -32,7 +32,7 @@ public class BlockSellafieldSlaked extends Block { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - return icons[meta % icons.length]; + return icons[0]; } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java b/src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java deleted file mode 100644 index 92210dd35..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java +++ /dev/null @@ -1,131 +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.TileEntityMachineCMBFactory; - -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.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.world.World; - -public class MachineCMBFactory extends BlockContainer { - - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconTop; - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_cmb_top"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_cmb_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_combine_factory); - } - - public MachineCMBFactory(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineCMBFactory(); - } - - @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()) - { - TileEntityMachineCMBFactory entity = (TileEntityMachineCMBFactory) 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 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) - { - TileEntityMachineCMBFactory tileentityfurnace = (TileEntityMachineCMBFactory)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_); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoal.java b/src/main/java/com/hbm/blocks/machine/MachineCoal.java deleted file mode 100644 index 4b28a5e94..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineCoal.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.hbm.blocks.machine; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import com.hbm.tileentity.machine.TileEntityMachineCoal; - -@Deprecated -public class MachineCoal extends BlockContainer { - - public MachineCoal(boolean blockState) { - super(Material.iron); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineCoal(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/WatzCore.java b/src/main/java/com/hbm/blocks/machine/WatzCore.java deleted file mode 100644 index 0289ece20..000000000 --- a/src/main/java/com/hbm/blocks/machine/WatzCore.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class WatzCore extends BlockContainer { - - public WatzCore(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityWatzCore(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/WatzHatch.java b/src/main/java/com/hbm/blocks/machine/WatzHatch.java deleted file mode 100644 index 157a02036..000000000 --- a/src/main/java/com/hbm/blocks/machine/WatzHatch.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import api.hbm.fluid.IFluidConnectorBlock; -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.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class WatzHatch extends Block implements IFluidConnectorBlock { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public WatzHatch(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":watz_hatch"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":reinforced_brick"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - 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(this); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - //this.setDefaultDirection(world, x, y, z); - } - - @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); - } - } - - @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()) - { - if(world.getBlockMetadata(x, y, z) == 2) - { - if(world.getTileEntity(x, y, z + 3) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x, y, z + 3)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z + 3); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 3) - { - if(world.getTileEntity(x, y, z - 3) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x, y, z - 3)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z - 3); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 4) - { - if(world.getTileEntity(x + 3, y, z) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x + 3, y, z)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x + 3, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 5) - { - if(world.getTileEntity(x - 3, y, z) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x - 3, y, z)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x - 3, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - return true; - } else { - return false; - } - } - - @Override - public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - return type == Fluids.WATZ; - } -} diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index f9ac9452d..645a12413 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -75,23 +75,24 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange)); entries.add(new FalloutEntry().mB(Blocks.mossy_cobblestone).prim(new Triplet(Blocks.coal_ore, 0, 1))); - entries.add(new FalloutEntry().mB(ModBlocks.ore_uranium).prim(new Triplet(ModBlocks.ore_schrabidium, 0, 1), new Triplet(ModBlocks.ore_uranium_scorched, 0, 99))); entries.add(new FalloutEntry().mB(ModBlocks.ore_nether_uranium).prim(new Triplet(ModBlocks.ore_nether_schrabidium, 0, 1), new Triplet(ModBlocks.ore_nether_uranium_scorched, 0, 99))); - entries.add(new FalloutEntry().mB(ModBlocks.ore_gneiss_uranium).prim(new Triplet(ModBlocks.ore_gneiss_schrabidium, 0, 1), new Triplet(ModBlocks.ore_gneiss_uranium_scorched, 0, 99))); Block deepslate = Compat.tryLoadBlock(Compat.MOD_EF, "deepslate"); Block stone = Compat.tryLoadBlock(Compat.MOD_EF, "stone"); for(int i = 1; i <= 10; i++) { - entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, 10 - i, 3), new Triplet(ModBlocks.ore_sellafield_emerald, 10 - i, 2)).c(0.5).max(i * 5).sol(true).mB(Blocks.coal_ore)); - entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, 10 - i, 1)).c(0.2).max(i * 5).sol(true).mB(ModBlocks.ore_lignite)); - entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_emerald, 10 - i, 1)).max(i * 5).sol(true).mB(ModBlocks.ore_beryllium)); - entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.rock)); - entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.sand)); - entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.ground)); - if(i <= 9) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mMa(Material.grass)); - if(deepslate != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mB(deepslate)); - if(stone != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, 10 - i, 1)).max(i * 5).sol(true).mB(stone)); + int m = 10 - i; + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, m, 3), new Triplet(ModBlocks.ore_sellafield_emerald, m, 2)) .c(0.5) .max(i * 5).sol(true).mB(Blocks.coal_ore)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, m, 1)) .c(0.2) .max(i * 5).sol(true).mB(ModBlocks.ore_lignite)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_emerald, m, 1)) .max(i * 5).sol(true).mB(ModBlocks.ore_beryllium)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 99)) .max(i * 5).sol(true).mB(ModBlocks.ore_uranium)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 99)) .max(i * 5).sol(true).mB(ModBlocks.ore_gneiss_uranium)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.rock)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.sand)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.ground)); + if(i <= 9) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.grass)); + if(deepslate != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mB(deepslate)); + if(stone != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mB(stone)); } //entries.add(new FalloutEntry().mB(Blocks.grass).prim(new Triplet(ModBlocks.waste_earth, 0, 1))); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index e6ca773e5..ee56d55cb 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -320,7 +320,7 @@ public class OreDictManager { /* * RADIOACTIVE */ - U .rad(HazardRegistry.u) .nugget(nugget_uranium) .billet(billet_uranium) .ingot(ingot_uranium) .dust(powder_uranium) .block(block_uranium) .ore(ore_uranium, ore_uranium_scorched, ore_gneiss_uranium, ore_gneiss_uranium_scorched, ore_nether_uranium, ore_nether_uranium_scorched, ore_meteor_uranium) .oreNether(ore_nether_uranium, ore_nether_uranium_scorched); + U .rad(HazardRegistry.u) .nugget(nugget_uranium) .billet(billet_uranium) .ingot(ingot_uranium) .dust(powder_uranium) .block(block_uranium) .ore(ore_uranium, ore_uranium_scorched, ore_gneiss_uranium, ore_gneiss_uranium_scorched, ore_nether_uranium, ore_nether_uranium_scorched, ore_meteor_uranium, ore_sellafield_uranium_scorched) .oreNether(ore_nether_uranium, ore_nether_uranium_scorched); U233 .rad(HazardRegistry.u233) .nugget(nugget_u233) .billet(billet_u233) .ingot(ingot_u233) .block(block_u233); U235 .rad(HazardRegistry.u235) .nugget(nugget_u235) .billet(billet_u235) .ingot(ingot_u235) .block(block_u235); U238 .rad(HazardRegistry.u238) .nugget(nugget_u238) .billet(billet_u238) .ingot(ingot_u238) .block(block_u238); @@ -342,7 +342,7 @@ public class OreDictManager { CO60 .rad(HazardRegistry.co60) .hot(1) .nugget(nugget_co60) .billet(billet_co60) .ingot(ingot_co60) .dust(powder_co60); AU198 .rad(HazardRegistry.au198) .hot(5) .nugget(nugget_au198) .billet(billet_au198) .ingot(ingot_au198) .dust(powder_au198); PB209 .rad(HazardRegistry.pb209) .blinding(50F) .hot(7) .nugget(nugget_pb209) .billet(billet_pb209) .ingot(ingot_pb209); - SA326 .rad(HazardRegistry.sa326) .blinding(50F) .nugget(nugget_schrabidium) .billet(billet_schrabidium) .ingot(ingot_schrabidium) .dust(powder_schrabidium).plate(plate_schrabidium).plateCast(Mats.MAT_SCHRABIDIUM.make(plate_cast)).block(block_schrabidium).ore(ore_schrabidium, ore_gneiss_schrabidium, ore_nether_schrabidium) .oreNether(ore_nether_schrabidium); + SA326 .rad(HazardRegistry.sa326) .blinding(50F) .nugget(nugget_schrabidium) .billet(billet_schrabidium) .ingot(ingot_schrabidium) .dust(powder_schrabidium).plate(plate_schrabidium).plateCast(Mats.MAT_SCHRABIDIUM.make(plate_cast)).block(block_schrabidium).ore(ore_schrabidium, ore_gneiss_schrabidium, ore_nether_schrabidium, ore_sellafield_schrabidium) .oreNether(ore_nether_schrabidium); SA327 .rad(HazardRegistry.sa327) .blinding(50F) .nugget(nugget_solinium) .billet(billet_solinium) .ingot(ingot_solinium) .block(block_solinium); SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate); SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java deleted file mode 100644 index bedd1b951..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.inventory.SlotTakeOnly; -import com.hbm.tileentity.machine.TileEntityMachineCMBFactory; - -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 ContainerMachineCMBFactory extends Container { - - private TileEntityMachineCMBFactory diFurnace; - private int progress; - - public ContainerMachineCMBFactory(InventoryPlayer invPlayer, TileEntityMachineCMBFactory tedf) { - - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 62 + 9, 17)); - this.addSlotToContainer(new Slot(tedf, 1, 80 + 9, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 62 + 9, 53)); - this.addSlotToContainer(new Slot(tedf, 3, 80 + 9, 53)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 134 + 9, 35)); - this.addSlotToContainer(new SlotTakeOnly(tedf, 5, 62 - 9, 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); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.process); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 5) { - if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) - { - return null; - } - } - else - { - if (!this.mergeItemStack(var5, 0, 4, false)) - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) - { - ICrafting par1 = (ICrafting)this.crafters.get(i); - - if(this.progress != this.diFurnace.process) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.process); - } - } - - this.progress = this.diFurnace.process; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) - { - diFurnace.process = j; - } - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java b/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java deleted file mode 100644 index a3760e10c..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.items.ModItems; -import com.hbm.items.special.WatzFuel; -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import api.hbm.energy.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 ContainerWatzCore extends Container { - - private TileEntityWatzCore diFurnace; - - public ContainerWatzCore(InventoryPlayer invPlayer, TileEntityWatzCore tedf) { - - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 8, 18)); - this.addSlotToContainer(new Slot(tedf, 1, 26, 18)); - this.addSlotToContainer(new Slot(tedf, 2, 44, 18)); - this.addSlotToContainer(new Slot(tedf, 3, 62, 18)); - this.addSlotToContainer(new Slot(tedf, 4, 80, 18)); - this.addSlotToContainer(new Slot(tedf, 5, 98, 18)); - this.addSlotToContainer(new Slot(tedf, 6, 8, 36)); - this.addSlotToContainer(new Slot(tedf, 7, 26, 36)); - this.addSlotToContainer(new Slot(tedf, 8, 44, 36)); - this.addSlotToContainer(new Slot(tedf, 9, 62, 36)); - this.addSlotToContainer(new Slot(tedf, 10, 80, 36)); - this.addSlotToContainer(new Slot(tedf, 11, 98, 36)); - this.addSlotToContainer(new Slot(tedf, 12, 8, 54)); - this.addSlotToContainer(new Slot(tedf, 13, 26, 54)); - this.addSlotToContainer(new Slot(tedf, 14, 44, 54)); - this.addSlotToContainer(new Slot(tedf, 15, 62, 54)); - this.addSlotToContainer(new Slot(tedf, 16, 80, 54)); - this.addSlotToContainer(new Slot(tedf, 17, 98, 54)); - this.addSlotToContainer(new Slot(tedf, 18, 8, 72)); - this.addSlotToContainer(new Slot(tedf, 19, 26, 72)); - this.addSlotToContainer(new Slot(tedf, 20, 44, 72)); - this.addSlotToContainer(new Slot(tedf, 21, 62, 72)); - this.addSlotToContainer(new Slot(tedf, 22, 80, 72)); - this.addSlotToContainer(new Slot(tedf, 23, 98, 72)); - this.addSlotToContainer(new Slot(tedf, 24, 8, 90)); - this.addSlotToContainer(new Slot(tedf, 25, 26, 90)); - this.addSlotToContainer(new Slot(tedf, 26, 44, 90)); - this.addSlotToContainer(new Slot(tedf, 27, 62, 90)); - this.addSlotToContainer(new Slot(tedf, 28, 80, 90)); - this.addSlotToContainer(new Slot(tedf, 29, 98, 90)); - this.addSlotToContainer(new Slot(tedf, 30, 8, 108)); - this.addSlotToContainer(new Slot(tedf, 31, 26, 108)); - this.addSlotToContainer(new Slot(tedf, 32, 44, 108)); - this.addSlotToContainer(new Slot(tedf, 33, 62, 108)); - this.addSlotToContainer(new Slot(tedf, 34, 80, 108)); - this.addSlotToContainer(new Slot(tedf, 35, 98, 108)); - //Mud Input - this.addSlotToContainer(new Slot(tedf, 36, 134, 108 - 18)); - //Battery - this.addSlotToContainer(new Slot(tedf, 37, 152, 108 - 18)); - //Filter - this.addSlotToContainer(new Slot(tedf, 38, 116, 63)); - //Mud Output - this.addSlotToContainer(new Slot(tedf, 39, 134, 108)); - - 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 + 56)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if(var4 != null && var4.getHasStack()) { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if(par2 <= 39) { - if(!this.mergeItemStack(var5, 40, this.inventorySlots.size(), true)) { - return null; - } - - } else { - - if(var5.getItem() == ModItems.titanium_filter) { - if(!this.mergeItemStack(var5, 38, 39, false)) { - return null; - } - } else if(var5.getItem() instanceof WatzFuel) { - if(!this.mergeItemStack(var5, 0, 36, false)) { - return null; - } - } else if(var5.getItem() instanceof IBatteryItem) { - if(!this.mergeItemStack(var5, 37, 38, false)) { - return null; - } - } else { - if(!this.mergeItemStack(var5, 36, 37, false)) { - return null; - } - } - } - - if(var5.stackSize == 0) { - var4.putStack((ItemStack) null); - } else { - var4.onSlotChanged(); - } - - var4.onPickupFromSlot(p_82846_1_, var5); - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java deleted file mode 100644 index 1391cf2c4..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineCMBFactory; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineCMBFactory; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineCMBFactory extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_cmb_manufactory.png"); - private TileEntityMachineCMBFactory diFurnace; - - public GUIMachineCMBFactory(InventoryPlayer invPlayer, TileEntityMachineCMBFactory tedf) { - super(new ContainerMachineCMBFactory(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); - - diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 69 - 52, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 106 - 88, 16, 88, 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.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); - } - - int j1 = diFurnace.getProgressScaled(24); - drawTexturedModalRect(guiLeft + 101 + 9, guiTop + 34, 208, 0, j1 + 1, 16); - - diFurnace.tank.renderTank(guiLeft + 26, guiTop + 69, this.zLevel, 16, 52); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatzCore.java b/src/main/java/com/hbm/inventory/gui/GUIWatzCore.java deleted file mode 100644 index 68aa1a7c5..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIWatzCore.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerWatzCore; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIWatzCore extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_watz_multiblock.png"); - private TileEntityWatzCore diFurnace; - - public GUIWatzCore(InventoryPlayer invPlayer, TileEntityWatzCore tedf) { - super(new ContainerWatzCore(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - //this.ySize = 222; - this.ySize = 256; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 106 - 18 - 70, 16, 70); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 106 - 70, 16, 70 - 18, 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")/* + String.valueOf(diFurnace.powerList)*/, 8, this.ySize - 96 + 2 - 34, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.powerList + " HE/tick"), 8, this.ySize - 50 + 2 + 13, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.heatList + " heat"), 8, this.ySize - 50 + 2 + 22, 4210752); - this.fontRendererObj.drawString(String.valueOf((diFurnace.decayMultiplier * diFurnace.heat)/100 /100 + " waste/tick"), 8, this.ySize - 50 + 2 + 31, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.powerMultiplier + "% power"), 100, this.ySize - 50 + 2 + 13, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.heatMultiplier + "% heat"), 100, this.ySize - 50 + 2 + 22, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.decayMultiplier + "% decay"), 100, this.ySize - 50 + 2 + 31, 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); - - int l = (int)diFurnace.getPowerScaled(70); - drawTexturedModalRect(guiLeft + 152, guiTop + 106 - 18 - l, 192, 70 - l, 16, l); - - diFurnace.tank.renderTank(guiLeft + 134, guiTop + 106 - 18, this.zLevel, 16, 70); - } -} diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index ea7ba07fa..f2b7143b7 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -4,8 +4,6 @@ import java.util.List; import java.util.Random; import com.hbm.world.machine.FWatz; -import com.hbm.world.machine.NuclearReactor; -import com.hbm.world.machine.Watz; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -19,10 +17,8 @@ public class ItemWandS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Creative-only item"); - list.add("\"Instant structures for everyone!\""); - list.add("(Cycle with shift-right click,"); - list.add("spawn structures with right click!)"); + list.add("DEPRECATED"); + if(itemstack.stackTagCompound != null) { switch(itemstack.stackTagCompound.getInteger("building")) @@ -58,10 +54,8 @@ public class ItemWandS extends Item { switch(stack.stackTagCompound.getInteger("building")) { case 0: - new NuclearReactor().generate(world, rand, x, up ? y : y - 4, z); break; case 1: - new Watz().generate(world, rand, x, up ? y : y - 12, z); break; case 2: new FWatz().generateHull(world, rand, x, up ? y : y - 18, z); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 4eac7ec1f..a5784742f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -216,7 +216,7 @@ public class ItemAmmoHIMARS extends Item { this.itemTypes[LARGE_TB] = new HIMARSRocket("single_tb", "himars_single_tb", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 50F, 12F, true, ModBlocks.slag, 1); + standardExplosion(rocket, mop, 50F, 12F, true, ModBlocks.block_slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); standardMush(rocket, mop, 35); }}; diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 3cd331dae..77c0bd6b1 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -76,6 +76,7 @@ public class Library { public static String Barnaby99_x = "b04cf173-cff0-4acd-aa19-3d835224b43d"; public static String Ma118 = "1121cb7a-8773-491f-8e2b-221290c93d81"; public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61"; + public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf @@ -167,7 +168,6 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.reactor_hatch || world.getBlock(x, y, z) == ModBlocks.reactor_conductor || world.getBlock(x, y, z) == ModBlocks.fusion_hatch || - world.getBlock(x, y, z) == ModBlocks.watz_hatch || world.getBlock(x, y, z) == ModBlocks.fwatz_hatch || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_limiter || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_emitter || diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 2f05943e1..9001d143a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -337,7 +337,6 @@ public class ClientProxy extends ServerProxy { //DecoContainer ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFileCabinet.class, new RenderFileCabinet()); //multiblocks - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStructureMarker.class, new RenderStructureMaker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 8e9cce423..4eb46ca3a 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -107,8 +107,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "BB", 'B', "ingotBrick" }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "BB", 'B', "ingotNetherBrick" }); - addRecipeAuto(new ItemStack(ModBlocks.marker_structure, 1), new Object[] { "L", "G", "R", 'L', LAPIS.dust(), 'G', Items.glowstone_dust, 'R', Blocks.redstone_torch }); - addRecipeAuto(new ItemStack(ModItems.circuit_raw, 1), new Object[] { "A", "R", "S", 'S', STEEL.plate(), 'R', REDSTONE.dust(), 'A', ModItems.wire_aluminium }); addRecipeAuto(new ItemStack(ModItems.circuit_bismuth_raw, 1), new Object[] { "RPR", "ABA", "RPR", 'R', REDSTONE.dust(), 'P', ANY_PLASTIC.ingot(), 'A', (GeneralConfig.enable528 ? ModItems.circuit_tantalium : ASBESTOS.ingot()), 'B', ModItems.ingot_bismuth }); addRecipeAuto(new ItemStack(ModItems.circuit_tantalium_raw, 1), new Object[] { "RWR", "PTP", "RWR", 'R', REDSTONE.dust(), 'W', ModItems.wire_gold, 'P', CU.plate(), 'T', TA.nugget() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 60d667a0b..1456c584f 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1200,6 +1200,10 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.drill_pipe"); ignoreMappings.add("hbm:tile.dummy_block_drill"); ignoreMappings.add("hbm:tile.dummy_port_drill"); + ignoreMappings.add("hbm:tile.machine_combine_factory"); + ignoreMappings.add("hbm:tile.watz_core"); + ignoreMappings.add("hbm:tile.watz_hatch"); + ignoreMappings.add("hbm:tile.marker_structure"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 47431818c..1d589bf3a 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -21,6 +21,7 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.GameSettings; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; @@ -28,14 +29,16 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.event.DrawBlockHighlightEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors; import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.common.ForgeModContainer; public class ModEventHandlerRenderer { @@ -374,14 +377,10 @@ public class ModEventHandlerRenderer { public void tintFog(FogColors event) { EntityPlayer player = MainRegistry.proxy.me(); - BiomeGenBase biome = player.worldObj.getBiomeGenForCoords((int) Math.floor(player.posX), (int) Math.floor(player.posZ)); - - if(biome instanceof BiomeGenCraterBase) { - int color = ForgeHooksClient.getSkyBlendColour(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)); - event.red = ((color & 0xff0000) >> 16) / 255F; - event.green = ((color & 0x00ff00) >> 8) / 255F; - event.blue = (color & 0x0000ff) / 255F; - } + Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.renderPartialTicks); + event.red = (float) color.xCoord; + event.green = (float) color.yCoord; + event.blue = (float) color.zCoord; float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); float sootColor = 0.15F; @@ -404,4 +403,71 @@ public class ModEventHandlerRenderer { GL11.glTranslated(horizontal * mult, vertical * mult, 0); } } + + private static boolean fogInit = false; + private static int fogX; + private static int fogZ; + private static Vec3 fogRGBMultiplier; + + /** Same procedure as getting the blended sky color but for fog */ + public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, double partialTicks) { + + if(playerX == fogX && playerZ == fogZ && fogInit) return fogRGBMultiplier; + + fogInit = true; + GameSettings settings = Minecraft.getMinecraft().gameSettings; + int[] ranges = ForgeModContainer.blendRanges; + int distance = 0; + + if(settings.fancyGraphics && settings.renderDistanceChunks >= 0 && settings.renderDistanceChunks < ranges.length) { + distance = ranges[settings.renderDistanceChunks]; + } + + float r = 0F; + float g = 0F; + float b = 0F; + + int divider = 0; + + for(int x = -distance; x <= distance; x++) { + for(int z = -distance; z <= distance; z++) { + BiomeGenBase biome = world.getBiomeGenForCoords(playerX + x, playerZ + z); + Vec3 color = getBiomeFogColors(world, biome, partialTicks); + r += color.xCoord; + g += color.yCoord; + b += color.zCoord; + divider++; + } + } + + fogX = playerX; + fogZ = playerZ; + + fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider); + return fogRGBMultiplier; + } + + /** Returns the current biome's fog color adjusted for brightness if in a crater, or the world's cached fog color if not */ + public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, double partialTicks) { + + Vec3 worldFog = world.getFogColor((float) partialTicks); + double r = worldFog.xCoord; + double g = worldFog.yCoord; + double b = worldFog.zCoord; + + if(biome instanceof BiomeGenCraterBase) { + int color = biome.getSkyColorByTemp(biome.temperature); + r = ((color & 0xff0000) >> 16) / 255F; + g = ((color & 0x00ff00) >> 8) / 255F; + b = (color & 0x0000ff) / 255F; + + float celestialAngle = world.getCelestialAngle((float) partialTicks); + float skyBrightness = MathHelper.clamp_float(MathHelper.cos(celestialAngle * (float) Math.PI * 2.0F) * 2.0F + 0.5F, 0F, 1F); + r *= skyBrightness; + g *= skyBrightness; + b *= skyBrightness; + } + + return Vec3.createVectorHelper(r, g, b); + } } diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 629b49309..5bc992dd8 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -15,8 +15,6 @@ public class PacketDispatcher { { int i = 0; - //Machine type for marker rendering - wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); //Fluid packet for GUI wrapper.registerMessage(TEFluidPacket.Handler.class, TEFluidPacket.class, i++, Side.CLIENT); //Sound packet that keeps client and server separated diff --git a/src/main/java/com/hbm/packet/TEStructurePacket.java b/src/main/java/com/hbm/packet/TEStructurePacket.java deleted file mode 100644 index 59af50274..000000000 --- a/src/main/java/com/hbm/packet/TEStructurePacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityStructureMarker; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEStructurePacket implements IMessage { - - int x; - int y; - int z; - int type; - - public TEStructurePacket() - { - - } - - public TEStructurePacket(int x, int y, int z, int type) - { - this.x = x; - this.y = y; - this.z = z; - this.type = type; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - type = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(type); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEStructurePacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityStructureMarker) { - - TileEntityStructureMarker marker = (TileEntityStructureMarker) te; - marker.type = m.type; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index 9932ae2a1..181407f36 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -41,31 +41,35 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { renderer.setRenderBoundsFromBlock(block); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + IBlockMultiPass multi = (IBlockMultiPass) block; - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, -1.0F, 0.0F); - renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 1.0F, 0.0F); - renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, -1.0F); - renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, 1.0F); - renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(-1.0F, 0.0F, 0.0F); - renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(1.0F, 0.0F, 0.0F); - renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); - tessellator.draw(); + for(int i = 0; i < (multi.shouldRenderItemMulti() ? multi.getPasses() : 1); i++) { + this.currentPass = i; + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + } /** terrible hack to make this shit work */ if(block == ModBlocks.ore_random) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java b/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java deleted file mode 100644 index 20d55b4d6..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL14; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityStructureMarker; -import com.hbm.world.machine.FWatz; -import com.hbm.world.machine.NuclearReactor; -import com.hbm.world.machine.Watz; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class RenderStructureMaker extends TileEntitySpecialRenderer { - - float pixel = 1F/16F; - - @Override - public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x, (float) y, (float) z); - GL11.glRotatef(180, 0F, 0F, 1F); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL14.glBlendEquation(GL14.GL_FUNC_ADD); - GL11.glColor4f(0.5f, 0.25f, 1.0f, 1f); - this.renderBlocks((int)x, (int)y, (int)z, ((TileEntityStructureMarker)tileentity).type, tileentity.getWorldObj().getBlockMetadata(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord)); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); - } - - public void renderBlocks(int x, int y, int z, int type, int meta) { - int offsetX = 0; - int offsetZ = 0; - if(type == 0) { - - if(meta == 6) { - offsetZ = 3; - } - if(meta == 7) { - offsetX = 3; - } - if(meta == 8) { - offsetZ = -3; - } - if(meta == 9) { - offsetX = -3; - } - - GL11.glTranslatef(-2 + offsetX, -3, -2 + offsetZ); - for(int a = 0; a < 5; a++) { - for(int b = 0; b < 5; b++) { - for(int c = 0; c < 5; c++) { - - Block block = Blocks.air; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R")) - block = ModBlocks.reactor_element; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.reactor_computer; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.reactor_control; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A")) - block = ModBlocks.reactor_hatch; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) - block = ModBlocks.reactor_conductor; - //if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("B")) - // block = ModBlocks.brick_concrete; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - if(type == 1) { - - if(meta == 6) { - offsetZ = 4; - } - if(meta == 7) { - offsetX = 4; - } - if(meta == 8) { - offsetZ = -4; - } - if(meta == 9) { - offsetX = -4; - } - - GL11.glTranslatef(-3 + offsetX, -12, -3 + offsetZ); - for(int a = 0; a < 7; a++) { - for(int b = 0; b < 13; b++) { - for(int c = 0; c < 7; c++) { - - Block block = Blocks.air; - if(Watz.array[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.reinforced_brick; - if(Watz.array[b][a].substring(c, c + 1).equals("A")) - block = ModBlocks.watz_hatch; - if(Watz.array[b][a].substring(c, c + 1).equals("R")) - block = ModBlocks.watz_control; - if(Watz.array[b][a].substring(c, c + 1).equals("S")) - block = ModBlocks.watz_end; - if(Watz.array[b][a].substring(c, c + 1).equals("I")) - block = ModBlocks.watz_conductor; - if(Watz.array[b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.watz_core; - if(Watz.array[b][a].substring(c, c + 1).equals("K")) - block = ModBlocks.watz_cooler; - if(Watz.array[b][a].substring(c, c + 1).equals("W")) - block = ModBlocks.watz_element; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - if(type == 2) { - - if(meta == 6) { - offsetZ = 10; - } - if(meta == 7) { - offsetX = 10; - } - if(meta == 8) { - offsetZ = -10; - } - if(meta == 9) { - offsetX = -10; - } - - GL11.glTranslatef(-9 + offsetX, -18, -9 + offsetZ); - for(int a = 0; a < 19; a++) { - for(int b = 0; b < 19; b++) { - for(int c = 0; c < 19; c++) { - - Block block = Blocks.air; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("X")) - block = ModBlocks.fwatz_scaffold; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("H")) - block = ModBlocks.fwatz_hatch; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("S")) - block = ModBlocks.fwatz_cooler; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("T")) - block = ModBlocks.fwatz_tank; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("M")) - block = ModBlocks.fwatz_conductor; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.fwatz_computer; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.fwatz_core; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - } - - public void renderSmolBlockAt(ResourceLocation loc1, ResourceLocation loc2, int x, int y, int z) { - GL11.glPushMatrix(); - GL11.glTranslatef(x, y, z); - GL11.glRotatef(180, 0F, 0F, 1F); - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc1); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc1); - tesseract.draw(); - GL11.glPopMatrix(); - - } - -} diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index d2ea47b0f..5b8d04cc7 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -44,6 +44,7 @@ public class RenderAccessoryUtility { private static ResourceLocation pheo = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapePheo.png"); private static ResourceLocation vaer = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeVaer.png"); private static ResourceLocation adam = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeAdam.png"); + private static ResourceLocation alcater = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeAlcater.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -51,7 +52,7 @@ public class RenderAccessoryUtility { String name = player.getDisplayName(); if(uuid.equals(Library.HbMinecraft)) { - return (MainRegistry.polaroidID == 11 ? hbm : hbm2); + return (MainRegistry.polaroidID == 11 ? hbm2 : hbm); } if(uuid.equals(Library.Drillgon)) { @@ -123,6 +124,9 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.Adam29Adam29)) { return adam; } + if(uuid.equals(Library.Alcater)) { + return alcater; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b9469a2cf..f8060cbd2 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -82,9 +82,7 @@ public class TileMappings { put(TileEntityConverterRfHe.class, "tileentity_converter_rfhe"); put(TileEntityMachineSchrabidiumTransmutator.class, "tileentity_schrabidium_transmutator"); put(TileEntityMachineDiesel.class, "tileentity_diesel_generator"); - put(TileEntityWatzCore.class, "tileentity_watz_multiblock"); put(TileEntityMachineShredder.class, "tileentity_machine_shredder"); - put(TileEntityMachineCMBFactory.class, "tileentity_machine_cmb"); put(TileEntityFWatzCore.class, "tileentity_fwatz_multiblock"); put(TileEntityMachineTeleporter.class, "tileentity_teleblock"); put(TileEntityHatch.class, "tileentity_seal_lid"); @@ -94,7 +92,6 @@ public class TileMappings { put(TileEntityMachineCyclotron.class, "tileentity_cyclotron"); put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); - put(TileEntityStructureMarker.class, "tileentity_structure_marker"); put(TileEntityMachineExcavator.class, "tileentity_ntm_excavator"); put(TileEntityFluidDuctSimple.class, "tileentity_universal_duct_simple"); put(TileEntityFluidDuct.class, "tileentity_universal_duct"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java deleted file mode 100644 index 9232bc0da..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java +++ /dev/null @@ -1,385 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.inventory.container.ContainerMachineCMBFactory; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIMachineCMBFactory; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; -import api.hbm.fluid.IFluidStandardReceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; - -public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { - - private ItemStack slots[]; - - public long power = 0; - public int process = 0; - public int soundCycle = 0; - public static final long maxPower = 100000000; - public static final int processSpeed = 200; - public FluidTank tank; - - private static final int[] slots_top = new int[] {1, 3}; - private static final int[] slots_bottom = new int[] {0, 2, 4}; - private static final int[] slots_side = new int[] {0, 2}; - - private String customName; - - public TileEntityMachineCMBFactory() { - slots = new ItemStack[6]; - tank = new FluidTank(Fluids.WATZ, 8000, 0); - } - - @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.machineCMB"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @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; - } - } - - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - switch(i) - { - case 0: - if(stack.getItem() instanceof IBatteryItem) - return true; - break; - case 1: - if(stack.getItem() == ModItems.ingot_magnetized_tungsten || stack.getItem() == ModItems.powder_magnetized_tungsten) - return true; - break; - case 2: - if(stack.getItem() == ModItems.bucket_mud) - return true; - break; - case 3: - if(stack.getItem() == ModItems.ingot_advanced_alloy || stack.getItem() == ModItems.powder_advanced_alloy) - return true; - break; - } - - 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); - - power = nbt.getLong("power"); - tank.readFromNBT(nbt, "watz"); - process = nbt.getShort("process"); - 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); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - tank.writeToNBT(nbt, "watz"); - nbt.setShort("process", (short) process); - 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); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @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 == 4) - return true; - if(i == 0) - if (itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == 0) - return true; - if(i == 2) - if(itemStack.getItem() == Items.bucket) - return true; - - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - public int getProgressScaled(int i) { - return (process * i) / processSpeed; - } - - public boolean canProcess() { - - boolean b = false; - - if(tank.getFill() >= 1 && power >= 100000 && slots[1] != null && slots[3] != null && (slots[4] == null || slots[4].stackSize <= 60)) - { - boolean flag0 = slots[1].getItem() == ModItems.ingot_magnetized_tungsten || slots[1].getItem() == ModItems.powder_magnetized_tungsten; - boolean flag1 = slots[3].getItem() == ModItems.ingot_advanced_alloy || slots[3].getItem() == ModItems.powder_advanced_alloy; - - b = flag0 && flag1; - } - - return b; - } - - public boolean isProcessing() { - return process > 0; - } - - public void process() { - tank.setFill(tank.getFill() - 1); - power -= 100000; - - process++; - - if(process >= processSpeed) { - - slots[1].stackSize--; - if (slots[1].stackSize == 0) { - slots[1] = null; - } - - slots[3].stackSize--; - if (slots[3].stackSize == 0) { - slots[3] = null; - } - - if(slots[4] == null) - { - slots[4] = new ItemStack(ModItems.ingot_combine_steel, 4); - } else { - - slots[4].stackSize += 4; - } - - process = 0; - } - } - - @Override - public void updateEntity() { - - if (!worldObj.isRemote) { - - this.updateConnections(); - - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - - tank.loadTank(2, 5, slots); - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - if (canProcess()) { - process(); - if(soundCycle == 0) - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", 1.0F, 1.5F); - soundCycle++; - - if(soundCycle >= 25) - soundCycle = 0; - } else { - process = 0; - } - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - private void updateConnections() { - this.updateStandardConnections(worldObj, this); - this.subscribeToAllAround(tank.getTankType(), this); - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getMaxFill() : 0; - } - - @Override - public int getFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getFill() : 0; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] { tank }; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineCMBFactory(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineCMBFactory(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java deleted file mode 100644 index e6551423b..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEStructurePacket; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class TileEntityStructureMarker extends TileEntity { - - //0: Nuclear Reactor - //1: Watz Power Plant - //2: Fusionary Watz Plant - public int type = 0; - - @Override - public void updateEntity() { - - if(this.type > 2) - type -= 3; - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new TEStructurePacket(xCoord, yCoord, zCoord, type), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - type = nbt.getInteger("type"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setInteger("type", type); - } - -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java deleted file mode 100644 index ad410410b..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ /dev/null @@ -1,787 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityCloudFleija; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.interfaces.IFluidSource; -import com.hbm.interfaces.IReactor; -import com.hbm.inventory.container.ContainerWatzCore; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIWatzCore; -import com.hbm.items.ModItems; -import com.hbm.items.special.WatzFuel; -import com.hbm.items.tool.ItemTitaniumFilter; -import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardSender; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -@Deprecated -public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidSource, IFluidStandardSender, IGUIProvider { - - public long power; - public final static long maxPower = 100000000; - public int heat; - - public int heatMultiplier; - public int powerMultiplier; - public int decayMultiplier; - - public int heatList; - public int wasteList; - public int powerList; - - Random rand = new Random(); - - private ItemStack slots[]; - public int age = 0; - public List list1 = new ArrayList(); - public FluidTank tank; - - private String customName; - - public TileEntityWatzCore() { - slots = new ItemStack[40]; - tank = new FluidTank(Fluids.WATZ, 64000, 0); - } - @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.watzPowerplant"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return true; - } - } - - @Override - public void openInventory() {} - - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return true; - } - - @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 int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return null; - } - - @Override - public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_, int p_102007_3_) { - return false; - } - - @Override - public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_, int p_102008_3_) { - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - power = nbt.getLong("power"); - tank.readFromNBT(nbt, "watz"); - - 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); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - nbt.setLong("power", power); - tank.writeToNBT(nbt, "watz"); - - 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); - } - - @Override - public boolean isStructureValid(World world) { - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord - 1) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord + 1) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord - 2) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord + 2) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord - 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord + 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord - 2) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord + 2) != ModBlocks.watz_control) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord - 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord + 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord - 2) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord + 2) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord - 1) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord + 1) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord) != ModBlocks.watz_conductor) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord) != ModBlocks.watz_conductor) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - - if(world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord) != ModBlocks.watz_hatch) - return false; - - if(world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord) != ModBlocks.watz_hatch) - return false; - - if(world.getBlock(this.xCoord, this.yCoord, this.zCoord + 3) != ModBlocks.watz_hatch) - return false; - - if(world.getBlock(this.xCoord, this.yCoord, this.zCoord - 3) != ModBlocks.watz_hatch) - return false; - - for(int i = -3; i <= 3; i++) - { - for(int j = -3; j <= 3; j++) - { - if(world.getBlock(this.xCoord + i, this.yCoord + 6, this.zCoord + j) != ModBlocks.watz_end && world.getBlock(this.xCoord + i, this.yCoord + 6, this.zCoord + j) != ModBlocks.watz_conductor) - return false; - } - } - for(int i = -3; i <= 3; i++) - { - for(int j = -3; j <= 3; j++) - { - if(world.getBlock(this.xCoord + i, this.yCoord - 6, this.zCoord + j) != ModBlocks.watz_end && world.getBlock(this.xCoord + i, this.yCoord - 6, this.zCoord + j) != ModBlocks.watz_conductor) - return false; - } - } - - return true; - } - - @Override - public boolean isCoatingValid(World world) { - { - return true; - } - - //return false; - } - - @Override - public boolean hasFuse() { - return slots[38] != null && slots[38].getItem() == ModItems.titanium_filter && ItemTitaniumFilter.getDura(slots[38]) > 0; - } - - @Override - public int getWaterScaled(int i) { - return 0; - } - - @Override - public long getPowerScaled(long i) { - return (power/100 * i) / (maxPower/100); - } - - @Override - public int getCoolantScaled(int i) { - return 0; - } - - @Override - public int getHeatScaled(int i) { - return 0; - } - - @Override - public void updateEntity() { - - if(this.isStructureValid(this.worldObj)) { - - powerMultiplier = 100; - heatMultiplier = 100; - decayMultiplier = 100; - powerList = 0; - heatList = 0; - heat = 0; - - if (hasFuse()) { - - //Adds power and heat - for (int i = 0; i < 36; i++) { - surveyPellet(slots[i]); - } - //Calculates modifiers - for (int i = 0; i < 36; i++) { - surveyPelletAgain(slots[i]); - } - //Decays pellet by (DECAYMULTIPLIER * DEFAULTDECAY=100)/100 ticks - for (int i = 0; i < 36; i++) { - decayPellet(i); - } - } - - if(!worldObj.isRemote) { - - age++; - if (age >= 20) { - age = 0; - } - - this.sendPower(worldObj, xCoord, yCoord + 7, zCoord, ForgeDirection.UP); - this.sendPower(worldObj, xCoord, yCoord - 7, zCoord, ForgeDirection.DOWN); - - this.sendFluid(tank, worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); - this.sendFluid(tank, worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); - - if (age == 9 || age == 19) { - fillFluidInit(tank.getTankType()); - } - - //Only damages filter when heat is present (thus waste being created) - if (heatList > 0) { - ItemTitaniumFilter.setDura(slots[38], ItemTitaniumFilter.getDura(slots[38]) - 1); - } - - heatList *= heatMultiplier; - heatList /= 100; - heat = heatList; - - powerList *= powerMultiplier; - powerList /= 100; - power += powerList; - - tank.setFill(tank.getFill() + ((decayMultiplier * heat) / 100) / 100); - - if(power > maxPower) - power = maxPower; - - //Gets rid of 1/4 of the total waste, if at least one access hatch is not occupied - if(tank.getFill() > tank.getMaxFill()) - emptyWaste(); - - power = Library.chargeItemsFromTE(slots, 37, power, maxPower); - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - tank.unloadTank(36, 39, slots); - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - } - - public void surveyPellet(ItemStack stack) { - if(stack != null && stack.getItem() instanceof WatzFuel) - { - WatzFuel fuel = (WatzFuel)stack.getItem(); - this.powerList += fuel.power; - this.heatList += fuel.heat; - } - } - - public void surveyPelletAgain(ItemStack stack) { - if(stack != null && stack.getItem() instanceof WatzFuel) - { - WatzFuel fuel = (WatzFuel)stack.getItem(); - this.powerMultiplier *= fuel.powerMultiplier; - this.heatMultiplier *= fuel.heatMultiplier; - this.decayMultiplier *= fuel.decayMultiplier; - } - } - - public void decayPellet(int i) { - if(slots[i] != null && slots[i].getItem() instanceof WatzFuel) - { - WatzFuel fuel = (WatzFuel)slots[i].getItem(); - WatzFuel.setLifeTime(slots[i], WatzFuel.getLifeTime(slots[i]) + this.decayMultiplier); - WatzFuel.updateDamage(slots[i]); - if(WatzFuel.getLifeTime(slots[i]) >= fuel.lifeTime) - { - if(slots[i].getItem() == ModItems.pellet_lead) - slots[i] = new ItemStack(ModItems.powder_lead); - else - slots[i] = new ItemStack(ModItems.pellet_lead); - } - } - } - - public void emptyWaste() { - tank.setFill(tank.getFill() / 4); - tank.setFill(tank.getFill() * 3); - if (!worldObj.isRemote) { - if (this.worldObj.getBlock(this.xCoord + 4, this.yCoord, this.zCoord) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord + 4, this.yCoord, this.zCoord, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else if (this.worldObj.getBlock(this.xCoord - 4, this.yCoord, this.zCoord) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord - 4, this.yCoord, this.zCoord, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else if (this.worldObj.getBlock(this.xCoord, this.yCoord, this.zCoord + 4) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord + 4, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else if (this.worldObj.getBlock(this.xCoord, this.yCoord, this.zCoord - 4) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord - 4, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, - AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(50, 50, 50)); - - for(EntityPlayer player : players) { - player.triggerAchievement(MainRegistry.achWatzBoom); - } - - if (rand.nextInt(10) != 0) { - for (int i = -3; i <= 3; i++) - for (int j = -5; j <= 5; j++) - for (int k = -3; k <= 3; k++) - if (rand.nextInt(2) == 0) - this.worldObj.setBlock(this.xCoord + i, this.yCoord + j, this.zCoord + k, - ModBlocks.mud_block); - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "random.explode", 3.0F, 0.75F); - } else { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, xCoord, yCoord, zCoord, BombConfig.fleijaRadius); - if(!ex.isDead) { - worldObj.spawnEntityInWorld(ex); - EntityCloudFleija cloud = new EntityCloudFleija(worldObj, BombConfig.fleijaRadius); - cloud.posX = xCoord + 0.5; - cloud.posY = yCoord + 0.5; - cloud.posZ = zCoord + 0.6; - worldObj.spawnEntityInWorld(cloud); - } - } - } - } - } - - @Override - public boolean getTact() { - if(age >= 0 && age < 10) - { - return true; - } - - return false; - } - - @Override - public long getPower() { - return power; - } - - @Override - public void setPower(long i) { - this.power = i; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public void fillFluidInit(FluidType type) { - fillFluid(this.xCoord + 4, this.yCoord, this.zCoord, getTact(), type); - fillFluid(this.xCoord - 4, this.yCoord, this.zCoord, getTact(), type); - fillFluid(this.xCoord, this.yCoord, this.zCoord + 4, getTact(), type); - fillFluid(this.xCoord, this.yCoord, this.zCoord - 4, getTact(), type); - - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public int getFluidFill(FluidType type) { - return tank.getFill(); - } - - @Override - public void setFluidFill(int i, FluidType type) { - tank.setFill(i); - } - - @Override - public List getFluidList(FluidType type) { - return list1; - } - - @Override - public void clearFluidList(FluidType type) { - list1.clear(); - } - @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[] { tank }; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerWatzCore(player.inventory, this); - } - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIWatzCore(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 66ea25fcb..9ce319342 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -87,6 +87,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public long transferFluid(FluidType type, int pressure, long fluid) { long toTransfer = Math.min(getDemand(type, pressure), fluid); tank.setFill(tank.getFill() + (int) toTransfer); + this.markChanged(); return fluid - toTransfer; } @@ -109,12 +110,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; - age++; - if(age >= 20) { - age = 0; - this.markChanged(); - } - if((mode == 1 || mode == 2) && (age == 9 || age == 19)) fillFluidInit(tank.getTankType()); diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 33272462b..ddf3d89dd 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -63,6 +63,7 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.euphemium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.trenchmaster_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); //Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht! registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); diff --git a/src/main/java/com/hbm/world/machine/NuclearReactor.java b/src/main/java/com/hbm/world/machine/NuclearReactor.java deleted file mode 100644 index c9117a619..000000000 --- a/src/main/java/com/hbm/world/machine/NuclearReactor.java +++ /dev/null @@ -1,208 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class NuclearReactor extends WorldGenerator -{ - public static String[][] array2 = new String[][] { - { - " ", - " BBB ", - " B B ", - " BBB ", - " " - }, - { - " BBB ", - "BRCRB", - "BCICB", - "BRCRB", - " BBB " - }, - { - " BAB ", - "BRCRB", - "AC#CA", - "BRCRB", - " BAB " - }, - { - " BBB ", - "BRCRB", - "BCICB", - "BRCRB", - " BBB " - }, - { - " ", - " BBB ", - " B B ", - " BBB ", - " " - } - }; - - Block Block1 = ModBlocks.brick_concrete; - Block Block2 = ModBlocks.reactor_element; - Block Block3 = ModBlocks.reactor_control; - Block Block4 = ModBlocks.reactor_conductor; - Block Block5 = ModBlocks.reactor_hatch; - Block Block6 = ModBlocks.reactor_computer; - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - x -= 2; - z -= 2; - - world.setBlock(x + 0, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 2, ModBlocks.fluid_duct, 0, 3); - world.setBlock(x + 3, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 1, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, Block3, 0, 3); - world.setBlock(x + 2, y + 1, z + 2, Block4, 0, 3); - world.setBlock(x + 3, y + 1, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 2, y + 1, z + 3, Block3, 0, 3); - world.setBlock(x + 3, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 0, Block5, 2, 3); - world.setBlock(x + 3, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 2, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 2, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Block5, 4, 3); - world.setBlock(x + 1, y + 2, z + 2, Block3, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Block6, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 2, z + 2, Block5, 5, 3); - world.setBlock(x + 0, y + 2, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 2, y + 2, z + 3, Block3, 0, 3); - world.setBlock(x + 3, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 2, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 4, Block5, 3, 3); - world.setBlock(x + 3, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 3, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 3, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 2, Block3, 0, 3); - world.setBlock(x + 2, y + 3, z + 2, Block4, 0, 3); - world.setBlock(x + 3, y + 3, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 3, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 2, y + 3, z + 3, Block3, 0, 3); - world.setBlock(x + 3, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 2, ModBlocks.fluid_duct, 0, 3); - world.setBlock(x + 3, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 4, Block1, 0, 3); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/machine/Watz.java b/src/main/java/com/hbm/world/machine/Watz.java deleted file mode 100644 index 1fcfdafb3..000000000 --- a/src/main/java/com/hbm/world/machine/Watz.java +++ /dev/null @@ -1,795 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class Watz extends WorldGenerator -{ - public static String[][] array = new String[][] { - { - "SSSSSSS", - "SSSSSSS", - "SSSSSSS", - "SSSISSS", - "SSSSSSS", - "SSSSSSS", - "SSSSSSS" - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CAC ", - " CWRWC ", - "CWRKRWC", - "ARK#KRA", - "CWRKRWC", - " CWRWC ", - " CAC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - "SSSSSSS", - "SSSSSSS", - "SSSSSSS", - "SSSISSS", - "SSSSSSS", - "SSSSSSS", - "SSSSSSS" - } - }; - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - x -= 3; - z -= 3; - - world.setBlock(x + 0, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 1, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 1, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 1, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 1, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 1, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 1, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 1, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 1, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 1, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 1, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 1, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 1, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 1, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 1, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 1, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 1, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 1, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 1, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 1, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 1, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 1, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 1, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 1, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 1, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 1, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 1, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 1, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 1, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 1, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 1, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 2, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 2, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 2, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 2, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 2, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 2, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 2, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 2, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 2, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 2, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 2, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 2, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 2, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 2, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 2, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 2, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 2, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 2, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 2, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 2, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 2, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 2, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 2, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 2, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 2, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 2, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 2, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 2, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 2, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 2, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 3, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 3, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 3, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 3, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 3, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 3, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 3, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 3, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 3, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 3, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 3, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 3, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 3, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 3, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 3, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 3, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 3, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 3, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 3, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 3, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 3, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 3, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 3, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 3, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 3, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 3, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 3, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 3, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 3, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 3, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 3, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 3, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 4, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 4, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 4, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 4, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 4, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 4, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 4, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 4, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 4, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 4, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 4, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 4, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 4, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 4, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 4, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 4, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 4, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 4, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 4, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 4, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 4, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 4, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 4, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 4, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 4, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 4, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 4, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 4, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 4, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 4, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 4, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 4, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 5, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 5, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 5, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 5, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 5, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 5, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 5, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 5, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 5, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 5, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 5, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 5, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 5, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 5, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 5, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 5, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 5, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 5, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 5, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 5, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 5, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 5, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 5, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 5, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 5, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 5, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 5, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 5, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 5, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 5, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 5, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 5, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 5, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 5, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 5, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 5, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 5, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 6, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 6, z + 0, ModBlocks.watz_hatch, 2, 3); - world.setBlock(x + 4, y + 6, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 6, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 6, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 6, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 6, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 6, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 6, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 6, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 6, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 6, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 6, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 6, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 6, z + 3, ModBlocks.watz_hatch, 4, 3); - world.setBlock(x + 1, y + 6, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 6, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 6, z + 3, ModBlocks.watz_core, 0, 3); - world.setBlock(x + 4, y + 6, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 6, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 6, z + 3, ModBlocks.watz_hatch, 5, 3); - world.setBlock(x + 0, y + 6, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 6, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 6, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 6, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 6, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 6, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 6, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 6, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 6, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 6, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 6, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 6, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 6, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 6, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 6, z + 6, ModBlocks.watz_hatch, 3, 3); - world.setBlock(x + 4, y + 6, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 7, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 7, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 7, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 7, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 7, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 7, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 7, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 7, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 7, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 7, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 7, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 7, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 7, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 7, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 7, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 7, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 7, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 7, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 7, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 7, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 7, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 7, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 7, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 7, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 7, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 7, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 7, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 7, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 7, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 7, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 7, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 7, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 7, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 7, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 7, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 7, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 7, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 8, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 8, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 8, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 8, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 8, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 8, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 8, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 8, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 8, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 8, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 8, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 8, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 8, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 8, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 8, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 8, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 8, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 8, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 8, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 8, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 8, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 8, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 8, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 8, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 8, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 8, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 8, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 8, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 8, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 8, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 8, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 8, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 8, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 8, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 8, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 8, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 8, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 9, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 9, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 9, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 9, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 9, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 9, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 9, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 9, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 9, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 9, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 9, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 9, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 9, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 9, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 9, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 9, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 9, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 9, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 9, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 9, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 9, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 9, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 9, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 9, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 9, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 9, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 9, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 9, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 9, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 9, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 9, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 9, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 9, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 9, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 9, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 9, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 9, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 10, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 10, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 10, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 10, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 10, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 10, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 10, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 10, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 10, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 10, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 10, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 10, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 10, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 10, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 10, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 10, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 10, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 10, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 10, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 10, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 10, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 10, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 10, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 10, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 10, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 10, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 10, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 10, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 10, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 10, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 10, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 10, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 10, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 10, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 10, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 10, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 10, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 11, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 11, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 11, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 11, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 11, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 11, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 11, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 11, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 11, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 11, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 11, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 11, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 11, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 11, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 11, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 11, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 11, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 11, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 11, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 11, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 11, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 11, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 11, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 11, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 11, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 11, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 11, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 11, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 11, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 11, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 11, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 11, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 11, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 11, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 11, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 11, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 11, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 80aae005a..bf2b878be 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4779,7 +4779,7 @@ tile.corium_block.name=Corium tile.crane_boxer.name=Conveyor Boxer tile.crane_boxer.desc=Loads a configurable amount of stacks into boxes which move along conveyor belts$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_extractor.name=Conveyor Ejector -tile.crane_extractor.desc=Takes items from inventories and places them on covneyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side +tile.crane_extractor.desc=Takes items from inventories and places them on conveyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side tile.crane_grabber.name=Conveyor Grabber tile.crane_grabber.desc=Takes items from passing conveyors and places them into containers$Will only take items from the closest lane$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_inserter.name=Conveyor Inserter @@ -5409,7 +5409,7 @@ tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_cable_gauge.name=Power Gauge -tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$stroage blocks are considered as one shared network. +tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$storage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_schrabidium.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_schrabidium.png new file mode 100644 index 0000000000000000000000000000000000000000..40fafd83fd36a33bc47224b453aeae122b0fbfc1 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf8>E$le^)`EFk6W`yS z?v(o`9nXFZwtlKu1s7qFVX01we`x<>sL>xm9O8Y6v^$v!th2&GkLbfQJ=tb rGS_NPKMsF!EsArQO7#BxMQ@m|uiF{=xXL9E=xzp2S3j3^P68~V+;p;%qVmf`=K8KB%nqH?b8jc4S@bcl zit?y>zjsZ~H2aoH4JQVN(9=^~E)_T5(ORi4~6J61<{MDF}G`&xa1c@$s?icDqWg zk}wQ0#-O!k@@*hNP?q!azF2FSO_R=_O#Hq5dfe@H6+ol88<)Zmous@y`*cxURs}1Q z%%&)EQ7e@8K{Kx3*b}War>CdtS1N#6G9^jp68J^JFhl|BPiQyyYH=|Lc=NO8qx-kw z*?fjqC{iwO$*Y&I6)S<0lM`o*Aq+!?<8$&n$M<~78(V0t$z3Xw$%HIh(C-Z|&0|fl zf7pz1;Fd}}-{VHLK^TUY`UV(H`m%j>N3_xW``6izEj)O5&-HpeQL4ajFj_lAQRDy; zGe?_5vMi#oS%XCFJ42!4&$emz!7;T+`49HkUEFxoI0PS&@u7I^yXi9n;M#UYhU0-$uJ1~oFS&YUo7JWORI6Q&aS(27;M|g;R}yP2*5+t4m)z!fp2wHo zpc6%rTNMJd51X;NbGIF53ybgh%;qzaMB{rtNFys;g7}x2}(YR*1ULrEXEk> zwVQGgb*{gPF)1J4_t(PJS_QDEy@N*l{>|s#o~6}p#5>znxp>xJr(?3z;2hXICruMs zyR3d<|F9J=78##E{O5N2=pfD)mV)vnU1$k{5@&zE>i~QQLQ_yZ_<+E+00000NkvXX Hu0mjfEdV|n literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeAlcater.png b/src/main/resources/assets/hbm/textures/models/capes/CapeAlcater.png new file mode 100644 index 0000000000000000000000000000000000000000..0d883299e4a1d5b24ee1d5e1897e556f285bb596 GIT binary patch literal 1281 zcmV+c1^)VpP)AVoyzJ{NO|2_zkDDFncDq|GIG@k8<4vtAY=;}US%`Psrhn|{CMVZy za$RA2QXb&^{G7|nOO&cE3yzMCO3kb431sItOG*P=TwL()H}BJ75znvyhv0d^3a>UO zJMQ0m<1Mu@4^Rr zF7G{YIXOA0%@fGZza8w^Y(~_U%VjWXf#n5_Wa||4)iv+lg}tuJXfz_Z=1p;XKA&q_ z5uyR=CzS~DeLryX9^iuN#C{NK>&|G(i32J%AGmzibHj`)kydW;_Z37Fhl*eQTjM@*1Eh z1l*JivH>4d=m|svn1j{>Xyg1%MgS`#5X>U40g?s~^&R;0d+?rt7hXp%0u`%=O3?u3 zkk11|As~|me)uE&{L?;kI{9>PbWkK1hdvJw?)s$bR~9_62yVJVIv0>h0*MANhnqD( zM(C+14`5s1DsWag;J^zsR$VAGh5jr+qXAa60ISy;pD!A~I8q+K^E{q=^%K5)sSj!z zyY;9w`;Vr4_;L?aBIa6whyUWA39sGR!&O(Q zg_enaRSi(~7+5qw{p6kkhQlEX1t0%0=gjJH2Arv&Jr0fFqhGH$bM}Mx!uA)iK`CMB zVi2Jj@*04kz;iqv^Wb;=j_ddPJosgzea~^6(y_W~0f=aT`pG{9gbatnO2wP=`FwSq zPN!=>BfGsFXnz+Fv1y6cIt@_Qy2ADpdVr>OsOZaBeHYeu+WasY| z`Lh7(`&svGtt$wEAP7Qbq>Q8GTqh3M9RS+~KRA9{Mq`Qb`6?`y~9pF|me zvwlkP{N#<-jEeynz;gYR;`vE0pc$7C&~jA6byng5TFx@j0R4`(?YL3R1Bd|_Kq(F2 zZ&sHj24DcCG=RO?trQK=azq2{IE`q4#C$OT18778NFKl(8qolf2QUNC06R`84Nx?m zi1kJ5hyfTt)w6&UMP~saVgLqE^(-Jok;e!T4bXB#1ME0e^8l&&CGrDe00vMs4^UJO zphFD60IKEzik=R1hz4jmq5*cCs(FB-`H}}Pn5}98*Nlq+7{FFFfosM^1GF5`06R`y r^#Gy)45qGn0MP)3Qdd2IZk_)DS-bD8tYjeZ00000NkvXXu0mjfde}(i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeHbm.png b/src/main/resources/assets/hbm/textures/models/capes/CapeHbm.png deleted file mode 100644 index 3a189322ff4b1284d5ea50650e01d561ed25f3ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1876 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58aSANzu9-rxB9>7?J!r~ZC1_4mtZ zKVMG&`Eth3motCAn(_1XqMxr9e|@z5`-i>XKA-*i_1c%u559bV`Q;}Nz5ep^-IrhQ zfsPpkqai@g5O7RVcm~QWB|(0{|3@}p2>#Bl3JiPB0*}aI1_r);Ak6s6Y2yK)pk#?_ zL`iUdT1k0gQ7S`0VrE{6US4X6f{C7io{`~4h0Li83`{#cT^vIy;@-{)&p+fK(DLw7 zHPcJmCFcMC*H4exSa^`_uAEIz`MZ;wRG<8`*}OZQvDtq2CRP3KGc~du7)lyGap+k7 zyWHQrl96SD5>p8SN26mqquOMb^oAGzl^edX|26R3%CLiZ&A%f&3CtB`43{_(m_Pgy zWv<|7n8e{=t#Ez4*a3gW2bzgu4rLAt?KPPj80_M_o_<|?eEa(h{RBpX*h{OQ`--p_ zFg#0BWV)Qskk-iAw(L5?wl#ZpvfTN4Ud~;inCWa{I8WZ+ry74H!+1|HHS!6!WEcK= z$Z$qc;Zi^Q1Em)-X2}I=m;2clTxJsbe|yJ*s|?krWkVYnSVRS`GfL~u4G?YE=INl` z@bSmGhKCF??tY9Nt{bA5kJmkADRU7!@S4f*+1~3iPo{H}FwBrzFeP3=z|_ft{Rx9x z>0djJE`~YhPHb0qo9B=t+EQ|$ZgyR@A1}jYK8HY-D9#hxnhOL^ls9jdw+zw3Ugxnuk!Df%@gAI6~FkaGSdm?fX@fkUH>n-US7z-FJbc}ruF}$7RU=9$Wat2 zbvVzxp8Ln`yep17>zEiy4|whsmh)(P5Mb!QXyVSuw1Gv%wt+8!C4$+3!(^ZCzS#Fn zzn(Q5Q*mKXocPUzn{GcI$AQ;AVIi zcYyt$c}Szm-xGWv*0b6$B>r{2$165Tm*L{<145D~6mI<7eem<%DaZNan1z-)?-z*d zDqADfFzIUO-R1xJ1 Date: Thu, 11 Jan 2024 21:51:07 +0100 Subject: [PATCH 10/16] guess what? even more removals! --- changelog | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 29 - .../java/com/hbm/blocks/generic/BlockOre.java | 2 +- .../com/hbm/blocks/machine/BlockPillar.java | 60 +- .../hbm/blocks/machine/BlockRotatable.java | 63 - .../com/hbm/blocks/machine/ReactorCore.java | 23 - .../com/hbm/blocks/machine/ReactorHatch.java | 158 --- .../container/ContainerReactorMultiblock.java | 88 -- .../inventory/gui/GUIMachineRadarNTSlots.java | 1 + .../inventory/gui/GUIReactorMultiblock.java | 189 --- src/main/java/com/hbm/lib/Library.java | 20 +- .../java/com/hbm/main/CraftingManager.java | 2 + src/main/java/com/hbm/main/MainRegistry.java | 10 +- .../java/com/hbm/packet/AuxButtonPacket.java | 25 - .../java/com/hbm/tileentity/TileMappings.java | 1 - .../TileEntityMachineReactorLarge.java | 1017 ----------------- .../java/com/hbm/world/dungeon/Spaceship.java | 2 +- .../com/hbm/world/dungeon/Spaceship2.java | 2 +- .../hbm/textures/blocks/inserter_side.png | Bin 423 -> 0 bytes .../hbm/textures/blocks/inserter_top.png | Bin 546 -> 0 bytes .../blocks/machine_deuterium_front.png | Bin 393 -> 0 bytes .../blocks/machine_deuterium_side.png | Bin 450 -> 0 bytes .../textures/blocks/machine_diesel_bottom.png | Bin 463 -> 0 bytes .../textures/blocks/machine_diesel_front.png | Bin 390 -> 0 bytes .../textures/blocks/machine_diesel_side.png | Bin 356 -> 0 bytes .../textures/blocks/machine_diesel_top.png | Bin 313 -> 0 bytes .../hbm/textures/blocks/machine_drill.png | Bin 368 -> 0 bytes .../textures/blocks/machine_refinery_side.png | Bin 542 -> 0 bytes .../blocks/machine_refinery_side_alt.png | Bin 522 -> 0 bytes .../textures/blocks/machine_refinery_top.png | Bin 490 -> 0 bytes .../textures/blocks/machine_rtg_side_blue.png | Bin 581 -> 0 bytes .../textures/blocks/machine_rtg_side_cyan.png | Bin 611 -> 0 bytes .../blocks/machine_rtg_side_green.png | Bin 611 -> 0 bytes .../textures/blocks/machine_rtg_side_grey.png | Bin 573 -> 0 bytes .../blocks/machine_rtg_side_orange.png | Bin 578 -> 0 bytes .../blocks/machine_rtg_side_purple.png | Bin 591 -> 0 bytes .../textures/blocks/machine_rtg_side_red.png | Bin 585 -> 0 bytes .../blocks/machine_rtg_side_yellow.png | Bin 614 -> 0 bytes .../hbm/textures/blocks/machine_rtg_top.png | Bin 562 -> 0 bytes .../textures/blocks/machine_rtg_top_blue.png | Bin 667 -> 0 bytes .../textures/blocks/machine_rtg_top_cyan.png | Bin 656 -> 0 bytes .../textures/blocks/machine_rtg_top_green.png | Bin 683 -> 0 bytes .../textures/blocks/machine_rtg_top_grey.png | Bin 663 -> 0 bytes .../blocks/machine_rtg_top_orange.png | Bin 654 -> 0 bytes .../blocks/machine_rtg_top_purple.png | Bin 677 -> 0 bytes .../textures/blocks/machine_rtg_top_red.png | Bin 661 -> 0 bytes .../blocks/machine_rtg_top_yellow.png | Bin 669 -> 0 bytes .../hbm/textures/blocks/marker_structure.png | Bin 197 -> 0 bytes 48 files changed, 24 insertions(+), 1670 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/machine/BlockRotatable.java delete mode 100644 src/main/java/com/hbm/blocks/machine/ReactorCore.java delete mode 100644 src/main/java/com/hbm/blocks/machine/ReactorHatch.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java delete mode 100644 src/main/resources/assets/hbm/textures/blocks/inserter_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/inserter_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_deuterium_front.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_deuterium_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_diesel_bottom.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_diesel_front.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_diesel_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_diesel_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_drill.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_refinery_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_refinery_side_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_refinery_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_blue.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_cyan.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_green.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_grey.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_orange.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_purple.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_red.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_yellow.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_blue.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_cyan.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_green.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_grey.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_orange.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_purple.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_red.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_yellow.png delete mode 100755 src/main/resources/assets/hbm/textures/blocks/marker_structure.png diff --git a/changelog b/changelog index b9c3bc58e..fdc381f0e 100644 --- a/changelog +++ b/changelog @@ -12,7 +12,7 @@ * Adjusted the nuclear flash's intensity, the flash will now deal less and less radiation the longer it goes on * The nuclear flash now bypasses radiation resistance, being only affected by blocks and distance * Mushroom clouds' initial scale is now based on the total scale instead of all spawning roughly at the same size, causing fireballs to be comically small for huge bombs -* Removed the old mining drill, combustion generator, old watz core, structure marker and CMB furnace for good +* Removed the old mining drill, combustion generator, old watz core, structure marker, all old large reactor parts and CMB furnace for good ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7e2d27e99..c7ecebe51 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -902,14 +902,6 @@ public class ModBlocks { public static Block pwr_port; public static Block pwr_controller; public static Block pwr_block; - - @Deprecated public static Block reactor_element; - @Deprecated public static Block reactor_control; - @Deprecated public static Block reactor_hatch; - @Deprecated public static Block reactor_ejector; - @Deprecated public static Block reactor_inserter; - @Deprecated public static Block reactor_conductor; - @Deprecated public static Block reactor_computer; public static Block fusion_conductor; public static Block fusion_center; @@ -1271,8 +1263,6 @@ public class ModBlocks { public static Block pink_double_slab; public static Block pink_stairs; - public static Block ff; - public static Material materialGas = new MaterialGas(); private static void initializeBlock() { @@ -2068,14 +2058,6 @@ public class ModBlocks { pwr_port = new BlockGenericPWR(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port"); pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); - - reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); - reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); - reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_ejector = new BlockRotatable(Material.iron).setBlockName("reactor_ejector").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_inserter = new BlockRotatable(Material.iron).setBlockName("reactor_inserter").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); - reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); @@ -2441,8 +2423,6 @@ public class ModBlocks { pink_slab = new BlockPinkSlab(false, Material.wood).setBlockName("pink_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_double_slab = new BlockPinkSlab(true, Material.wood).setBlockName("pink_double_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_stairs = new BlockGenericStairs(pink_planks, 0).setBlockName("pink_stairs").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); - - ff = new BlockFF(Material.iron).setBlockName("ff").setHardness(0.5F).setStepSound(Block.soundTypeGravel).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":code"); } private static void registerBlock() { @@ -3440,14 +3420,6 @@ public class ModBlocks { register(pwr_block); //Multiblock Generators - GameRegistry.registerBlock(reactor_element, reactor_element.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_control, reactor_control.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_hatch, reactor_hatch.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_ejector, reactor_ejector.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_inserter, reactor_inserter.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_conductor, reactor_conductor.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_computer, reactor_computer.getUnlocalizedName()); - register(fusion_conductor); GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); @@ -3606,7 +3578,6 @@ public class ModBlocks { GameRegistry.registerBlock(pink_slab, pink_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_double_slab, pink_double_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(ff, ff.getUnlocalizedName()); } private static void register(Block b) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index d862c4ea5..97aae0c8c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -127,7 +127,7 @@ public class BlockOre extends Block { case 23: return Item.getItemFromBlock(ModBlocks.fusion_conductor); case 24: - return Item.getItemFromBlock(ModBlocks.reactor_computer); + return Item.getItemFromBlock(ModBlocks.pwr_fuel); case 25: return Item.getItemFromBlock(ModBlocks.machine_diesel); case 26: diff --git a/src/main/java/com/hbm/blocks/machine/BlockPillar.java b/src/main/java/com/hbm/blocks/machine/BlockPillar.java index a030210b0..8158e9416 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockPillar.java +++ b/src/main/java/com/hbm/blocks/machine/BlockPillar.java @@ -1,23 +1,15 @@ package com.hbm.blocks.machine; -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import api.hbm.fluid.IFluidConnectorBlock; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -public class BlockPillar extends Block implements IFluidConnectorBlock { +public class BlockPillar extends Block { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -37,18 +29,13 @@ public class BlockPillar extends Block implements IFluidConnectorBlock { textureAlt = bottom; } - public Block setBlockTextureName(String name) { - - if(textureTop.isEmpty()) - textureTop = name; - - if(textureAlt.isEmpty()) - textureAlt = name; - - this.textureName = name; - - return this; - } + public Block setBlockTextureName(String name) { + + if(textureTop.isEmpty()) textureTop = name; + if(textureAlt.isEmpty()) textureAlt = name; + this.textureName = name; + return this; + } @Override @SideOnly(Side.CLIENT) @@ -62,37 +49,6 @@ public class BlockPillar extends Block implements IFluidConnectorBlock { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { - - if(this == ModBlocks.reactor_element && metadata == 1) - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.iconAlt); - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); } - - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - - if(this != ModBlocks.reactor_element) - return super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ); - - if(player.isSneaking()) - { - if(world.getBlockMetadata(x, y, z) == 0) { - world.setBlockMetadataWithNotify(x, y, z, 1, 3); - } else { - world.setBlockMetadataWithNotify(x, y, z, 0, 3); - } - - return true; - } - - return false; - } - - @Override - public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - if(this != ModBlocks.reactor_conductor) return false; - return type == Fluids.WATER || type == Fluids.COOLANT || type == Fluids.STEAM || type == Fluids.HOTSTEAM || type == Fluids.SUPERHOTSTEAM || type == Fluids.ULTRAHOTSTEAM; - } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockRotatable.java b/src/main/java/com/hbm/blocks/machine/BlockRotatable.java deleted file mode 100644 index d3e7d538e..000000000 --- a/src/main/java/com/hbm/blocks/machine/BlockRotatable.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class BlockRotatable extends Block { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public BlockRotatable(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - - if(this == ModBlocks.reactor_ejector) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":reactor_ejector"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_concrete"); - } - if(this == ModBlocks.reactor_inserter) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":reactor_inserter"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_concrete"); - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - - @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); - } - } -} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorCore.java b/src/main/java/com/hbm/blocks/machine/ReactorCore.java deleted file mode 100644 index 847ece06f..000000000 --- a/src/main/java/com/hbm/blocks/machine/ReactorCore.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class ReactorCore extends BlockContainer { - - public boolean keepInventory = false; - public Random field_149933_a = new Random(); - - public ReactorCore(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return null; - } -} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorHatch.java b/src/main/java/com/hbm/blocks/machine/ReactorHatch.java deleted file mode 100644 index b83e57aa1..000000000 --- a/src/main/java/com/hbm/blocks/machine/ReactorHatch.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; - -import api.hbm.fluid.IFluidConnectorBlock; -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.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class ReactorHatch extends Block implements IFluidConnectorBlock { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public ReactorHatch(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":reactor_hatch"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_concrete"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - 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(this); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - //this.setDefaultDirection(world, x, y, z); - } - - @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); - } - } - - @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()) - { - if(world.getBlockMetadata(x, y, z) == 2) - { - if(world.getTileEntity(x, y, z + 2) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x, y, z + 2)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z + 2); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 3) - { - if(world.getTileEntity(x, y, z - 2) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x, y, z - 2)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z - 2); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 4) - { - if(world.getTileEntity(x + 2, y, z) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x + 2, y, z)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x + 2, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 5) - { - if(world.getTileEntity(x - 2, y, z) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x - 2, y, z)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x - 2, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - return true; - } else { - return false; - } - } - - @Override - public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - return type == Fluids.WATER || type == Fluids.COOLANT || type == Fluids.STEAM || type == Fluids.HOTSTEAM || type == Fluids.SUPERHOTSTEAM || type == Fluids.ULTRAHOTSTEAM; - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java b/src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java deleted file mode 100644 index e84e79fd9..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotTakeOnly; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerReactorMultiblock extends Container { - - private TileEntityMachineReactorLarge diFurnace; - - public ContainerReactorMultiblock(InventoryPlayer invPlayer, TileEntityMachineReactorLarge tedf) { - - diFurnace = tedf; - - //Water in - this.addSlotToContainer(new Slot(tedf, 0, 8, 90)); - //Water out - this.addSlotToContainer(new SlotTakeOnly(tedf, 1, 8, 108)); - //Coolant in - this.addSlotToContainer(new Slot(tedf, 2, 26, 90)); - //Coolant out - this.addSlotToContainer(new SlotTakeOnly(tedf, 3, 26, 108)); - - //Fuel in - this.addSlotToContainer(new Slot(tedf, 4, 80, 36)); - //Fuel out - this.addSlotToContainer(new SlotTakeOnly(tedf, 5, 80, 72)); - //Waste in - this.addSlotToContainer(new Slot(tedf, 6, 152, 36)); - //Waste out - this.addSlotToContainer(new SlotTakeOnly(tedf, 7, 152, 72)); - - 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 + 56)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); - } - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 7) { - if (!this.mergeItemStack(var5, 8, this.inventorySlots.size(), true)) - { - return null; - } - } else { - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java index 77f1f3a60..2c9338326 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java @@ -52,6 +52,7 @@ public class GUIMachineRadarNTSlots extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.radar.hasCustomInventoryName() ? this.radar.getInventoryName() : I18n.format(this.radar.getInventoryName()); + if(MainRegistry.polaroidID == 11) name = "Reda"; 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); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java b/src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java deleted file mode 100644 index 7cf44051e..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerReactorMultiblock; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -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.util.ResourceLocation; - -public class GUIReactorMultiblock extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_reactor_large_experimental.png"); - private TileEntityMachineReactorLarge diFurnace; - - public GUIReactorMultiblock(InventoryPlayer invPlayer, TileEntityMachineReactorLarge tedf) { - super(new ContainerReactorMultiblock(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 222; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 88 - 52, 16, 52); - diFurnace.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 88 - 52, 16, 52); - diFurnace.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 108, 88, 4); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 114, 88, 4, new String[] { "Hull Temperature:", " " + Math.round((diFurnace.hullHeat) * 0.00001 * 980 + 20) + "°C" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 120, 88, 4, new String[] { "Core Temperature:", " " + Math.round((diFurnace.coreHeat) * 0.00002 * 980 + 20) + "°C" }); - - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 115, guiTop + 17, 18, 90, new String[] { "Operating Level: " + diFurnace.rods + "%" }); - - String fuel = ""; - - switch(diFurnace.type) { - case URANIUM: - fuel = "Uranium"; - break; - case MOX: - fuel = "MOX"; - break; - case PLUTONIUM: - fuel = "Plutonium"; - break; - case SCHRABIDIUM: - fuel = "Schrabidium"; - break; - case THORIUM: - fuel = "Thorium"; - break; - default: - fuel = "ERROR"; - break; - } - - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 98, guiTop + 18, 16, 88, new String[] { fuel + ": " + (diFurnace.fuel / diFurnace.fuelMult) + "/" + (diFurnace.maxFuel / diFurnace.fuelMult) + "ng" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 18, 16, 88, new String[] { "Depleted " + fuel + ": " + (diFurnace.waste / diFurnace.fuelMult) + "/" + (diFurnace.maxWaste / diFurnace.fuelMult) + "ng" }); - - String[] text0 = new String[] { diFurnace.rods > 0 ? "Reactor is ON" : "Reactor is OFF"}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 52, guiTop + 53, 18, 18, mouseX, mouseY, text0); - - String s = "0"; - - FluidType type = diFurnace.tanks[2].getTankType(); - if(type == Fluids.STEAM) s = "1x"; - if(type == Fluids.HOTSTEAM) s = "10x"; - if(type == Fluids.SUPERHOTSTEAM) s = "100x"; - - String[] text4 = new String[] { "Steam compression switch", - "Current compression level: " + s}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 63, guiTop + 107, 14, 18, mouseX, mouseY, text4); - } - - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft + 115 <= x && guiLeft + 115 + 18 > x && guiTop + 17 < y && guiTop + 17 + 90 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - - int rods = (y - (guiTop + 24)) * 100 / 76; - - if(rods < 0) - rods = 0; - - if(rods > 100) - rods = 100; - - rods = 100 - rods; - - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, rods, 0)); - } - - if(guiLeft + 63 <= x && guiLeft + 63 + 14 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - int c = 0; - - FluidType type = diFurnace.tanks[2].getTankType(); - if(type == Fluids.STEAM) c = 0; - if(type == Fluids.HOTSTEAM) c = 1; - if(type == Fluids.SUPERHOTSTEAM) c = 2; - - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, c, 1)); - } - } - - @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); - - int k = diFurnace.rods; - drawTexturedModalRect(guiLeft + 115, guiTop + 107 - 14 - (k * 76 / 100), 208, 36, 18, 14); - - if(diFurnace.rods > 0) - drawTexturedModalRect(guiLeft + 52, guiTop + 53, 212, 0, 18, 18); - - int q = diFurnace.getFuelScaled(88); - drawTexturedModalRect(guiLeft + 98, guiTop + 106 - q, 176, 124 - q, 16, q); - - int j = diFurnace.getWasteScaled(88); - drawTexturedModalRect(guiLeft + 134, guiTop + 106 - j, 192, 124 - j, 16, j); - - int s = diFurnace.size; - - if(s < 8) - drawTexturedModalRect(guiLeft + 50, guiTop + 17, 208, 50 + s * 18, 22, 18); - else - drawTexturedModalRect(guiLeft + 50, guiTop + 17, 230, 50 + (s - 8) * 18, 22, 18); - - - FluidType type = diFurnace.tanks[2].getTankType(); - if(type == Fluids.STEAM) drawTexturedModalRect(guiLeft + 63, guiTop + 107, 176, 18, 14, 18); - if(type == Fluids.HOTSTEAM) drawTexturedModalRect(guiLeft + 63, guiTop + 107, 190, 18, 14, 18); - if(type == Fluids.SUPERHOTSTEAM) drawTexturedModalRect(guiLeft + 63, guiTop + 107, 204, 18, 14, 18); - - if(diFurnace.hasHullHeat()) { - int i = diFurnace.getHullHeatScaled(88); - - i = (int) Math.min(i, 160); - - drawTexturedModalRect(guiLeft + 80, guiTop + 114, 0, 226, i, 4); - } - - if(diFurnace.hasCoreHeat()) { - int i = diFurnace.getCoreHeatScaled(88); - - i = (int) Math.min(i, 160); - - drawTexturedModalRect(guiLeft + 80, guiTop + 120, 0, 230, i, 4); - } - - if(diFurnace.tanks[2].getFill() > 0) { - int i = diFurnace.getSteamScaled(88); - - //i = (int) Math.min(i, 160); - - int offset = 234; - - if(type == Fluids.HOTSTEAM) offset += 4; - if(type == Fluids.SUPERHOTSTEAM) offset += 8; - - drawTexturedModalRect(guiLeft + 80, guiTop + 108, 0, offset, i, 4); - } - - diFurnace.tanks[0].renderTank(guiLeft + 8, guiTop + 88, this.zLevel, 16, 52); - diFurnace.tanks[1].renderTank(guiLeft + 26, guiTop + 88, this.zLevel, 16, 52); - } -} diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 77c0bd6b1..f42d5a4c3 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -77,6 +77,7 @@ public class Library { public static String Ma118 = "1121cb7a-8773-491f-8e2b-221290c93d81"; public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61"; public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9"; + public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf @@ -165,8 +166,6 @@ public class Library { return true; if((tileentity != null && (tileentity instanceof IFluidAcceptor || tileentity instanceof IFluidSource)) || - world.getBlock(x, y, z) == ModBlocks.reactor_hatch || - world.getBlock(x, y, z) == ModBlocks.reactor_conductor || world.getBlock(x, y, z) == ModBlocks.fusion_hatch || world.getBlock(x, y, z) == ModBlocks.fwatz_hatch || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_limiter || @@ -390,23 +389,6 @@ public class Library { Block block = worldObj.getBlock(x, y, z); TileEntity tileentity = worldObj.getTileEntity(x, y, z); - //Large Nuclear Reactor - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x, y, z + 2) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x, y, z + 2); - } - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x, y, z - 2) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x, y, z - 2); - } - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x + 2, y, z) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x + 2, y, z); - } - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x - 2, y, z) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x - 2, y, z); - } //FWatz Reactor if(block == ModBlocks.fwatz_hatch && worldObj.getBlock(x, y + 11, z + 9) == ModBlocks.fwatz_core) { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 4eb46ca3a..b4fb99e14 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1079,6 +1079,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.ore_nether_uranium, 8), new Object[] { "OOO", "OBO", "OOO", 'O', ModBlocks.ore_nether_uranium_scorched, 'B', Items.water_bucket }); addShapelessAuto(new ItemStack(ModBlocks.ore_gneiss_uranium, 1), new Object[] { ModBlocks.ore_gneiss_uranium_scorched, Items.water_bucket }); addRecipeAuto(new ItemStack(ModBlocks.ore_gneiss_uranium, 8), new Object[] { "OOO", "OBO", "OOO", 'O', ModBlocks.ore_gneiss_uranium_scorched, 'B', Items.water_bucket }); + addShapelessAuto(new ItemStack(ModBlocks.ore_uranium, 1), new Object[] { ModBlocks.ore_sellafield_uranium_scorched, Items.water_bucket }); + addRecipeAuto(new ItemStack(ModBlocks.ore_uranium, 8), new Object[] { "OOO", "OBO", "OOO", 'O', ModBlocks.ore_sellafield_uranium_scorched, 'B', Items.water_bucket }); addRecipeAuto(new ItemStack(ModItems.plate_iron, 4), new Object[] { "##", "##", '#', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.plate_gold, 4), new Object[] { "##", "##", '#', GOLD.ingot() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 1456c584f..b02fb3722 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -43,7 +43,6 @@ import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityLaunchPad; import com.hbm.tileentity.bomb.TileEntityNukeCustom; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.util.*; @@ -864,7 +863,6 @@ public class MainRegistry { ArmorUtil.register(); HazmatRegistry.registerHazmats(); FluidContainerRegistry.register(); - TileEntityMachineReactorLarge.registerAll(); BlockToolConversion.registerRecipes(); AchievementHandler.register(); @@ -1204,6 +1202,14 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.watz_core"); ignoreMappings.add("hbm:tile.watz_hatch"); ignoreMappings.add("hbm:tile.marker_structure"); + ignoreMappings.add("hbm:tile.reactor_element"); + ignoreMappings.add("hbm:tile.reactor_control"); + ignoreMappings.add("hbm:tile.reactor_hatch"); + ignoreMappings.add("hbm:tile.reactor_ejector"); + ignoreMappings.add("hbm:tile.reactor_inserter"); + ignoreMappings.add("hbm:tile.reactor_conductor"); + ignoreMappings.add("hbm:tile.reactor_computer"); + ignoreMappings.add("hbm:tile.ff"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/AuxButtonPacket.java index 3cb163883..922b1704a 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/AuxButtonPacket.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import com.hbm.tileentity.machine.TileEntityForceField; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; import com.hbm.tileentity.machine.storage.TileEntityBarrel; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; @@ -85,30 +84,6 @@ public class AuxButtonPacket implements IMessage { field.isOn = !field.isOn; } - if (te instanceof TileEntityMachineReactorLarge) { - TileEntityMachineReactorLarge reactor = (TileEntityMachineReactorLarge)te; - - if(m.id == 0) - reactor.rods = m.value; - - if(m.id == 1) { - FluidType type = Fluids.STEAM; - int fill = reactor.tanks[2].getFill(); - - switch(m.value) { - case 0: type = Fluids.HOTSTEAM; fill = (int)Math.floor(fill / 10D); break; - case 1: type = Fluids.SUPERHOTSTEAM; fill = (int)Math.floor(fill / 10D); break; - case 2: type = Fluids.STEAM; fill = (int)Math.floor(fill * 100); break; - } - - if(fill > reactor.tanks[2].getMaxFill()) - fill = reactor.tanks[2].getMaxFill(); - - reactor.tanks[2].setTankType(type); - reactor.tanks[2].setFill(fill); - } - } - if (te instanceof TileEntityMachineMissileAssembly) { TileEntityMachineMissileAssembly assembly = (TileEntityMachineMissileAssembly)te; diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f8060cbd2..0a9afce70 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -135,7 +135,6 @@ public class TileMappings { put(TileEntityMachineShredderLarge.class, "tileentity_machine_big_shredder"); put(TileEntityRFDuct.class, "tileentity_hbm_rfduct"); put(TileEntityReactorControl.class, "tileentity_reactor_remote_control"); - put(TileEntityMachineReactorLarge.class, "tileentity_large_reactor"); put(TileEntityWasteDrum.class, "tileentity_waste_drum"); put(TileEntityDecon.class, "tileentity_decon"); put(TileEntityMachineSatDock.class, "tileentity_miner_dock"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java deleted file mode 100644 index 9cfafeb0d..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java +++ /dev/null @@ -1,1017 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.MobConfig; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.container.ContainerReactorMultiblock; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIReactorMultiblock; -import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemFuelRod; -import com.hbm.lib.Library; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.fluid.IFluidStandardTransceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider { - - private ItemStack slots[]; - - public int hullHeat; - public final int maxHullHeat = 100000; - public int coreHeat; - public final int maxCoreHeat = 50000; - public int rods; - public final int rodsMax = 100; - public int age = 0; - public List list = new ArrayList(); - public FluidTank[] tanks; - public ReactorFuelType type; - public int fuel; - public int maxFuel = 240 * fuelMult; - public int waste; - public int maxWaste = 240 * fuelMult; - - public static int fuelMult = 1000; - public static int cycleDuration = 24000; - private static int fuelBase = 240 * fuelMult; - private static int waterBase = 128 * 1000; - private static int coolantBase = 64 * 1000; - private static int steamBase = 32 * 1000; - - private static final int[] slots_top = new int[] { 0 }; - private static final int[] slots_bottom = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16 }; - private static final int[] slots_side = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16 }; - - private String customName; - - public TileEntityMachineReactorLarge() { - slots = new ItemStack[8]; - tanks = new FluidTank[3]; - tanks[0] = new FluidTank(Fluids.WATER, 128000, 0); - tanks[1] = new FluidTank(Fluids.COOLANT, 64000, 1); - tanks[2] = new FluidTank(Fluids.STEAM, 32000, 2); - type = ReactorFuelType.URANIUM; - } - - @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.reactorLarge"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @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) { - 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); - - coreHeat = nbt.getInteger("heat"); - hullHeat = nbt.getInteger("hullHeat"); - rods = nbt.getInteger("rods"); - fuel = nbt.getInteger("fuel"); - waste = nbt.getInteger("waste"); - slots = new ItemStack[getSizeInventory()]; - tanks[0].readFromNBT(nbt, "water"); - tanks[1].readFromNBT(nbt, "coolant"); - tanks[2].readFromNBT(nbt, "steam"); - type = ReactorFuelType.getEnum(nbt.getInteger("type")); - - 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); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setInteger("heat", coreHeat); - nbt.setInteger("hullHeat", hullHeat); - nbt.setInteger("rods", rods); - nbt.setInteger("fuel", fuel); - nbt.setInteger("waste", waste); - NBTTagList list = new NBTTagList(); - tanks[0].writeToNBT(nbt, "water"); - tanks[1].writeToNBT(nbt, "coolant"); - tanks[2].writeToNBT(nbt, "steam"); - nbt.setInteger("type", type.getID()); - - 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); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return false; - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return false; - - } - - public int getCoreHeatScaled(int i) { - return (coreHeat * i) / maxCoreHeat; - } - - public int getHullHeatScaled(int i) { - return (hullHeat * i) / maxHullHeat; - } - - public int getFuelScaled(int i) { - return (fuel * i) / maxFuel; - } - - public int getWasteScaled(int i) { - return (waste * i) / maxWaste; - } - - public int getSteamScaled(int i) { - return (tanks[2].getFill() * i) / tanks[2].getMaxFill(); - } - - public boolean hasCoreHeat() { - return coreHeat > 0; - } - - public boolean hasHullHeat() { - return hullHeat > 0; - } - - public boolean checkBody() { - - return worldObj.getBlock(xCoord + 1, yCoord, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord - 1, yCoord, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord, zCoord + 1) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord, zCoord - 1) == ModBlocks.reactor_control; - } - - public boolean checkSegment(int offset) { - - return worldObj.getBlock(xCoord + 1, yCoord + offset, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord + offset, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord + offset, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord + offset, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord + offset, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord - 1, yCoord + offset, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord + offset, zCoord + 1) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord + offset, zCoord - 1) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord + offset, zCoord) == ModBlocks.reactor_conductor; - } - - private float checkHull() { - - float max = getSize() * 12; - float count = 0; - - for(int y = yCoord - depth; y <= yCoord + height; y++) { - - if(blocksRad(xCoord - 1, y, zCoord + 2)) - count++; - if(blocksRad(xCoord, y, zCoord + 2)) - count++; - if(blocksRad(xCoord + 1, y, zCoord + 2)) - count++; - - if(blocksRad(xCoord - 1, y, zCoord - 2)) - count++; - if(blocksRad(xCoord, y, zCoord - 2)) - count++; - if(blocksRad(xCoord + 1, y, zCoord - 2)) - count++; - - if(blocksRad(xCoord + 2, y, zCoord - 1)) - count++; - if(blocksRad(xCoord + 2, y, zCoord)) - count++; - if(blocksRad(xCoord + 2, y, zCoord + 1)) - count++; - - if(blocksRad(xCoord - 2, y, zCoord - 1)) - count++; - if(blocksRad(xCoord - 2, y, zCoord)) - count++; - if(blocksRad(xCoord - 2, y, zCoord + 1)) - count++; - } - - if(count == 0) - return 1; - - //System.out.println(count + "/" + max); - - return 1 - (count / max); - } - - private boolean blocksRad(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - - if(b == ModBlocks.block_lead || b == ModBlocks.block_desh || b == ModBlocks.brick_concrete) - return true; - - if(b.getExplosionResistance(null) >= 100) - return true; - - return false; - } - - int height; - int depth; - public int size; - - private void caluclateSize() { - - height = 0; - depth = 0; - - for(int i = 0; i < 7; i++) { - - if(checkSegment(i + 1)) - height++; - else - break; - } - - for(int i = 0; i < 7; i++) { - - if(checkSegment(-i - 1)) - depth++; - else - break; - } - - size = height + depth + 1; - } - - private int getSize() { - return size; - } - - private void generate() { - - int consumption = (int) (((double)maxFuel / cycleDuration) * rods / 100); - - if(consumption > fuel) - consumption = fuel; - - if(consumption + waste > maxWaste) - consumption = maxWaste - waste; - - fuel -= consumption; - waste += consumption; - - int heat = (int) (((double)consumption / size) * type.heat / fuelMult); - - this.coreHeat += heat; - - } - - @Override - public void updateEntity() { - - if (!worldObj.isRemote && checkBody()) { - - age++; - if (age >= 20) { - age = 0; - } - - fillFluidInit(tanks[2].getTankType()); - - caluclateSize(); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, size, 3), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - - tanks[0].changeTankSize(waterBase * getSize()); - tanks[1].changeTankSize(coolantBase * getSize()); - tanks[2].changeTankSize(steamBase * getSize()); - - maxWaste = maxFuel = fuelBase * getSize(); - - if(!worldObj.isRemote) { - - if(waste > maxWaste) - waste = maxWaste; - - if(fuel > maxFuel) - fuel = maxFuel; - - tanks[0].loadTank(0, 1, slots); - tanks[1].loadTank(2, 3, slots); - - //Change fuel type if empty - if(fuel == 0) { - - if(slots[4] != null && !getFuelType(slots[4].getItem()).toString().equals(ReactorFuelType.UNKNOWN.toString())) { - - this.type = getFuelType(slots[4].getItem()); - this.waste = 0; - - } - } - - //Meteorite sword - if(slots[4] != null && coreHeat > 0 && slots[4].getItem() == ModItems.meteorite_sword_bred) - slots[4] = new ItemStack(ModItems.meteorite_sword_irradiated); - - //Load fuel - if(slots[4] != null && getFuelContent(slots[4], type) > 0) { - - int cont = getFuelContent(slots[4], type) * fuelMult; - - if(fuel + cont <= maxFuel) { - - if(!slots[4].getItem().hasContainerItem()) { - - slots[4].stackSize--; - fuel += cont; - - } else if(slots[5] == null) { - - slots[5] = new ItemStack(slots[4].getItem().getContainerItem()); - slots[4].stackSize--; - fuel += cont; - - } else if(slots[4].getItem().getContainerItem() == slots[5].getItem() && slots[5].stackSize < slots[5].getMaxStackSize()) { - - slots[4].stackSize--; - slots[5].stackSize++; - fuel += cont; - - } - - if(slots[4].stackSize == 0) - slots[4] = null; - } - } - - //Unload waste - if(slots[6] != null && getWasteAbsorbed(slots[6].getItem(), type) > 0) { - - int absorbed = getWasteAbsorbed(slots[6].getItem(), type) * fuelMult; - - if(absorbed <= waste) { - - if(slots[7] == null) { - - waste -= absorbed; - slots[7] = new ItemStack(getWaste(slots[6].getItem(), type)); - slots[6].stackSize--; - - } else if(slots[7] != null && slots[7].getItem() == getWaste(slots[6].getItem(), type) && slots[7].stackSize < slots[7].getMaxStackSize()) { - - waste -= absorbed; - slots[7].stackSize++; - slots[6].stackSize--; - } - - if(slots[6].stackSize == 0) - slots[6] = null; - } - - } - - if(rods > 0) - generate(); - - if (this.coreHeat > 0 && this.tanks[1].getFill() > 0 && this.hullHeat < this.maxHullHeat) { - this.hullHeat += this.coreHeat * 0.175; - this.coreHeat -= this.coreHeat * 0.1; - - this.tanks[1].setFill(this.tanks[1].getFill() - 10); - - if (this.tanks[1].getFill() < 0) - this.tanks[1].setFill(0); - } - - if (this.hullHeat > maxHullHeat) { - this.hullHeat = maxHullHeat; - } - - if (this.hullHeat > 0 && this.tanks[0].getFill() > 0) { - generateSteam(); - this.hullHeat -= this.hullHeat * 0.085; - } - - if (this.coreHeat > maxCoreHeat) { - this.explode(); - } - - if (rods > 0 && coreHeat > 0 && age == 5) { - - float rad = (float)coreHeat / (float)maxCoreHeat * 50F; - rad *= checkHull(); - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, rad); - } - - for (int i = 0; i < 3; i++) - tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - if(worldObj.getBlock(xCoord, yCoord, zCoord - 2) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord, yCoord, zCoord - 2) == 2) - tryEjectInto(xCoord, yCoord, zCoord - 3); - if(worldObj.getBlock(xCoord, yCoord, zCoord + 2) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord, yCoord, zCoord + 2) == 3) - tryEjectInto(xCoord, yCoord, zCoord + 3); - if(worldObj.getBlock(xCoord - 2, yCoord, zCoord) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord - 2, yCoord, zCoord) == 4) - tryEjectInto(xCoord - 3, yCoord, zCoord); - if(worldObj.getBlock(xCoord + 2, yCoord, zCoord) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord + 2, yCoord, zCoord) == 5) - tryEjectInto(xCoord + 3, yCoord, zCoord); - - if(worldObj.getBlock(xCoord, yCoord, zCoord - 2) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord, yCoord, zCoord - 2) == 2) - tryInsertFrom(xCoord, yCoord, zCoord - 3); - if(worldObj.getBlock(xCoord, yCoord, zCoord + 2) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord, yCoord, zCoord + 2) == 3) - tryInsertFrom(xCoord, yCoord, zCoord + 3); - if(worldObj.getBlock(xCoord - 2, yCoord, zCoord) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord - 2, yCoord, zCoord) == 4) - tryInsertFrom(xCoord - 3, yCoord, zCoord); - if(worldObj.getBlock(xCoord + 2, yCoord, zCoord) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord + 2, yCoord, zCoord) == 5) - tryInsertFrom(xCoord + 3, yCoord, zCoord); - - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, rods, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, coreHeat, 1), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, hullHeat, 2), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, fuel, 4), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, waste, 5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, type.getID(), 6), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - private void tryEjectInto(int x, int y, int z) { - - int wSize = type.toString().equals(ReactorFuelType.SCHRABIDIUM.toString()) ? 60 * fuelMult : 6 * fuelMult; - - if(waste < wSize) - return; - - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IInventory) { - - IInventory chest = (IInventory)te; - - Item waste = ModItems.waste_uranium; - - switch(type) { - case PLUTONIUM: - waste = ModItems.waste_plutonium; - break; - case MOX: - waste = ModItems.waste_mox; - break; - case SCHRABIDIUM: - waste = ModItems.waste_schrabidium; - break; - case THORIUM: - waste = ModItems.waste_thorium; - break; - default: - waste = ModItems.waste_uranium; - break; - } - - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.isItemValidForSlot(i, new ItemStack(waste, 1, 1)) && chest.getStackInSlot(i) != null && chest.getStackInSlot(i).getItem() == waste && chest.getStackInSlot(i).stackSize < chest.getStackInSlot(i).getMaxStackSize()) { - chest.setInventorySlotContents(i, new ItemStack(waste, chest.getStackInSlot(i).stackSize + 1, 1)); - this.waste -= wSize; - return; - } - } - - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.isItemValidForSlot(i, new ItemStack(waste, 1, 1)) && chest.getStackInSlot(i) == null) { - chest.setInventorySlotContents(i, new ItemStack(waste, 1, 1)); - this.waste -= wSize; - return; - } - } - } - } - - private void tryInsertFrom(int x, int y, int z) { - - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IInventory) { - - IInventory chest = (IInventory)te; - - if(fuel > 0) { - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.getStackInSlot(i) != null) { - int cont = getFuelContent(chest.getStackInSlot(i), type) * fuelMult; - - if(cont > 0 && fuel + cont <= maxFuel) { - - Item container = chest.getStackInSlot(i).getItem().getContainerItem(); - - chest.decrStackSize(i, 1); - fuel += cont; - - if(chest.getStackInSlot(i) == null && container != null) - chest.setInventorySlotContents(i, new ItemStack(container)); - } - } - } - } else { - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.getStackInSlot(i) != null) { - int cont = getFuelContent(chest.getStackInSlot(i), getFuelType(chest.getStackInSlot(i).getItem())) * fuelMult; - - if(cont > 0 && fuel + cont <= maxFuel) { - - Item container = chest.getStackInSlot(i).getItem().getContainerItem(); - - type = getFuelType(chest.getStackInSlot(i).getItem()); - chest.decrStackSize(i, 1); - fuel += cont; - - if(chest.getStackInSlot(i) == null && container != null) - chest.setInventorySlotContents(i, new ItemStack(container)); - } - } - } - } - } - } - - private void generateSteam() { - - //function of SHS produced per tick - //maxes out at heat% * tank capacity / 20 - - double statSteMaFiFiLe = 8000; - - double steam = (((double)hullHeat / (double)maxHullHeat) * (/*(double)tanks[2].getMaxFill()*/statSteMaFiFiLe / 50D)) * size; - - double water = steam; - - FluidType type = tanks[2].getTankType(); - if(type == Fluids.STEAM) water /= 100D; - if(type == Fluids.HOTSTEAM) water /= 10; - - tanks[0].setFill(tanks[0].getFill() - (int)Math.ceil(water)); - tanks[2].setFill(tanks[2].getFill() + (int)Math.floor(steam)); - - if(tanks[0].getFill() < 0) - tanks[0].setFill(0); - - if(tanks[2].getFill() > tanks[2].getMaxFill()) - tanks[2].setFill(tanks[2].getMaxFill()); - - } - - private void explode() { - for (int i = 0; i < slots.length; i++) { - this.slots[i] = null; - } - - int rad = (int)(((long)fuel) * 25000L / (fuelBase * 15L)); - - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, rad); - - worldObj.createExplosion(null, this.xCoord, this.yCoord, this.zCoord, 7.5F, true); - ExplosionNukeGeneric.waste(worldObj, this.xCoord, this.yCoord, this.zCoord, 35); - - for(int i = yCoord - depth; i <= yCoord + height; i++) { - - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord + 1, i, this.zCoord + 1); - } - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord + 1, i, this.zCoord - 1); - } - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord - 1, i, this.zCoord - 1); - } - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord - 1, i, this.zCoord + 1); - } - - if(worldObj.rand.nextInt(5) == 0) { - worldObj.createExplosion(null, this.xCoord, this.yCoord, this.zCoord, 5.0F, true); - } - } - - worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord, ModBlocks.sellafield, 5, 3); - - if(MobConfig.enableElementals) { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(100, 100, 100)); - - for(EntityPlayer player : players) { - player.getEntityData().getCompoundTag(player.PERSISTED_NBT_TAG).setBoolean("radMark", true); - } - } - } - - private void randomizeRadBlock(int x, int y, int z) { - - int rand = worldObj.rand.nextInt(20); - - if(rand < 7) - worldObj.setBlock(x, y, z, ModBlocks.toxic_block); - else if(rand < 10) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 0, 3); - else if(rand < 14) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 1, 3); - else if(rand < 17) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 2, 3); - else if(rand < 19) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 3, 3); - else - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 4, 3); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public void fillFluidInit(FluidType type) { - - for(ForgeDirection dir : new ForgeDirection[] {Library.POS_X, Library.NEG_X, Library.POS_Z, Library.NEG_Z}) { - - if(worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2) == ModBlocks.reactor_hatch) { - fillFluid(this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, getTact(), type); - for(int i = 0; i < 2; i++) this.trySubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - this.sendFluid(tanks[2], worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - } else { - for(int i = 0; i < 2; i++) this.tryUnsubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3); - } - } - - fillFluid(this.xCoord, this.yCoord + height + 1, this.zCoord, getTact(), type); - fillFluid(this.xCoord, this.yCoord - depth - 1, this.zCoord, getTact(), type); - - this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); - this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); - } - - @Override - public boolean getTact() { - return this.worldObj.getTotalWorldTime() % 2 == 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if (type.name().equals(tanks[0].getTankType().name())) - return tanks[0].getMaxFill(); - else if (type.name().equals(tanks[1].getTankType().name())) - return tanks[1].getMaxFill(); - else - return 0; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if (type.name().equals(tanks[0].getTankType().name())) - tanks[0].setFill(i); - else if (type.name().equals(tanks[1].getTankType().name())) - tanks[1].setFill(i); - else if (type.name().equals(tanks[2].getTankType().name())) - tanks[2].setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if (type.name().equals(tanks[0].getTankType().name())) - return tanks[0].getFill(); - else if (type.name().equals(tanks[1].getTankType().name())) - return tanks[1].getFill(); - else if (type.name().equals(tanks[2].getTankType().name())) - return tanks[2].getFill(); - else - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { - if (index < 3 && tanks[index] != null) - tanks[index].setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if (index < 3 && tanks[index] != null) - tanks[index].setTankType(type); - } - - @Override - public List getFluidList(FluidType type) { - return list; - } - - @Override - public void clearFluidList(FluidType type) { - list.clear(); - } - - public enum ReactorFuelType { - - URANIUM(250000), - THORIUM(200000), - PLUTONIUM(312500), - MOX(250000), - SCHRABIDIUM(2085000), - UNKNOWN(1); - - private ReactorFuelType(int i) { - heat = i; - } - - //Heat per nugget burned - private int heat; - - public int getHeat() { - return heat; - } - - public int getID() { - return Arrays.asList(ReactorFuelType.values()).indexOf(this); - } - - public static ReactorFuelType getEnum(int i) { - if(i < ReactorFuelType.values().length) - return ReactorFuelType.values()[i]; - else - return ReactorFuelType.URANIUM; - } - } - - static class ReactorFuelEntry { - - int value; - ReactorFuelType type; - Item item; - - public ReactorFuelEntry(int value, ReactorFuelType type, Item item) { - this.value = value; - this.type = type; - this.item = item; - } - } - - static class ReactorWasteEntry { - - int value; - ReactorFuelType type; - Item in; - Item out; - - public ReactorWasteEntry(int value, ReactorFuelType type, Item in, Item out) { - this.value = value; - this.type = type; - this.in = in; - this.out = out; - } - } - - //TODO: turn this steaming hot garbage into hashmaps - static List fuels = new ArrayList(); - static List wastes = new ArrayList(); - - public static void registerAll() { - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.URANIUM, ModItems.nugget_uranium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.URANIUM, ModItems.ingot_uranium_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.PLUTONIUM, ModItems.nugget_plutonium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.PLUTONIUM, ModItems.ingot_plutonium_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.MOX, ModItems.nugget_mox_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.MOX, ModItems.ingot_mox_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(10, ReactorFuelType.SCHRABIDIUM, ModItems.nugget_schrabidium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(90, ReactorFuelType.SCHRABIDIUM, ModItems.ingot_schrabidium_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.THORIUM, ModItems.nugget_thorium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.THORIUM, ModItems.ingot_thorium_fuel); - } - - public static void registerFuelEntry(int nuggets, ReactorFuelType type, Item fuel) { - - fuels.add(new ReactorFuelEntry(nuggets, type, fuel)); - } - - public static void registerWasteEntry(int nuggets, ReactorFuelType type, Item in, Item out) { - - wastes.add(new ReactorWasteEntry(nuggets, type, in, out)); - } - - public static int getFuelContent(ItemStack item, ReactorFuelType type) { - - if(item == null) - return 0; - - for(ReactorFuelEntry ent : fuels) { - if(ent.item == item.getItem() && type.toString().equals(ent.type.toString())) { - - int value = ent.value; - - //if it's a fuel rod that has been used up, multiply by damage and floor it - if(item.getItem() instanceof ItemFuelRod) { - - double mult = 1D - ((double)ItemFuelRod.getLifeTime(item) / (double)((ItemFuelRod)item.getItem()).lifeTime); - return (int)Math.floor(mult * value); - } - - return value; - } - } - - return 0; - } - - public static ReactorFuelType getFuelType(Item item) { - - for(ReactorFuelEntry ent : fuels) { - if(ent.item == item) - return ent.type; - } - - return ReactorFuelType.UNKNOWN; - } - - public static Item getWaste(Item item, ReactorFuelType type) { - - for(ReactorWasteEntry ent : wastes) { - if(ent.in == item && type.toString().equals(ent.type.toString())) - return ent.out; - } - - return null; - } - - public static int getWasteAbsorbed(Item item, ReactorFuelType type) { - - for(ReactorWasteEntry ent : wastes) { - if(ent.in == item && type.toString().equals(ent.type.toString())) - return ent.value; - } - - return 0; - } - - @Override - public FluidTank[] getAllTanks() { - return tanks; - } - - @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[] {tanks[2]}; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tanks[0], tanks[1]}; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerReactorMultiblock(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIReactorMultiblock(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship.java b/src/main/java/com/hbm/world/dungeon/Spaceship.java index c5f4cc5e2..ff8ca297b 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship.java @@ -22,7 +22,7 @@ public class Spaceship extends WorldGenerator Block Block3 = ModBlocks.deco_steel; Block Block4 = ModBlocks.fusion_heater; Block Block5 = ModBlocks.block_meteor; - Block Block6 = ModBlocks.reactor_element; + Block Block6 = ModBlocks.pwr_fuel; Block Block7 = ModBlocks.cable_switch; Block Block8 = ModBlocks.fusion_hatch; Block Block9 = ModBlocks.reinforced_light; diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship2.java b/src/main/java/com/hbm/world/dungeon/Spaceship2.java index 165fd93d8..d94cb01ae 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship2.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship2.java @@ -18,7 +18,7 @@ public class Spaceship2 Block Block3 = ModBlocks.deco_steel; Block Block4 = ModBlocks.fusion_heater; Block Block5 = ModBlocks.block_meteor; - Block Block6 = ModBlocks.reactor_element; + Block Block6 = ModBlocks.pwr_fuel; Block Block8 = ModBlocks.fusion_hatch; Block Block9 = ModBlocks.reinforced_light; Block Block10 = ModBlocks.reinforced_glass; diff --git a/src/main/resources/assets/hbm/textures/blocks/inserter_side.png b/src/main/resources/assets/hbm/textures/blocks/inserter_side.png deleted file mode 100644 index 528fcd142717749e6df35df380d65155ae22dde9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmV;Y0a*TtP)jh$SbXZs$80pQmmT`6T{0pRg?7+{(vBiB$>TjIS(RaX|A za}2}4G)=%~#LKdn)zu}o3VzDn@ApQmQxOq6-Fv@QP%Yf=_b)TR6tuBY5M$(ayWzbz zpokD-{P_KQ^X(L*?e==TP}P4v>Go-xf@+}!)b15reb+sNVE?5B{!ji>!55gg5QZOVH!D>ICzxOy2W)V_CtuuSPX6IN_25%Yi!Ubj zEnp*p>B0KIyV{j{NLI)#g$@im%;!7%POw}qo6F@w9LH#_0f?dq0Il_3cK4N1B8@Rr zRYed4)O8JjF$RFTt}({ooWnWS=5%YMQVM{wEZaiwGsaxm*4oyWBne8XcLZJsg8=~6 zTBMXX=P1jPD2lkdyF+VDk|dO6iI*0EwHD_bi#Udx8;-ZPEYg%Fj`{iUz+;v{6!Got z4Py*aN`w&C2&}ab1oWSu=>ye#4#50l+OO3Lr4&umpp-%gL8z3%YZOHsdp!X5`#k_z zma$&1$+C=NuSXb$bccp?#5u>8GzDNd9J1ML*zI=AW;60UXOX5YtzJUs+|>&GqTqZ! z15i~J)>`sB2jEkOC9k0n;%bGjPfr9vz-F^yG#W7;kJ)aw6h*;mJZ`D<_aVCo03Nf9 zJkOa~!L@wfq>c3BJ2emLGfj kH%XEN2bZe?^J zG%heMHvEiZ-v9ss2T4RhR5(wSkxNd6KoCWH2TmQk09WF|Na%ok2Yd#sfR`YFm>4Aj z!aiJx2dW=o&@XwOL2;`>SKY2wNs_p(tF;b-AWhRO%kn%Y3TWT=U$5|ws;cU9XBdWY z9H(g_!iSAGjukyjb_d%5&-3oL|448PoZQS n$kPBXg-`Cs5{W>2L2La7B2o1`#MN!000000NkvXXu0mjf9zvY^ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_side.png deleted file mode 100644 index bd8c49821ffd95564de940f298bd514a0e858c82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_bSP)N2bZe?^J zG%heMHvEiZ-v9ssKuJVFR5(wKl21;;P!Nab0>&*aG*MS>Jc#jNByIRppo_LFH~=ZO zsYZ>_#+K3^!*~$C_Xa4SF?=B}zmnIPj~Qe#nK+K)y6$i|^nE`Ff-np@6>`7dA8g=` z%x1H9OP=RNQIuuL32%Qf9*>0@>!%|yFZ6o7EX&d~J#afPnOnNuuIW%!6(+cGl9wCS zWo=;%6m6CMaoc-=j`#p>oJo?rT*;y%*||Jk$ijk29LE|=ht+C@4B^AFyp`|!)33Xe z=S$fZ)?j{g6h-C_1emG;t;yEyHw;DtZbr$>C{0-wmB8+5Kr!~HuuYWKQ&JP%m->LtO{?xg sxpqp&Kxa8H0scjJqQnq6_uO3f2hTL~EU`g*U;qFB07*qoM6N<$f}iEQ%>V!Z diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_bottom.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_bottom.png deleted file mode 100644 index 8c88d493cb95edfa9a3e937660310ae378978dcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmV;=0WkiFP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0YFJaK~y+TZIVAygFqO?_X3Ws7CNI=HfboJ zA(=^1f#;CM5(kbz#RNzy;0{{oj9S@v5XXb~TOQfqpEqIWeQ)3U_JfV_2F&(Q38v*# z9|K_O5Pp?{acbMP+wC?8g1ZTvE)V9z31wLpML__5J3w4I#124!hk`vi?RGoJd_KP) z0H5mEfDJ@Z1k(m?0f$x>Sg+UP35&&odb8PRq}NOHaAKa$%=5V+Bb|=E@7oi2I6d$j z<$0cES(>K$Ye<*JjwI%w3CCiOsbT}pBm%_k{!h{Kyl*CD<2~Q~OGW?y002ovPDHLk FV1hInz`+0j diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_front.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_front.png deleted file mode 100644 index 81a7fb19b45bb45973bb009824ca900e3d0506d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJAr}6n{cFXV90XcB|Acg%OjwYs=+NYDAhq;TEraz;_6IUbg{#}2 z6<3zOH(1y8J*F-3S)Gnczr(etwF?abEghn=r>9<&;u4nSGEnEtxhztbHglHnja<$L zOnYaCaX*{Pbm9d+L-Nym*5}{*2et7nPMYVC(DV3%d0nsQB|ZgqhnWJGIkz!=nD+dq z_~K_Wj7RR+3s_X#WxmT)*u8~WFYdT+&$is?P|?eqZivj?d&+m#yWeuWt8`9%dLmjH z+b(>pP^N9+x@?A7X_rlSw`X)Mn&3ZcS!QfF)2w|}i7TQt9u*#w2(ekrlpu0xp&6gU gtXpsGrIO?Ry;5E?VbkXIz#w4oboFyt=akR{0GjfX^Z)<= diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_side.png deleted file mode 100644 index babe6929c5e8a11c7738b6aa8866e75017110567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ2n({>wkn#dggm?ic2+BVj|VGkz+B_+(wGe5s*8uy(Ci{Gzn{?_f`zWlkg#bNjC zOEqh((u=JA!3^kmw$70R?HPDrxw%)Zjo y>$p&2@s*yC7r*cIGugdJR6jaH{LhTo9{Da!=Ej8+u08~MkipZ{&t;ucLK6U1kB#pD diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_top.png deleted file mode 100644 index 2dc9eeb634b95036106e577853ac97a88c0ff531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJAo;cA%NkQe#u6F%QhMg)YkSc&9LVL z>Q$h1>SfE!)S0b$k)KM8nV{AW2wF#ynJFTrH@e*PJ-{f6BnSfAH^ZK++Hfos$uF|u zwGgzrlD@t0I;jFxYV}a|_7Cydut~3`e|mNy8=E@-^*5QV==+btj+=;`epT}H^puP-hzMG1wALu45D`*J9706cY&M8UfvKix zxVyUpU^E(0RaHUW?RI<>^Z6X*oFm2vK#Y->mzOUI-h1xv?+Z+=*K4e`#28sD7PM`P za}Hz7fAiPZS8i@@0N89csL5nP*L7KibB+)~k$dk8ylq-wMSP17(E z5w_bc)>c=P(uHQY^?_~ki_kDH&_Osxe1E8wT2qEH}W4GHe zN@qk#ESF2_y575Retyp7;X^6i};lg-4Mjb}50f3J>l*X!K>oIHdU}dVDP_se&(B2*pE~1br;2k*X}?TwZ*LhmzB~-n g@pf8k^BWQ2H`^f~Nj4kllK=n!07*qoM6N<$f}8pAsQ>@~ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side_alt.png deleted file mode 100644 index 5d6cc6d8439e3294af0a02904fff85d147d41227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>igP)dBYYlBk znzJ}GSk66*JFEF7^OKp(L~OTPr<6hnK^TUFVThCxAq37jS`$K0mL)=nPE5ve%zC{B zpx5gW1VKk!*EN6H<#Iu4t!bJDfTn3U91ed9j4^CBn@&u=UN5SuqG=kg*DGn7qP0dT z^-uqJJhEIa0VvB7nIs8Wmia2Q)>vyhzA>f~Ptz2DBuS6}N-1Ab>l-0ycUI2;Zg29QNj_$f#!(ORRm{yF^Mx~@Gx9uJ}@qAW{# zqtS>w&si)MNGY+_l4TiLmU)ijnCW!tIZaarg8{?g5ZSIMKoA62YkzTDQOm74=aA3m z(@!A?0_wU(DMc8Dp0(CgRpt5dcn|~uN-28d@tFC1PM+sPQG_vu`Fze~GVvTm5u?$_ zbDE|kNkYHhN9=Yx*RJOO+Ua!q`Ap~Y+4uC>U%ODBzq6_;pCg3e8|F+UONPfy@Bjb+ M07*qoM6N<$f<gsK>UqZ0V7t@wRA0&*h0tMM(0S(88Sdg zoEY#Ub_a;4d3{uUXLRMC>+|{8vfJ&Va}E(9NfMGIL2HeO5M$&i5us@sL}W0g^E_v> z*#IyajZjJrHs5YHUg>Z+puP8m5C8}vaKGPQZum&rTFdo%C4|87c;r3K?RNXi_IkYr zplKSkF^1V}MhJoP`OJ2^Wi%QM_%D~s!1i=H1;7}C25`;+;JxR1y?zd%ZQH(qwHD_b zF-E?8`-*drBp?F*`_JBXUDt>R)>?FyWh|FVx~{_*gE0nxaSof!gb)IUgYCzSF%(4s zK%VDl5ut5c;1OfjbpX7*(Wi62^I(O3zDKC*x=*31D!lgq1P}YY#rp?>wU+07m1W6z zJbt856a|aL0ukYKIx(Bg9<6`;>YF{~y(dl6K7}mH9tcg-01#vB>sR_S-WVggs;WVZ z`~7~fP$@NtRzxVv5~UQ*IrL;QVYONjLSR0hqm&w)&~@F*w~?kP`hRTy3rBxs`&q{r gNs?snJKy8{2DK9Yj1bF#Q2+n{07*qoM6N<$f}gtE@c;k- diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_blue.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_blue.png deleted file mode 100644 index 5ddff42de0e4ed5cfb4e9a88ed120dde8694255e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmV-L0=oT)P)h02OgTJW2!y zA`TpQAW%`(vArG-hhz=8V#%`P8UOS9|7Xm_#f8Qg`JdIcEiT4L*L8>p)>@1)sA@e! z2#5$x(@;u5RV%zu=TPY40;J!|`z zoHHQ=hG8JaNC<(x?^)|3hGD3=v)K%@SSmLX9w|n!zY|`IPX1O*TL-Wj(*MnoWv7W?G=b{x%mLI+XoCL{e%z#PF3mqo@IQ4 zi0lg}J%E$?;QZ$LfWGYAGG}LJDk79pY9Hi1i&4bUT5D~!7~tsW2qz-U=kp3MR!~(| zx1IxV`SUHM6r6Jm!%)G!_t;VjecvB=zTIwFxhIekq{MpmqBc*{GypVBgL4i$nM_D2 z;l0OuPfCfkeGJ2}+k23&@{kY$DJ62wq?Bly26K9Ps$JLBe~wjFcV6#Y5rGgmzq!U3 zQ*{7HDeVBJ(`mgN6UOAR7e;OV6Sz-5Ck71 zF@}I-lSLp9ygmI_-C5`~k?hjY^rrf&s_#@aM@L7+d(Z!zwrw%qd-}ddL{Li6G!3Pc z`a0(j5wzCioGGPLffysEX_^|Olmb9RFvcJvlu|IpP)b25Ma~(mbrn~}7_7B8=djlD zv{;Z*!Z}Bb5$`?DIfh~2^Th=*#v0po9ZE!)PN!^dZ}a=%fv)TLb$?ISb#z_F&dv^_ z(TJaScT6S|e%#(N8jWb%mSGrP1)OuFls=$ZiW1Mq@5ZIl~Sgls|e!09P#`sFXT1(&ebX^BPN(q4Jbjs6WLC%?v zXJFK-j<&9Qzcz9Sugq(AogLM@E z#+Zs$DOC{zY;0^`M1-xattzn2P)gz3^)&!{Cnw~bF~$&Mtm4*MRL+@U7~U~otyVnF z=foI^G4i}z*5T1w1E96W7=s#*$Al2D)?%$Cguv5cfrua?q?AZ0@#*}$Qb{QhLO^Rx zb8v7_`o6DyuCqKZm+)p}2!Z|6Q<|o!J^+LeFhJb}0HqYpId*3=lv1RW>d^dcY)a|1 xjkaxZ&QVIKi?YV2wXU0(QoZ73q^gJ z1;H+huuw$=FT4^T#3q|bauP4r2^8-PgpiYy@BI0`Qym{4=f3axpVc%Cy6=0su0upn zN>No6Ip=aZ=MWL03w3c8WADqjMkc*GfF8^O4M~-z?Ie- zYc0+>thLO~X2ckA&JjYO?|Ync7-N_{oe@GPzHQs0M1;v?!uIwyzuw=lvjachE@<19 zwr$zn-DNZy@#Eq%?IwJGyS-cS5^)H-qtbjB^g1bH*6M{fozl2mm=}42Hi~0QRqr?xZgWB0_a|c$h_m zlv2?_9MS-^)`eQ7RG}DPZEX!LB5ZAK6@Vc^&Y7F%QvmiZPe>`DwI+m6z^%2YloH06 zJDe|K(3!$7gl17 zc<-s}n(E--Aa`9?>Kvkcdo?9z5Lszs|LTaUs!AUKy!R`B_4V~)92^Gc7-JF5U>h1O xBIu@RaL$o)E`yR%Ds>K%7-K|hUEYRq{sSHsZWg=EOCA6K002ovPDHLkV1kww45|PC diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_grey.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_grey.png deleted file mode 100644 index 7128c950c49532429e596014805eda560da51dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)Nkl>foBVOJw6s39b|iXi^cxg{YI2)ZbO zn7w;@(uaEe>eZ_%cYS?rF-HC;27>_-V`MlSqN;fBan508}{lgW8Wni(%IcchexnFj|K zOZnMsiijXh(=Z$k8I4Am87U-B(n# zROqMC$HT*qf8?tw?&|8wRF#}_*@Iq1Z(=5Eb|L61m>GwM?*X{K z|3=Ok5uxk4Lf$kDKIcqb*Gn^>&*$v#pVGE1ZQF8m^r0+IRaF2~Rkbj&H=}Lal9)`+ zOQqhAot*<_vuRP+ueZb)8I4AzPc!57^*5)dp9?UA!1MDjR#sMu4*+f3B0#wX0Pj5^ z1a5D?;Jq)q@OOv^DW!#i!C*iL0W&Lyl5;NY^ioqwh)Bu7;++2gl$B)g%1Mad00000 LNkvXXu0mjf_0$M` diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_orange.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_orange.png deleted file mode 100644 index da4f8ad1ff3a45c4bf164e3eb0cf6c54d1f8d354..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)S8lmnT8xqZvH5(C#29JYmYg%*dz^Ea zS@o()&Y2Jbr4-Dp0*vE`IOl4T_a1X+P3A;A7W;tlmOTd`&{HJa?ZRgkJ$5j8w|E=3sptTjIQf=D)-1a zR|e3Ln_NGfjYt2`&+Bc?W;0Ss48u@$FtKB}AmgV13Si0c;#(uo$D` Q`~Uy|07*qoM6N<$g6dKT2LJ#7 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_purple.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_purple.png deleted file mode 100644 index c0b633247da9f83c8a44ab44fdf15174672058c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0( z&3o@DrO#9cLI`;8>HD5bzwVGyYO#BJdziz+L*3oo#TdiQ__$^ID9-^95&FL8MtIap z|2%q$suDuLmQwKElXGUZS~d2?*$E*8mdoYF=fR9IYrj}5G=#vFKld7_s(hQgA?Mu0 zyt=%-$g0RSJmXVh8|5mHKx+&PD>wbJ+f#>`i%6_&03$T%8$uAZlx!vD#M<9 z-FwZJ*=jlf#27IL2M4;dv(p}j0Amc++O`XWHvbA;NWwe>k%V$K;6 dX&9`}`7eb+dl=|LZ;t=~002ovPDHLkV1kZN5B>lE diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_red.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_red.png deleted file mode 100644 index 076167a90ed2a0dacf766b91c86fdbed126983d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmV-P0=E5$P)H8iL!CH$k232h~ zgn)?9bse=mO7G$jjKtyoPAtIbskq`pIF!1*BlALpkU0z0q*kB=?& zpF2CKDltZ^h!8@cl)`K_Yv^Y;H^dlud3l-pJRW1rt35e6(HJA|Z*QAZRr$TQM=7O= z`Qh$v&i`kBALks-dr#l@tgo-5s+3XySY2J^?B)g$;n(giD=RB=8BC{BLI^ljWf%s& zZEPSSje%ikcYyQl?fLXY5E0DL(UFP>wbnKVV-}-`V{5Iot;GNf3kx_AVQp=#0gMc) z%E$YA0KRW-QftLIN6xu{d+)KeR)%4i>-lUp>8!+W27>$*mX2;=dXwY4?AUH)P+fv*?W z)OAf=*Q~FvGZ+l`^5Hk55qv(oW-u5~RTXX9E&!~xgb@o%JbwOwn;Y^zJ-EVqzhJ=_L(?=&CXf<@ zu!t}ok2yb@A_C7|?l2nN&tNzlVy#7|lxW+QCodi$A^>+(wcK3+c)Gv!SNej8P;72) zCJ`aVm~{~PGytu2rdBDHDF#?tT0)BmtE;OSppTGJ;^W&X0K0oT#2C?9YTih=|zLbZQ=ANte>3BiXZ zN*|24-g!rBz02M0^daQT+Cm4GU1n#$-QUctIz2s=JkL=|VT@^pQVJ1aV@fGrUS3d2 zc|OzWbeK#gh={lO-bBO$W?9DV?JcG(O8}mpo(O^ftu+A7xn^yQ@eWs2#lyqHdT--w zx7!p&fpZQ3Yb^kET>~%}3@FQzAPA`Iy76mIk1<$lvDWgM#q|4q^zVe#uaxC-Ns=UJ zt-aSY0OuU5)e3;uET*j;RaKEY&G5r9uUX7^JpL;;9w3fmDryqop0a;RyiGi)(fdPIz3*yap4Iw;Z%uE%x^I z2s>Q>dZRP4yD7#P3a5Eo%sBq|nKVuPDr{>K5uzyK==_Ss&6L8e`MJ{^onLuzo7rsB z>bhoUX9sI7lZ(qHXmW8$nx;(?Z7vlN%=QbmTQ-hkq9`KI^CtV7@`Yjec1A=uQvd(}07*qoM6N<$g1Jck A761SM diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_blue.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_blue.png deleted file mode 100644 index 74c8aba72816ad9242b96336b7640527082a375d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)h7(=_)!5G7N?ky*39i6j7~K zp;QC!DXTK)g$-8YkDR_Z0Ox2Ax?Dd0!1Ch}JbMPfY&eTC2JO8k3`5XnJf|3PZtQbY zwEvaRIfru&9Rxwze-r^=t!1It;d<^p3%w3nYc5M$EZ**6rG)$YG%v9f3I#;HUiXzs zg(OKho8JZRdHryR_ny)dud3j8wQej1XV>S2= z)hf)*LAeY;K+}I=nXd#vz|Z+zlu`_bL&Vb3lF#S!IG0XbN{Mq0Ap}xNthL$FOngEJ zthK2Mxm*ro4BmT^B+0IB(&yw7t+i;avlyi3{0FIxGH&0EZzBKz002ovPDHLkV1k+P BEDHbt diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_cyan.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_cyan.png deleted file mode 100644 index c62daaeb5a42158dbfe8690ac2ad12957376c11b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 zcmV;B0&o3^P)4u1!Vy$2nubN{S$zMk_b>BJeK@BK!{gB zNTB=@TG18?-LztP6JK9HxI=Zt7Jo1rKQ{^z7=iYkhNMx%jqjwDGC zLJ&fTQEQEJ4k;zxdqM~ipe#$25CW|=kLTwscDn#L=Xklg8tb;$?UE!3-g};VJr=uN zwAP5VwY6Z3iO9dMuVYb?Bx4|DS@L0bH#VtOtBBRr)ljWg5km0u@-ot2*xCX>DMg;= zJokDLXklxM5CTO}kT~biT4SxHC<=@*yjx#KYt6&S3HOJGNGVy`*%@Oagm`0FsZ?;z z@#W|UV+=FxHiN-{$MbWhTPHO-TlW0rh&FTCGN{ zR-<08^V;w8`QU)pexKjBw|v^)=g-|8N-44|Bg---CnvGiqCyDdd5$p#fTAey-jnA! z-up4y|4Qhb!#RhVn3%v?8v(4fOt)G*-rO+TYN3?kTd&7lyNyi}@;r}ul}ZJ%va%AU zrl#=T^Kx}X2!W-Y9YP3vKRpFtZgVs04=~^9M7C-~S1HACI0WGS@R0dVhq=wox8D|G zOhy1HB}yqov)K$<>-aEoppR4NtMZnsn9@2jo!lTw3}+cA{(OKFi@E{77{kpCXbt1_F1?edpJ^-~;CUYR z_U;d`5kdeUv)L@xT8@^!5JfPtIZG5pG@msXug@^CIm_24hlF9sz;{rqk)* z`#v&?B7z{GScF0Wf*{~>yTyZdi(GEE__5ifykFzz%N9y0MsLAr0K>z>7-LY*Il?eR z>n^o8jS&TGX z|Nfho&1Mm$Qpx4>d6FdIVx#NA)Xrm^bF`j+1YmNjmiiAcwNpvisw7DW!w{tuS65y1 z#_|DEI~69kYF)Jj12zJ9o`+HjQLR>;?h62%t~3D{8tV7m8=_uH`E@xRbAwjfFvfIU@O>YxHO@JbBuTff-)DaljWH;t(in8t`43OWGw!Pl RJOBUy002ovPDHLkV1h83JSG4D diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_grey.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_grey.png deleted file mode 100644 index aa04dc3c97bd98dca6c990fb96e6d337861ad455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)l&b?&krVo;%dF{R|?96`W`A!K}4|DVvIpm ztJ`~zh!8~)Wm%%C6~KHx#~EYr-m|;=iZs0fKt$+v-z`;3(<`jClx4}@-doc23hzDU zAbE!Ip>x@ilX5Deq0r4G#Z%W<6~_!8W>~fcHg0@SZley{#1cvS;pSp z+Y0FB<`Pw;+ktF&>{Yole=@>@c6tpIpfEoFqwTx7(;H&1RFG zoj!MWUwHH87!e^&ujuzbaC39X`uaKmtE;Pc?{TV1mSuSFt44_kS(YIpOSJ#BP(%qHan8}{yk;~y!&=M3!$Xx!dVPj*1 zX0u5g$Nc>HjbFb~;y9+)J0OZ8X0sXQ@bFOA*4C6k%d*6qdYj{PpI_U5NGWk5J1mz=p4ETTwr!_EUDs4q#XWxy zGvjW)%NZZ|IsC|<`VLj)w9NQpc*Wzq%bkro0BqO>B0@AXQcB1`x*0Hjt{)O(*0Tx z8Mk|~Xs0;m@ZNLouUNEGR;yJ9u(`R3YBzE3J*wI#=bZbcx&3p_k#p`;7>!1V2xdkp orFY$JpSMoTITK^-W6;_88$K0Ksx;jNd;&Od|DcVtI z7p*lpXD)?%9Cdc_-lN9jvD9_lC|{i2Z9Z9RmqbDcd>lM)g7kVl)Mzx4UayBzip%wV zLMaIX=1*M5SC5JEtwl1Hu2tb_WM7K|G$AThWFj4 zOW7!;0MOlTmy{Btuh*%nihZ`Is)}_$JOd4$L;w>6Fpe>&)l#1%;}r zD9e&zYlw)@Z}&OxZu4RIjK97=CZ)vDV3%vNN4&F7SY2HOU}a?m?>$yTaL(atzi1SJ zloHN4Qc6o{|B5iBL`n%;6a_Ixs;UAYn#i7Pa^=SZ_F9`*Yq|LCF8jq6I%3m)92PqbR-1FiIfu2DX*C64%nc5U z9S+PkN+}d-2_t|p25T*9GMR|?zA;>=?f}qgwU+8W@%guW(Tut=1|33RI2`hK_bG$H zfX}C2^X1GN%Ccl_ZH<1vPf-+n`r{@4{rQTbD7cy*VvM1#Yt;Jsx^z07rsG;`Qc5VL z&{`8?Y=-9KO({i;aY3QoZsWa2M94WeTX$0D$tK1avDP*=Sgi9;zu!d#^nc8F00000 LNkvXXu0mjf?Ws9P diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_red.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_red.png deleted file mode 100644 index 6065c582a698beac4bfda1369f3dc2d969efe970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4w^i&uQ_S80PxUXO#tMT{}*{Q1LSmZ6>F_4PI2YPA|_ zZEa0vXJ@IZim#84hzQ**Lqzy|bp^mtvl;XU=w?}{)>KtRp63{2==b{oY@MIe%`%Rf zO_Wk77?TkoiXx0Ls7|LNqy7Q5ude}^n3x#rdxZJ5x*Dt=MG>mqZcCb`e7U{l`{E)Z zLKH>pKRh5JjC|6~GL%wit=YM`p_^q427`Bk>FMb(ajiAp`v7*%1=Eb)lu|h7-c^X> v7;7yeLRD2^>qdQ!HqkkUF($;|eVzXTZjns!=VsbR00000NkvXXu0mjf{T?;P diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_yellow.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_yellow.png deleted file mode 100644 index 00431d187fadd41788fdb69f8ba270d25f2e5463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)S#|BWjY z3W!pvI*5CS3SlM%r4Jd{$1YPITgZvepF>J2c^+bNa?*ui$k+EL zJbr#3=Nz8rakP1gb6{`~7oW zvO2GXJX<@>-ObFbVcUih_np%(@g^tj3i`Ik)n7k;0&iPo!rwKYI#?K-IKDSZJT{MK swoK1j`<=18{@Q^v^BCXxX}U65%bUpkaQB-h4s-{Dr>mdKI;Vst0DP-QY5)KL From b548b90bb3c8f86dc3d65ff877970693b1f64d8b Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 12 Jan 2024 10:12:46 +0100 Subject: [PATCH 11/16] fixed the last recipes only using polymer --- src/main/java/com/hbm/crafting/ConsumableRecipes.java | 4 ++-- src/main/java/com/hbm/crafting/WeaponRecipes.java | 2 +- src/main/java/com/hbm/inventory/recipes/MagicRecipes.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index e7be64e7e..3ebdae6c8 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -164,8 +164,8 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_polonium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', PO210.block() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_era, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', ModItems.ingot_semtex }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ANY_RUBBER.ingot(), 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_xsapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ASBESTOS.ingot(), 'K', ModItems.insert_esapi, 'D', ModItems.ducttape, 'S', ModItems.ingot_meteorite_forged }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_yharonite, 1), new Object[] { "YIY", "IYI", "YIY", 'Y', ModItems.billet_yharonite, 'I', ModItems.insert_du }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index e671dc1ca..d820dd9dc 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -160,7 +160,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', STEEL.bolt(), 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ModItems.ingot_polymer, 'M', ModItems.mechanism_rifle_2 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_coilgun), new Object[] { "CCC", "SSM", " P", 'C', ModBlocks.capacitor_copper, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 0), new Object[] { " T ", "TST", " T ", 'T', W.ingot(), 'S', BIGMT.ingot() }); diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index 21e8ca942..1cee88f3f 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -95,7 +95,7 @@ public class MagicRecipes { recipes.add(new MagicRecipe(new ItemStack(ModItems.gun_darter), new OreDictStack(STEEL.plate()), new OreDictStack(STEEL.plate()), - new ComparableStack(ModItems.ingot_polymer), + new OreDictStack(ANY_PLASTIC.ingot()), new OreDictStack(GOLD.plate()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), From 6b34f063246eb212114719791ea690defcc3f842 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 12 Jan 2024 14:20:34 +0100 Subject: [PATCH 12/16] faster chemplant ejector --- changelog | 1 + .../items/machine/ItemAssemblyTemplate.java | 2 +- .../machine/TileEntityMachineChemplant.java | 69 ++++++++++-------- .../TileEntityMachineChemplantBase.java | 72 ++++++++++--------- 4 files changed, 81 insertions(+), 63 deletions(-) diff --git a/changelog b/changelog index fdc381f0e..6fb4ecbcd 100644 --- a/changelog +++ b/changelog @@ -19,3 +19,4 @@ * Fixed PWR fuel rods not having any radiation value assigned to them * Fixed trenchmaster helmet not having gas mask protection * Fixed large thermobaric artillery rocket still using the wrong slag block +* Fixed some of the assembly templates having broken names due to using the wrong way of translating the output diff --git a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java index 6c338eec9..a25a54983 100644 --- a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java @@ -106,7 +106,7 @@ public class ItemAssemblyTemplate extends Item { return EnumChatFormatting.RED + "Broken Template" + EnumChatFormatting.RESET; } - String s1 = ("" + StatCollector.translateToLocal(out.getUnlocalizedName() + ".name")).trim(); + String s1 = out.getDisplayName().trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 00523e45b..3c421facd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -428,41 +428,50 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; - for(int i = 5; i <= 8; i++) { - - ItemStack out = slots[i]; - - if(out != null) { + boolean shouldOutput = true; + + while(shouldOutput) { + shouldOutput = false; + outer: + for(int i = 5; i <= 8; i++) { - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - - int slot = access != null ? access[j] : j; + ItemStack out = slots[i]; + + if(out != null) { - if(!inv.isItemValidForSlot(slot, out)) - continue; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - ItemStack target = inv.getStackInSlot(slot); - - if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize()) { - this.decrStackSize(i, 1); - target.stackSize++; - return; + if(!inv.isItemValidForSlot(slot, out)) + continue; + + ItemStack target = inv.getStackInSlot(slot); + + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit())) { + int toDec = Math.min(out.stackSize, Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit()) - target.stackSize); + this.decrStackSize(i, toDec); + target.stackSize += toDec; + shouldOutput = true; + break outer; + } } - } - - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - - int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(slot, out)) - continue; - - if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { - ItemStack copy = out.copy(); - copy.stackSize = 1; - inv.setInventorySlotContents(slot, copy); - this.decrStackSize(i, 1); - return; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; + + if(!inv.isItemValidForSlot(slot, out)) + continue; + + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { + ItemStack copy = out.copy(); + copy.stackSize = 1; + inv.setInventorySlotContents(slot, copy); + this.decrStackSize(i, 1); + shouldOutput = true; + break outer; + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 129a665fd..162a456f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -271,42 +271,50 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; - - for(int i = indices[2]; i <= indices[3]; i++) { - - ItemStack out = slots[i]; - - if(out != null) { - - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - int slot = access != null ? access[j] : j; + boolean shouldOutput = true; + while(shouldOutput) { + shouldOutput = false; + outer: + for(int i = indices[2]; i <= indices[3]; i++) { + + ItemStack out = slots[i]; + + if(out != null) { - if(!inv.isItemValidForSlot(slot, out)) - continue; - - ItemStack target = inv.getStackInSlot(slot); - - if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { - this.decrStackSize(i, 1); - target.stackSize++; - return; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; + + if(!inv.isItemValidForSlot(slot, out)) + continue; + + ItemStack target = inv.getStackInSlot(slot); + + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { + int toDec = Math.min(out.stackSize, Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit()) - target.stackSize); + this.decrStackSize(i, toDec); + target.stackSize += toDec; + shouldOutput = true; + break outer; + } } - } - - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - - int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(slot, out)) - continue; - - if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { - ItemStack copy = out.copy(); - copy.stackSize = 1; - inv.setInventorySlotContents(slot, copy); - this.decrStackSize(i, 1); - return; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; + + if(!inv.isItemValidForSlot(slot, out)) + continue; + + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { + ItemStack copy = out.copy(); + copy.stackSize = 1; + inv.setInventorySlotContents(slot, copy); + this.decrStackSize(i, 1); + shouldOutput = true; + break outer; + } } } } From 9a955245cb03442da3f81a505e8412cca956eacd Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 12 Jan 2024 20:58:03 +0100 Subject: [PATCH 13/16] preview render thing --- changelog | 2 + .../hbm/inventory/gui/GUIScreenPreview.java | 110 ++++++++++++++++++ .../com/hbm/main/ModEventHandlerClient.java | 79 ++++++++----- 3 files changed, 162 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java diff --git a/changelog b/changelog index 6fb4ecbcd..15939683f 100644 --- a/changelog +++ b/changelog @@ -13,6 +13,8 @@ * The nuclear flash now bypasses radiation resistance, being only affected by blocks and distance * Mushroom clouds' initial scale is now based on the total scale instead of all spawning roughly at the same size, causing fireballs to be comically small for huge bombs * Removed the old mining drill, combustion generator, old watz core, structure marker, all old large reactor parts and CMB furnace for good +* Chemical plants will now eject all their outputs within a single tick if possible, increasing the throughput of fast recipes with many outputs, like asphalt +* Hitting CTRL + ALT when hovering over an item now displays a preview of that item. Useful if you want to get authentic renders for a wiki, or just like staring at things. ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java b/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java new file mode 100644 index 000000000..56e50ee60 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java @@ -0,0 +1,110 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class GUIScreenPreview extends GuiScreen { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/nei/gui_nei.png"); + protected ItemStack preview; + protected int zoom = 1; + + public GUIScreenPreview(ItemStack stack) { + this.preview = stack; + } + + public void drawScreen(int mouseX, int mouseY, float f) { + + if(this.mc.theWorld != null) { + this.drawRect(0, 0, this.width, this.height, 0xFFC6C6C6); + } else { + this.drawBackground(0); + } + + if(!Mouse.isButtonDown(0) && !Mouse.isButtonDown(1) && Mouse.next()) { + int scroll = Mouse.getEventDWheel(); + + if(scroll < 0 && this.zoom > 1) this.zoom--; + if(scroll > 0 && this.zoom < 15) this.zoom++; + } + + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + GL11.glPushMatrix(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(texture); + ScaledResolution res = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); + GL11.glScaled(zoom, zoom, zoom); + this.drawTexturedModalRect(res.getScaledWidth_double() / 2D / zoom - 9D, res.getScaledHeight_double() / 2D / zoom - 9D, 5, 87, 18, 18); + GL11.glPopMatrix(); + + this.fontRendererObj.drawString("Zoom: " + zoom, 2, this.height - 20, 0xff0000); + this.fontRendererObj.drawString("Windows Scale: " + res.getScaleFactor(), 2, this.height - 10, 0xff0000); + } + + public void drawTexturedModalRect(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) { + double f = 0.00390625D; + double f1 = 0.00390625D; + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV((double) (x + 0), (double) (y + sizeY), (double) this.zLevel, (double) ((float) (sourceX + 0) * f), (double) ((float) (sourceY + sizeY) * f1)); + tessellator.addVertexWithUV((double) (x + sizeX), (double) (y + sizeY), (double) this.zLevel, (double) ((float) (sourceX + sizeX) * f), (double) ((float) (sourceY + sizeY) * f1)); + tessellator.addVertexWithUV((double) (x + sizeX), (double) (y + 0), (double) this.zLevel, (double) ((float) (sourceX + sizeX) * f), (double) ((float) (sourceY + 0) * f1)); + tessellator.addVertexWithUV((double) (x + 0), (double) (y + 0), (double) this.zLevel, (double) ((float) (sourceX + 0) * f), (double) ((float) (sourceY + 0) * f1)); + tessellator.draw(); + } + + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + + if(preview == null) return; + + GL11.glPushMatrix(); + RenderHelper.enableGUIStandardItemLighting(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_DEPTH_TEST); + + GL11.glScaled(zoom, zoom, zoom); + + ScaledResolution res = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); + GL11.glTranslated(res.getScaledWidth_double() / 2D / zoom, res.getScaledHeight_double() / 2D / zoom, -200); + + this.zLevel = 200.0F; + itemRender.zLevel = 200.0F; + + GL11.glEnable(GL11.GL_DEPTH_TEST); + itemRender.renderItemAndEffectIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), preview, -8, -8); + itemRender.renderItemOverlayIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), preview, -8, -8, null); + + itemRender.zLevel = 0.0F; + this.zLevel = 0.0F; + + GL11.glPopMatrix(); + } + + @Override + protected void keyTyped(char c, int key) { + if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + } +} diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 72e07c9b8..2aa380413 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -34,6 +34,7 @@ import com.hbm.interfaces.IItemHUD; import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUIArmorTable; +import com.hbm.inventory.gui.GUIScreenPreview; import com.hbm.items.ISyncButtons; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; @@ -931,40 +932,28 @@ public class ModEventHandlerClient { } } - if(mc.currentScreen instanceof GuiContainer && Keyboard.isKeyDown(Keyboard.KEY_F1)) { - - ScaledResolution scaledresolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); - int width = scaledresolution.getScaledWidth(); - int height = scaledresolution.getScaledHeight(); - int mouseX = Mouse.getX() * width / mc.displayWidth; - int mouseY = height - Mouse.getY() * height / mc.displayHeight - 1; + if(Keyboard.isKeyDown(Keyboard.KEY_F1)) { - GuiContainer container = (GuiContainer) mc.currentScreen; - - for(Object o : container.inventorySlots.inventorySlots) { - Slot slot = (Slot) o; - - if(slot.getHasStack()) { - try { - Method isMouseOverSlot = ReflectionHelper.findMethod(GuiContainer.class, container, new String[] {"func_146981_a", "isMouseOverSlot"}, Slot.class, int.class, int.class); - - if((boolean) isMouseOverSlot.invoke(container, slot, mouseX, mouseY)) { - - ComparableStack comp = new ComparableStack(slot.getStack()).makeSingular(); - CanneryBase cannery = Jars.canneries.get(comp); - - if(cannery != null) { - FMLCommonHandler.instance().showGuiScreen(new GuiWorldInAJar(cannery.createScript(), cannery.getName(), cannery.getIcon(), cannery.seeAlso())); - } - - break; - } - - } catch(Exception ex) { } + ItemStack stack = getMouseOverStack(); + if(stack != null) { + ComparableStack comp = new ComparableStack(stack).makeSingular(); + CanneryBase cannery = Jars.canneries.get(comp); + if(cannery != null) { + FMLCommonHandler.instance().showGuiScreen(new GuiWorldInAJar(cannery.createScript(), cannery.getName(), cannery.getIcon(), cannery.seeAlso())); } } } + if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && Keyboard.isKeyDown(Keyboard.KEY_LMENU)) { + + ItemStack stack = getMouseOverStack(); + if(stack != null) { + stack = stack.copy(); + stack.stackSize = 1; + FMLCommonHandler.instance().showGuiScreen(new GUIScreenPreview(stack)); + } + } + if(event.phase == Phase.START) { EntityPlayer player = mc.thePlayer; @@ -985,6 +974,38 @@ public class ModEventHandlerClient { } } + public static ItemStack getMouseOverStack() { + + Minecraft mc = Minecraft.getMinecraft(); + if(mc.currentScreen instanceof GuiContainer) { + + ScaledResolution scaledresolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + int width = scaledresolution.getScaledWidth(); + int height = scaledresolution.getScaledHeight(); + int mouseX = Mouse.getX() * width / mc.displayWidth; + int mouseY = height - Mouse.getY() * height / mc.displayHeight - 1; + + GuiContainer container = (GuiContainer) mc.currentScreen; + + for(Object o : container.inventorySlots.inventorySlots) { + Slot slot = (Slot) o; + + if(slot.getHasStack()) { + try { + Method isMouseOverSlot = ReflectionHelper.findMethod(GuiContainer.class, container, new String[] {"func_146981_a", "isMouseOverSlot"}, Slot.class, int.class, int.class); + + if((boolean) isMouseOverSlot.invoke(container, slot, mouseX, mouseY)) { + return slot.getStack(); + } + + } catch(Exception ex) { } + } + } + } + + return null; + } + @SideOnly(Side.CLIENT) @SubscribeEvent(priority = EventPriority.LOWEST) public void onClientTickLast(ClientTickEvent event) { From 32a658bd1245407875e4cf6c426d19ca668107d1 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 14 Jan 2024 18:56:25 +0100 Subject: [PATCH 14/16] reda! --- changelog | 12 +- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../blocks/machine/MachineBigAssTank9000.java | 22 +- .../hbm/blocks/machine/MachineFluidTank.java | 22 +- .../hbm/blocks/machine/MachineRadarLarge.java | 98 + .../com/hbm/blocks/machine/SoyuzLauncher.java | 12 +- .../hbm/handler/nei/ConstructionHandler.java | 10 +- .../hbm/inventory/gui/GUIMachineRadarNT.java | 20 +- .../inventory/recipes/AssemblerRecipes.java | 3 +- src/main/java/com/hbm/items/ModItems.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../hbm/render/item/ItemRenderLibrary.java | 6 +- .../render/tileentity/RenderRadarLarge.java | 58 + .../hbm/tileentity/TileEntityMachineBase.java | 25 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineRadarLarge.java | 41 + .../machine/TileEntityMachineRadarNT.java | 41 +- .../machine/storage/TileEntityBarrel.java | 4 +- .../storage/TileEntityMachineFluidTank.java | 4 +- .../java/com/hbm/world/feature/BiomeCave.java | 4 +- .../java/com/hbm/world/feature/DeepLayer.java | 4 +- .../java/com/hbm/world/feature/OreCave.java | 4 +- .../java/com/hbm/world/feature/OreLayer.java | 3 +- .../com/hbm/world/feature/OreLayer3D.java | 5 +- .../com/hbm/world/feature/SchistStratum.java | 4 +- .../hbm/world/generator/DungeonToolbox.java | 8 - src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/models/machines/radar_large.obj | 2479 +++++++++++++++++ .../textures/models/machines/radar_large.png | Bin 0 -> 6403 bytes 31 files changed, 2832 insertions(+), 68 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineRadarLarge.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderRadarLarge.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java create mode 100644 src/main/resources/assets/hbm/models/machines/radar_large.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/radar_large.png diff --git a/changelog b/changelog index 15939683f..acd5b1383 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,14 @@ +## Added +* Large Radar + * A giant version of the radar with 3x the scan range + ## Changed * Nuclear craters have been reworked * The fallout effect no longer creates dead grass, instead it converts the area into three new biomes, the outer crater, crater and inner crater * The entire crater is now slaked sellafite which now has texture variance to look more like debris, as well as getting darker towards the center * The biomes being overridden means that nukes are now a solution to thaumcraft taint. Yay! * There are now new ore variants for the block conversions which match the surrounding sellafite - * Berylliumm ore now has a 100% chance of being converted into emerald + * Beryllium ore now has a 100% chance of being converted into emerald * The watz now cools up to 20% of its current heat level instead of 10%, making reactors a lot cooler and therefore react faster, which means more energy and faster depletion rates * Mud production rates have been halved, to prevent currently working setups from exploding instantly * This is your reminder that you can achieve more power, mud and depletion by building larger watz powerplants, i.e. stacking more watz segments on top of each other. Your tiny poo reactors make me sick. @@ -15,6 +19,11 @@ * Removed the old mining drill, combustion generator, old watz core, structure marker, all old large reactor parts and CMB furnace for good * Chemical plants will now eject all their outputs within a single tick if possible, increasing the throughput of fast recipes with many outputs, like asphalt * Hitting CTRL + ALT when hovering over an item now displays a preview of that item. Useful if you want to get authentic renders for a wiki, or just like staring at things. +* 256k tanks and BAT9000s can now output comparator signals from their fluid ports +* Trenchmaster general damage multiplier has been halved, making it twice as strong +* Updated generation rules for layers like schist and hematite, they will now only replace things tagged as stone, just like most ores +* Mushroom clouds now have two additional outer condensation rings, those are not entirely finished and are still subject to change +* Small radars are now a tad cheaper ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes @@ -22,3 +31,4 @@ * Fixed trenchmaster helmet not having gas mask protection * Fixed large thermobaric artillery rocket still using the wrong slag block * Fixed some of the assembly templates having broken names due to using the wrong way of translating the output +* Fixed the soyuz launcher's NEI construction recipe showing the wrong amount of blocks diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c7ecebe51..035491dc3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1046,6 +1046,7 @@ public class ModBlocks { public static Block soyuz_launcher; public static Block machine_radar; + public static Block machine_radar_large; public static Block radar_screen; public static Block machine_turbofan; @@ -2141,6 +2142,7 @@ public class ModBlocks { launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); + machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_missile_assembly = new MachineMissileAssembly(Material.iron).setBlockName("machine_missile_assembly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_missile_assembly"); @@ -3473,6 +3475,7 @@ public class ModBlocks { GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radar_large, machine_radar_large.getUnlocalizedName()); GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); //Guide diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 300f9b019..df23f7204 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -129,13 +129,21 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { - TileEntity te = world.getTileEntity(x, y, z); - - if(!(te instanceof TileEntityMachineBAT9000)) - return 0; - - TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te; - return tank.getComparatorPower(); + int meta = world.getBlockMetadata(x, y, z); + + if(meta >= 6) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return 0; + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachineBAT9000)) + return 0; + + TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te; + return tank.getComparatorPower(); + } + + return 0; } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 32274741c..edf93170f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -169,13 +169,21 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { - TileEntity te = world.getTileEntity(x, y, z); - - if(!(te instanceof TileEntityMachineFluidTank)) - return 0; - - TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te; - return tank.getComparatorPower(); + int meta = world.getBlockMetadata(x, y, z); + + if(meta >= 6) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return 0; + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachineFluidTank)) + return 0; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te; + return tank.getComparatorPower(); + } + + return 0; } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadarLarge.java b/src/main/java/com/hbm/blocks/machine/MachineRadarLarge.java new file mode 100644 index 000000000..40d42e249 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineRadarLarge.java @@ -0,0 +1,98 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineRadarLarge; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineRadarLarge extends BlockDummyable { + + public MachineRadarLarge(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineRadarLarge(); + if(meta >= 6) return new TileEntityProxyCombo().power(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(y < TileEntityMachineRadarNT.radarAltitude) { + if(world.isRemote) + player.addChatMessage(new ChatComponentText("[Radar] Error: Radar altitude not sufficient.").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + return true; + } + + if(world.isRemote && !player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); + return true; + } else if(!player.isSneaking()) { + return true; + } else { + return false; + } + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + x += dir.offsetX * o; + z += dir.offsetZ * o; + this.makeExtra(world, x + 1, y, z); + this.makeExtra(world, x - 1, y, z); + this.makeExtra(world, x, y, z + 1); + this.makeExtra(world, x, y, z - 1); + } + + @Override + public boolean canProvidePower() { + return true; + } + + @Override + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int m) { + int meta = world.getBlockMetadata(x, y, z); + if(meta >= 6) { + ForgeDirection dir = ForgeDirection.getOrientation(m); + TileEntity tile = world.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + if(tile instanceof TileEntityMachineRadarNT) { + TileEntityMachineRadarNT entity = (TileEntityMachineRadarNT) tile; + return entity.getRedPower(); + } + } + return 0; + } + + @Override + public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int m) { + return isProvidingWeakPower(world, x, y, z, m); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java b/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java index 44aa51658..3a5b6445b 100644 --- a/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java +++ b/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java @@ -209,13 +209,15 @@ public class SoyuzLauncher extends BlockDummyable { } } - for(int l = 0; l < 10; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 38))); - for(int l = 0; l < 8; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 41))); + for(int l = 0; l < 6; l++) + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 64))); + for(int l = 0; l < 4; l++) + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 64))); for(int l = 0; l < 6; l++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 64))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 30))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 63))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 38))); world.func_147453_f(x, y, z, p_149749_5_); } diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java index e2e95fa22..91f46bd1d 100644 --- a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -83,12 +83,12 @@ public class ConstructionHandler extends NEIUniversalHandler { /* SOYUZ LAUNCHER */ ItemStack[] soysauce = new ItemStack[] { - new ItemStack(ModBlocks.struct_launcher, 60), - ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 320), EnumChatFormatting.RED + "5x64"), - new ItemStack(ModBlocks.struct_scaffold, 53), + new ItemStack(ModBlocks.struct_launcher, 30), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 384), EnumChatFormatting.RED + "6x64"), + new ItemStack(ModBlocks.struct_scaffold, 63), ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_scaffold, 384), EnumChatFormatting.RED + "6x64"), - new ItemStack(ModBlocks.concrete_smooth, 8), - ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "5x64"),}; + new ItemStack(ModBlocks.concrete_smooth, 38), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "4x64"),}; bufferedRecipes.put(soysauce, new ItemStack(ModBlocks.soyuz_launcher)); bufferedTools.put(soysauce, new ItemStack(ModBlocks.struct_soyuz_core)); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index accefedf1..68fd71f77 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -94,8 +94,8 @@ public class GUIMachineRadarNT extends GuiScreen { if(!radar.entries.isEmpty()) { for(RadarEntry m : radar.entries) { - int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; - int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 117; if(mouseX + 5 > x && mouseX - 4 <= x && mouseY + 5 > z && mouseY - 4 <= z) { @@ -107,8 +107,8 @@ public class GUIMachineRadarNT extends GuiScreen { } if(checkClick(mouseX, mouseY, 8, 17, 200, 200)) { - int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); - int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) radar.getRange() * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) radar.getRange() * 2 + 1) / 192D + radar.zCoord); this.func_146283_a(Arrays.asList(tX + " / " + tZ), lastMouseX, lastMouseY); } } @@ -190,8 +190,8 @@ public class GUIMachineRadarNT extends GuiScreen { if(!radar.entries.isEmpty()) { for(RadarEntry m : radar.entries) { - double x = (m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; - double z = (m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + double x = (m.posX - radar.xCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D) - 4D; + double z = (m.posZ - radar.zCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D) - 4D; int t = m.blipLevel; drawTexturedModalRectDouble(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); } @@ -226,8 +226,8 @@ public class GUIMachineRadarNT extends GuiScreen { if(!radar.entries.isEmpty()) { for(RadarEntry m : radar.entries) { - int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; - int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 117; if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) { NBTTagCompound data = new NBTTagCompound(); @@ -239,8 +239,8 @@ public class GUIMachineRadarNT extends GuiScreen { } } - int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); - int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) radar.getRange() * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) radar.getRange() * 2 + 1) / 192D + radar.zCoord); NBTTagCompound data = new NBTTagCompound(); data.setInteger("launchPosX", tX); data.setInteger("launchPosZ", tZ); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index a8c0b40ae..2a0416386 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -361,7 +361,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.ams_limiter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 6), new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.crystal_diamond, 1)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_emitter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 24), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModItems.crystal_redstone, 5), new ComparableStack(ModBlocks.machine_lithium_battery)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_base, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 12), new OreDictStack(STEEL.plate(), 28), new ComparableStack(ModBlocks.steel_scaffold, 30), new ComparableStack(ModBlocks.steel_grate, 8), new ComparableStack(ModBlocks.barrel_steel, 2)}, 600); - makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_radar_large, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit_gold, 2), new ComparableStack(ModItems.coil_copper, 32), new ComparableStack(ModItems.crt_display, 4), },600); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit_targeting_tier5, 1), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 12dafee58..d7c0bc745 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4979,7 +4979,7 @@ public class ModItems { ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); aMatTrench.customCraftingMaterial = ModItems.plate_iron; - trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.25F).setThreshold(5.0F) + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.125F).setThreshold(5.0F) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 9001d143a..fa962250c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -242,6 +242,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b27890ada..9033ff37a 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -245,6 +245,7 @@ public class ResourceManager { public static final IModelCustom radar_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj")); public static final IModelCustom radar_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj")); public static final IModelCustom radar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")); + public static final IModelCustom radar_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj")); public static final IModelCustom radar_screen = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")); //Forcefield @@ -661,6 +662,7 @@ public class ResourceManager { public static final ResourceLocation radar_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_head.png"); public static final ResourceLocation radar_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_base.png"); public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); + public static final ResourceLocation radar_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_large.png"); public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png"); //Forcefield diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index afc1b518d..4b25b2f23 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -291,7 +291,9 @@ public class ItemRenderLibrary { GL11.glDisable(GL11.GL_CULL_FACE); GL11.glScaled(0.5, 0.5, 0.5); GL11.glTranslatef(0, 0, 3); + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.pumpjack_tex); ResourceManager.pumpjack.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glEnable(GL11.GL_CULL_FACE); }}); @@ -338,7 +340,7 @@ public class ItemRenderLibrary { renderers.put(Item.getItemFromBlock(ModBlocks.machine_turbofan), new ItemRenderBase() { public void renderInventory() { GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(2, 2, 2); + GL11.glScaled(2.25, 2.25, 2.25); } public void renderCommon() { GL11.glShadeModel(GL11.GL_SMOOTH); @@ -1137,7 +1139,9 @@ public class ItemRenderLibrary { public void renderCommon() { GL11.glScaled(0.25, 0.25, 0.25); GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDisable(GL11.GL_CULL_FACE); bindTexture(ResourceManager.fracking_tower_tex); ResourceManager.fracking_tower.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_FLAT); }}); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarLarge.java b/src/main/java/com/hbm/render/tileentity/RenderRadarLarge.java new file mode 100644 index 000000000..ab6c3bfad --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarLarge.java @@ -0,0 +1,58 @@ +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.TileEntityMachineRadarNT; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderRadarLarge extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); + + bindTexture(ResourceManager.radar_large_tex); + ResourceManager.radar_large.renderPart("Radar"); + + TileEntityMachineRadarNT radar = (TileEntityMachineRadarNT) tileEntity; + GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, -1F, 0F); + + ResourceManager.radar_large.renderPart("Dish"); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_radar_large); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glRotated(180, 0, 1, 0); + GL11.glScaled(0.5, 0.5, 0.5); + bindTexture(ResourceManager.radar_large_tex); + ResourceManager.radar_large.renderPart("Radar"); + GL11.glRotated(System.currentTimeMillis() % 3600 * 0.1D, 0, -1, 0); + ResourceManager.radar_large.renderPart("Dish"); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index bf1318f0f..f826dd3e3 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -5,9 +5,11 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.BufPacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -221,4 +223,27 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme return Math.max(volume, 0); } + + public void updateRedstoneConnection(DirPos pos) { + + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + ForgeDirection dir = pos.getDir(); + Block block1 = worldObj.getBlock(x, y, z); + + block1.onNeighborChange(worldObj, x, y, z, xCoord, yCoord, zCoord); + block1.onNeighborBlockChange(worldObj, x, y, z, this.getBlockType()); + if(block1.isNormalCube(worldObj, x, y, z)) { + x += dir.offsetX; + y += dir.offsetY; + z += dir.offsetZ; + Block block2 = worldObj.getBlock(x, y, z); + + if(block2.getWeakChanges(worldObj, x, y, z)) { + block2.onNeighborChange(worldObj, x, y, z, xCoord, yCoord, zCoord); + block2.onNeighborBlockChange(worldObj, x, y, z, this.getBlockType()); + } + } + } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 0a9afce70..407e28545 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -112,6 +112,7 @@ public class TileMappings { put(TileEntityMachineRadGen.class, "tileentity_radgen"); put(TileEntityMachineTransformer.class, "tileentity_transformer"); put(TileEntityMachineRadarNT.class, "tileentity_radar"); + put(TileEntityMachineRadarLarge.class, "tileentity_radar_large"); put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityMachineSeleniumEngine.class, "tileentity_selenium_engine"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java new file mode 100644 index 000000000..4fd6d497b --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java @@ -0,0 +1,41 @@ +package com.hbm.tileentity.machine; + +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineRadarLarge extends TileEntityMachineRadarNT { + + @Override + public int getRange() { + return radarLargeRange; + } + + @Override + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z), + }; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 5, + yCoord, + zCoord - 5, + xCoord + 6, + yCoord + 10, + zCoord + 6 + ); + } + + return bb; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 357779cc7..5d04f2aa6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -19,6 +19,8 @@ import com.hbm.items.ModItems; import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.Satellite.Interfaces; @@ -30,6 +32,7 @@ import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.world.WorldUtil; import api.hbm.energy.IEnergyUser; @@ -37,10 +40,12 @@ import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; 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.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -54,6 +59,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.ForgeDirection; /** * Now with SmЯt™ lag-free entity detection! (patent pending) @@ -82,6 +88,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static int maxPower = 100_000; public static int consumption = 500; public static int radarRange = 1_000; + public static int radarLargeRange = 3_000; public static int radarBuffer = 30; public static int radarAltitude = 55; public static int chunkLoadCap = 10; @@ -102,6 +109,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption); radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); + radarLargeRange = IConfigurableMachine.grab(obj, "I:radarLargeRange", radarLargeRange); radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap); @@ -113,6 +121,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I writer.name("L:powerCap").value(maxPower); writer.name("L:consumption").value(consumption); writer.name("I:radarRange").value(radarRange); + writer.name("I:radarLargeRange").value(radarLargeRange); writer.name("I:radarBuffer").value(radarBuffer); writer.name("I:radarAltitude").value(radarAltitude); writer.name("B:generateChunks").value(generateChunks); @@ -126,6 +135,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public String getName() { return "container.radar"; } + + public int getRange() { + return radarRange; + } @Override public void updateEntity() { @@ -136,14 +149,19 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); - if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); this.jammed = false; allocateTargets(); if(this.lastPower != getRedPower()) { - this.markDirty(); + this.markChanged(); + for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos); } lastPower = getRedPower(); @@ -161,11 +179,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I int chunkLoads = 0; for(int i = 0; i < 100; i++) { int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i; - int iX = (index % 200) * radarRange * 2 / 200; - int iZ = index / 200 * radarRange * 2 / 200; + int iX = (index % 200) * getRange() * 2 / 200; + int iZ = index / 200 * getRange() * 2 / 200; - int x = xCoord - radarRange + iX; - int z = zCoord - radarRange + iZ; + int x = xCoord - getRange() + iX; + int z = zCoord - getRange() + iZ; if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) { this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); @@ -217,6 +235,15 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), + }; + } + @Override public void serialize(ByteBuf buf) { buf.writeLong(this.power); @@ -341,7 +368,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I /// PROXIMITY /// if(redMode) { - double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); + double maxRange = this.getRange() * Math.sqrt(2D); int power = 0; for(int i = 0; i < entries.size(); i++) { diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 9ce319342..49db2fe90 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -97,8 +97,10 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc if(!worldObj.isRemote) { byte comp = this.getComparatorPower(); //do comparator shenanigans - if(comp != this.lastRedstone) + if(comp != this.lastRedstone) { this.markDirty(); + for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos); + } this.lastRedstone = comp; tank.setType(0, 1, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index dc147cbbf..ebb5b49e1 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -131,8 +131,10 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements } byte comp = this.getComparatorPower(); //comparator shit - if(comp != this.lastRedstone) + if(comp != this.lastRedstone) { this.markDirty(); + for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos); + } this.lastRedstone = comp; if(tank.getFill() > 0) { diff --git a/src/main/java/com/hbm/world/feature/BiomeCave.java b/src/main/java/com/hbm/world/feature/BiomeCave.java index 1dc57bd73..be98089b6 100644 --- a/src/main/java/com/hbm/world/feature/BiomeCave.java +++ b/src/main/java/com/hbm/world/feature/BiomeCave.java @@ -3,11 +3,11 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.BlockEnums.EnumBiomeType; -import com.hbm.world.generator.DungeonToolbox; import com.hbm.blocks.ModBlocks; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenBase.TempCategory; @@ -96,7 +96,7 @@ public class BiomeCave { private static void handleBiome(World world, int x, int y, int z, EnumBiomeType type) { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && DungeonToolbox.allowedToReplace(target)) { + if(target.isNormalCube() && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { boolean shouldGen = false; diff --git a/src/main/java/com/hbm/world/feature/DeepLayer.java b/src/main/java/com/hbm/world/feature/DeepLayer.java index 69216034d..18ddb5d57 100644 --- a/src/main/java/com/hbm/world/feature/DeepLayer.java +++ b/src/main/java/com/hbm/world/feature/DeepLayer.java @@ -3,11 +3,11 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.util.ForgeDirection; @@ -51,7 +51,7 @@ public class DeepLayer { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { boolean lava = false; diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index 7f879866b..3679b8d4c 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -5,11 +5,11 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockStalagmite; import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.MinecraftForge; @@ -104,7 +104,7 @@ public class OreCave { for(int y = yLevel - range; y <= yLevel + range; y++) { Block genTarget = world.getBlock(x, y, z); - if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground) && DungeonToolbox.allowedToReplace(genTarget)) { + if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground) && genTarget.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { boolean shouldGen = false; boolean canGenFluid = event.rand.nextBoolean(); diff --git a/src/main/java/com/hbm/world/feature/OreLayer.java b/src/main/java/com/hbm/world/feature/OreLayer.java index aacf1c416..fb4b84543 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer.java +++ b/src/main/java/com/hbm/world/feature/OreLayer.java @@ -3,7 +3,6 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; @@ -100,7 +99,7 @@ public class OreLayer { if(event.rand.nextFloat() < density) { Block genTarget = world.getBlock(x, y, z); - if(genTarget.isReplaceableOreGen(world, x, y, z, target) && DungeonToolbox.allowedToReplace(genTarget)) { + if(genTarget.isReplaceableOreGen(world, x, y, z, target) && genTarget.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { world.setBlock(x, y, z, ore.block, ore.meta, 2); } } diff --git a/src/main/java/com/hbm/world/feature/OreLayer3D.java b/src/main/java/com/hbm/world/feature/OreLayer3D.java index 50fba58b3..84b8f88b0 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer3D.java +++ b/src/main/java/com/hbm/world/feature/OreLayer3D.java @@ -2,11 +2,10 @@ package com.hbm.world.feature; import java.util.Random; -import com.hbm.world.generator.DungeonToolbox; - import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.MinecraftForge; @@ -76,7 +75,7 @@ public class OreLayer3D { if(nX * nY * nZ > threshold) { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { world.setBlock(x, y, z, block, meta, 2); } } diff --git a/src/main/java/com/hbm/world/feature/SchistStratum.java b/src/main/java/com/hbm/world/feature/SchistStratum.java index d83ec528e..56ae0dbdb 100644 --- a/src/main/java/com/hbm/world/feature/SchistStratum.java +++ b/src/main/java/com/hbm/world/feature/SchistStratum.java @@ -3,11 +3,11 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; @@ -52,7 +52,7 @@ public class SchistStratum { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { world.setBlock(x, y, z, ModBlocks.stone_gneiss, 0, 2); } } diff --git a/src/main/java/com/hbm/world/generator/DungeonToolbox.java b/src/main/java/com/hbm/world/generator/DungeonToolbox.java index b5ab4499c..7e0a899f9 100644 --- a/src/main/java/com/hbm/world/generator/DungeonToolbox.java +++ b/src/main/java/com/hbm/world/generator/DungeonToolbox.java @@ -94,12 +94,4 @@ public class DungeonToolbox { genFlowers.func_150550_a(flower, meta); genFlowers.generate(world, rand, x, y, z); } - - public static boolean allowedToReplace(Block block) { - - if(block == Blocks.end_portal_frame) return false; - if(block == Blocks.bedrock) return false; - - return true; - } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 3ab0b70e1..5076c1fd6 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4147,6 +4147,7 @@ tile.machine_press.name=Befeuerte Presse tile.machine_puf6_tank.name=Plutoniumhexafluorid-Tank tile.machine_pumpjack.name=Pferdekopfpumpe tile.machine_radar.name=Radar +tile.machine_radar_large.name=Großes Radar tile.machine_radgen.name=Strahlenbetriebener Generator tile.machine_reactor.name=Brutreaktor tile.machine_reactor_on.name=Brutreaktor diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index bf2b878be..e185542ef 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5136,6 +5136,7 @@ tile.machine_press.name=Burner Press tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank tile.machine_pumpjack.name=Pumpjack tile.machine_radar.name=Radar +tile.machine_radar_large.name=Large Radar tile.machine_radgen.name=Radiation-Powered Engine tile.machine_radiolysis.name=Radioisotope Thermoelectric Generator and Radiolysis Chamber tile.machine_reactor.name=Breeding Reactor diff --git a/src/main/resources/assets/hbm/models/machines/radar_large.obj b/src/main/resources/assets/hbm/models/machines/radar_large.obj new file mode 100644 index 000000000..0e7e4da41 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/radar_large.obj @@ -0,0 +1,2479 @@ +# Blender v2.79 (sub 0) OBJ File: 'radar_large.blend' +# www.blender.org +o Dish +v -0.218750 5.500000 0.500000 +v 0.218750 5.500000 0.500000 +v -0.218750 5.500000 -0.500000 +v 0.218750 5.500000 -0.500000 +v 0.500000 5.500000 0.218750 +v 0.500000 5.500000 -0.218750 +v -0.500000 5.500000 0.218750 +v -0.500000 5.500000 -0.218750 +v -0.218750 7.000000 0.500000 +v 0.218750 7.000000 0.500000 +v -0.218750 7.000000 -0.500000 +v 0.218750 7.000000 -0.500000 +v 0.500000 7.000000 0.218750 +v 0.500000 7.000000 -0.218750 +v -0.500000 7.000000 0.218750 +v -0.500000 7.000000 -0.218750 +v -0.500000 7.000000 0.500000 +v -0.500000 6.500000 0.500000 +v -0.500000 7.000000 -0.500000 +v -0.500000 6.500000 -0.500000 +v -1.000000 7.000000 -0.500000 +v -1.000000 7.000000 0.500000 +v -1.000000 6.500000 0.500000 +v -1.000000 6.500000 -0.500000 +v -0.125000 7.375000 2.500000 +v -0.125000 7.125000 2.500000 +v -0.375000 7.375000 2.500000 +v -0.375000 7.125000 2.500000 +v 1.000000 7.000000 0.500000 +v 1.000000 6.500000 0.500000 +v 1.000000 7.000000 -0.500000 +v 1.000000 6.500000 -0.500000 +v 0.500000 7.000000 -0.500000 +v 0.500000 7.000000 0.500000 +v 0.500000 6.500000 0.500000 +v 0.500000 6.500000 -0.500000 +v 0.375000 7.375000 2.500000 +v 0.375000 7.125000 2.500000 +v 0.125000 7.375000 2.500000 +v 0.125000 7.125000 2.500000 +v -1.000000 7.250000 2.500000 +v 1.000000 7.250000 2.500000 +v -1.000000 7.000000 2.500000 +v 1.000000 7.000000 2.500000 +v -1.000000 7.000000 2.625000 +v -1.000000 7.250000 2.625000 +v 1.000000 7.250000 2.625000 +v 1.000000 7.000000 2.625000 +v -0.250000 7.125000 2.375000 +v 0.250000 7.125000 2.375000 +v -0.250000 7.375000 2.375000 +v 0.250000 7.375000 2.375000 +v -0.250000 7.375000 2.125000 +v -0.250000 7.125000 2.125000 +v 0.250000 7.125000 2.125000 +v 0.250000 7.375000 2.125000 +v -1.000000 7.500000 -1.500000 +v 1.000000 7.500000 -1.500000 +v -1.000000 9.500000 -1.500000 +v 1.000000 9.500000 -1.500000 +v -2.000000 7.500000 -1.250000 +v 2.000000 7.500000 -1.250000 +v -2.000000 9.500000 -1.250000 +v 2.000000 9.500000 -1.250000 +v -3.000000 7.500000 -0.500000 +v 3.000000 7.500000 -0.500000 +v -3.000000 9.500000 -0.500000 +v 3.000000 9.500000 -0.500000 +v -1.000000 7.000000 -1.250000 +v 1.000000 7.000000 -1.250000 +v -1.000000 10.000000 -1.250000 +v 1.000000 10.000000 -1.250000 +v -2.000000 7.000000 -1.000000 +v 2.000000 7.000000 -1.000000 +v -2.000000 10.000000 -1.000000 +v 2.000000 10.000000 -1.000000 +v -1.031250 7.500000 -1.468750 +v -0.968750 7.500000 -1.468750 +v -1.031250 7.500000 -1.531250 +v -0.968750 7.500000 -1.531250 +v -1.031250 9.500000 -1.468750 +v -0.968750 9.500000 -1.468750 +v -1.031250 9.500000 -1.531250 +v -0.968750 9.500000 -1.531250 +v -1.031250 10.000000 -1.281250 +v -1.031250 10.000000 -1.218750 +v -0.968750 10.000000 -1.218750 +v -0.968750 10.000000 -1.281250 +v -1.031250 7.000000 -1.281250 +v -1.031250 7.000000 -1.218750 +v -0.968750 7.000000 -1.218750 +v -0.968750 7.000000 -1.281250 +v -0.031250 7.500000 -1.468750 +v 0.031250 7.500000 -1.468750 +v -0.031250 7.500000 -1.531250 +v 0.031250 7.500000 -1.531250 +v -0.031250 9.500000 -1.468750 +v 0.031250 9.500000 -1.468750 +v -0.031250 9.500000 -1.531250 +v 0.031250 9.500000 -1.531250 +v -0.031250 10.000000 -1.281250 +v -0.031250 10.000000 -1.218750 +v 0.031250 10.000000 -1.218750 +v 0.031250 10.000000 -1.281250 +v -0.031250 7.000000 -1.281250 +v -0.031250 7.000000 -1.218750 +v 0.031250 7.000000 -1.218750 +v 0.031250 7.000000 -1.281250 +v 0.968750 7.500000 -1.468750 +v 1.031250 7.500000 -1.468750 +v 0.968750 7.500000 -1.531250 +v 1.031250 7.500000 -1.531250 +v 0.968750 9.500000 -1.468750 +v 1.031250 9.500000 -1.468750 +v 0.968750 9.500000 -1.531250 +v 1.031250 9.500000 -1.531250 +v 0.968750 10.000000 -1.281250 +v 0.968750 10.000000 -1.218750 +v 1.031250 10.000000 -1.218750 +v 1.031250 10.000000 -1.281250 +v 0.968750 7.000000 -1.281250 +v 0.968750 7.000000 -1.218750 +v 1.031250 7.000000 -1.218750 +v 1.031250 7.000000 -1.281250 +v -2.031250 7.500000 -1.218750 +v -1.968750 7.500000 -1.218750 +v -2.031250 7.500000 -1.281250 +v -1.968750 7.500000 -1.281250 +v -2.031250 9.500000 -1.218750 +v -1.968750 9.500000 -1.218750 +v -2.031250 9.500000 -1.281250 +v -1.968750 9.500000 -1.281250 +v -2.031250 10.000000 -1.031250 +v -2.031250 10.000000 -0.968750 +v -1.968750 10.000000 -0.968750 +v -1.968750 10.000000 -1.031250 +v -2.031250 7.000000 -1.031250 +v -2.031250 7.000000 -0.968750 +v -1.968750 7.000000 -0.968750 +v -1.968750 7.000000 -1.031250 +v 1.968750 7.500000 -1.218750 +v 2.031250 7.500000 -1.218750 +v 1.968750 7.500000 -1.281250 +v 2.031250 7.500000 -1.281250 +v 1.968750 9.500000 -1.218750 +v 2.031250 9.500000 -1.218750 +v 1.968750 9.500000 -1.281250 +v 2.031250 9.500000 -1.281250 +v 1.968750 10.000000 -1.031250 +v 1.968750 10.000000 -0.968750 +v 2.031250 10.000000 -0.968750 +v 2.031250 10.000000 -1.031250 +v 1.968750 7.000000 -1.031250 +v 1.968750 7.000000 -0.968750 +v 2.031250 7.000000 -0.968750 +v 2.031250 7.000000 -1.031250 +v -3.031250 7.500000 -0.468750 +v -2.968750 7.500000 -0.468750 +v -3.031250 7.500000 -0.531250 +v -2.968750 7.500000 -0.531250 +v -3.031250 9.500000 -0.468750 +v -2.968750 9.500000 -0.468750 +v -3.031250 9.500000 -0.531250 +v -2.968750 9.500000 -0.531250 +v 2.968750 7.500000 -0.468750 +v 3.031250 7.500000 -0.468750 +v 2.968750 7.500000 -0.531250 +v 3.031250 7.500000 -0.531250 +v 2.968750 9.500000 -0.468750 +v 3.031250 9.500000 -0.468750 +v 2.968750 9.500000 -0.531250 +v 3.031250 9.500000 -0.531250 +v -0.625000 6.750000 -1.750000 +v -0.625000 7.000000 -1.750000 +v -0.875000 6.750000 -1.750000 +v -0.875000 7.000000 -1.750000 +v 0.875000 6.750000 -1.750000 +v 0.875000 7.000000 -1.750000 +v 0.625000 6.750000 -1.750000 +v 0.625000 7.000000 -1.750000 +v -1.000000 8.531250 -2.218750 +v -1.000000 8.468750 -2.218750 +v -1.000000 8.531250 -2.281250 +v -1.000000 8.468750 -2.281250 +v 1.000000 8.531250 -2.218750 +v 1.000000 8.468750 -2.218750 +v 1.000000 8.531250 -2.281250 +v 1.000000 8.468750 -2.281250 +v -2.000000 8.531250 -2.031250 +v -2.000000 8.531250 -1.968750 +v -2.000000 8.468750 -1.968750 +v -2.000000 8.468750 -2.031250 +v 2.000000 8.531250 -2.031250 +v 2.000000 8.531250 -1.968750 +v 2.000000 8.468750 -1.968750 +v 2.000000 8.468750 -2.031250 +v 3.000000 8.531250 -1.281250 +v 3.000000 8.531250 -1.218750 +v 3.000000 8.468750 -1.218750 +v 3.000000 8.468750 -1.281250 +v -3.000000 8.531250 -1.281250 +v -3.000000 8.531250 -1.218750 +v -3.000000 8.468750 -1.218750 +v -3.000000 8.468750 -1.281250 +v -3.000000 8.531250 -1.218750 +v -3.000000 8.468750 -1.218750 +v -3.000000 9.500000 -0.531250 +v -3.000000 9.437500 -0.531250 +v -3.000000 8.531250 -1.218750 +v -3.000000 8.468750 -1.218750 +v -3.000000 7.562500 -0.531250 +v -3.000000 7.500000 -0.531250 +v -2.000000 8.531250 -1.968750 +v -2.000000 8.468750 -1.968750 +v -2.000000 9.500000 -1.281250 +v -2.000000 9.437500 -1.281250 +v -2.000000 8.531250 -1.968750 +v -2.000000 8.468750 -1.968750 +v -2.000000 7.562500 -1.281250 +v -2.000000 7.500000 -1.281250 +v -1.000000 8.531250 -2.218750 +v -1.000000 8.468750 -2.218750 +v -1.000000 9.500000 -1.531250 +v -1.000000 9.437500 -1.531250 +v -1.000000 8.531250 -2.218750 +v -1.000000 8.468750 -2.218750 +v -1.000000 7.562500 -1.531250 +v -1.000000 7.500000 -1.531250 +v 0.000000 8.531250 -2.218750 +v 0.000000 8.468750 -2.218750 +v 0.000000 9.500000 -1.531250 +v 0.000000 9.437500 -1.531250 +v 0.000000 8.531250 -2.218750 +v 0.000000 8.468750 -2.218750 +v 0.000000 7.562500 -1.531250 +v 0.000000 7.500000 -1.531250 +v 1.000000 8.531250 -2.218750 +v 1.000000 8.468750 -2.218750 +v 1.000000 9.500000 -1.531250 +v 1.000000 9.437500 -1.531250 +v 1.000000 8.531250 -2.218750 +v 1.000000 8.468750 -2.218750 +v 1.000000 7.562500 -1.531250 +v 1.000000 7.500000 -1.531250 +v 2.000000 8.531250 -1.968750 +v 2.000000 8.468750 -1.968750 +v 2.000000 9.500000 -1.281250 +v 2.000000 9.437500 -1.281250 +v 2.000000 8.531250 -1.968750 +v 2.000000 8.468750 -1.968750 +v 2.000000 7.562500 -1.281250 +v 2.000000 7.500000 -1.281250 +v 3.000000 8.531250 -1.218750 +v 3.000000 8.468750 -1.218750 +v 3.000000 9.500000 -0.531250 +v 3.000000 9.437500 -0.531250 +v 3.000000 8.531250 -1.218750 +v 3.000000 8.468750 -1.218750 +v 3.000000 7.562500 -0.531250 +v 3.000000 7.500000 -0.531250 +v 0.816250 7.000000 -1.687500 +v 0.878750 7.000000 -1.687500 +v 0.816250 7.000000 -1.750000 +v 0.878750 7.000000 -1.750000 +v 0.816250 8.500000 -2.218750 +v 0.878750 8.500000 -2.218750 +v 0.816250 8.500000 -2.281250 +v 0.878750 8.500000 -2.281250 +v -0.683750 7.000000 -1.687500 +v -0.621250 7.000000 -1.687500 +v -0.683750 7.000000 -1.750000 +v -0.621250 7.000000 -1.750000 +v -0.683750 8.500000 -2.218750 +v -0.621250 8.500000 -2.218750 +v -0.683750 8.500000 -2.281250 +v -0.621250 8.500000 -2.281250 +v 0.628750 7.000000 -1.687500 +v 0.691250 7.000000 -1.687500 +v 0.628750 7.000000 -1.750000 +v 0.691250 7.000000 -1.750000 +v 0.628750 8.500000 -2.218750 +v 0.691250 8.500000 -2.218750 +v 0.628750 8.500000 -2.281250 +v 0.691250 8.500000 -2.281250 +v -0.871250 7.000000 -1.687500 +v -0.808750 7.000000 -1.687500 +v -0.871250 7.000000 -1.750000 +v -0.808750 7.000000 -1.750000 +v -0.871250 8.500000 -2.218750 +v -0.808750 8.500000 -2.218750 +v -0.871250 8.500000 -2.281250 +v -0.808750 8.500000 -2.281250 +v -0.125000 7.249850 2.450611 +v 0.125000 7.249850 2.450611 +v -0.125000 7.491331 2.515315 +v 0.125000 7.491331 2.515315 +v -0.125000 7.991632 1.614094 +v -0.125000 7.267187 1.419980 +v 0.125000 7.267187 1.419980 +v 0.125000 7.991632 1.614094 +v -0.218750 7.375000 2.312500 +v 0.218750 7.375000 2.312500 +v -0.218750 7.375000 2.187500 +v 0.218750 7.375000 2.187500 +v 0.218750 7.562500 2.312500 +v -0.218750 7.562500 2.312500 +v 0.218750 7.562500 2.187500 +v -0.218750 7.562500 2.187500 +v -1.000000 7.500000 -1.500000 +v 1.000000 7.500000 -1.500000 +v -1.000000 9.500000 -1.500000 +v 1.000000 9.500000 -1.500000 +v -2.000000 7.500000 -1.250000 +v 2.000000 7.500000 -1.250000 +v -2.000000 9.500000 -1.250000 +v 2.000000 9.500000 -1.250000 +v -3.000000 7.500000 -0.500000 +v 3.000000 7.500000 -0.500000 +v -3.000000 9.500000 -0.500000 +v 3.000000 9.500000 -0.500000 +v -1.000000 7.000000 -1.250000 +v 1.000000 7.000000 -1.250000 +v -1.000000 10.000000 -1.250000 +v 1.000000 10.000000 -1.250000 +v -2.000000 7.000000 -1.000000 +v 2.000000 7.000000 -1.000000 +v -2.000000 10.000000 -1.000000 +v 2.000000 10.000000 -1.000000 +v -3.000000 8.531250 -1.218750 +v -3.000000 8.468750 -1.218750 +v -3.000000 9.500000 -0.531250 +v -3.000000 9.437500 -0.531250 +v -3.000000 8.531250 -1.218750 +v -3.000000 8.468750 -1.218750 +v -3.000000 7.562500 -0.531250 +v -3.000000 7.500000 -0.531250 +v -2.000000 8.531250 -1.968750 +v -2.000000 8.468750 -1.968750 +v -2.000000 9.500000 -1.281250 +v -2.000000 9.437500 -1.281250 +v -2.000000 8.531250 -1.968750 +v -2.000000 8.468750 -1.968750 +v -2.000000 7.562500 -1.281250 +v -2.000000 7.500000 -1.281250 +v -1.000000 8.531250 -2.218750 +v -1.000000 8.468750 -2.218750 +v -1.000000 9.500000 -1.531250 +v -1.000000 9.437500 -1.531250 +v -1.000000 8.531250 -2.218750 +v -1.000000 8.468750 -2.218750 +v -1.000000 7.562500 -1.531250 +v -1.000000 7.500000 -1.531250 +v 0.000000 8.531250 -2.218750 +v 0.000000 8.468750 -2.218750 +v 0.000000 9.500000 -1.531250 +v 0.000000 9.437500 -1.531250 +v 0.000000 8.531250 -2.218750 +v 0.000000 8.468750 -2.218750 +v 0.000000 7.562500 -1.531250 +v 0.000000 7.500000 -1.531250 +v 1.000000 8.531250 -2.218750 +v 1.000000 8.468750 -2.218750 +v 1.000000 9.500000 -1.531250 +v 1.000000 9.437500 -1.531250 +v 1.000000 8.531250 -2.218750 +v 1.000000 8.468750 -2.218750 +v 1.000000 7.562500 -1.531250 +v 1.000000 7.500000 -1.531250 +v 2.000000 8.531250 -1.968750 +v 2.000000 8.468750 -1.968750 +v 2.000000 9.500000 -1.281250 +v 2.000000 9.437500 -1.281250 +v 2.000000 8.531250 -1.968750 +v 2.000000 8.468750 -1.968750 +v 2.000000 7.562500 -1.281250 +v 2.000000 7.500000 -1.281250 +v 3.000000 8.531250 -1.218750 +v 3.000000 8.468750 -1.218750 +v 3.000000 9.500000 -0.531250 +v 3.000000 9.437500 -0.531250 +v 3.000000 8.531250 -1.218750 +v 3.000000 8.468750 -1.218750 +v 3.000000 7.562500 -0.531250 +v 3.000000 7.500000 -0.531250 +vt 0.708333 0.066667 +vt 0.681818 0.266667 +vt 0.681818 0.066667 +vt 0.602273 0.066667 +vt 0.575758 0.266667 +vt 0.575758 0.066667 +vt 0.734848 0.266667 +vt 0.734848 0.066667 +vt 0.628788 0.266667 +vt 0.628788 0.066667 +vt 0.761364 0.266667 +vt 0.761364 0.066667 +vt 0.655303 0.266667 +vt 0.655303 0.066667 +vt 0.787879 0.266667 +vt 0.787879 0.066667 +vt 0.592803 0.400000 +vt 0.575758 0.304167 +vt 0.619318 0.266667 +vt 0.863636 0.333333 +vt 0.893939 0.200000 +vt 0.893939 0.333333 +vt 0.924242 0.200000 +vt 0.954545 0.333333 +vt 0.924242 0.333333 +vt 0.924242 0.200000 +vt 0.946970 0.033333 +vt 0.954545 0.200000 +vt 0.984848 0.333333 +vt 0.962121 0.600000 +vt 0.954545 0.200000 +vt 0.984848 0.200000 +vt 0.901515 0.600000 +vt 0.916667 0.633333 +vt 0.901515 0.633333 +vt 0.916667 0.600000 +vt 0.946970 0.600000 +vt 0.931818 0.600000 +vt 0.871212 0.600000 +vt 0.863636 0.333333 +vt 0.893939 0.200000 +vt 0.893939 0.333333 +vt 0.954545 0.333333 +vt 0.924242 0.333333 +vt 0.946970 0.033333 +vt 0.977273 0.600000 +vt 0.962121 0.600000 +vt 0.984848 0.333333 +vt 0.984848 0.200000 +vt 0.901515 0.600000 +vt 0.916667 0.633333 +vt 0.901515 0.633333 +vt 0.946970 0.600000 +vt 0.931818 0.600000 +vt 0.871212 0.600000 +vt 0.818182 0.016667 +vt 0.833333 0.275000 +vt 0.818182 0.275000 +vt 0.795455 0.275000 +vt 0.810606 0.016667 +vt 0.810606 0.275000 +vt 0.810606 -0.000000 +vt 0.795455 0.016667 +vt 0.795455 -0.000000 +vt 0.795455 0.291667 +vt 0.810606 0.291667 +vt 0.787879 0.016667 +vt 0.787879 0.275000 +vt 0.772727 0.300000 +vt 0.742424 0.333333 +vt 0.742424 0.300000 +vt 0.742424 0.366667 +vt 0.772727 0.400000 +vt 0.742424 0.400000 +vt 0.772727 0.333333 +vt 0.772727 0.266667 +vt 0.787879 0.333333 +vt 0.772727 0.366667 +vt 0.727273 0.366667 +vt 0.727273 0.333333 +vt 0.727273 0.466667 +vt 0.606061 0.733333 +vt 0.606061 0.466667 +vt 0.787879 0.733333 +vt 0.727273 0.733333 +vt 0.545455 0.466667 +vt 0.787879 0.466667 +vt 0.848485 0.733333 +vt 0.545455 0.733333 +vt 0.484848 0.466667 +vt 0.606061 0.800000 +vt 0.545455 0.800000 +vt 0.727273 0.400000 +vt 0.787879 0.400000 +vt 0.606061 0.400000 +vt 0.727273 0.800000 +vt 0.484848 0.733333 +vt 0.787879 0.800000 +vt 0.545455 0.400000 +vt 0.848485 0.466667 +vt 0.859848 0.466667 +vt 0.863636 0.400000 +vt 0.863636 0.466667 +vt 0.848485 0.733333 +vt 0.852273 0.800000 +vt 0.848485 0.800000 +vt 0.859848 0.733333 +vt 0.852273 0.466667 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.852273 0.808333 +vt 0.856061 0.800000 +vt 0.856061 0.808333 +vt 0.863636 0.733333 +vt 0.859848 0.800000 +vt 0.856061 0.400000 +vt 0.852273 0.391667 +vt 0.856061 0.391667 +vt 0.852273 0.400000 +vt 0.859848 0.400000 +vt 0.859848 0.466667 +vt 0.863636 0.400000 +vt 0.863636 0.466667 +vt 0.848485 0.733333 +vt 0.852273 0.800000 +vt 0.848485 0.800000 +vt 0.859848 0.733333 +vt 0.852273 0.466667 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.852273 0.808333 +vt 0.856061 0.800000 +vt 0.856061 0.808333 +vt 0.863636 0.733333 +vt 0.859848 0.800000 +vt 0.856061 0.400000 +vt 0.852273 0.391667 +vt 0.856061 0.391667 +vt 0.852273 0.400000 +vt 0.859848 0.400000 +vt 0.859848 0.466667 +vt 0.863636 0.400000 +vt 0.863636 0.466667 +vt 0.848485 0.733333 +vt 0.852273 0.800000 +vt 0.848485 0.800000 +vt 0.859848 0.733333 +vt 0.852273 0.466667 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.852273 0.808333 +vt 0.856061 0.800000 +vt 0.856061 0.808333 +vt 0.863636 0.733333 +vt 0.859848 0.800000 +vt 0.856061 0.400000 +vt 0.852273 0.391667 +vt 0.856061 0.391667 +vt 0.852273 0.400000 +vt 0.859848 0.400000 +vt 0.859848 0.466667 +vt 0.863636 0.400000 +vt 0.863636 0.466667 +vt 0.848485 0.733333 +vt 0.852273 0.800000 +vt 0.848485 0.800000 +vt 0.859848 0.733333 +vt 0.852273 0.466667 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.852273 0.808333 +vt 0.856061 0.800000 +vt 0.856061 0.808333 +vt 0.863636 0.733333 +vt 0.859848 0.800000 +vt 0.856061 0.400000 +vt 0.852273 0.391667 +vt 0.856061 0.391667 +vt 0.852273 0.400000 +vt 0.859848 0.400000 +vt 0.859848 0.466667 +vt 0.863636 0.400000 +vt 0.863636 0.466667 +vt 0.848485 0.733333 +vt 0.852273 0.800000 +vt 0.848485 0.800000 +vt 0.859848 0.733333 +vt 0.852273 0.466667 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.852273 0.808333 +vt 0.856061 0.800000 +vt 0.856061 0.808333 +vt 0.863636 0.733333 +vt 0.859848 0.800000 +vt 0.856061 0.400000 +vt 0.852273 0.391667 +vt 0.856061 0.391667 +vt 0.852273 0.400000 +vt 0.859848 0.400000 +vt 0.863636 0.466667 +vt 0.859848 0.733333 +vt 0.859848 0.466667 +vt 0.852273 0.466667 +vt 0.848485 0.733333 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.863636 0.466667 +vt 0.859848 0.733333 +vt 0.859848 0.466667 +vt 0.852273 0.466667 +vt 0.848485 0.733333 +vt 0.848485 0.466667 +vt 0.856061 0.733333 +vt 0.856061 0.466667 +vt 0.852273 0.733333 +vt 0.856061 0.808333 +vt 0.852273 0.800000 +vt 0.856061 0.800000 +vt 0.852273 0.400000 +vt 0.856061 0.391667 +vt 0.856061 0.400000 +vt 0.852273 0.400000 +vt 0.856061 0.391667 +vt 0.856061 0.400000 +vt 0.856061 0.808333 +vt 0.852273 0.800000 +vt 0.856061 0.800000 +vt 0.901515 -0.000000 +vt 0.916667 0.033333 +vt 0.901515 0.033333 +vt 0.901515 -0.000000 +vt 0.916667 0.033333 +vt 0.901515 0.033333 +vt 0.871212 0.033333 +vt 0.886364 0.033333 +vt 0.871212 0.033333 +vt 0.886364 0.033333 +vt 0.977273 0.033333 +vt 0.977273 0.033333 +vt 0.606061 0.800000 +vt 0.727273 0.808333 +vt 0.606061 0.808333 +vt 0.606061 0.825000 +vt 0.727273 0.833333 +vt 0.606061 0.833333 +vt 0.727273 0.816667 +vt 0.606061 0.816667 +vt 0.727273 0.825000 +vt 0.545455 0.825000 +vt 0.787879 0.825000 +vt 0.787879 0.833333 +vt 0.484848 0.816667 +vt 0.545455 0.816667 +vt 0.545455 0.808333 +vt 0.545455 0.800000 +vt 0.848485 0.825000 +vt 0.848485 0.833333 +vt 0.787879 0.816667 +vt 0.727273 0.800000 +vt 0.787879 0.808333 +vt 0.848485 0.808333 +vt 0.852273 0.816667 +vt 0.848485 0.816667 +vt 0.787879 0.800000 +vt 0.481061 0.816667 +vt 0.484848 0.808333 +vt 0.484848 0.800000 +vt 0.545455 0.833333 +vt 0.484848 0.825000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.484848 0.533333 +vt 0.481061 0.733333 +vt 0.481061 0.533333 +vt 0.473485 0.533333 +vt 0.469697 0.733333 +vt 0.469697 0.533333 +vt 0.477273 0.533333 +vt 0.477273 0.733333 +vt 0.473485 0.733333 +vt 0.484848 0.533333 +vt 0.481061 0.733333 +vt 0.481061 0.533333 +vt 0.473485 0.533333 +vt 0.469697 0.733333 +vt 0.469697 0.533333 +vt 0.477273 0.533333 +vt 0.477273 0.733333 +vt 0.473485 0.733333 +vt 0.484848 0.533333 +vt 0.481061 0.733333 +vt 0.481061 0.533333 +vt 0.473485 0.533333 +vt 0.469697 0.733333 +vt 0.469697 0.533333 +vt 0.477273 0.533333 +vt 0.477273 0.733333 +vt 0.473485 0.733333 +vt 0.484848 0.533333 +vt 0.481061 0.733333 +vt 0.481061 0.533333 +vt 0.473485 0.533333 +vt 0.469697 0.733333 +vt 0.469697 0.533333 +vt 0.477273 0.533333 +vt 0.477273 0.733333 +vt 0.473485 0.733333 +vt 0.924242 1.000000 +vt 0.939394 0.966667 +vt 0.939394 1.000000 +vt 0.939394 0.833333 +vt 0.924242 0.733333 +vt 0.939394 0.733333 +vt 0.924242 0.966667 +vt 0.939394 0.600000 +vt 0.924242 0.600000 +vt 0.863636 0.766667 +vt 0.924242 0.833333 +vt 0.863636 0.800000 +vt 1.000000 0.800000 +vt 1.000000 0.766667 +vt 0.731061 0.291667 +vt 0.704545 0.308333 +vt 0.704545 0.291667 +vt 0.742424 0.308333 +vt 0.742424 0.291667 +vt 0.731061 0.266667 +vt 0.704545 0.266667 +vt 0.693182 0.291667 +vt 0.693182 0.308333 +vt 0.704545 0.333333 +vt 0.731061 0.308333 +vt 0.731061 0.333333 +vt 0.606061 0.733333 +vt 0.727273 0.466667 +vt 0.606061 0.466667 +vt 0.787879 0.733333 +vt 0.727273 0.733333 +vt 0.545455 0.466667 +vt 0.848485 0.733333 +vt 0.787879 0.466667 +vt 0.484848 0.466667 +vt 0.545455 0.733333 +vt 0.606061 0.800000 +vt 0.727273 0.400000 +vt 0.606061 0.400000 +vt 0.727273 0.800000 +vt 0.484848 0.733333 +vt 0.545455 0.800000 +vt 0.787879 0.800000 +vt 0.545455 0.400000 +vt 0.848485 0.466667 +vt 0.787879 0.400000 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.400000 +vt 0.803030 0.391667 +vt 0.803030 0.400000 +vt 0.803030 0.400000 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.708333 0.266667 +vt 0.602273 0.266667 +vt 0.636364 0.304167 +vt 0.636364 0.362500 +vt 0.619318 0.400000 +vt 0.575758 0.362500 +vt 0.592803 0.266667 +vt 0.863636 0.200000 +vt 0.931818 0.033333 +vt 0.977273 0.600000 +vt 0.886364 0.600000 +vt 0.863636 0.200000 +vt 0.931818 0.033333 +vt 0.916667 0.600000 +vt 0.886364 0.600000 +vt 0.833333 0.016667 +vt 0.742424 0.266667 +vt 0.787879 0.366667 +vt 0.863636 0.800000 +vt 0.848485 0.400000 +vt 0.863636 0.800000 +vt 0.848485 0.400000 +vt 0.863636 0.800000 +vt 0.848485 0.400000 +vt 0.863636 0.800000 +vt 0.848485 0.400000 +vt 0.863636 0.800000 +vt 0.848485 0.400000 +vt 0.863636 0.733333 +vt 0.863636 0.733333 +vt 0.852273 0.808333 +vt 0.852273 0.391667 +vt 0.852273 0.391667 +vt 0.852273 0.808333 +vt 0.916667 0.000000 +vt 0.916667 -0.000000 +vt 0.962121 0.033333 +vt 0.962121 0.033333 +vt 0.852273 0.808333 +vt 0.848485 0.800000 +vt 0.481061 0.808333 +vt 0.484848 0.833333 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.848485 0.391667 +vt 0.803030 0.391667 +vt 0.484848 0.733333 +vt 0.484848 0.733333 +vt 0.484848 0.733333 +vt 0.484848 0.733333 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vt 0.848485 0.391667 +vt 0.848485 0.400000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9950 0.0000 -0.0995 +vn 0.0000 -0.9545 0.2983 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.9829 -0.1843 +vn -0.9545 0.0000 0.2983 +vn 0.9829 0.0000 -0.1843 +vn -0.9829 0.0000 -0.1843 +vn 0.9545 0.0000 0.2983 +vn -0.2425 0.0000 0.9701 +vn 0.2425 0.0000 0.9701 +vn -0.6000 0.0000 0.8000 +vn 0.6000 0.0000 0.8000 +vn 0.2182 -0.4364 0.8729 +vn -0.2182 0.4364 0.8729 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 0.4472 0.8944 +vn 0.2182 0.4364 0.8729 +vn -0.2182 -0.4364 0.8729 +vn 0.5571 -0.3714 0.7428 +vn -0.5571 -0.3714 0.7428 +vn 0.5571 0.3714 0.7428 +vn -0.5571 0.3714 0.7428 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 -0.4472 -0.8944 +vn 0.9950 0.0000 -0.0995 +vn 0.0000 -0.9806 -0.1961 +vn -0.6000 0.0000 -0.8000 +vn -0.2425 0.0000 -0.9701 +vn 0.2425 0.0000 -0.9701 +vn 0.6000 0.0000 -0.8000 +vn 0.0000 0.3338 0.9426 +vn 0.0000 -0.3338 -0.9426 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 0.2588 -0.9659 +vn 0.0000 0.8743 0.4854 +vn 0.0000 -0.9999 -0.0168 +vn -0.2182 0.4364 -0.8729 +vn 0.2182 -0.4364 -0.8729 +vn -0.2182 -0.4364 -0.8729 +vn 0.2182 0.4364 -0.8729 +vn -0.5571 0.3714 -0.7428 +vn 0.5571 0.3714 -0.7428 +vn -0.5571 -0.3714 -0.7428 +vn 0.5571 -0.3714 -0.7428 +s off +f 4/1/1 14/2/1 6/3/1 +f 1/4/2 15/5/2 7/6/2 +f 11/7/3 4/1/3 3/8/3 +f 10/9/4 1/4/4 2/10/4 +f 16/11/5 3/8/5 8/12/5 +f 13/13/6 2/10/6 5/14/6 +f 14/2/7 5/14/7 6/3/7 +f 15/15/8 8/12/8 7/16/8 +f 10/17/9 14/18/9 11/19/9 +f 18/20/7 19/21/7 17/22/7 +f 21/23/8 23/24/8 22/25/8 +f 19/21/9 22/25/9 17/22/9 +f 33/26/10 179/27/10 36/28/10 +f 18/29/11 28/30/11 23/24/11 +f 18/29/12 24/31/12 20/32/12 +f 25/33/4 28/34/4 26/35/4 +f 17/22/13 27/36/13 25/33/13 +f 22/25/14 28/37/14 27/38/14 +f 17/22/15 26/39/15 18/20/15 +f 30/40/7 31/41/7 29/42/7 +f 33/26/8 35/43/8 34/44/8 +f 31/41/9 34/44/9 29/42/9 +f 21/23/10 175/45/10 24/31/10 +f 35/43/11 38/46/11 40/47/11 +f 30/48/12 36/28/12 32/49/12 +f 37/50/4 40/51/4 38/52/4 +f 34/44/13 37/50/13 29/42/13 +f 34/44/16 40/53/16 39/54/16 +f 29/42/17 38/55/17 30/40/17 +f 42/56/3 43/57/3 41/58/3 +f 45/59/4 47/60/4 46/61/4 +f 42/62/7 48/63/7 44/64/7 +f 43/65/8 46/61/8 41/66/8 +f 44/67/12 45/59/12 43/68/12 +f 41/58/9 47/60/9 42/56/9 +f 50/69/4 51/70/4 49/71/4 +f 53/72/3 55/73/3 54/74/3 +f 52/75/9 53/72/9 51/70/9 +f 49/71/12 55/76/12 50/69/12 +f 50/77/7 56/78/7 52/75/7 +f 51/70/8 54/79/8 49/80/8 +f 58/81/4 59/82/4 57/83/4 +f 58/81/18 64/84/18 60/85/18 +f 59/82/19 61/86/19 57/83/19 +f 62/87/20 68/88/20 64/84/20 +f 63/89/21 65/90/21 61/86/21 +f 63/89/22 71/91/22 75/92/22 +f 62/87/23 70/93/23 74/94/23 +f 60/85/24 71/91/24 59/82/24 +f 57/83/25 70/93/25 58/81/25 +f 61/86/26 69/95/26 57/83/26 +f 64/84/27 72/96/27 60/85/27 +f 63/89/28 75/92/28 67/97/28 +f 64/84/29 68/88/29 76/98/29 +f 61/86/30 65/90/30 73/99/30 +f 62/87/31 74/94/31 66/100/31 +f 77/101/25 91/102/25 78/103/25 +f 82/104/7 88/105/7 87/106/7 +f 78/103/4 81/107/4 77/101/4 +f 80/108/7 82/104/7 78/109/7 +f 77/101/8 83/110/8 79/111/8 +f 79/111/3 84/112/3 80/108/3 +f 87/113/9 85/114/9 86/115/9 +f 81/107/8 85/114/8 83/110/8 +f 83/110/32 88/105/32 84/112/32 +f 82/116/24 86/117/24 81/107/24 +f 89/118/12 91/119/12 90/120/12 +f 78/109/7 92/121/7 80/108/7 +f 77/101/8 89/118/8 90/122/8 +f 80/108/33 89/118/33 79/111/33 +f 93/123/25 107/124/25 94/125/25 +f 98/126/7 104/127/7 103/128/7 +f 94/125/4 97/129/4 93/123/4 +f 96/130/7 98/126/7 94/131/7 +f 93/123/8 99/132/8 95/133/8 +f 95/133/3 100/134/3 96/130/3 +f 103/135/9 101/136/9 102/137/9 +f 97/129/8 101/136/8 99/132/8 +f 99/132/32 104/127/32 100/134/32 +f 98/138/24 102/139/24 97/129/24 +f 105/140/12 107/141/12 106/142/12 +f 94/131/7 108/143/7 96/130/7 +f 93/123/8 105/140/8 106/144/8 +f 96/130/33 105/140/33 95/133/33 +f 109/145/25 123/146/25 110/147/25 +f 114/148/7 120/149/7 119/150/7 +f 110/147/4 113/151/4 109/145/4 +f 112/152/7 114/148/7 110/153/7 +f 109/145/8 115/154/8 111/155/8 +f 111/155/3 116/156/3 112/152/3 +f 119/157/9 117/158/9 118/159/9 +f 113/151/8 117/158/8 115/154/8 +f 115/154/32 120/149/32 116/156/32 +f 114/160/24 118/161/24 113/151/24 +f 121/162/12 123/163/12 122/164/12 +f 110/153/7 124/165/7 112/152/7 +f 109/145/8 121/162/8 122/166/8 +f 112/152/33 121/162/33 111/155/33 +f 125/167/25 139/168/25 126/169/25 +f 130/170/7 136/171/7 135/172/7 +f 126/169/4 129/173/4 125/167/4 +f 128/174/7 130/170/7 126/175/7 +f 125/167/8 131/176/8 127/177/8 +f 127/177/3 132/178/3 128/174/3 +f 135/179/9 133/180/9 134/181/9 +f 129/173/8 133/180/8 131/176/8 +f 131/176/32 136/171/32 132/178/32 +f 130/182/24 134/183/24 129/173/24 +f 137/184/12 139/185/12 138/186/12 +f 126/175/7 140/187/7 128/174/7 +f 125/167/8 137/184/8 138/188/8 +f 128/174/33 137/184/33 127/177/33 +f 141/189/25 155/190/25 142/191/25 +f 146/192/7 152/193/7 151/194/7 +f 142/191/4 145/195/4 141/189/4 +f 144/196/7 146/192/7 142/197/7 +f 141/189/8 147/198/8 143/199/8 +f 143/199/3 148/200/3 144/196/3 +f 151/201/9 149/202/9 150/203/9 +f 145/195/8 149/202/8 147/198/8 +f 147/198/32 152/193/32 148/200/32 +f 146/204/24 150/205/24 145/195/24 +f 153/206/12 155/207/12 154/208/12 +f 142/197/7 156/209/7 144/196/7 +f 141/189/8 153/206/8 154/210/8 +f 144/196/33 153/206/33 143/199/33 +f 158/211/4 161/212/4 157/213/4 +f 160/214/7 162/215/7 158/216/7 +f 157/213/8 163/217/8 159/218/8 +f 159/218/3 164/219/3 160/214/3 +f 166/220/4 169/221/4 165/222/4 +f 168/223/7 170/224/7 166/225/7 +f 165/222/8 171/226/8 167/227/8 +f 167/227/3 172/228/3 168/223/3 +f 161/229/9 164/230/9 163/231/9 +f 160/232/12 157/233/12 159/234/12 +f 168/235/12 165/236/12 167/237/12 +f 169/238/9 172/239/9 171/240/9 +f 173/241/3 176/242/3 174/243/3 +f 177/244/3 180/245/3 178/246/3 +f 19/21/34 173/247/34 174/248/34 +f 31/41/34 177/249/34 178/250/34 +f 24/31/35 173/251/35 20/32/35 +f 36/28/35 177/252/35 32/49/35 +f 19/21/9 176/242/9 21/23/9 +f 31/41/9 180/245/9 33/26/9 +f 182/253/4 185/254/4 181/255/4 +f 184/256/12 186/257/12 182/258/12 +f 181/255/9 187/259/9 183/260/9 +f 183/260/3 188/261/3 184/256/3 +f 182/258/12 192/262/12 184/256/12 +f 186/257/12 196/263/12 195/264/12 +f 192/262/36 201/265/36 189/266/36 +f 181/255/9 189/266/9 190/267/9 +f 184/256/37 189/266/37 183/260/37 +f 181/255/19 191/268/19 182/253/19 +f 195/264/12 200/269/12 199/270/12 +f 185/254/9 193/271/9 187/259/9 +f 187/259/38 196/263/38 188/261/38 +f 186/272/18 194/273/18 185/254/18 +f 198/274/7 200/275/7 197/276/7 +f 194/273/9 197/276/9 193/271/9 +f 193/271/39 200/269/39 196/263/39 +f 195/277/20 198/274/20 194/273/20 +f 204/278/8 202/279/8 201/265/8 +f 190/267/21 203/280/21 191/268/21 +f 191/281/12 204/282/12 192/262/12 +f 190/267/9 201/265/9 202/279/9 +f 205/283/7 208/284/7 206/285/7 +f 210/286/7 211/287/7 212/288/7 +f 213/289/7 216/290/7 214/291/7 +f 218/292/7 219/293/7 220/294/7 +f 221/295/7 224/296/7 222/297/7 +f 226/298/7 227/299/7 228/300/7 +f 229/301/7 232/302/7 230/303/7 +f 234/304/7 235/305/7 236/306/7 +f 237/307/7 240/308/7 238/309/7 +f 242/310/7 243/311/7 244/312/7 +f 245/313/7 248/314/7 246/315/7 +f 250/316/7 251/317/7 252/318/7 +f 253/319/7 256/320/7 254/321/7 +f 258/322/7 259/323/7 260/324/7 +f 262/325/40 265/326/40 261/327/40 +f 264/328/7 266/329/7 262/330/7 +f 263/331/8 265/326/8 267/332/8 +f 263/331/41 268/333/41 264/328/41 +f 270/334/40 273/335/40 269/336/40 +f 272/337/7 274/338/7 270/339/7 +f 271/340/8 273/335/8 275/341/8 +f 271/340/41 276/342/41 272/337/41 +f 278/343/40 281/344/40 277/345/40 +f 280/346/7 282/347/7 278/348/7 +f 279/349/8 281/344/8 283/350/8 +f 279/349/41 284/351/41 280/346/41 +f 286/352/40 289/353/40 285/354/40 +f 288/355/7 290/356/7 286/357/7 +f 287/358/8 289/353/8 291/359/8 +f 287/358/41 292/360/41 288/355/41 +f 294/361/42 295/362/42 293/363/42 +f 297/364/43 299/365/43 298/366/43 +f 296/367/44 297/364/44 295/362/44 +f 293/368/45 299/365/45 294/369/45 +f 294/370/7 300/371/7 296/372/7 +f 295/373/8 298/366/8 293/374/8 +f 305/375/9 308/376/9 306/377/9 +f 304/378/7 305/375/7 302/379/7 +f 302/380/4 306/377/4 301/381/4 +f 301/382/8 308/376/8 303/383/8 +f 303/384/3 307/385/3 304/386/3 +f 311/387/3 310/388/3 309/389/3 +f 316/390/38 310/388/38 312/391/38 +f 313/392/37 311/387/37 309/389/37 +f 320/393/39 314/394/39 316/390/39 +f 317/395/36 315/396/36 313/392/36 +f 315/396/46 323/397/46 311/387/46 +f 314/394/47 322/398/47 310/388/47 +f 323/397/32 312/391/32 311/387/32 +f 322/398/33 309/389/33 310/388/33 +f 321/399/48 313/392/48 309/389/48 +f 324/400/49 316/390/49 312/391/49 +f 315/396/50 319/401/50 327/402/50 +f 316/390/51 328/403/51 320/393/51 +f 313/392/52 325/404/52 317/395/52 +f 314/394/53 318/405/53 326/406/53 +f 332/407/8 329/408/8 330/409/8 +f 334/410/8 335/411/8 333/412/8 +f 340/413/8 337/414/8 338/415/8 +f 342/416/8 343/417/8 341/418/8 +f 348/419/8 345/420/8 346/421/8 +f 350/422/8 351/423/8 349/424/8 +f 356/425/8 353/426/8 354/427/8 +f 358/428/8 359/429/8 357/430/8 +f 364/431/8 361/432/8 362/433/8 +f 366/434/8 367/435/8 365/436/8 +f 372/437/8 369/438/8 370/439/8 +f 374/440/8 375/441/8 373/442/8 +f 380/443/8 377/444/8 378/445/8 +f 382/446/8 383/447/8 381/448/8 +f 4/1/1 12/449/1 14/2/1 +f 1/4/2 9/450/2 15/5/2 +f 11/7/3 12/449/3 4/1/3 +f 10/9/4 9/450/4 1/4/4 +f 16/11/5 11/7/5 3/8/5 +f 13/13/6 10/9/6 2/10/6 +f 14/2/7 13/13/7 5/14/7 +f 15/15/8 16/11/8 8/12/8 +f 11/19/9 16/451/9 15/452/9 +f 15/452/9 9/453/9 10/17/9 +f 10/17/9 13/454/9 14/18/9 +f 14/18/9 12/455/9 11/19/9 +f 11/19/9 15/452/9 10/17/9 +f 18/20/7 20/456/7 19/21/7 +f 21/23/8 24/31/8 23/24/8 +f 19/21/9 21/23/9 22/25/9 +f 33/26/10 180/457/10 179/27/10 +f 18/29/11 26/458/11 28/30/11 +f 18/29/12 23/24/12 24/31/12 +f 25/33/4 27/36/4 28/34/4 +f 17/22/13 22/25/13 27/36/13 +f 22/25/14 23/24/14 28/37/14 +f 17/22/15 25/459/15 26/39/15 +f 30/40/7 32/460/7 31/41/7 +f 33/26/8 36/28/8 35/43/8 +f 31/41/9 33/26/9 34/44/9 +f 21/23/10 176/461/10 175/45/10 +f 35/43/11 30/48/11 38/46/11 +f 30/48/12 35/43/12 36/28/12 +f 37/50/4 39/462/4 40/51/4 +f 34/44/13 39/462/13 37/50/13 +f 34/44/16 35/43/16 40/53/16 +f 29/42/17 37/463/17 38/55/17 +f 42/56/3 44/464/3 43/57/3 +f 45/59/4 48/63/4 47/60/4 +f 42/62/7 47/60/7 48/63/7 +f 43/65/8 45/59/8 46/61/8 +f 44/67/12 48/63/12 45/59/12 +f 41/58/9 46/61/9 47/60/9 +f 50/69/4 52/75/4 51/70/4 +f 53/72/3 56/78/3 55/73/3 +f 52/75/9 56/78/9 53/72/9 +f 49/71/12 54/465/12 55/76/12 +f 50/77/7 55/466/7 56/78/7 +f 51/70/8 53/72/8 54/79/8 +f 58/81/4 60/85/4 59/82/4 +f 58/81/18 62/87/18 64/84/18 +f 59/82/19 63/89/19 61/86/19 +f 62/87/20 66/100/20 68/88/20 +f 63/89/21 67/97/21 65/90/21 +f 63/89/22 59/82/22 71/91/22 +f 62/87/23 58/81/23 70/93/23 +f 60/85/24 72/96/24 71/91/24 +f 57/83/25 69/95/25 70/93/25 +f 61/86/26 73/99/26 69/95/26 +f 64/84/27 76/98/27 72/96/27 +f 77/101/25 90/122/25 91/102/25 +f 82/104/7 84/112/7 88/105/7 +f 78/103/4 82/116/4 81/107/4 +f 80/108/7 84/112/7 82/104/7 +f 77/101/8 81/107/8 83/110/8 +f 79/111/3 83/110/3 84/112/3 +f 87/113/9 88/105/9 85/114/9 +f 81/107/8 86/117/8 85/114/8 +f 83/110/32 85/114/32 88/105/32 +f 82/116/24 87/467/24 86/117/24 +f 89/118/12 92/121/12 91/119/12 +f 78/109/7 91/468/7 92/121/7 +f 77/101/8 79/111/8 89/118/8 +f 80/108/33 92/121/33 89/118/33 +f 93/123/25 106/144/25 107/124/25 +f 98/126/7 100/134/7 104/127/7 +f 94/125/4 98/138/4 97/129/4 +f 96/130/7 100/134/7 98/126/7 +f 93/123/8 97/129/8 99/132/8 +f 95/133/3 99/132/3 100/134/3 +f 103/135/9 104/127/9 101/136/9 +f 97/129/8 102/139/8 101/136/8 +f 99/132/32 101/136/32 104/127/32 +f 98/138/24 103/469/24 102/139/24 +f 105/140/12 108/143/12 107/141/12 +f 94/131/7 107/470/7 108/143/7 +f 93/123/8 95/133/8 105/140/8 +f 96/130/33 108/143/33 105/140/33 +f 109/145/25 122/166/25 123/146/25 +f 114/148/7 116/156/7 120/149/7 +f 110/147/4 114/160/4 113/151/4 +f 112/152/7 116/156/7 114/148/7 +f 109/145/8 113/151/8 115/154/8 +f 111/155/3 115/154/3 116/156/3 +f 119/157/9 120/149/9 117/158/9 +f 113/151/8 118/161/8 117/158/8 +f 115/154/32 117/158/32 120/149/32 +f 114/160/24 119/471/24 118/161/24 +f 121/162/12 124/165/12 123/163/12 +f 110/153/7 123/472/7 124/165/7 +f 109/145/8 111/155/8 121/162/8 +f 112/152/33 124/165/33 121/162/33 +f 125/167/25 138/188/25 139/168/25 +f 130/170/7 132/178/7 136/171/7 +f 126/169/4 130/182/4 129/173/4 +f 128/174/7 132/178/7 130/170/7 +f 125/167/8 129/173/8 131/176/8 +f 127/177/3 131/176/3 132/178/3 +f 135/179/9 136/171/9 133/180/9 +f 129/173/8 134/183/8 133/180/8 +f 131/176/32 133/180/32 136/171/32 +f 130/182/24 135/473/24 134/183/24 +f 137/184/12 140/187/12 139/185/12 +f 126/175/7 139/474/7 140/187/7 +f 125/167/8 127/177/8 137/184/8 +f 128/174/33 140/187/33 137/184/33 +f 141/189/25 154/210/25 155/190/25 +f 146/192/7 148/200/7 152/193/7 +f 142/191/4 146/204/4 145/195/4 +f 144/196/7 148/200/7 146/192/7 +f 141/189/8 145/195/8 147/198/8 +f 143/199/3 147/198/3 148/200/3 +f 151/201/9 152/193/9 149/202/9 +f 145/195/8 150/205/8 149/202/8 +f 147/198/32 149/202/32 152/193/32 +f 146/204/24 151/475/24 150/205/24 +f 153/206/12 156/209/12 155/207/12 +f 142/197/7 155/476/7 156/209/7 +f 141/189/8 143/199/8 153/206/8 +f 144/196/33 156/209/33 153/206/33 +f 158/211/4 162/477/4 161/212/4 +f 160/214/7 164/219/7 162/215/7 +f 157/213/8 161/212/8 163/217/8 +f 159/218/3 163/217/3 164/219/3 +f 166/220/4 170/478/4 169/221/4 +f 168/223/7 172/228/7 170/224/7 +f 165/222/8 169/221/8 171/226/8 +f 167/227/3 171/226/3 172/228/3 +f 161/229/9 162/479/9 164/230/9 +f 160/232/12 158/480/12 157/233/12 +f 168/235/12 166/481/12 165/236/12 +f 169/238/9 170/482/9 172/239/9 +f 173/241/3 175/483/3 176/242/3 +f 177/244/3 179/484/3 180/245/3 +f 19/21/34 20/456/34 173/247/34 +f 31/41/34 32/460/34 177/249/34 +f 24/31/35 175/485/35 173/251/35 +f 36/28/35 179/486/35 177/252/35 +f 19/21/9 174/243/9 176/242/9 +f 31/41/9 178/246/9 180/245/9 +f 182/253/4 186/272/4 185/254/4 +f 184/256/12 188/261/12 186/257/12 +f 181/255/9 185/254/9 187/259/9 +f 183/260/3 187/259/3 188/261/3 +f 182/258/12 191/281/12 192/262/12 +f 186/257/12 188/261/12 196/263/12 +f 192/262/36 204/282/36 201/265/36 +f 181/255/9 183/260/9 189/266/9 +f 184/256/37 192/262/37 189/266/37 +f 181/255/19 190/267/19 191/268/19 +f 195/264/12 196/263/12 200/269/12 +f 185/254/9 194/273/9 193/271/9 +f 187/259/38 193/271/38 196/263/38 +f 186/272/18 195/277/18 194/273/18 +f 198/274/7 199/487/7 200/275/7 +f 194/273/9 198/274/9 197/276/9 +f 193/271/39 197/276/39 200/269/39 +f 195/277/20 199/488/20 198/274/20 +f 204/278/8 203/489/8 202/279/8 +f 190/267/21 202/279/21 203/280/21 +f 191/281/12 203/490/12 204/282/12 +f 190/267/9 189/266/9 201/265/9 +f 205/283/7 207/491/7 208/284/7 +f 210/286/7 209/492/7 211/287/7 +f 213/289/7 215/493/7 216/290/7 +f 218/292/7 217/494/7 219/293/7 +f 221/295/7 223/495/7 224/296/7 +f 226/298/7 225/496/7 227/299/7 +f 229/301/7 231/497/7 232/302/7 +f 234/304/7 233/498/7 235/305/7 +f 237/307/7 239/499/7 240/308/7 +f 242/310/7 241/500/7 243/311/7 +f 245/313/7 247/501/7 248/314/7 +f 250/316/7 249/502/7 251/317/7 +f 253/319/7 255/503/7 256/320/7 +f 258/322/7 257/504/7 259/323/7 +f 262/325/40 266/505/40 265/326/40 +f 264/328/7 268/333/7 266/329/7 +f 263/331/8 261/327/8 265/326/8 +f 263/331/41 267/332/41 268/333/41 +f 270/334/40 274/506/40 273/335/40 +f 272/337/7 276/342/7 274/338/7 +f 271/340/8 269/336/8 273/335/8 +f 271/340/41 275/341/41 276/342/41 +f 278/343/40 282/507/40 281/344/40 +f 280/346/7 284/351/7 282/347/7 +f 279/349/8 277/345/8 281/344/8 +f 279/349/41 283/350/41 284/351/41 +f 286/352/40 290/508/40 289/353/40 +f 288/355/7 292/360/7 290/356/7 +f 287/358/8 285/354/8 289/353/8 +f 287/358/41 291/359/41 292/360/41 +f 294/361/42 296/367/42 295/362/42 +f 297/364/43 300/371/43 299/365/43 +f 296/367/44 300/371/44 297/364/44 +f 293/368/45 298/366/45 299/365/45 +f 294/370/7 299/365/7 300/371/7 +f 295/373/8 297/364/8 298/366/8 +f 305/375/9 307/385/9 308/376/9 +f 304/378/7 307/385/7 305/375/7 +f 302/380/4 305/375/4 306/377/4 +f 301/382/8 306/377/8 308/376/8 +f 303/384/3 308/376/3 307/385/3 +f 311/387/3 312/391/3 310/388/3 +f 316/390/38 314/394/38 310/388/38 +f 313/392/37 315/396/37 311/387/37 +f 320/393/39 318/405/39 314/394/39 +f 317/395/36 319/401/36 315/396/36 +f 315/396/46 327/402/46 323/397/46 +f 314/394/47 326/406/47 322/398/47 +f 323/397/32 324/400/32 312/391/32 +f 322/398/33 321/399/33 309/389/33 +f 321/399/48 325/404/48 313/392/48 +f 324/400/49 328/403/49 316/390/49 +f 332/407/8 331/509/8 329/408/8 +f 334/410/8 336/510/8 335/411/8 +f 340/413/8 339/511/8 337/414/8 +f 342/416/8 344/512/8 343/417/8 +f 348/419/8 347/513/8 345/420/8 +f 350/422/8 352/514/8 351/423/8 +f 356/425/8 355/515/8 353/426/8 +f 358/428/8 360/516/8 359/429/8 +f 364/431/8 363/517/8 361/432/8 +f 366/434/8 368/518/8 367/435/8 +f 372/437/8 371/519/8 369/438/8 +f 374/440/8 376/520/8 375/441/8 +f 380/443/8 379/521/8 377/444/8 +f 382/446/8 384/522/8 383/447/8 +o Radar +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -1.500000 4.500000 1.500000 +v 1.500000 4.500000 1.500000 +v -1.500000 4.500000 -1.500000 +v 1.500000 4.500000 -1.500000 +v -1.500000 5.000000 1.500000 +v 1.500000 5.000000 1.500000 +v -1.500000 5.000000 -1.500000 +v 1.500000 5.000000 -1.500000 +v -0.312500 5.000000 0.750000 +v 0.312500 5.000000 0.750000 +v -0.312500 5.000000 -0.750000 +v 0.312500 5.000000 -0.750000 +v 0.750000 5.000000 0.312500 +v 0.750000 5.000000 -0.312500 +v -0.750000 5.000000 0.312500 +v -0.750000 5.000000 -0.312500 +v -0.312500 5.500000 0.750000 +v 0.312500 5.500000 0.750000 +v -0.312500 5.500000 -0.750000 +v 0.312500 5.500000 -0.750000 +v 0.750000 5.500000 0.312500 +v 0.750000 5.500000 -0.312500 +v -0.750000 5.500000 0.312500 +v -0.750000 5.500000 -0.312500 +v -1.250000 5.875000 0.750000 +v 1.250000 5.875000 0.750000 +v -1.250000 5.875000 -0.750000 +v 1.250000 5.875000 -0.750000 +v 1.187500 5.000000 -0.687500 +v 1.312500 5.000000 -0.687500 +v 1.187500 5.000000 -0.812500 +v 1.312500 5.000000 -0.812500 +v 1.187500 6.000000 -0.812500 +v 1.187500 6.000000 -0.687500 +v 1.312500 6.000000 -0.687500 +v 1.312500 6.000000 -0.812500 +v 1.187500 5.000000 0.812500 +v 1.312500 5.000000 0.812500 +v 1.187500 5.000000 0.687500 +v 1.312500 5.000000 0.687500 +v 1.187500 6.000000 0.687500 +v 1.187500 6.000000 0.812500 +v 1.312500 6.000000 0.812500 +v 1.312500 6.000000 0.687500 +v -1.312500 5.000000 -0.687500 +v -1.187500 5.000000 -0.687500 +v -1.312500 5.000000 -0.812500 +v -1.187500 5.000000 -0.812500 +v -1.312500 6.000000 -0.812500 +v -1.312500 6.000000 -0.687500 +v -1.187500 6.000000 -0.687500 +v -1.187500 6.000000 -0.812500 +v -1.312500 5.000000 0.812500 +v -1.187500 5.000000 0.812500 +v -1.312500 5.000000 0.687500 +v -1.187500 5.000000 0.687500 +v -1.312500 6.000000 0.687500 +v -1.312500 6.000000 0.812500 +v -1.187500 6.000000 0.812500 +v -1.187500 6.000000 0.687500 +v -0.687500 5.000000 -1.187500 +v -0.687500 5.000000 -1.312500 +v -0.812500 5.000000 -1.187500 +v -0.812500 5.000000 -1.312500 +v -0.812500 6.000000 -1.187500 +v -0.687500 6.000000 -1.187500 +v -0.687500 6.000000 -1.312500 +v -0.812500 6.000000 -1.312500 +v 0.812500 5.000000 -1.187500 +v 0.812500 5.000000 -1.312500 +v 0.687500 5.000000 -1.187500 +v 0.687500 5.000000 -1.312500 +v 0.687500 6.000000 -1.187500 +v 0.812500 6.000000 -1.187500 +v 0.812500 6.000000 -1.312500 +v 0.687500 6.000000 -1.312500 +v -0.687500 5.000000 1.312500 +v -0.687500 5.000000 1.187500 +v -0.812500 5.000000 1.312500 +v -0.812500 5.000000 1.187500 +v -0.812500 6.000000 1.312500 +v -0.687500 6.000000 1.312500 +v -0.687500 6.000000 1.187500 +v -0.812500 6.000000 1.187500 +v 0.812500 5.000000 1.312500 +v 0.812500 5.000000 1.187500 +v 0.687500 5.000000 1.312500 +v 0.687500 5.000000 1.187500 +v 0.687500 6.000000 1.312500 +v 0.812500 6.000000 1.312500 +v 0.812500 6.000000 1.187500 +v 0.687500 6.000000 1.187500 +v 0.750000 5.875000 1.250000 +v 0.750000 5.875000 -1.250000 +v -0.750000 5.875000 1.250000 +v -0.750000 5.875000 -1.250000 +v -1.250000 5.750000 0.750000 +v 1.250000 5.750000 0.750000 +v -1.250000 5.750000 -0.750000 +v 1.250000 5.750000 -0.750000 +v 0.750000 5.750000 1.250000 +v 0.750000 5.750000 -1.250000 +v -0.750000 5.750000 1.250000 +v -0.750000 5.750000 -1.250000 +v -1.250000 5.500000 0.750000 +v 1.250000 5.500000 0.750000 +v -1.250000 5.500000 -0.750000 +v 1.250000 5.500000 -0.750000 +v 0.750000 5.500000 1.250000 +v 0.750000 5.500000 -1.250000 +v -0.750000 5.500000 1.250000 +v -0.750000 5.500000 -1.250000 +v -1.250000 5.375000 0.750000 +v 1.250000 5.375000 0.750000 +v -1.250000 5.375000 -0.750000 +v 1.250000 5.375000 -0.750000 +v 0.750000 5.375000 1.250000 +v 0.750000 5.375000 -1.250000 +v -0.750000 5.375000 1.250000 +v -0.750000 5.375000 -1.250000 +v -1.250000 1.000000 1.250000 +v -0.750000 1.000000 1.250000 +v -1.250000 1.000000 0.750000 +v -0.750000 1.000000 0.750000 +v -1.250000 4.500000 1.250000 +v -0.750000 4.500000 1.250000 +v -1.250000 4.500000 0.750000 +v -0.750000 4.500000 0.750000 +v 0.750000 1.000000 1.250000 +v 1.250000 1.000000 1.250000 +v 0.750000 1.000000 0.750000 +v 1.250000 1.000000 0.750000 +v 0.750000 4.500000 1.250000 +v 1.250000 4.500000 1.250000 +v 0.750000 4.500000 0.750000 +v 1.250000 4.500000 0.750000 +v -1.250000 1.000000 -0.750000 +v -0.750000 1.000000 -0.750000 +v -1.250000 1.000000 -1.250000 +v -0.750000 1.000000 -1.250000 +v -1.250000 4.500000 -0.750000 +v -0.750000 4.500000 -0.750000 +v -1.250000 4.500000 -1.250000 +v -0.750000 4.500000 -1.250000 +v 0.750000 1.000000 -0.750000 +v 1.250000 1.000000 -0.750000 +v 0.750000 1.000000 -1.250000 +v 1.250000 1.000000 -1.250000 +v 0.750000 4.500000 -0.750000 +v 1.250000 4.500000 -0.750000 +v 0.750000 4.500000 -1.250000 +v 1.250000 4.500000 -1.250000 +v -1.062500 1.000000 -0.750000 +v -0.937500 1.000000 0.750000 +v -1.062500 1.250000 -0.750000 +v -0.937500 1.250000 0.750000 +v -1.062500 2.500000 0.750000 +v -0.937500 2.500000 -0.750000 +v -1.062500 2.750000 0.750000 +v -0.937500 2.750000 -0.750000 +v -1.062500 2.750000 -0.750000 +v -0.937500 2.750000 0.750000 +v -1.062500 3.000000 -0.750000 +v -0.937500 3.000000 0.750000 +v -1.062500 4.250000 0.750000 +v -0.937500 4.250000 -0.750000 +v -1.062500 4.500000 0.750000 +v -0.937500 4.500000 -0.750000 +v 0.937500 4.500000 0.750000 +v 1.062500 4.500000 -0.750000 +v 0.937500 4.250000 0.750000 +v 1.062500 4.250000 -0.750000 +v 0.937500 3.000000 -0.750000 +v 1.062500 3.000000 0.750000 +v 0.937500 2.750000 -0.750000 +v 1.062500 2.750000 0.750000 +v 0.937500 2.750000 0.750000 +v 1.062500 2.750000 -0.750000 +v 0.937500 2.500000 0.750000 +v 1.062500 2.500000 -0.750000 +v 0.937500 1.250000 -0.750000 +v 1.062500 1.250000 0.750000 +v 0.937500 1.000000 -0.750000 +v 1.062500 1.000000 0.750000 +v 0.750000 1.000000 -1.062500 +v -0.750000 1.000000 -0.937500 +v 0.750000 1.250000 -1.062500 +v -0.750000 1.250000 -0.937500 +v -0.750000 2.500000 -1.062500 +v 0.750000 2.500000 -0.937500 +v -0.750000 2.750000 -1.062500 +v 0.750000 2.750000 -0.937500 +v 0.750000 2.750000 -1.062500 +v -0.750000 2.750000 -0.937500 +v 0.750000 3.000000 -1.062500 +v -0.750000 3.000000 -0.937500 +v -0.750000 4.250000 -1.062500 +v 0.750000 4.250000 -0.937500 +v -0.750000 4.500000 -1.062500 +v 0.750000 4.500000 -0.937500 +v -0.750000 4.500000 0.937500 +v 0.750000 4.500000 1.062500 +v -0.750000 4.250000 0.937500 +v 0.750000 4.250000 1.062500 +v 0.750000 3.000000 0.937500 +v -0.750000 3.000000 1.062500 +v 0.750000 2.750000 0.937500 +v -0.750000 2.750000 1.062500 +v -0.750000 2.750000 0.937500 +v 0.750000 2.750000 1.062500 +v -0.750000 2.500000 0.937500 +v 0.750000 2.500000 1.062500 +v 0.750000 1.250000 0.937500 +v -0.750000 1.250000 1.062500 +v 0.750000 1.000000 0.937500 +v -0.750000 1.000000 1.062500 +v -0.750000 5.375000 -1.250000 +v -0.750000 5.375000 1.250000 +v 0.750000 5.375000 -1.250000 +v 0.750000 5.375000 1.250000 +v 1.250000 5.375000 -0.750000 +v -1.250000 5.375000 -0.750000 +v 1.250000 5.375000 0.750000 +v -1.250000 5.375000 0.750000 +v -0.750000 5.500000 -1.250000 +v -0.750000 5.500000 1.250000 +v 0.750000 5.500000 -1.250000 +v 0.750000 5.500000 1.250000 +v 1.250000 5.500000 -0.750000 +v -1.250000 5.500000 -0.750000 +v 1.250000 5.500000 0.750000 +v -1.250000 5.500000 0.750000 +v -0.750000 5.750000 -1.250000 +v -0.750000 5.750000 1.250000 +v 0.750000 5.750000 -1.250000 +v 0.750000 5.750000 1.250000 +v 1.250000 5.750000 -0.750000 +v -1.250000 5.750000 -0.750000 +v 1.250000 5.750000 0.750000 +v -1.250000 5.750000 0.750000 +v -0.750000 5.875000 -1.250000 +v -0.750000 5.875000 1.250000 +v 0.750000 5.875000 -1.250000 +v 0.750000 5.875000 1.250000 +v 1.250000 5.875000 -0.750000 +v -1.250000 5.875000 -0.750000 +v 1.250000 5.875000 0.750000 +v -1.250000 5.875000 0.750000 +v -0.750000 1.000000 1.062500 +v 0.750000 1.000000 0.937500 +v -0.750000 1.250000 1.062500 +v 0.750000 1.250000 0.937500 +v 0.750000 2.500000 1.062500 +v -0.750000 2.500000 0.937500 +v 0.750000 2.750000 1.062500 +v -0.750000 2.750000 0.937500 +v -0.750000 2.750000 1.062500 +v 0.750000 2.750000 0.937500 +v -0.750000 3.000000 1.062500 +v 0.750000 3.000000 0.937500 +v 0.750000 4.250000 1.062500 +v -0.750000 4.250000 0.937500 +v 0.750000 4.500000 1.062500 +v -0.750000 4.500000 0.937500 +v 0.750000 4.500000 -0.937500 +v -0.750000 4.500000 -1.062500 +v 0.750000 4.250000 -0.937500 +v -0.750000 4.250000 -1.062500 +v -0.750000 3.000000 -0.937500 +v 0.750000 3.000000 -1.062500 +v -0.750000 2.750000 -0.937500 +v 0.750000 2.750000 -1.062500 +v 0.750000 2.750000 -0.937500 +v -0.750000 2.750000 -1.062500 +v 0.750000 2.500000 -0.937500 +v -0.750000 2.500000 -1.062500 +v -0.750000 1.250000 -0.937500 +v 0.750000 1.250000 -1.062500 +v -0.750000 1.000000 -0.937500 +v 0.750000 1.000000 -1.062500 +v 1.062500 1.000000 0.750000 +v 0.937500 1.000000 -0.750000 +v 1.062500 1.250000 0.750000 +v 0.937500 1.250000 -0.750000 +v 1.062500 2.500000 -0.750000 +v 0.937500 2.500000 0.750000 +v 1.062500 2.750000 -0.750000 +v 0.937500 2.750000 0.750000 +v 1.062500 2.750000 0.750000 +v 0.937500 2.750000 -0.750000 +v 1.062500 3.000000 0.750000 +v 0.937500 3.000000 -0.750000 +v 1.062500 4.250000 -0.750000 +v 0.937500 4.250000 0.750000 +v 1.062500 4.500000 -0.750000 +v 0.937500 4.500000 0.750000 +v -0.937500 4.500000 -0.750000 +v -1.062500 4.500000 0.750000 +v -0.937500 4.250000 -0.750000 +v -1.062500 4.250000 0.750000 +v -0.937500 3.000000 0.750000 +v -1.062500 3.000000 -0.750000 +v -0.937500 2.750000 0.750000 +v -1.062500 2.750000 -0.750000 +v -0.937500 2.750000 -0.750000 +v -1.062500 2.750000 0.750000 +v -0.937500 2.500000 -0.750000 +v -1.062500 2.500000 0.750000 +v -0.937500 1.250000 0.750000 +v -1.062500 1.250000 -0.750000 +v -0.937500 1.000000 0.750000 +v -1.062500 1.000000 -0.750000 +vt 0.000000 0.000000 +vt 0.181818 0.400000 +vt 0.000000 0.400000 +vt 0.181818 0.533333 +vt 0.000000 0.933333 +vt 0.000000 0.533333 +vt 0.181818 0.400000 +vt 0.000000 0.533333 +vt 0.000000 0.400000 +vt 0.181818 0.400000 +vt 0.000000 0.533333 +vt 0.000000 0.400000 +vt 0.181818 0.400000 +vt 0.000000 0.533333 +vt 0.000000 0.400000 +vt 0.181818 0.000000 +vt 0.363636 0.400000 +vt 0.181818 0.400000 +vt 0.363636 0.466667 +vt 0.181818 0.866667 +vt 0.181818 0.466667 +vt 0.363636 0.400000 +vt 0.181818 0.466667 +vt 0.181818 0.400000 +vt 0.363636 0.400000 +vt 0.181818 0.466667 +vt 0.181818 0.400000 +vt 0.363636 0.400000 +vt 0.181818 0.466667 +vt 0.181818 0.400000 +vt 0.674242 0.066667 +vt 0.636364 0.000000 +vt 0.674242 0.000000 +vt 0.522727 0.066667 +vt 0.484848 0.000000 +vt 0.522727 0.000000 +vt 0.712121 0.000000 +vt 0.560606 0.000000 +vt 0.750000 0.000000 +vt 0.712121 0.066667 +vt 0.598485 0.000000 +vt 0.560606 0.066667 +vt 0.598485 0.066667 +vt 0.787879 0.000000 +vt 0.750000 0.066667 +vt 0.511364 0.266667 +vt 0.484848 0.125000 +vt 0.549242 0.066667 +vt 0.378788 0.666667 +vt 0.371212 0.683333 +vt 0.371212 0.666667 +vt 0.378788 0.666667 +vt 0.371212 0.683333 +vt 0.371212 0.666667 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.378788 0.666667 +vt 0.371212 0.683333 +vt 0.371212 0.666667 +vt 0.378788 0.666667 +vt 0.371212 0.683333 +vt 0.371212 0.666667 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.378788 0.683333 +vt 0.371212 0.666667 +vt 0.378788 0.666667 +vt 0.378788 0.683333 +vt 0.371212 0.666667 +vt 0.378788 0.666667 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.378788 0.683333 +vt 0.371212 0.666667 +vt 0.378788 0.666667 +vt 0.378788 0.683333 +vt 0.371212 0.666667 +vt 0.378788 0.666667 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.371212 0.533333 +vt 0.363636 0.666667 +vt 0.363636 0.533333 +vt 0.386364 0.533333 +vt 0.378788 0.533333 +vt 0.393939 0.533333 +vt 0.386364 0.666667 +vt 0.454545 0.516667 +vt 0.484848 0.533333 +vt 0.454545 0.533333 +vt 0.454545 0.516667 +vt 0.484848 0.533333 +vt 0.454545 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.363636 0.516667 +vt 0.454545 0.533333 +vt 0.363636 0.533333 +vt 0.484848 0.516667 +vt 0.484848 0.533333 +vt 0.454545 0.533333 +vt 0.484848 0.516667 +vt 0.484848 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.454545 0.500000 +vt 0.484848 0.516667 +vt 0.454545 0.516667 +vt 0.454545 0.500000 +vt 0.484848 0.516667 +vt 0.454545 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.363636 0.500000 +vt 0.454545 0.516667 +vt 0.363636 0.516667 +vt 0.484848 0.500000 +vt 0.484848 0.516667 +vt 0.454545 0.516667 +vt 0.484848 0.500000 +vt 0.484848 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.454545 -0.000000 +vt 0.424242 0.466667 +vt 0.424242 -0.000000 +vt 0.393939 -0.000000 +vt 0.363636 0.466667 +vt 0.363636 -0.000000 +vt 0.484848 -0.000000 +vt 0.454545 0.466667 +vt 0.454545 -0.000000 +vt 0.424242 -0.000000 +vt 0.393939 0.466667 +vt 0.393939 -0.000000 +vt 0.363636 0.466667 +vt 0.363636 -0.000000 +vt 0.424242 0.466667 +vt 0.484848 -0.000000 +vt 0.454545 0.466667 +vt 0.393939 0.466667 +vt 0.424242 -0.000000 +vt 0.393939 0.466667 +vt 0.393939 -0.000000 +vt 0.484848 -0.000000 +vt 0.454545 0.466667 +vt 0.454545 -0.000000 +vt 0.393939 -0.000000 +vt 0.363636 0.466667 +vt 0.363636 -0.000000 +vt 0.454545 -0.000000 +vt 0.424242 0.466667 +vt 0.424242 -0.000000 +vt 0.393939 0.466667 +vt 0.484848 -0.000000 +vt 0.454545 0.466667 +vt 0.424242 0.466667 +vt 0.363636 0.466667 +vt 0.363636 -0.000000 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.500000 +vt 0.454545 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.454545 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.484848 0.500000 +vt 0.484848 0.516667 +vt 0.484848 0.500000 +vt 0.454545 0.516667 +vt 0.484848 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.454545 0.516667 +vt 0.363636 0.500000 +vt 0.363636 0.516667 +vt 0.484848 0.516667 +vt 0.454545 0.500000 +vt 0.484848 0.516667 +vt 0.454545 0.500000 +vt 0.454545 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.454545 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.484848 0.516667 +vt 0.484848 0.533333 +vt 0.484848 0.516667 +vt 0.454545 0.533333 +vt 0.484848 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.454545 0.533333 +vt 0.363636 0.516667 +vt 0.363636 0.533333 +vt 0.484848 0.533333 +vt 0.454545 0.516667 +vt 0.484848 0.533333 +vt 0.454545 0.516667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.454545 0.466667 +vt 0.363636 0.500000 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.454545 0.500000 +vt 0.363636 0.500000 +vt 0.181818 0.000000 +vt 0.181818 0.933333 +vt 0.181818 0.533333 +vt 0.181818 0.533333 +vt 0.181818 0.533333 +vt 0.363636 0.000000 +vt 0.363636 0.866667 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.363636 0.466667 +vt 0.636364 0.066667 +vt 0.484848 0.066667 +vt 0.787879 0.066667 +vt 0.575758 0.125000 +vt 0.575758 0.208333 +vt 0.549242 0.266667 +vt 0.484848 0.208333 +vt 0.511364 0.066667 +vt 0.378788 0.683333 +vt 0.378788 0.683333 +vt 0.393939 0.666667 +vt 0.393939 0.666667 +vt 0.378788 0.683333 +vt 0.378788 0.683333 +vt 0.393939 0.666667 +vt 0.393939 0.666667 +vt 0.371212 0.683333 +vt 0.371212 0.683333 +vt 0.393939 0.666667 +vt 0.393939 0.666667 +vt 0.371212 0.683333 +vt 0.371212 0.683333 +vt 0.393939 0.666667 +vt 0.393939 0.666667 +vt 0.484848 0.516667 +vt 0.484848 0.516667 +vt 0.454545 0.516667 +vt 0.454545 0.516667 +vt 0.484848 0.500000 +vt 0.484848 0.500000 +vt 0.454545 0.500000 +vt 0.454545 0.500000 +vt 0.484848 0.466667 +vt 0.484848 0.466667 +vt 0.484848 0.466667 +vt 0.484848 0.466667 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.500000 +vt 0.484848 0.500000 +vt 0.484848 0.500000 +vt 0.454545 0.516667 +vt 0.454545 0.516667 +vt 0.484848 0.516667 +vt 0.484848 0.516667 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vt 0.454545 0.500000 +vt 0.454545 0.466667 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.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 +s off +f 387/523/54 386/524/54 385/525/54 +f 390/526/55 391/527/55 389/528/55 +f 385/529/56 391/530/56 387/531/56 +f 387/532/57 392/533/57 388/534/57 +f 386/524/58 389/528/58 385/525/58 +f 388/535/59 390/536/59 386/537/59 +f 395/538/54 394/539/54 393/540/54 +f 398/541/55 399/542/55 397/543/55 +f 393/544/56 399/545/56 395/546/56 +f 395/547/57 400/548/57 396/549/57 +f 394/539/58 397/543/58 393/540/58 +f 396/550/59 398/551/59 394/552/59 +f 412/553/60 406/554/60 404/555/60 +f 409/556/61 407/557/61 401/558/61 +f 403/559/57 412/553/57 404/555/57 +f 402/560/58 409/556/58 401/558/58 +f 408/561/62 411/562/62 403/559/62 +f 405/563/63 410/564/63 402/560/63 +f 406/554/59 413/565/59 405/563/59 +f 407/566/56 416/567/56 408/561/56 +f 410/568/55 414/569/55 411/570/55 +f 435/571/55 433/572/55 434/573/55 +f 427/574/55 425/575/55 426/576/55 +f 423/577/57 428/578/57 424/579/57 +f 422/580/58 426/576/58 421/581/58 +f 424/579/59 427/574/59 422/580/59 +f 421/581/56 425/582/56 423/583/56 +f 431/584/57 436/585/57 432/586/57 +f 430/587/58 434/573/58 429/588/58 +f 432/586/59 435/571/59 430/587/59 +f 429/588/56 433/589/56 431/590/56 +f 451/591/55 449/592/55 450/593/55 +f 443/594/55 441/595/55 442/596/55 +f 439/597/57 444/598/57 440/599/57 +f 438/600/58 442/596/58 437/601/58 +f 440/599/59 443/594/59 438/600/59 +f 437/601/56 441/602/56 439/603/56 +f 447/604/57 452/605/57 448/606/57 +f 446/607/58 450/593/58 445/608/58 +f 448/606/59 451/591/59 446/607/59 +f 445/608/56 449/609/56 447/610/56 +f 467/611/55 465/612/55 466/613/55 +f 459/614/55 457/615/55 458/616/55 +f 455/617/56 460/618/56 456/619/56 +f 454/620/59 458/616/59 453/621/59 +f 456/622/57 459/623/57 454/620/57 +f 453/621/58 457/615/58 455/617/58 +f 463/624/56 468/625/56 464/626/56 +f 462/627/59 466/613/59 461/628/59 +f 464/629/57 467/630/57 462/627/57 +f 461/628/58 465/612/58 463/624/58 +f 483/631/55 481/632/55 482/633/55 +f 475/634/55 473/635/55 474/636/55 +f 471/637/56 476/638/56 472/639/56 +f 470/640/59 474/636/59 469/641/59 +f 472/642/57 475/643/57 470/640/57 +f 469/641/58 473/635/58 471/637/58 +f 479/644/56 484/645/56 480/646/56 +f 478/647/59 482/633/59 477/648/59 +f 480/649/57 483/650/57 478/647/57 +f 477/648/58 481/632/58 479/644/58 +f 492/651/60 486/652/60 420/653/60 +f 489/654/61 487/655/61 417/656/61 +f 490/657/59 420/653/59 418/658/59 +f 495/659/58 485/660/58 487/661/58 +f 485/660/63 490/662/63 418/663/63 +f 488/664/62 491/665/62 419/666/62 +f 491/667/56 417/656/56 419/668/56 +f 494/669/57 488/664/57 486/670/57 +f 508/671/60 502/672/60 500/673/60 +f 505/674/61 503/675/61 497/676/61 +f 506/677/59 500/673/59 498/678/59 +f 511/679/58 501/680/58 503/681/58 +f 501/680/63 506/682/63 498/683/63 +f 504/684/62 507/685/62 499/686/62 +f 507/687/56 497/676/56 499/688/56 +f 510/689/57 504/684/57 502/690/57 +f 524/691/59 526/692/59 522/693/59 +f 521/694/56 527/695/56 523/696/56 +f 516/697/59 518/698/59 514/699/59 +f 513/700/56 519/701/56 515/702/56 +f 515/702/57 520/703/57 516/704/57 +f 514/699/58 517/705/58 513/700/58 +f 523/706/57 528/707/57 524/691/57 +f 522/693/58 525/708/58 521/694/58 +f 540/709/59 542/710/59 538/711/59 +f 537/712/56 543/713/56 539/714/56 +f 532/715/59 534/716/59 530/717/59 +f 529/718/56 535/719/56 531/720/56 +f 531/720/57 536/721/57 532/715/57 +f 530/722/58 533/723/58 529/718/58 +f 539/714/57 544/724/57 540/709/57 +f 538/711/58 541/725/58 537/726/58 +f 550/727/59 548/728/59 546/729/59 +f 547/730/59 549/731/59 545/732/59 +f 558/733/59 556/734/59 554/735/59 +f 555/736/59 557/737/59 553/738/59 +f 566/739/56 564/740/56 568/741/56 +f 563/742/56 565/743/56 567/744/56 +f 574/745/56 572/746/56 576/747/56 +f 571/748/56 573/749/56 575/750/56 +f 582/751/58 580/752/58 578/753/58 +f 579/754/58 581/755/58 577/756/58 +f 590/757/58 588/758/58 586/759/58 +f 587/760/58 589/761/58 585/762/58 +f 598/763/57 596/764/57 600/765/57 +f 595/766/57 597/767/57 599/768/57 +f 606/769/57 604/770/57 608/771/57 +f 603/772/57 605/773/57 607/774/57 +f 617/775/58 611/776/58 619/777/58 +f 624/778/59 614/779/59 622/780/59 +f 614/781/63 617/775/63 622/782/63 +f 615/783/62 620/784/62 623/785/62 +f 620/784/57 610/786/57 618/787/57 +f 621/788/56 615/789/56 623/790/56 +f 618/791/60 616/792/60 624/778/60 +f 619/793/61 613/794/61 621/788/61 +f 633/795/58 627/796/58 635/797/58 +f 640/798/59 630/799/59 638/800/59 +f 630/801/63 633/795/63 638/802/63 +f 631/803/62 636/804/62 639/805/62 +f 636/804/57 626/806/57 634/807/57 +f 637/808/56 631/809/56 639/810/56 +f 634/811/60 632/812/60 640/798/60 +f 635/813/61 629/814/61 637/808/61 +f 644/815/58 646/816/58 642/817/58 +f 645/818/58 643/819/58 641/820/58 +f 652/821/58 654/822/58 650/823/58 +f 653/824/58 651/825/58 649/826/58 +f 660/827/57 662/828/57 664/829/57 +f 661/830/57 659/831/57 663/832/57 +f 668/833/57 670/834/57 672/835/57 +f 669/836/57 667/837/57 671/838/57 +f 676/839/59 678/840/59 674/841/59 +f 677/842/59 675/843/59 673/844/59 +f 684/845/59 686/846/59 682/847/59 +f 685/848/59 683/849/59 681/850/59 +f 692/851/56 694/852/56 696/853/56 +f 693/854/56 691/855/56 695/856/56 +f 700/857/56 702/858/56 704/859/56 +f 701/860/56 699/861/56 703/862/56 +f 387/523/54 388/863/54 386/524/54 +f 390/526/55 392/864/55 391/527/55 +f 385/529/56 389/865/56 391/530/56 +f 387/532/57 391/866/57 392/533/57 +f 386/524/58 390/526/58 389/528/58 +f 388/535/59 392/867/59 390/536/59 +f 395/538/54 396/868/54 394/539/54 +f 398/541/55 400/869/55 399/542/55 +f 393/544/56 397/870/56 399/545/56 +f 395/547/57 399/871/57 400/548/57 +f 394/539/58 398/541/58 397/543/58 +f 396/550/59 400/872/59 398/551/59 +f 412/553/60 414/873/60 406/554/60 +f 409/556/61 415/874/61 407/557/61 +f 403/559/57 411/562/57 412/553/57 +f 402/560/58 410/564/58 409/556/58 +f 408/561/62 416/567/62 411/562/62 +f 405/563/63 413/565/63 410/564/63 +f 406/554/59 414/873/59 413/565/59 +f 407/566/56 415/875/56 416/567/56 +f 411/570/55 416/876/55 415/877/55 +f 415/877/55 409/878/55 410/568/55 +f 410/568/55 413/879/55 414/569/55 +f 414/569/55 412/880/55 411/570/55 +f 411/570/55 415/877/55 410/568/55 +f 435/571/55 436/881/55 433/572/55 +f 427/574/55 428/882/55 425/575/55 +f 423/577/57 425/883/57 428/578/57 +f 422/580/58 427/574/58 426/576/58 +f 424/579/59 428/578/59 427/574/59 +f 421/581/56 426/576/56 425/582/56 +f 431/584/57 433/884/57 436/585/57 +f 430/587/58 435/571/58 434/573/58 +f 432/586/59 436/585/59 435/571/59 +f 429/588/56 434/573/56 433/589/56 +f 451/591/55 452/885/55 449/592/55 +f 443/594/55 444/886/55 441/595/55 +f 439/597/57 441/887/57 444/598/57 +f 438/600/58 443/594/58 442/596/58 +f 440/599/59 444/598/59 443/594/59 +f 437/601/56 442/596/56 441/602/56 +f 447/604/57 449/888/57 452/605/57 +f 446/607/58 451/591/58 450/593/58 +f 448/606/59 452/605/59 451/591/59 +f 445/608/56 450/593/56 449/609/56 +f 467/611/55 468/889/55 465/612/55 +f 459/614/55 460/890/55 457/615/55 +f 455/617/56 457/615/56 460/618/56 +f 454/620/59 459/623/59 458/616/59 +f 456/622/57 460/891/57 459/623/57 +f 453/621/58 458/616/58 457/615/58 +f 463/624/56 465/612/56 468/625/56 +f 462/627/59 467/630/59 466/613/59 +f 464/629/57 468/892/57 467/630/57 +f 461/628/58 466/613/58 465/612/58 +f 483/631/55 484/893/55 481/632/55 +f 475/634/55 476/894/55 473/635/55 +f 471/637/56 473/635/56 476/638/56 +f 470/640/59 475/643/59 474/636/59 +f 472/642/57 476/895/57 475/643/57 +f 469/641/58 474/636/58 473/635/58 +f 479/644/56 481/632/56 484/645/56 +f 478/647/59 483/650/59 482/633/59 +f 480/649/57 484/896/57 483/650/57 +f 477/648/58 482/633/58 481/632/58 +f 492/651/60 494/897/60 486/652/60 +f 489/654/61 495/898/61 487/655/61 +f 490/657/59 492/651/59 420/653/59 +f 495/659/58 493/899/58 485/660/58 +f 485/660/63 493/899/63 490/662/63 +f 488/664/62 496/900/62 491/665/62 +f 491/667/56 489/654/56 417/656/56 +f 494/669/57 496/900/57 488/664/57 +f 508/671/60 510/901/60 502/672/60 +f 505/674/61 511/902/61 503/675/61 +f 506/677/59 508/671/59 500/673/59 +f 511/679/58 509/903/58 501/680/58 +f 501/680/63 509/903/63 506/682/63 +f 504/684/62 512/904/62 507/685/62 +f 507/687/56 505/674/56 497/676/56 +f 510/689/57 512/904/57 504/684/57 +f 524/691/59 528/707/59 526/692/59 +f 521/694/56 525/708/56 527/695/56 +f 516/697/59 520/905/59 518/698/59 +f 513/700/56 517/705/56 519/701/56 +f 515/702/57 519/701/57 520/703/57 +f 514/699/58 518/698/58 517/705/58 +f 523/706/57 527/906/57 528/707/57 +f 522/693/58 526/692/58 525/708/58 +f 540/709/59 544/724/59 542/710/59 +f 537/712/56 541/907/56 543/713/56 +f 532/715/59 536/721/59 534/716/59 +f 529/718/56 533/723/56 535/719/56 +f 531/720/57 535/719/57 536/721/57 +f 530/722/58 534/908/58 533/723/58 +f 539/714/57 543/713/57 544/724/57 +f 538/711/58 542/710/58 541/725/58 +f 550/727/59 552/909/59 548/728/59 +f 547/730/59 551/910/59 549/731/59 +f 558/733/59 560/911/59 556/734/59 +f 555/736/59 559/912/59 557/737/59 +f 566/739/56 562/913/56 564/740/56 +f 563/742/56 561/914/56 565/743/56 +f 574/745/56 570/915/56 572/746/56 +f 571/748/56 569/916/56 573/749/56 +f 582/751/58 584/917/58 580/752/58 +f 579/754/58 583/918/58 581/755/58 +f 590/757/58 592/919/58 588/758/58 +f 587/760/58 591/920/58 589/761/58 +f 598/763/57 594/921/57 596/764/57 +f 595/766/57 593/922/57 597/767/57 +f 606/769/57 602/923/57 604/770/57 +f 603/772/57 601/924/57 605/773/57 +f 617/775/58 609/925/58 611/776/58 +f 624/778/59 616/792/59 614/779/59 +f 614/781/63 609/925/63 617/775/63 +f 615/783/62 612/926/62 620/784/62 +f 620/784/57 612/926/57 610/786/57 +f 621/788/56 613/794/56 615/789/56 +f 618/791/60 610/927/60 616/792/60 +f 619/793/61 611/928/61 613/794/61 +f 633/795/58 625/929/58 627/796/58 +f 640/798/59 632/812/59 630/799/59 +f 630/801/63 625/929/63 633/795/63 +f 631/803/62 628/930/62 636/804/62 +f 636/804/57 628/930/57 626/806/57 +f 637/808/56 629/814/56 631/809/56 +f 634/811/60 626/931/60 632/812/60 +f 635/813/61 627/932/61 629/814/61 +f 644/815/58 648/933/58 646/816/58 +f 645/818/58 647/934/58 643/819/58 +f 652/821/58 656/935/58 654/822/58 +f 653/824/58 655/936/58 651/825/58 +f 660/827/57 658/937/57 662/828/57 +f 661/830/57 657/938/57 659/831/57 +f 668/833/57 666/939/57 670/834/57 +f 669/836/57 665/940/57 667/837/57 +f 676/839/59 680/941/59 678/840/59 +f 677/842/59 679/942/59 675/843/59 +f 684/845/59 688/943/59 686/846/59 +f 685/848/59 687/944/59 683/849/59 +f 692/851/56 690/945/56 694/852/56 +f 693/854/56 689/946/56 691/855/56 +f 700/857/56 698/947/56 702/858/56 +f 701/860/56 697/948/56 699/861/56 diff --git a/src/main/resources/assets/hbm/textures/models/machines/radar_large.png b/src/main/resources/assets/hbm/textures/models/machines/radar_large.png new file mode 100644 index 0000000000000000000000000000000000000000..e59f207233e41bfb71ab00622da25d62e1e7acd6 GIT binary patch literal 6403 zcmZ8`bzD>N*Z;^(VvLZEkpdzmAVX>}T3Sp5Mkqt2b2LL5NkNg6kdP3O6lq3CgM^?U zF&ZW*F@D$Y_xU}4Jp1GBzV7|RIp=-i{W&+<#7KvphLZ*a0@3T~qRc=bG6-<*3!w(C z(EMjHz#pZDhTd%m@C$(0M}a`>je02LZQsnTtRa_KU2lAgg;sUb)+_CNw{9z`Tu>Xe z|7)u62+CbvR_Ur%%Ikj^{GK7KY$|@@LeIHsk6a-0ngP)6G>M04)khZB<8bxSZV%BZo%a^4F$Su7}UokD04OLktfPkb|kbg z#9xrXLA(CyJp^|s)0dY&($9C^Qe~?JTTJ<^K{T#2Qo@PM@@Lp7-^{A(kehVy^$@u+ zotuyW6hu8vDLOJf;pB`@Tk);jVMYhbecZ5E#ADlTEeJ7+yeBA`@Og4cQwNq29j$Yz zLmvdU#SiH8mWJ7FfoD2x$gAgsWNj=$N1ZCP>%!AS#N`{#A)z#r*awCG)POit0#NByaE6Ci<80zIAY{gn5L(wZ^c#^w252ig&fyJA zqt)h{u?{3O_xAMvEc!ZvjQ>o5Cf&nCWBwA^nB0OQR4GfLzJH-HNPodE=)CRO=i37s zGf$RhK0l4$TAcdvqoe#`o#$n3^M~#T$k5(=eT8)hr8);iKIQ2tSel+90-*x1-e?mNc^{ZBf!@CZ7Jp08`YZk9C?w338fWoZBY!_r5C$S~C? z*9)BG@~Y>IEBD>$qto-~gglIVq*8TFO+iPU*r%ErA#E*2Jt#UA{;i5dkmM(3aAOc% z4Ea43z38N+aVTM;RLopoL5ueqasCYY{hlq;-xYDRajDbn5H!9b!J&fMB$H+hkRmt^ z@n~(VCPlB@pd8Wqnz@fvd6(7cnG{U1CRD8$u1JIk3>*m~;&fxs_eHE)e%>t~Em~vn z*be2m<)y1s@yqJDGKoOBFti|4SLPL__W zq(PEwFIp75aEUBMmV3=}p88>}3jciXfCX$mV0Z{b`L-tPs0dwIl5PIpXf4W)(mLqx zGD@ozO*Qxhn~V{Na{ID3NDkx@c~@ARscZUG6)>oZ=gK>R`Xw^?urjPk>Qd%al_>Eo z`3WW;I$*Le!eb>46e9KYSioF3C~b3jM@Q9YU35K0>BpaS#O>#mB@yVC=m&VSCrdkp z5FO&#-?BdQI5Zv<&W%#sOixI25LW?fMA7WsH_=_n?2yZkF}0X}%4aI6SAse|zguY) zf3~Uklk)V#OM#%hx9?(87gth5!RVV%cDo>E^D1u459rJmYo<+qEn|&Af0-J;&^xec zVYAkO>viX)4uRGBNZghH3ez!ND#+-2;+jY9k!Jk`Y4X0{< zb=Yur=hDhfnIkWmYIT%u$#=aok9O~Qi!JbCr^SPZBDG)`9u4k4Knk>d@&vq-eI{cm z_LHf`IP!qIy?n&1m{r|GC%3f1Raxa>t_AlUnw=y1IId8Cm{5 zO0tOifQ9-Uz^kV=xIQ`9O$BEvRg!{#SnibFN)P) za|d)S?gJw#Me|H)YO?pE5aZf?=mr90f`x(vu+Y>*#}O0f;nHCsm!=NE!+P=viFX+U zVgqB>(l*{XIz|2TJQabt!=?|o|EweJKjwVq?3^gOOBGU5Y`MXr`JP=5K<>@|e+%U9 z<@^J9QCu8%vejKiQ#pB*OJg9jG^nM_cxC^4Qa;XfvXZuElpjI{vAIuo9>lk#`yQqO zp`h#z-y32AN{l|W8tERDQrEDUHj{YR>d`4P$M)71n)sh#I1c6^AW8RKIWki>#lkYy zM#f>yYlnvLbeyO@gYEY_LKzW8G8yT%mJRO0woSFQcl67})9VEb<=zomafN#K?Q5Qc z%hRX^8~9{GQ2X$LX6^hpnV&z)yKhc?G$Zu*EOO@p(gZGMu8sa@Wxs}?^Tv9&Me1lB zW-XwEK#t`h-Djz7%;fXrmag}TI7U1Yj~eGg?O>_m{sW#PV%mFVbfBrZIh9l=Q15T) z`#sC>TOFde7&P)nj)k-+s|Tf@o%OxCYWw_o{Mn(;oGywnNVQK@nOEd!z~A9WknH~y z0`gg|eKq#Dwms!#Y3|7v6Qib`a+v>M;#Q!N*Ut&2xwj&r!Ju*dk!OtQ5X<7p!3O!R zc{C=Dg6e~ z**FY4qY7le^M5v&t#`Atr!hHHO!Rq^lB}^0-!w>Y8R+KCnqf5A-6;VA z_qv<=#6nuAA^pf(XEmCJAq~|8>jhwe9FwcfK& z8a$bqMl$Q^wty9IJp#67lqM_nLhetl!QWvIPWGZymyGYy}}2AIwX1(*|WM3Y<0-6 zHM*3!h<7>d8WuX$Td7-pCXw)+KkUC@XF4v~)ss(vAHap;WX}HXTu>+yuV2JJG2ZQO z$-J|ucbM{x@3FIU1#3fq`G0ZQ-78@e+gnBGszAbxXPMO~g1jbzN$(%FT2pKO8!k2d z6F`L<>Q$dU;c`f4 zY$YVP7pm`vvBw#45x)k#V@~4+b~~xz!&H`+$4dyL$@5Nzvr8Z#N%x14>qwOEVP^vO zk_Vkx+&@d`6jKxT*Ty>4T1Ef-^cP47JSMSqylg3T<3MzF%*io!)oAXEOkX(<+OQIO z`N7tH!Xpt2V;XF*_AtS8VLmT&fkg8)x30WVs|e33q-Io&u1>_OZd?BTWqROyruHFV zyhKN}TG1+3Rjhk{r8zVk*LDvz)K<#_3M&7{NOhEW6kl%qGQNH6GFtGZ~0%&1q`Y*Gjmyt%>Mho%`rEEOf@2AjAdJjEJq7?4QYsF)kB;zoh8|1$FB1tRf=g?8zUElz2tU#y+*?%kYO|HpLBMFy%WrYKs4=6OFNO~c1va@y&)#m# z3l&9wc^7FO;>!PVlPLXS9eEp5iJ|Vu)J(pfa5Hgv+2Lbz^P|6fHw_C+6o?iPrFh{N z8_3%Zm4PS^-9_$pI}7c*DL*;c5K2<)_mC=QrNR${EG|L{-&5R4V`F6>=qhjc{N{QY-v;y^)-m$QG7aJ{4mX5IJAPRevb zwST{I*cmQ)^Yf#|ckIP~tQYPcv?2Y>I zG)8cf+vc+|c$5kTQGS4+6$$6#aeWEEGGCkjj)E6O zYn^opV$DB3Ig6BzoH9^}0$x=;*U_T-_dL$y*H2lrV#Rk{afrkqGHAunhe=ED$iLHg zzUG|HZ>yvD-kdkLFi|8nwRS6aqPi7t21CjSKn3741h{!J0AA=oBut~2kRU11LDPL>+ofy=Of7bc ztu@Q$oAm3Gikoj4+@{@Xcu_Bwyr4{&rmCu3foRjCYrRSeF{Om7IPG;LsCAN{hVt1k z_mqi(*l(%NP?#LH!o?FYp^UIFNx8{D~}2!D#})F-6fzY72FT|JfUr3BSp|{Mu9fY1@&$e>qr&i)Aj|RH_}1xZ*~!kxi( z=sr7dc_tMuN5nUqU_C-{s>7DnMt=Iw15UxDQQ@=f2*HTFO|in`?cazRWrlxqydJT~ zi2*z3`I(o*@}ic^xWC(ha`)Lm!6~oC?Q+|giU@x9nvT>jb8*HCm97b8CYN0dt(aMZpOGjS!w-ru#mpSLS*=HWS$vQ#$}7Z_iOUWQ>LmtxD$%=7>?4=A=!5-gCaP2O zIpo!@zvg@Hn?0I8Jf864#S08y`z^TUMZx8WYP@jC0laZ{jC@=1c%@yo@u;p1Cv33& zN3%(}Fp!NxB~tQCg)eD{l9OR^WfBWpuCA{yHrlRHg1NOH8nWn&aBCwVC16G)=4bd& z%(2fe5`dctNDe}5X{e$jZ<&tv=l$B^$=klHPZ4HHL+W@MJbU0{ALK*i{+3A3PnqiB zI)p=4CGB0;2U-DpPh%EhrM|-5hbZTBmKN@;)zEoBo2?Sm%OW2ONQ!g0*oymGzLV@S z`|!e)reCg&t_aJ}{x;t}ILz{6BK<9(F2@KeCJ8plT+zF%tq2|n?aQH6 zoMfaADlMO`<&oBY#Y;)=jdkbv1I9w(Uk!nNfNk%(P>qLZWFw21#TVy)4G*XLBh2JL z9+`7)yHsn*6(^=b-LSu^SW!7=^0B$_$d<*Za#GO1z(7EPl-#Z7NH9?*8sU#+?WY%+ zmf=cU3W|gvi1C>ULmH;NHjtirOq$xKi^ltona1srDkpzKL}wO?vl|g<>d*EV{VWX# zK*mYnu&Mzs=9hlZ&|IWktr#stFo{sr%F9dJ|%LL?iI(wB|U=f*2 zC9l%Nu)*KIe-H2YogKR|T3g$Z+-ATg;sC0@v2=gJy(}lC;N-9VF_Yhk{TW0oE@S80C`R3@9wog**E(AFwP%y6|I}g~~kG`jJRg~5M{*iJ2N#?D<=|%O;pP6VC zYO=h2cJ9geRT-cgOMc-bdBFX}rp(&{uy^8%9yC=i+U~?7Klq83^ar$0XUy`x|H3Oqn@uM@*37Zti{mHWLVte zquD7>3!ZTKxN!HNdTW_@!!I5?OH5a(=p9^N7bgojIPj9$JeN&66|0_=xq5Bs?6if| zFl`4oF$GUL{w2Dt_c$a3?+x5ogWkT*GJRqC8OQ$0mZkTCf?Fl#tq=LNOTbqRke-$i KszSpi?Ee9C Date: Sun, 14 Jan 2024 20:02:31 +0100 Subject: [PATCH 15/16] fixed strandcaster UV --- changelog | 7 +- gradle.properties | 2 +- .../java/com/hbm/blocks/generic/BlockOre.java | 6 +- .../com/hbm/inventory/OreDictManager.java | 4 +- .../inventory/gui/GUIMachineStrandCaster.java | 106 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../render/tileentity/RenderRadarScreen.java | 1 + .../render/tileentity/RenderStrandCaster.java | 3 +- .../render/util/RenderAccessoryUtility.java | 4 + .../TileEntityMachineStrandCaster.java | 555 ++++---- src/main/resources/assets/hbm/lang/de_DE.lang | 4 + src/main/resources/assets/hbm/lang/en_US.lang | 4 + .../hbm/models/machines/strand_caster.obj | 1225 ++++++++++------- .../assets/hbm/textures/items/bottle_rad.png | Bin 293 -> 300 bytes .../hbm/textures/models/capes/CapeJame.png | Bin 0 -> 852 bytes 15 files changed, 1107 insertions(+), 816 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/capes/CapeJame.png diff --git a/changelog b/changelog index acd5b1383..beb97cf8c 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,8 @@ ## Added * Large Radar * A giant version of the radar with 3x the scan range +* Strand caster + * Watercooled foundry basin that processes large amounts of material at once ## Changed * Nuclear craters have been reworked @@ -23,7 +25,8 @@ * Trenchmaster general damage multiplier has been halved, making it twice as strong * Updated generation rules for layers like schist and hematite, they will now only replace things tagged as stone, just like most ores * Mushroom clouds now have two additional outer condensation rings, those are not entirely finished and are still subject to change -* Small radars are now a tad cheaper +* Small radars are now a lot cheaper +* Increased crucible pouring speed by 50% ## Fixed * Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes @@ -32,3 +35,5 @@ * Fixed large thermobaric artillery rocket still using the wrong slag block * Fixed some of the assembly templates having broken names due to using the wrong way of translating the output * Fixed the soyuz launcher's NEI construction recipe showing the wrong amount of blocks +* Fixed molten meteorite cobble dropping itself in addition to turning into lava +* Fixed S~Cola RAD not being radish-colored diff --git a/gradle.properties b/gradle.properties index e134592d6..a48d727f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4837 +mod_build_number=4844 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 97aae0c8c..269f6b037 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -205,6 +205,9 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_cobalt || this == ModBlocks.ore_nether_cobalt) { return ModItems.fragment_cobalt; } + if(this == ModBlocks.block_meteor_molten) { + return null; + } return Item.getItemFromBlock(this); } @@ -345,8 +348,7 @@ public class BlockOre extends Block { public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int i) { if(this == ModBlocks.block_meteor_molten) { - if(!world.isRemote) - world.setBlock(x, y, z, Blocks.lava); + if(!world.isRemote) world.setBlock(x, y, z, Blocks.lava); } } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index ee56d55cb..a5ffef0e6 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -314,8 +314,8 @@ public class OreDictManager { GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold); LAPIS.dust(powder_lapis); NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz).ore(Blocks.quartz_ore); - DIAMOND.dust(powder_diamond).ore(gravel_diamond); - EMERALD.dust(powder_emerald); + DIAMOND.dust(powder_diamond).ore(gravel_diamond, ore_sellafield_diamond); + EMERALD.dust(powder_emerald, ore_sellafield_emerald); /* * RADIOACTIVE diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java index a2e959621..f30b6d7a1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java @@ -2,7 +2,6 @@ package com.hbm.inventory.gui; import com.hbm.inventory.container.ContainerMachineStrandCaster; import com.hbm.inventory.material.Mats; -import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; import com.hbm.util.I18nUtil; @@ -21,78 +20,77 @@ import java.util.List; public class GUIMachineStrandCaster extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); - private TileEntityMachineStrandCaster caster; + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); + private TileEntityMachineStrandCaster caster; - public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { - super(new ContainerMachineStrandCaster(invPlayer, tedf)); - caster = tedf; + public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { + super(new ContainerMachineStrandCaster(invPlayer, tedf)); + caster = tedf; - this.xSize = 176; - this.ySize = 214; - } + this.xSize = 176; + this.ySize = 214; + } - @Override - public void drawScreen(int x, int y, float interp) { - super.drawScreen(x, y, interp); + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); - drawStackInfo(x, y, 16, 17); + drawStackInfo(x, y, 16, 17); - caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); - caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24); - } + caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); + caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 65, 16, 24); + } - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); + 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_) { + @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); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (caster.amount != 0) { + if(caster.amount != 0) { - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - int targetHeight = Math.min((caster.amount) * 79 / caster.getCapacity(), 92); + int targetHeight = Math.min((caster.amount) * 79 / caster.getCapacity(), 92); - int hex = caster.type.moltenColor; - //hex = 0xC18336; - Color color = new Color(hex); - GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor4f(1F, 1F, 1F, 0.3F); - drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); - GL11.glDisable(GL11.GL_BLEND); + int hex = caster.type.moltenColor; + // hex = 0xC18336; + Color color = new Color(hex); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor4f(1F, 1F, 1F, 0.3F); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); + GL11.glDisable(GL11.GL_BLEND); - } - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor3f(255, 255, 255); + } + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor3f(255, 255, 255); - caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); - caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24); + caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); + caster.steam.renderTank(guiLeft + 82, guiTop + 89, this.zLevel, 16, 24); - } + } + protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { - protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { + List list = new ArrayList(); - List list = new ArrayList(); - - if (caster.type == null) list.add(EnumChatFormatting.RED + "Empty"); - else - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); - } + if(caster.type == null) + list.add(EnumChatFormatting.RED + "Empty"); + else + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); + } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index a5cbbc5ea..89362f753 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4837)"; + public static final String VERSION = "1.0.27 BETA (4844)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java index 92342b53b..90130463e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java @@ -56,6 +56,7 @@ public class RenderRadarScreen extends TileEntitySpecialRenderer implements IIte GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glShadeModel(GL11.GL_SMOOTH); tess.draw(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java index 6d9579ab0..5655e97fc 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java +++ b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java @@ -16,7 +16,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; -import java.awt.*; import java.nio.DoubleBuffer; public class RenderStrandCaster extends TileEntitySpecialRenderer implements IItemRendererProvider { @@ -70,7 +69,7 @@ public class RenderStrandCaster extends TileEntitySpecialRenderer implements IIt buf.put(new double[] { 0, 0, -1, 0.5} ); buf.rewind(); GL11.glClipPlane(GL11.GL_CLIP_PLANE0, buf); - GL11.glTranslated(0,0,-offset + 3.4); + GL11.glTranslated(0,0,Math.max(-offset + 3.4, 0)); ResourceManager.strand_caster.renderPart("plate"); GL11.glDisable(GL11.GL_CLIP_PLANE0); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index 5b8d04cc7..7b99b1719 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -45,6 +45,7 @@ public class RenderAccessoryUtility { private static ResourceLocation vaer = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeVaer.png"); private static ResourceLocation adam = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeAdam.png"); private static ResourceLocation alcater = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeAlcater.png"); + private static ResourceLocation jame = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeJame.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -127,6 +128,9 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.Alcater)) { return alcater; } + if(uuid.equals(Library.ege444)) { + return jame; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 62f04d8e4..8a73e683f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -34,300 +34,299 @@ import net.minecraftforge.common.util.ForgeDirection; //god thank you bob for this base class public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor, ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { - public FluidTank water; - public FluidTank steam; + public FluidTank water; + public FluidTank steam; - public String getName() { - return "container.machineStrandCaster"; - } + public String getName() { + return "container.machineStrandCaster"; + } - @Override - public String getInventoryName() { - return getName(); - } + @Override + public String getInventoryName() { + return getName(); + } - public TileEntityMachineStrandCaster() { - super(7); - water = new FluidTank(Fluids.WATER, 64_000); - steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); - } + public TileEntityMachineStrandCaster() { + super(7); + water = new FluidTank(Fluids.WATER, 64_000); + steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); + } + @Override + public void updateEntity() { - @Override - public void updateEntity() { + if(!worldObj.isRemote) { - if (!worldObj.isRemote) { + if(this.lastType != this.type || this.lastAmount != this.amount) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + this.lastType = this.type; + this.lastAmount = this.amount; + } - if (this.lastType != this.type || this.lastAmount != this.amount) { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - this.lastType = this.type; - this.lastAmount = this.amount; - } + if(this.amount >= this.getCapacity()) { + // In case of overfill problems, spit out the excess as scrap + if(amount > getCapacity()) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount)); + EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); + worldObj.spawnEntityInWorld(item); + } + this.amount = this.getCapacity(); - if (this.amount >= this.getCapacity()) { - //In case of overfill problems, spit out the excess as scrap - if (amount > getCapacity()) { - ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount)); - EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); - worldObj.spawnEntityInWorld(item); - } - this.amount = this.getCapacity(); + } - } + if(this.amount == 0) { + this.type = null; + } - if (this.amount == 0) { - this.type = null; - } + this.updateConnections(); - this.updateConnections(); + ItemMold.Mold mold = this.getInstalledMold(); - ItemMold.Mold mold = this.getInstalledMold(); + if(canProcess()) { - if (canProcess()) { + int itemsCasted = Math.min(amount / mold.getCost(), 9); - int itemsCasted = Math.min(amount / mold.getCost(), 9); + for(int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); - for (int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); + ItemStack out = mold.getOutput(type); - ItemStack out = mold.getOutput(type); - - for (int i = 1; i < 7; i++) { - if (slots[i] == null) { - slots[i] = out.copy(); - break; - } - - if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } - - } - } - markChanged(); - - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); - } - } - - NBTTagCompound data = new NBTTagCompound(); - - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); - - } - - public boolean canProcess() { - ItemMold.Mold mold = this.getInstalledMold(); - if (type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { - for (int i = 1; i < 7; i++) { - if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) - return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); - - } - } - - return false; - } - - public DirPos[] getFluidConPos() { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - return new DirPos[]{ - new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), - new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), - new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), - new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ + dir.offsetZ * 5, rot.getOpposite()), - }; - } - - public int[][] getMetalPourPos() { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - return new int[][]{ - new int[]{xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ}, - new int[]{xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ}, - new int[]{xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ}, - new int[]{xCoord, yCoord + 2, zCoord}, - }; - } - - @Override - public ItemMold.Mold getInstalledMold() { - if (slots[0] == null) return null; - - if (slots[0].getItem() == ModItems.mold) { - return ((ItemMold) slots[0].getItem()).getMold(slots[0]); - } - - return null; - } - - @Override - public int getMoldSize() { - return getInstalledMold().size; - } - - @Override - public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { - - if (side != ForgeDirection.UP) return false; - for (int[] pos : getMetalPourPos()) { - if (pos[0] == x && pos[1] == y && pos[2] == z) { - return this.standardCheck(world, x, y, z, side, stack); - } - } - return false; - - } - - @Override - public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { - if (this.type != null && this.type != stack.material) return false; - return !(this.amount >= this.getCapacity() || getInstalledMold() == null); - } - - @Override - public int getCapacity() { - ItemMold.Mold mold = this.getInstalledMold(); - return mold == null ? 50000 : mold.getCost() * 10; - } - - private int getWaterRequired() { - return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 50; - } - - private void updateConnections() { - for (DirPos pos : getFluidConPos()) { - this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - } - for (DirPos pos : getFluidConPos()) { - sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - } - } - - @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[]{steam}; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[]{water}; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[]{water, steam}; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineStrandCaster(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineStrandCaster(player.inventory, this); - } - - public void networkPack(NBTTagCompound nbt, int range) { - if (!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - water.readFromNBT(nbt, "w"); - steam.readFromNBT(nbt, "s"); - - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - water.writeToNBT(nbt, "w"); - steam.writeToNBT(nbt, "s"); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - water.readFromNBT(nbt, "w"); - steam.readFromNBT(nbt, "s"); - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - - if (i == 0) { - return stack.getItem() == ModItems.mold; - } - - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } - - @Override - public int[] getAccessibleSlotsFromSide(int meta) { - return new int[]{1, 2, 3, 4, 5, 6}; - } - - public void markChanged() { - this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); - } - - @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) <= 128; - } - } - - - @Override - public boolean canInsertItem(int slot, ItemStack itemStack, int side) { - return this.isItemValidForSlot(slot, itemStack); - } - - @Override - public boolean canExtractItem(int slot, ItemStack itemStack, int side) { - return !this.isItemValidForSlot(slot, itemStack); - } - - AxisAlignedBB bb = null; - - @Override - public AxisAlignedBB getRenderBoundingBox() { - - if (bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 7, - yCoord, - zCoord - 7, - xCoord + 7, - yCoord + 3, - zCoord + 7 - ); - } - return bb; - } + for(int i = 1; i < 7; i++) { + if(slots[i] == null) { + slots[i] = out.copy(); + break; + } + if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + + } + } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + } + } + + NBTTagCompound data = new NBTTagCompound(); + + water.writeToNBT(data, "w"); + steam.writeToNBT(data, "s"); + + this.networkPack(data, 150); + + } + + public boolean canProcess() { + ItemMold.Mold mold = this.getInstalledMold(); + if(type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { + for(int i = 1; i < 7; i++) { + if(slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) + return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); + + } + } + + return false; + } + + public DirPos[] getFluidConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), + new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), + new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ + dir.offsetZ * 5, rot.getOpposite()) + }; + } + + public int[][] getMetalPourPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new int[][] { + new int[] { xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ }, + new int[] { xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ }, + new int[] { xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ }, + new int[] { xCoord, yCoord + 2, zCoord } + }; + } + + @Override + public ItemMold.Mold getInstalledMold() { + if(slots[0] == null) + return null; + + if(slots[0].getItem() == ModItems.mold) { + return ((ItemMold) slots[0].getItem()).getMold(slots[0]); + } + + return null; + } + + @Override + public int getMoldSize() { + return getInstalledMold().size; + } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { + + if(side != ForgeDirection.UP) + return false; + for(int[] pos : getMetalPourPos()) { + if(pos[0] == x && pos[1] == y && pos[2] == z) { + return this.standardCheck(world, x, y, z, side, stack); + } + } + return false; + + } + + @Override + public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { + if(this.type != null && this.type != stack.material) + return false; + return !(this.amount >= this.getCapacity() || getInstalledMold() == null); + } + + @Override + public int getCapacity() { + ItemMold.Mold mold = this.getInstalledMold(); + return mold == null ? 50000 : mold.getCost() * 10; + } + + private int getWaterRequired() { + return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 50; + } + + private void updateConnections() { + for(DirPos pos : getFluidConPos()) { + this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + for(DirPos pos : getFluidConPos()) { + sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] { steam }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { water }; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] { water, steam }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineStrandCaster(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineStrandCaster(player.inventory, this); + } + + public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) + PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + water.readFromNBT(nbt, "w"); + steam.readFromNBT(nbt, "s"); + + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + water.writeToNBT(nbt, "w"); + steam.writeToNBT(nbt, "s"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + water.readFromNBT(nbt, "w"); + steam.readFromNBT(nbt, "s"); + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + + if(i == 0) { + return stack.getItem() == ModItems.mold; + } + + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 1, 2, 3, 4, 5, 6 }; + } + + public void markChanged() { + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + @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) <= 128; + } + } + + @Override + public boolean canInsertItem(int slot, ItemStack itemStack, int side) { + return this.isItemValidForSlot(slot, itemStack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return !this.isItemValidForSlot(slot, itemStack); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 7, + yCoord, + zCoord - 7, + xCoord + 7, + yCoord + 3, + zCoord + 7); + } + return bb; + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5076c1fd6..d89423eae 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4299,6 +4299,10 @@ tile.ore_random.name=%s-Erz tile.ore_rare.name=Seltenerden-Erz tile.ore_reiium.name=Reiit tile.ore_schrabidium.name=Schrabidiumerz +tile.ore_sellafield_diamond.name=Sellafit-Diamanterz +tile.ore_sellafield_emerald.name=Sellafit-Smaragderz +tile.ore_sellafield_schrabidium.name=Sellafit-Schrabidiumerz +tile.ore_sellafield_uranium_scorched.name=Verschmortes Sellafit-Uranerz tile.ore_sulfur.name=Schwefelerz tile.ore_tektite_osmiridium.name=Osmiridiumreiches Tektit tile.ore_thorium.name=Thoriumerz diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e8a6504bc..37c9c6234 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5291,6 +5291,10 @@ tile.ore_random.name=%s Ore tile.ore_rare.name=Rare Earth Ore tile.ore_reiium.name=Reiite tile.ore_schrabidium.name=Schrabidium Ore +tile.ore_sellafield_diamond.name=Sellafite Diamond Ore +tile.ore_sellafield_emerald.name=Sellafite Emerald Ore +tile.ore_sellafield_schrabidium.name=Sellafite Schrabidium Ore +tile.ore_sellafield_uranium_scorched.name=Scorched Sellafite Uranium Ore tile.ore_sulfur.name=Sulfur Ore tile.ore_tektite_osmiridium.name=Osmiridium-Infused Tektite tile.ore_thorium.name=Thorium Ore diff --git a/src/main/resources/assets/hbm/models/machines/strand_caster.obj b/src/main/resources/assets/hbm/models/machines/strand_caster.obj index 2a009d538..eb3b63b98 100644 --- a/src/main/resources/assets/hbm/models/machines/strand_caster.obj +++ b/src/main/resources/assets/hbm/models/machines/strand_caster.obj @@ -1,11 +1,55 @@ -# Blender 3.6.1 +# Blender v2.79 (sub 0) OBJ File: 'strand_caster.blend' # www.blender.org -mtllib strand_caster.mtl +o plate +v -0.500000 0.937500 -1.500000 +v 0.500000 0.937500 -1.500000 +v -0.500000 0.937500 -5.250000 +v 0.500000 0.937500 -5.250000 +v -0.500000 1.062500 -5.250000 +v -0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -5.250000 +vt 0.890625 0.566667 +vt 0.656250 0.700000 +vt 0.656250 0.566667 +vt 0.656250 0.566667 +vt 0.890625 0.700000 +vt 0.656250 0.700000 +vt 0.664062 0.700000 +vt 0.656250 0.566667 +vt 0.664062 0.566667 +vt 0.890625 0.683333 +vt 0.656250 0.700000 +vt 0.656250 0.683333 +vt 0.656250 0.583333 +vt 0.890625 0.566667 +vt 0.890625 0.583333 +vt 0.890625 0.700000 +vt 0.890625 0.566667 +vt 0.656250 0.700000 +vt 0.890625 0.700000 +vt 0.656250 0.566667 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 3/7/3 8/8/3 4/9/3 +f 4/10/4 7/11/4 2/12/4 +f 1/13/5 5/14/5 3/15/5 +f 3/1/1 4/16/1 2/2/1 +f 7/4/2 8/17/2 5/5/2 +f 3/7/3 5/18/3 8/8/3 +f 4/10/4 8/19/4 7/11/4 +f 1/13/5 6/20/5 5/14/5 o caster v -1.000000 0.000000 1.000000 v 1.000000 0.000000 1.000000 -v -1.000000 -0.000000 -6.000000 -v 1.000000 -0.000000 -6.000000 +v -1.000000 0.000000 -6.000000 +v 1.000000 0.000000 -6.000000 v -1.000000 0.750000 -6.000000 v -1.000000 0.750000 1.000000 v 1.000000 0.750000 1.000000 @@ -32,12 +76,14 @@ v -0.750000 2.000000 -0.750000 v 0.750000 2.000000 -0.750000 v -0.750000 0.500000 -1.500000 v -0.750000 0.500000 0.750000 +v 0.750000 0.500000 0.750000 v 0.750000 0.500000 -1.500000 v -0.750000 0.750000 -5.750000 v -0.750000 0.750000 0.750000 v 0.750000 0.750000 0.750000 v 0.750000 0.750000 -5.750000 v -0.750000 0.500000 -5.750000 +v -0.750000 0.500000 0.750000 v 0.750000 0.500000 0.750000 v 0.750000 0.500000 -5.750000 v 0.750000 1.250000 -1.500000 @@ -266,8 +312,8 @@ v 0.750000 0.750000 -0.125000 v 0.750000 2.000000 -0.125000 v 0.838388 0.750000 -0.088388 v 0.838388 2.000000 -0.088388 -v 0.875000 0.750000 -0.000000 -v 0.875000 2.000000 -0.000000 +v 0.875000 0.750000 0.000000 +v 0.875000 2.000000 0.000000 v 0.838388 0.750000 0.088388 v 0.838388 2.000000 0.088388 v 0.750000 0.750000 0.125000 @@ -298,8 +344,8 @@ v -0.750000 0.750000 0.125000 v -0.750000 2.000000 0.125000 v -0.838388 0.750000 0.088388 v -0.838388 2.000000 0.088388 -v -0.875000 0.750000 -0.000000 -v -0.875000 2.000000 -0.000000 +v -0.875000 0.750000 0.000000 +v -0.875000 2.000000 0.000000 v -0.838388 0.750000 -0.088388 v -0.838388 2.000000 -0.088388 v -0.750000 0.750000 0.375000 @@ -322,49 +368,6 @@ v -0.875000 0.750000 -0.500000 v -0.875000 2.000000 -0.500000 v -0.838388 0.750000 -0.588388 v -0.838388 2.000000 -0.588388 -vn -0.0000 -1.0000 -0.0000 -vn -0.0000 1.0000 -0.0000 -vn -0.0000 -0.0000 -1.0000 -vn -0.0000 -0.0000 1.0000 -vn 1.0000 -0.0000 -0.0000 -vn -1.0000 -0.0000 -0.0000 -vn -0.0000 0.7071 -0.7071 -vn -0.0000 -0.7071 0.7071 -vn -0.0000 -0.7071 -0.7071 -vn -0.0000 0.7071 0.7071 -vn -0.7311 0.2611 0.6303 -vn -0.9955 -0.0000 -0.0949 -vn -0.9947 -0.0393 -0.0948 -vn -0.6333 -0.2962 -0.7150 -vn -0.0000 -0.3827 -0.9239 -vn 0.6333 -0.2962 -0.7150 -vn 0.9955 -0.0000 -0.0949 -vn 0.7311 0.2611 0.6303 -vn 0.9947 -0.0393 -0.0948 -vn -0.6630 -0.0000 -0.7486 -vn 0.6630 -0.0000 -0.7486 -vn 0.6794 0.4063 -0.6110 -vn 0.9987 0.0196 -0.0473 -vn 0.7574 -0.0000 0.6530 -vn -0.9987 0.0196 -0.0473 -vn -0.7263 -0.3800 0.5728 -vn -0.7574 -0.0000 0.6530 -vn -0.6794 0.4063 -0.6110 -vn -0.0000 -0.5562 0.8311 -vn 0.7263 -0.3800 0.5728 -vn 0.7071 -0.5000 0.5000 -vn -0.7071 -0.5000 0.5000 -vn -0.0000 0.5628 -0.8266 -vn -0.7071 0.5000 -0.5000 -vn 0.3827 -0.0000 -0.9239 -vn 0.7071 -0.0000 -0.7071 -vn 0.7071 -0.0000 0.7071 -vn 0.3827 -0.0000 0.9239 -vn -0.3827 -0.0000 0.9239 -vn -0.7071 -0.0000 0.7071 -vn -0.7071 -0.0000 -0.7071 -vn -0.3827 -0.0000 -0.9239 -vn 0.7071 0.5000 -0.5000 vt 0.484375 0.100000 vt 0.046875 0.366667 vt 0.046875 0.100000 @@ -379,13 +382,34 @@ vt 0.484375 -0.000000 vt 0.656250 0.600000 vt 0.531250 0.466667 vt 0.656250 0.466667 +vt 0.656250 0.466667 +vt 0.531250 0.600000 +vt 0.531250 0.466667 +vt 0.531250 0.466667 +vt 0.656250 0.600000 vt 0.531250 0.600000 vt 0.531250 0.200000 +vt 0.656250 0.466667 +vt 0.656250 0.600000 +vt 0.531250 0.466667 +vt 0.656250 0.466667 vt 0.539062 0.616667 +vt 0.531250 0.600000 vt 0.648438 0.616667 vt 0.539062 0.733333 +vt 0.539062 0.616667 +vt 0.656250 0.600000 +vt 0.539062 0.616667 +vt 0.539062 0.616667 +vt 0.531250 0.600000 +vt 0.539062 0.733333 vt 0.648438 0.966667 vt 0.539062 0.966667 +vt 0.648438 0.616667 +vt 0.539062 0.733333 +vt 0.648438 0.616667 +vt 0.648438 0.616667 +vt 0.539062 0.733333 vt 0.468750 0.733333 vt 0.062500 0.766667 vt 0.062500 0.733333 @@ -401,7 +425,7 @@ vt 0.765625 0.100000 vt 0.906250 0.200000 vt 1.000000 -0.000000 vt 1.000000 0.200000 -vt 0.058594 0.500000 +vt 0.062500 0.500000 vt 0.468750 0.700000 vt 0.468750 0.966667 vt 0.062500 0.966667 @@ -425,6 +449,7 @@ vt 0.695312 0.450000 vt 0.687500 0.450000 vt 0.695312 0.466667 vt 0.679688 0.450000 +vt 0.695312 0.450000 vt 0.835938 0.550000 vt 0.851562 0.566667 vt 0.835938 0.566667 @@ -433,10 +458,37 @@ vt 0.656250 0.516667 vt 0.656250 0.500000 vt 0.695312 0.433333 vt 0.835938 0.450000 +vt 0.695312 0.450000 vt 0.835938 0.433333 vt 0.843750 0.450000 +vt 0.695312 0.466667 +vt 0.679688 0.500000 +vt 0.851562 0.500000 +vt 0.679688 0.450000 +vt 0.695312 0.450000 vt 0.835938 0.466667 vt 0.851562 0.450000 +vt 0.695312 0.433333 +vt 0.835938 0.450000 +vt 0.679688 0.516667 +vt 0.835938 0.550000 +vt 0.851562 0.566667 +vt 0.835938 0.566667 +vt 0.656250 0.516667 +vt 0.656250 0.500000 +vt 0.695312 0.550000 +vt 0.679688 0.566667 +vt 0.835938 0.466667 +vt 0.851562 0.450000 +vt 0.835938 0.433333 +vt 0.843750 0.450000 +vt 0.687500 0.433333 +vt 0.687500 0.450000 +vt 0.875000 0.500000 +vt 0.851562 0.516667 +vt 0.902344 0.391667 +vt 0.667969 0.408333 +vt 0.667969 0.391667 vt 0.902344 0.391667 vt 0.667969 0.408333 vt 0.667969 0.391667 @@ -445,19 +497,37 @@ vt 0.914062 0.408333 vt 0.902344 0.408333 vt 0.656250 0.391667 vt 0.667969 0.433333 +vt 0.902344 0.408333 +vt 0.667969 0.433333 +vt 0.914062 0.408333 +vt 0.656250 0.391667 +vt 0.902344 0.366667 vt 0.531250 0.100000 vt 0.000000 0.366667 vt 0.046875 -0.000000 vt 0.656250 0.200000 vt 0.648438 0.733333 -vt 0.621094 0.200000 +vt 0.648438 0.733333 +vt 0.648438 0.733333 +vt 0.648438 0.733333 +vt 0.625000 0.200000 +vt 0.531250 0.200000 vt 0.695312 0.566667 vt 0.875000 0.516667 vt 0.843750 0.433333 +vt 0.835938 0.450000 +vt 0.695312 0.566667 +vt 0.835938 0.450000 +vt 0.843750 0.433333 +vt 0.875000 0.516667 vt 0.667969 0.366667 vt 0.914062 0.391667 vt 0.656250 0.408333 vt 0.902344 0.433333 +vt 0.902344 0.433333 +vt 0.914062 0.391667 +vt 0.656250 0.408333 +vt 0.667969 0.366667 vt 0.921875 0.200000 vt 0.929688 0.400000 vt 0.921875 0.400000 @@ -469,11 +539,113 @@ vt 0.945312 0.400000 vt 0.937500 0.400000 vt 0.968750 0.200000 vt 0.976562 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.929688 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.921875 0.400000 +vt 0.914062 0.400000 +vt 0.921875 0.200000 +vt 0.921875 0.400000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.929688 0.200000 +vt 0.937500 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.400000 +vt 0.929688 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.200000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.921875 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 vt 0.929688 0.200000 vt 0.914062 0.200000 vt 0.914062 0.400000 vt 0.953125 0.200000 +vt 0.960938 0.400000 vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.921875 0.400000 +vt 0.960938 0.200000 +vt 0.968750 0.400000 +vt 0.960938 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.937500 0.400000 +vt 0.929688 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.921875 0.400000 +vt 0.914062 0.400000 +vt 0.921875 0.200000 +vt 0.921875 0.400000 +vt 0.921875 0.200000 +vt 0.929688 0.400000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.929688 0.200000 +vt 0.937500 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.937500 0.200000 +vt 0.945312 0.400000 +vt 0.960938 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.400000 +vt 0.929688 0.200000 +vt 0.945312 0.200000 +vt 0.953125 0.200000 +vt 0.914062 0.200000 +vt 0.914062 0.400000 +vt 0.953125 0.200000 +vt 0.960938 0.400000 +vt 0.953125 0.400000 +vt 0.968750 0.200000 +vt 0.976562 0.400000 +vt 0.968750 0.400000 +vt 0.960938 0.200000 vt 0.945312 0.200000 vt 0.695312 0.341667 vt 0.703125 0.333333 @@ -500,6 +672,42 @@ vt 0.742188 0.325000 vt 0.742188 0.200000 vt 0.750000 0.308333 vt 0.742188 0.308333 +vt 0.718750 0.358333 +vt 0.726562 0.333333 +vt 0.726562 0.358333 +vt 0.734375 0.200000 +vt 0.734375 0.308333 +vt 0.695312 0.200000 +vt 0.703125 0.308333 +vt 0.695312 0.308333 +vt 0.718750 0.200000 +vt 0.718750 0.308333 +vt 0.703125 0.200000 +vt 0.695312 0.341667 +vt 0.703125 0.333333 +vt 0.703125 0.350000 +vt 0.687500 0.200000 +vt 0.687500 0.308333 +vt 0.710938 0.333333 +vt 0.710938 0.358333 +vt 0.718750 0.333333 +vt 0.726562 0.308333 +vt 0.703125 0.316667 +vt 0.734375 0.333333 +vt 0.742188 0.341667 +vt 0.734375 0.350000 +vt 0.734375 0.316667 +vt 0.742188 0.333333 +vt 0.710938 0.200000 +vt 0.695312 0.333333 +vt 0.710938 0.308333 +vt 0.687500 0.333333 +vt 0.695312 0.325000 +vt 0.750000 0.333333 +vt 0.742188 0.325000 +vt 0.742188 0.200000 +vt 0.750000 0.308333 +vt 0.742188 0.308333 vt 0.734375 0.200000 vt 0.734375 0.308333 vt 0.695312 0.200000 @@ -513,434 +721,501 @@ vt 0.687500 0.308333 vt 0.710938 0.200000 vt 0.687500 0.366667 vt 0.679688 0.200000 +vt 0.687500 0.200000 vt 0.679688 0.366667 +vt 0.671875 0.200000 vt 0.671875 0.366667 vt 0.664062 0.200000 vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.679688 0.200000 +vt 0.687500 0.366667 +vt 0.687500 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.679688 0.200000 +vt 0.687500 0.366667 +vt 0.687500 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.687500 0.366667 +vt 0.679688 0.200000 +vt 0.687500 0.200000 +vt 0.679688 0.366667 +vt 0.671875 0.200000 +vt 0.671875 0.366667 +vt 0.664062 0.200000 +vt 0.664062 0.366667 +vt 0.656250 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 +vt 0.976562 0.200000 vt 0.976562 0.200000 vt 0.750000 0.200000 vt 0.726562 0.200000 +vt 0.750000 0.200000 +vt 0.726562 0.200000 vt 0.656250 0.366667 -s 0 -usemtl -f 3/1/1 2/2/1 1/3/1 -f 5/4/2 35/5/2 8/6/2 -f 3/1/3 8/7/3 4/8/3 -f 2/2/4 6/9/4 1/3/4 -f 4/8/5 7/10/5 2/2/5 -f 1/3/6 5/11/6 3/1/6 -f 12/12/4 9/13/4 10/14/4 -f 13/14/3 16/15/3 14/13/3 -f 10/13/5 16/12/5 12/15/5 -f 9/16/1 14/14/1 10/13/1 -f 11/12/6 13/13/6 9/14/6 -f 11/12/2 19/17/2 15/15/2 -f 17/18/5 23/19/5 19/17/5 -f 16/12/2 18/17/2 12/15/2 -f 15/12/2 20/17/2 16/15/2 -f 12/12/2 17/17/2 11/15/2 -f 22/19/2 23/20/2 21/21/2 -f 19/18/4 24/19/4 20/17/4 -f 20/18/6 22/19/6 18/17/6 -f 18/18/3 21/19/3 17/17/3 -f 35/22/6 37/23/6 34/24/6 -f 7/10/2 33/25/2 6/26/2 -f 37/27/5 31/28/5 39/29/5 -f 27/30/6 29/31/6 30/32/6 -f 39/29/3 29/31/3 40/33/3 -f 25/34/4 37/35/4 26/36/4 -f 8/6/2 34/37/2 7/10/2 -f 6/26/2 32/38/2 5/4/2 -f 37/23/2 36/39/2 30/40/2 -f 33/41/5 36/39/5 32/42/5 -f 32/43/4 38/44/4 35/45/4 -f 34/46/3 30/40/3 33/47/3 -f 28/48/7 40/33/7 27/49/7 -f 157/50/6 153/51/6 162/52/6 -f 183/53/3 180/54/3 179/55/3 -f 155/56/3 160/57/3 156/58/3 -f 160/59/5 154/60/5 156/57/5 -f 178/61/6 184/62/6 182/63/6 -f 163/64/4 153/65/4 154/66/4 -f 164/67/1 177/68/1 161/57/1 -f 178/69/4 181/70/4 177/68/4 -f 161/59/5 179/55/5 158/64/5 -f 171/55/2 162/52/2 163/64/2 -f 161/59/5 169/60/5 167/57/5 -f 177/71/5 183/72/5 179/55/5 -f 157/67/1 165/68/1 160/57/1 -f 179/55/2 159/52/2 158/64/2 -f 166/61/6 176/62/6 174/63/6 -f 160/59/5 171/55/5 163/64/5 -f 162/52/6 166/61/6 157/50/6 -f 158/64/4 170/65/4 169/66/4 -f 159/52/6 178/61/6 164/50/6 -f 164/50/6 170/51/6 159/52/6 -f 165/71/5 175/72/5 171/55/5 -f 166/69/4 173/70/4 165/68/4 -f 168/56/3 161/57/3 167/58/3 -f 175/53/3 172/54/3 171/55/3 -f 191/73/2 188/74/2 187/75/2 -f 190/73/2 185/74/2 186/75/2 -f 187/75/5 200/76/5 191/73/5 -f 190/73/3 197/77/3 189/78/3 -f 185/74/4 194/79/4 186/75/4 -f 189/78/6 193/80/6 185/74/6 -f 192/78/6 195/80/6 188/74/6 -f 191/73/3 199/77/3 192/78/3 -f 188/74/4 196/79/4 187/75/4 -f 186/75/5 198/76/5 190/73/5 -f 3/1/1 4/8/1 2/2/1 -f 5/4/2 32/38/2 35/5/2 -f 3/1/3 5/81/3 8/7/3 -f 2/2/4 7/82/4 6/9/4 -f 4/8/5 8/6/5 7/10/5 -f 1/3/6 6/83/6 5/11/6 -f 12/12/4 11/15/4 9/13/4 -f 13/14/3 15/12/3 16/15/3 -f 10/13/5 14/14/5 16/12/5 -f 9/16/1 13/84/1 14/14/1 -f 11/12/6 15/15/6 13/13/6 -f 11/12/2 17/18/2 19/17/2 -f 17/18/5 21/85/5 23/19/5 -f 16/12/2 20/18/2 18/17/2 -f 15/12/2 19/18/2 20/17/2 -f 12/12/2 18/18/2 17/17/2 -f 22/19/2 24/85/2 23/20/2 -f 19/18/4 23/85/4 24/19/4 -f 20/18/6 24/85/6 22/19/6 -f 18/18/3 22/85/3 21/19/3 -f 35/22/6 38/44/6 37/23/6 -f 7/10/2 34/37/2 33/25/2 -f 39/29/5 28/86/5 37/27/5 -f 28/86/5 26/16/5 37/27/5 -f 30/32/6 25/34/6 27/30/6 -f 27/30/6 40/33/6 29/31/6 -f 39/29/3 31/28/3 29/31/3 -f 25/34/4 30/32/4 37/35/4 -f 8/6/2 35/5/2 34/37/2 -f 6/26/2 33/25/2 32/38/2 -f 37/23/2 38/44/2 36/39/2 -f 33/41/5 30/40/5 36/39/5 -f 32/43/4 36/39/4 38/44/4 -f 34/46/3 37/23/3 30/40/3 -f 28/48/7 39/29/7 40/33/7 -f 157/50/6 155/87/6 153/51/6 -f 183/53/3 184/88/3 180/54/3 -f 155/56/3 157/67/3 160/57/3 -f 160/59/5 163/64/5 154/60/5 -f 178/61/6 180/54/6 184/62/6 -f 163/64/4 162/52/4 153/65/4 -f 164/67/1 178/69/1 177/68/1 -f 178/69/4 182/89/4 181/70/4 -f 161/59/5 177/71/5 179/55/5 -f 171/55/2 172/54/2 162/52/2 -f 161/59/5 158/64/5 169/60/5 -f 177/71/5 181/68/5 183/72/5 -f 157/67/1 166/69/1 165/68/1 -f 179/55/2 180/54/2 159/52/2 -f 166/61/6 172/54/6 176/62/6 -f 160/59/5 165/71/5 171/55/5 -f 162/52/6 172/54/6 166/61/6 -f 158/64/4 159/52/4 170/65/4 -f 159/52/6 180/54/6 178/61/6 -f 164/50/6 168/87/6 170/51/6 -f 165/71/5 173/68/5 175/72/5 -f 166/69/4 174/89/4 173/70/4 -f 168/56/3 164/67/3 161/57/3 -f 175/53/3 176/88/3 172/54/3 -f 191/73/2 192/78/2 188/74/2 -f 190/73/2 189/78/2 185/74/2 -f 187/75/5 196/90/5 200/76/5 -f 190/73/3 198/91/3 197/77/3 -f 185/74/4 193/92/4 194/79/4 -f 189/78/6 197/93/6 193/80/6 -f 192/78/6 199/93/6 195/80/6 -f 191/73/3 200/91/3 199/77/3 -f 188/74/4 195/92/4 196/79/4 -f 186/75/5 194/90/5 198/76/5 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vt 0.656250 0.366667 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 0.7071 0.7071 +vn -0.7311 0.2611 0.6303 +vn -0.9955 -0.0000 -0.0949 +vn -0.9947 -0.0393 -0.0948 +vn -0.6333 -0.2962 -0.7150 +vn -0.0000 -0.3827 -0.9239 +vn 0.6333 -0.2962 -0.7150 +vn 0.9955 -0.0000 -0.0949 +vn 0.7311 0.2611 0.6303 +vn 0.9947 -0.0393 -0.0948 +vn -0.6630 -0.0000 -0.7486 +vn 0.6630 -0.0000 -0.7486 +vn 0.6794 0.4063 -0.6110 +vn 0.9987 0.0196 -0.0473 +vn 0.7574 -0.0000 0.6530 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.3800 0.5728 +vn -0.7574 -0.0000 0.6530 +vn -0.6794 0.4063 -0.6110 +vn 0.0000 -0.5562 0.8311 +vn 0.7263 -0.3800 0.5728 +vn 0.7071 -0.5000 0.5000 +vn -0.7071 -0.5000 0.5000 +vn 0.0000 0.5628 -0.8266 +vn -0.7071 0.5000 -0.5000 +vn 0.3827 0.0000 -0.9239 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.3827 0.0000 0.9239 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 -0.9239 +vn 0.7071 0.5000 -0.5000 +s off +f 11/21/6 10/22/6 9/23/6 +f 13/24/7 44/25/7 16/26/7 +f 11/21/8 16/27/8 12/28/8 +f 10/22/9 14/29/9 9/23/9 +f 12/28/10 15/30/10 10/22/10 +f 9/23/11 13/31/11 11/21/11 +f 20/32/9 17/33/9 18/34/9 +f 21/35/8 24/36/8 22/37/8 +f 18/38/10 24/39/10 20/40/10 +f 17/41/6 22/42/6 18/38/6 +f 19/43/11 21/44/11 17/45/11 +f 19/43/7 27/46/7 23/47/7 +f 25/48/10 31/49/10 27/46/10 +f 24/39/7 26/50/7 20/40/7 +f 23/51/7 28/52/7 24/36/7 +f 20/32/7 25/53/7 19/54/7 +f 30/55/7 31/56/7 29/57/7 +f 27/58/9 32/59/9 28/52/9 +f 28/60/11 30/55/11 26/50/11 +f 26/61/8 29/62/8 25/53/8 +f 44/63/11 47/64/11 43/65/11 +f 15/30/7 42/66/7 14/67/7 +f 39/68/10 40/69/10 49/70/10 +f 35/71/11 37/72/11 38/73/11 +f 49/70/8 37/72/8 50/74/8 +f 33/75/9 39/76/9 34/77/9 +f 16/26/7 43/78/7 15/30/7 +f 14/67/7 41/79/7 13/24/7 +f 47/64/7 45/80/7 46/81/7 +f 42/82/10 45/80/10 41/83/10 +f 41/84/9 48/85/9 44/86/9 +f 43/87/8 46/81/8 42/88/8 +f 36/89/12 50/74/12 35/90/12 +f 167/91/11 163/92/11 172/93/11 +f 193/94/8 190/95/8 189/96/8 +f 165/97/8 170/98/8 166/99/8 +f 170/100/10 164/101/10 166/102/10 +f 188/103/11 194/104/11 192/105/11 +f 173/106/9 163/107/9 164/108/9 +f 174/109/6 187/110/6 171/111/6 +f 188/112/9 191/113/9 187/110/9 +f 171/114/10 189/96/10 168/115/10 +f 181/116/7 172/93/7 173/106/7 +f 171/114/10 179/117/10 177/118/10 +f 187/119/10 193/120/10 189/96/10 +f 167/121/6 175/122/6 170/98/6 +f 189/96/7 169/123/7 168/115/7 +f 176/124/11 186/125/11 184/126/11 +f 170/100/10 181/116/10 173/106/10 +f 172/93/11 176/124/11 167/91/11 +f 168/115/9 180/127/9 179/128/9 +f 169/123/11 188/103/11 174/129/11 +f 174/129/11 180/130/11 169/123/11 +f 175/131/10 185/132/10 181/116/10 +f 176/133/9 183/134/9 175/122/9 +f 178/135/8 171/111/8 177/136/8 +f 185/137/8 182/138/8 181/116/8 +f 201/139/7 198/140/7 197/141/7 +f 200/142/7 195/143/7 196/144/7 +f 197/141/10 210/145/10 201/139/10 +f 200/142/8 207/146/8 199/147/8 +f 195/143/9 204/148/9 196/144/9 +f 199/147/11 203/149/11 195/143/11 +f 202/150/11 205/151/11 198/140/11 +f 201/139/8 209/152/8 202/150/8 +f 198/140/9 206/153/9 197/141/9 +f 196/144/10 208/154/10 200/142/10 +f 11/21/6 12/28/6 10/22/6 +f 13/24/7 41/79/7 44/25/7 +f 11/21/8 13/155/8 16/27/8 +f 10/22/9 15/156/9 14/29/9 +f 12/28/10 16/26/10 15/30/10 +f 9/23/11 14/157/11 13/31/11 +f 20/32/9 19/54/9 17/33/9 +f 21/35/8 23/51/8 24/36/8 +f 18/38/10 22/42/10 24/39/10 +f 17/41/6 21/158/6 22/42/6 +f 19/43/11 23/47/11 21/44/11 +f 19/43/7 25/48/7 27/46/7 +f 25/48/10 29/159/10 31/49/10 +f 24/39/7 28/60/7 26/50/7 +f 23/51/7 27/58/7 28/52/7 +f 20/32/7 26/61/7 25/53/7 +f 30/55/7 32/160/7 31/56/7 +f 27/58/9 31/161/9 32/59/9 +f 28/60/11 32/160/11 30/55/11 +f 26/61/8 30/162/8 29/62/8 +f 44/63/11 48/85/11 47/64/11 +f 15/30/7 43/78/7 42/66/7 +f 49/70/10 36/163/10 39/68/10 +f 36/163/10 34/164/10 39/68/10 +f 38/73/11 33/75/11 35/71/11 +f 35/71/11 50/74/11 37/72/11 +f 49/70/8 40/69/8 37/72/8 +f 33/75/9 38/73/9 39/76/9 +f 16/26/7 44/25/7 43/78/7 +f 14/67/7 42/66/7 41/79/7 +f 47/64/7 48/85/7 45/80/7 +f 42/82/10 46/81/10 45/80/10 +f 41/84/9 45/80/9 48/85/9 +f 43/87/8 47/64/8 46/81/8 +f 36/89/12 49/70/12 50/74/12 +f 167/91/11 165/165/11 163/92/11 +f 193/94/8 194/166/8 190/95/8 +f 165/97/8 167/121/8 170/98/8 +f 170/100/10 173/106/10 164/101/10 +f 188/103/11 190/95/11 194/104/11 +f 173/106/9 172/93/9 163/107/9 +f 174/109/6 188/112/6 187/110/6 +f 188/112/9 192/167/9 191/113/9 +f 171/114/10 187/119/10 189/96/10 +f 181/116/7 182/138/7 172/93/7 +f 171/114/10 168/115/10 179/117/10 +f 187/119/10 191/168/10 193/120/10 +f 167/121/6 176/133/6 175/122/6 +f 189/96/7 190/95/7 169/123/7 +f 176/124/11 182/138/11 186/125/11 +f 170/100/10 175/131/10 181/116/10 +f 172/93/11 182/138/11 176/124/11 +f 168/115/9 169/123/9 180/127/9 +f 169/123/11 190/95/11 188/103/11 +f 174/129/11 178/169/11 180/130/11 +f 175/131/10 183/170/10 185/132/10 +f 176/133/9 184/171/9 183/134/9 +f 178/135/8 174/109/8 171/111/8 +f 185/137/8 186/172/8 182/138/8 +f 201/139/7 202/150/7 198/140/7 +f 200/142/7 199/147/7 195/143/7 +f 197/141/10 206/173/10 210/145/10 +f 200/142/8 208/174/8 207/146/8 +f 195/143/9 203/175/9 204/148/9 +f 199/147/11 207/176/11 203/149/11 +f 202/150/11 209/177/11 205/151/11 +f 201/139/8 210/178/8 209/152/8 +f 198/140/9 205/179/9 206/153/9 +f 196/144/10 204/180/10 208/154/10 s 1 -f 80/94/8 81/95/4 79/96/8 -f 44/97/3 45/98/9 43/99/3 -f 68/100/10 69/101/2 67/102/10 -f 46/103/9 47/104/1 45/98/9 -f 84/100/10 85/101/2 83/102/10 -f 66/105/4 67/102/10 65/95/4 -f 48/106/1 49/96/8 47/107/1 -f 64/94/8 65/95/4 63/96/8 -f 50/94/8 51/95/4 49/96/8 -f 62/106/1 63/96/8 61/107/1 -f 52/105/4 53/102/10 51/95/4 -f 72/108/7 42/99/3 71/109/7 -f 60/103/9 61/104/1 59/98/9 -f 54/100/10 55/101/2 53/102/10 -f 41/97/3 59/98/9 42/99/3 -f 56/110/2 57/109/7 55/101/2 -f 82/105/4 83/102/10 81/95/4 -f 70/110/2 71/109/7 69/101/2 -f 58/108/7 43/99/3 57/109/7 -f 78/106/1 79/96/8 77/107/1 -f 88/108/7 74/99/3 87/109/7 -f 76/103/9 77/104/1 75/98/9 -f 73/97/3 75/98/9 74/99/3 -f 86/110/2 87/109/7 85/101/2 -f 96/94/8 97/95/4 95/96/8 -f 100/100/10 101/101/2 99/102/10 -f 98/105/4 99/102/10 97/95/4 -f 94/106/1 95/96/8 93/107/1 -f 104/108/7 90/99/3 103/109/7 -f 92/103/9 93/104/1 91/98/9 -f 89/97/3 91/98/9 90/99/3 -f 102/110/2 103/109/7 101/101/2 -f 144/94/8 145/95/4 143/96/8 -f 108/97/3 109/98/9 107/99/3 -f 132/100/10 133/101/2 131/102/10 -f 110/103/9 111/104/1 109/98/9 -f 148/100/10 149/101/2 147/102/10 -f 130/105/4 131/102/10 129/95/4 -f 112/106/1 113/96/8 111/107/1 -f 128/94/8 129/95/4 127/96/8 -f 114/94/8 115/95/4 113/96/8 -f 126/106/1 127/96/8 125/107/1 -f 116/105/4 117/102/10 115/95/4 -f 136/108/7 106/99/3 135/109/7 -f 124/103/9 125/104/1 123/98/9 -f 118/100/10 119/101/2 117/102/10 -f 105/97/3 123/98/9 106/99/3 -f 120/110/2 121/109/7 119/101/2 -f 146/105/4 147/102/10 145/95/4 -f 134/110/2 135/109/7 133/101/2 -f 122/108/7 107/99/3 121/109/7 -f 142/106/1 143/96/8 141/107/1 -f 152/108/7 138/99/3 151/109/7 -f 140/103/9 141/104/1 139/98/9 -f 137/97/3 139/98/9 138/99/3 -f 150/110/2 151/109/7 149/101/2 -f 204/111/11 211/112/12 203/113/13 -f 202/114/14 209/115/3 201/116/15 -f 209/115/3 208/117/16 201/116/15 -f 214/118/17 206/119/18 207/120/19 -f 203/113/13 210/121/20 202/114/14 -f 215/122/21 207/120/19 208/117/16 -f 209/115/3 222/123/22 215/122/21 -f 221/124/23 213/125/24 214/118/17 -f 218/126/25 210/121/20 211/112/12 -f 215/122/21 221/124/23 214/118/17 -f 219/127/26 211/112/12 212/128/27 -f 217/129/28 209/115/3 210/121/20 -f 204/111/11 205/130/29 212/128/27 -f 212/128/27 205/130/29 219/127/26 -f 205/131/29 206/119/18 213/125/24 -f 213/125/24 220/132/30 205/131/29 -f 236/133/31 205/134/29 220/135/30 -f 230/116/15 245/122/21 223/117/16 -f 222/123/22 235/136/5 221/137/23 -f 234/138/32 218/139/25 219/140/26 -f 232/141/7 222/123/22 216/142/33 -f 235/136/5 220/135/30 221/137/23 -f 233/143/6 217/129/28 218/139/25 -f 227/111/11 241/112/12 228/113/13 -f 238/144/8 219/140/26 205/145/29 -f 228/113/13 240/121/20 229/114/14 -f 239/115/3 252/123/22 245/122/21 -f 248/126/25 240/121/20 241/112/12 -f 240/121/20 230/116/15 229/114/14 -f 244/118/17 225/119/18 224/120/19 -f 245/122/21 224/120/19 223/117/16 -f 251/124/23 243/125/24 244/118/17 -f 231/146/34 216/142/33 217/129/28 -f 245/122/21 251/124/23 244/118/17 -f 242/128/27 248/126/25 241/112/12 -f 247/129/28 239/115/3 240/121/20 -f 227/111/11 226/130/29 242/128/27 -f 242/128/27 226/130/29 249/127/26 -f 226/131/29 225/119/18 243/125/24 -f 243/125/24 250/132/30 226/131/29 -f 258/133/31 226/134/29 250/135/30 -f 252/123/22 257/136/5 251/137/23 -f 256/138/32 248/139/25 249/140/26 -f 254/141/7 252/123/22 246/142/33 -f 257/136/5 250/135/30 251/137/23 -f 255/143/6 247/129/28 248/139/25 -f 260/144/8 249/140/26 226/145/29 -f 253/146/34 246/142/33 247/129/28 -f 262/147/35 263/148/36 261/144/35 -f 264/149/36 265/48/5 263/148/36 -f 266/150/5 267/151/37 265/48/5 -f 268/152/37 269/84/38 267/151/37 -f 274/149/36 275/48/5 273/148/36 -f 272/147/35 273/148/36 271/144/35 -f 276/150/5 277/151/37 275/48/5 -f 278/152/37 279/84/38 277/151/37 -f 284/149/36 285/48/5 283/148/36 -f 282/147/35 283/148/36 281/144/35 -f 286/150/5 287/151/37 285/48/5 -f 288/152/37 289/84/38 287/151/37 -f 294/147/39 295/148/40 293/144/39 -f 296/149/40 297/48/6 295/148/40 -f 298/150/6 299/151/41 297/48/6 -f 300/152/41 291/84/42 299/151/41 -f 304/147/39 305/148/40 303/144/39 -f 306/149/40 307/48/6 305/148/40 -f 308/150/6 309/151/41 307/48/6 -f 310/152/41 301/84/42 309/151/41 -f 314/147/39 315/148/40 313/144/39 -f 316/149/40 317/48/6 315/148/40 -f 318/150/6 319/151/41 317/48/6 -f 320/152/41 311/84/42 319/151/41 -f 80/94/8 82/105/4 81/95/4 -f 44/97/3 46/103/9 45/98/9 -f 68/100/10 70/110/2 69/101/2 -f 46/103/9 48/153/1 47/104/1 -f 84/100/10 86/110/2 85/101/2 -f 66/105/4 68/100/10 67/102/10 -f 48/106/1 50/94/8 49/96/8 -f 64/94/8 66/105/4 65/95/4 -f 50/94/8 52/105/4 51/95/4 -f 62/106/1 64/94/8 63/96/8 -f 52/105/4 54/100/10 53/102/10 -f 72/108/7 41/97/3 42/99/3 -f 60/103/9 62/153/1 61/104/1 -f 54/100/10 56/110/2 55/101/2 -f 41/97/3 60/103/9 59/98/9 -f 56/110/2 58/108/7 57/109/7 -f 82/105/4 84/100/10 83/102/10 -f 70/110/2 72/108/7 71/109/7 -f 58/108/7 44/97/3 43/99/3 -f 78/106/1 80/94/8 79/96/8 -f 88/108/7 73/97/3 74/99/3 -f 76/103/9 78/153/1 77/104/1 -f 73/97/3 76/103/9 75/98/9 -f 86/110/2 88/108/7 87/109/7 -f 96/94/8 98/105/4 97/95/4 -f 100/100/10 102/110/2 101/101/2 -f 98/105/4 100/100/10 99/102/10 -f 94/106/1 96/94/8 95/96/8 -f 104/108/7 89/97/3 90/99/3 -f 92/103/9 94/153/1 93/104/1 -f 89/97/3 92/103/9 91/98/9 -f 102/110/2 104/108/7 103/109/7 -f 144/94/8 146/105/4 145/95/4 -f 108/97/3 110/103/9 109/98/9 -f 132/100/10 134/110/2 133/101/2 -f 110/103/9 112/153/1 111/104/1 -f 148/100/10 150/110/2 149/101/2 -f 130/105/4 132/100/10 131/102/10 -f 112/106/1 114/94/8 113/96/8 -f 128/94/8 130/105/4 129/95/4 -f 114/94/8 116/105/4 115/95/4 -f 126/106/1 128/94/8 127/96/8 -f 116/105/4 118/100/10 117/102/10 -f 136/108/7 105/97/3 106/99/3 -f 124/103/9 126/153/1 125/104/1 -f 118/100/10 120/110/2 119/101/2 -f 105/97/3 124/103/9 123/98/9 -f 120/110/2 122/108/7 121/109/7 -f 146/105/4 148/100/10 147/102/10 -f 134/110/2 136/108/7 135/109/7 -f 122/108/7 108/97/3 107/99/3 -f 142/106/1 144/94/8 143/96/8 -f 152/108/7 137/97/3 138/99/3 -f 140/103/9 142/153/1 141/104/1 -f 137/97/3 140/103/9 139/98/9 -f 150/110/2 152/108/7 151/109/7 -f 204/111/11 212/128/27 211/112/12 -f 202/114/14 210/121/20 209/115/3 -f 209/115/3 215/122/21 208/117/16 -f 214/118/17 213/125/24 206/119/18 -f 203/113/13 211/112/12 210/121/20 -f 215/122/21 214/118/17 207/120/19 -f 209/115/3 216/142/33 222/123/22 -f 221/124/23 220/132/30 213/125/24 -f 218/126/25 217/129/28 210/121/20 -f 215/122/21 222/123/22 221/124/23 -f 219/127/26 218/126/25 211/112/12 -f 217/129/28 216/142/33 209/115/3 -f 236/133/31 238/154/8 205/134/29 -f 230/116/15 239/115/3 245/122/21 -f 222/123/22 237/155/43 235/136/5 -f 234/138/32 233/143/6 218/139/25 -f 232/141/7 237/155/43 222/123/22 -f 235/136/5 236/133/31 220/135/30 -f 233/143/6 231/146/34 217/129/28 -f 227/111/11 242/128/27 241/112/12 -f 238/144/8 234/138/32 219/140/26 -f 228/113/13 241/112/12 240/121/20 -f 239/115/3 246/142/33 252/123/22 -f 248/126/25 247/129/28 240/121/20 -f 240/121/20 239/115/3 230/116/15 -f 244/118/17 243/125/24 225/119/18 -f 245/122/21 244/118/17 224/120/19 -f 251/124/23 250/132/30 243/125/24 -f 231/146/34 232/141/7 216/142/33 -f 245/122/21 252/123/22 251/124/23 -f 242/128/27 249/127/26 248/126/25 -f 247/129/28 246/142/33 239/115/3 -f 258/133/31 260/154/8 226/134/29 -f 252/123/22 259/155/43 257/136/5 -f 256/138/32 255/143/6 248/139/25 -f 254/141/7 259/155/43 252/123/22 -f 257/136/5 258/133/31 250/135/30 -f 255/143/6 253/146/34 247/129/28 -f 260/144/8 256/138/32 249/140/26 -f 253/146/34 254/141/7 246/142/33 -f 262/147/35 264/149/36 263/148/36 -f 264/149/36 266/150/5 265/48/5 -f 266/150/5 268/152/37 267/151/37 -f 268/152/37 270/156/38 269/84/38 -f 274/149/36 276/150/5 275/48/5 -f 272/147/35 274/149/36 273/148/36 -f 276/150/5 278/152/37 277/151/37 -f 278/152/37 280/156/38 279/84/38 -f 284/149/36 286/150/5 285/48/5 -f 282/147/35 284/149/36 283/148/36 -f 286/150/5 288/152/37 287/151/37 -f 288/152/37 290/156/38 289/84/38 -f 294/147/39 296/149/40 295/148/40 -f 296/149/40 298/150/6 297/48/6 -f 298/150/6 300/152/41 299/151/41 -f 300/152/41 292/156/42 291/84/42 -f 304/147/39 306/149/40 305/148/40 -f 306/149/40 308/150/6 307/48/6 -f 308/150/6 310/152/41 309/151/41 -f 310/152/41 302/156/42 301/84/42 -f 314/147/39 316/149/40 315/148/40 -f 316/149/40 318/150/6 317/48/6 -f 318/150/6 320/152/41 319/151/41 -f 320/152/41 312/156/42 311/84/42 -o plate -v -0.500000 0.937500 -1.500000 -v 0.500000 0.937500 -1.500000 -v -0.500000 0.937500 -5.250000 -v 0.500000 0.937500 -5.250000 -v -0.500000 1.062500 -5.250000 -v -0.500000 1.062500 -1.500000 -v 0.500000 1.062500 -1.500000 -v 0.500000 1.062500 -5.250000 -vn -0.0000 -1.0000 -0.0000 -vn -0.0000 1.0000 -0.0000 -vn -0.0000 -0.0000 -1.0000 -vn 1.0000 -0.0000 -0.0000 -vn -1.0000 -0.0000 -0.0000 -vt 0.890625 0.566667 -vt 0.656250 0.700000 -vt 0.656250 0.566667 -vt 0.890625 0.700000 -vt 0.664062 0.700000 -vt 0.664062 0.566667 -vt 0.890625 0.683333 -vt 0.656250 0.683333 -vt 0.656250 0.583333 -vt 0.890625 0.583333 -s 0 -usemtl -f 323/157/44 322/158/44 321/159/44 -f 327/159/45 325/160/45 326/158/45 -f 323/161/46 328/159/46 324/162/46 -f 324/163/47 327/158/47 322/164/47 -f 321/165/48 325/157/48 323/166/48 -f 323/157/44 324/160/44 322/158/44 -f 327/159/45 328/157/45 325/160/45 -f 323/161/46 325/158/46 328/159/46 -f 324/163/47 328/160/47 327/158/47 -f 321/165/48 326/159/48 325/157/48 +f 90/181/13 91/182/9 89/183/13 +f 54/184/8 55/185/14 53/186/8 +f 78/187/15 79/188/7 77/189/15 +f 56/190/14 57/191/6 55/185/14 +f 94/192/15 95/193/7 93/194/15 +f 76/195/9 77/189/15 75/196/9 +f 58/197/6 59/198/13 57/199/6 +f 74/200/13 75/196/9 73/201/13 +f 60/202/13 61/203/9 59/198/13 +f 72/204/6 73/201/13 71/205/6 +f 62/206/9 63/207/15 61/203/9 +f 82/208/12 52/209/8 81/210/12 +f 70/211/14 71/212/6 69/213/14 +f 64/214/15 65/215/7 63/207/15 +f 51/216/8 69/213/14 52/209/8 +f 66/217/7 67/218/12 65/215/7 +f 92/219/9 93/194/15 91/182/9 +f 80/220/7 81/210/12 79/188/7 +f 68/221/12 53/186/8 67/218/12 +f 88/222/6 89/183/13 87/223/6 +f 98/224/12 84/225/8 97/226/12 +f 86/227/14 87/228/6 85/229/14 +f 83/230/8 85/229/14 84/225/8 +f 96/231/7 97/226/12 95/193/7 +f 106/232/13 107/233/9 105/234/13 +f 110/235/15 111/236/7 109/237/15 +f 108/238/9 109/237/15 107/233/9 +f 104/239/6 105/234/13 103/240/6 +f 114/241/12 100/242/8 113/243/12 +f 102/244/14 103/245/6 101/246/14 +f 99/247/8 101/246/14 100/242/8 +f 112/248/7 113/243/12 111/236/7 +f 154/249/13 155/250/9 153/251/13 +f 118/252/8 119/253/14 117/254/8 +f 142/255/15 143/256/7 141/257/15 +f 120/258/14 121/259/6 119/253/14 +f 158/260/15 159/261/7 157/262/15 +f 140/263/9 141/257/15 139/264/9 +f 122/265/6 123/266/13 121/267/6 +f 138/268/13 139/264/9 137/269/13 +f 124/270/13 125/271/9 123/266/13 +f 136/272/6 137/269/13 135/273/6 +f 126/274/9 127/275/15 125/271/9 +f 146/276/12 116/277/8 145/278/12 +f 134/279/14 135/280/6 133/281/14 +f 128/282/15 129/283/7 127/275/15 +f 115/284/8 133/281/14 116/277/8 +f 130/285/7 131/286/12 129/283/7 +f 156/287/9 157/262/15 155/250/9 +f 144/288/7 145/278/12 143/256/7 +f 132/289/12 117/254/8 131/286/12 +f 152/290/6 153/251/13 151/291/6 +f 162/292/12 148/293/8 161/294/12 +f 150/295/14 151/296/6 149/297/14 +f 147/298/8 149/297/14 148/293/8 +f 160/299/7 161/294/12 159/261/7 +f 214/300/16 221/301/17 213/302/18 +f 212/303/19 219/304/8 211/305/20 +f 219/304/8 218/306/21 211/305/20 +f 224/307/22 216/308/23 217/309/24 +f 213/302/18 220/310/25 212/303/19 +f 225/311/26 217/309/24 218/306/21 +f 219/304/8 232/312/27 225/311/26 +f 231/313/28 223/314/29 224/307/22 +f 228/315/30 220/310/25 221/301/17 +f 225/311/26 231/313/28 224/307/22 +f 229/316/31 221/301/17 222/317/32 +f 227/318/33 219/304/8 220/310/25 +f 214/300/16 215/319/34 222/317/32 +f 222/317/32 215/319/34 229/316/31 +f 215/320/34 216/308/23 223/314/29 +f 223/314/29 230/321/35 215/320/34 +f 246/322/36 215/323/34 230/324/35 +f 240/325/20 255/326/26 233/327/21 +f 232/312/27 245/328/10 231/329/28 +f 244/330/37 228/331/30 229/332/31 +f 242/333/12 232/312/27 226/334/38 +f 245/328/10 230/324/35 231/329/28 +f 243/335/11 227/318/33 228/331/30 +f 237/336/16 251/337/17 238/338/18 +f 248/339/13 229/332/31 215/340/34 +f 238/338/18 250/341/25 239/342/19 +f 249/343/8 262/344/27 255/326/26 +f 258/345/30 250/341/25 251/337/17 +f 250/341/25 240/325/20 239/342/19 +f 254/346/22 235/347/23 234/348/24 +f 255/326/26 234/348/24 233/327/21 +f 261/349/28 253/350/29 254/346/22 +f 241/351/39 226/334/38 227/318/33 +f 255/326/26 261/349/28 254/346/22 +f 252/352/32 258/345/30 251/337/17 +f 257/353/33 249/343/8 250/341/25 +f 237/336/16 236/354/34 252/352/32 +f 252/352/32 236/354/34 259/355/31 +f 236/356/34 235/347/23 253/350/29 +f 253/350/29 260/357/35 236/356/34 +f 268/358/36 236/359/34 260/360/35 +f 262/344/27 267/361/10 261/362/28 +f 266/363/37 258/364/30 259/365/31 +f 264/366/12 262/344/27 256/367/38 +f 267/361/10 260/360/35 261/362/28 +f 265/368/11 257/353/33 258/364/30 +f 270/369/13 259/365/31 236/370/34 +f 263/371/39 256/367/38 257/353/33 +f 272/372/40 273/373/41 271/374/40 +f 274/375/41 275/376/10 273/373/41 +f 276/377/10 277/378/42 275/376/10 +f 278/379/42 279/380/43 277/378/42 +f 284/381/41 285/382/10 283/383/41 +f 282/384/40 283/383/41 281/385/40 +f 286/386/10 287/387/42 285/382/10 +f 288/388/42 289/389/43 287/387/42 +f 294/390/41 295/391/10 293/392/41 +f 292/393/40 293/392/41 291/394/40 +f 296/395/10 297/396/42 295/391/10 +f 298/397/42 299/398/43 297/396/42 +f 304/399/44 305/400/45 303/401/44 +f 306/402/45 307/403/11 305/400/45 +f 308/404/11 309/405/46 307/403/11 +f 310/406/46 301/407/47 309/405/46 +f 314/408/44 315/409/45 313/410/44 +f 316/411/45 317/412/11 315/409/45 +f 318/413/11 319/414/46 317/412/11 +f 320/415/46 311/416/47 319/414/46 +f 324/417/44 325/418/45 323/419/44 +f 326/420/45 327/421/11 325/418/45 +f 328/422/11 329/423/46 327/421/11 +f 330/424/46 321/425/47 329/423/46 +f 90/181/13 92/219/9 91/182/9 +f 54/184/8 56/190/14 55/185/14 +f 78/187/15 80/220/7 79/188/7 +f 56/190/14 58/426/6 57/191/6 +f 94/192/15 96/231/7 95/193/7 +f 76/195/9 78/187/15 77/189/15 +f 58/197/6 60/202/13 59/198/13 +f 74/200/13 76/195/9 75/196/9 +f 60/202/13 62/206/9 61/203/9 +f 72/204/6 74/200/13 73/201/13 +f 62/206/9 64/214/15 63/207/15 +f 82/208/12 51/216/8 52/209/8 +f 70/211/14 72/427/6 71/212/6 +f 64/214/15 66/217/7 65/215/7 +f 51/216/8 70/211/14 69/213/14 +f 66/217/7 68/221/12 67/218/12 +f 92/219/9 94/192/15 93/194/15 +f 80/220/7 82/208/12 81/210/12 +f 68/221/12 54/184/8 53/186/8 +f 88/222/6 90/181/13 89/183/13 +f 98/224/12 83/230/8 84/225/8 +f 86/227/14 88/428/6 87/228/6 +f 83/230/8 86/227/14 85/229/14 +f 96/231/7 98/224/12 97/226/12 +f 106/232/13 108/238/9 107/233/9 +f 110/235/15 112/248/7 111/236/7 +f 108/238/9 110/235/15 109/237/15 +f 104/239/6 106/232/13 105/234/13 +f 114/241/12 99/247/8 100/242/8 +f 102/244/14 104/429/6 103/245/6 +f 99/247/8 102/244/14 101/246/14 +f 112/248/7 114/241/12 113/243/12 +f 154/249/13 156/287/9 155/250/9 +f 118/252/8 120/258/14 119/253/14 +f 142/255/15 144/288/7 143/256/7 +f 120/258/14 122/430/6 121/259/6 +f 158/260/15 160/299/7 159/261/7 +f 140/263/9 142/255/15 141/257/15 +f 122/265/6 124/270/13 123/266/13 +f 138/268/13 140/263/9 139/264/9 +f 124/270/13 126/274/9 125/271/9 +f 136/272/6 138/268/13 137/269/13 +f 126/274/9 128/282/15 127/275/15 +f 146/276/12 115/284/8 116/277/8 +f 134/279/14 136/431/6 135/280/6 +f 128/282/15 130/285/7 129/283/7 +f 115/284/8 134/279/14 133/281/14 +f 130/285/7 132/289/12 131/286/12 +f 156/287/9 158/260/15 157/262/15 +f 144/288/7 146/276/12 145/278/12 +f 132/289/12 118/252/8 117/254/8 +f 152/290/6 154/249/13 153/251/13 +f 162/292/12 147/298/8 148/293/8 +f 150/295/14 152/432/6 151/296/6 +f 147/298/8 150/295/14 149/297/14 +f 160/299/7 162/292/12 161/294/12 +f 214/300/16 222/317/32 221/301/17 +f 212/303/19 220/310/25 219/304/8 +f 219/304/8 225/311/26 218/306/21 +f 224/307/22 223/314/29 216/308/23 +f 213/302/18 221/301/17 220/310/25 +f 225/311/26 224/307/22 217/309/24 +f 219/304/8 226/334/38 232/312/27 +f 231/313/28 230/321/35 223/314/29 +f 228/315/30 227/318/33 220/310/25 +f 225/311/26 232/312/27 231/313/28 +f 229/316/31 228/315/30 221/301/17 +f 227/318/33 226/334/38 219/304/8 +f 246/322/36 248/433/13 215/323/34 +f 240/325/20 249/343/8 255/326/26 +f 232/312/27 247/434/48 245/328/10 +f 244/330/37 243/335/11 228/331/30 +f 242/333/12 247/434/48 232/312/27 +f 245/328/10 246/322/36 230/324/35 +f 243/335/11 241/351/39 227/318/33 +f 237/336/16 252/352/32 251/337/17 +f 248/339/13 244/330/37 229/332/31 +f 238/338/18 251/337/17 250/341/25 +f 249/343/8 256/367/38 262/344/27 +f 258/345/30 257/353/33 250/341/25 +f 250/341/25 249/343/8 240/325/20 +f 254/346/22 253/350/29 235/347/23 +f 255/326/26 254/346/22 234/348/24 +f 261/349/28 260/357/35 253/350/29 +f 241/351/39 242/333/12 226/334/38 +f 255/326/26 262/344/27 261/349/28 +f 252/352/32 259/355/31 258/345/30 +f 257/353/33 256/367/38 249/343/8 +f 268/358/36 270/435/13 236/359/34 +f 262/344/27 269/436/48 267/361/10 +f 266/363/37 265/368/11 258/364/30 +f 264/366/12 269/436/48 262/344/27 +f 267/361/10 268/358/36 260/360/35 +f 265/368/11 263/371/39 257/353/33 +f 270/369/13 266/363/37 259/365/31 +f 263/371/39 264/366/12 256/367/38 +f 272/372/40 274/375/41 273/373/41 +f 274/375/41 276/377/10 275/376/10 +f 276/377/10 278/379/42 277/378/42 +f 278/379/42 280/437/43 279/380/43 +f 284/381/41 286/386/10 285/382/10 +f 282/384/40 284/381/41 283/383/41 +f 286/386/10 288/388/42 287/387/42 +f 288/388/42 290/438/43 289/389/43 +f 294/390/41 296/395/10 295/391/10 +f 292/393/40 294/390/41 293/392/41 +f 296/395/10 298/397/42 297/396/42 +f 298/397/42 300/439/43 299/398/43 +f 304/399/44 306/402/45 305/400/45 +f 306/402/45 308/404/11 307/403/11 +f 308/404/11 310/406/46 309/405/46 +f 310/406/46 302/440/47 301/407/47 +f 314/408/44 316/411/45 315/409/45 +f 316/411/45 318/413/11 317/412/11 +f 318/413/11 320/415/46 319/414/46 +f 320/415/46 312/441/47 311/416/47 +f 324/417/44 326/420/45 325/418/45 +f 326/420/45 328/422/11 327/421/11 +f 328/422/11 330/424/46 329/423/46 +f 330/424/46 322/442/47 321/425/47 diff --git a/src/main/resources/assets/hbm/textures/items/bottle_rad.png b/src/main/resources/assets/hbm/textures/items/bottle_rad.png index 554d5cdf825fb09a1f68d938a52e0367fde1a494..b1aa2e0a1eac55a9c902801037511d9edd7cc3c5 100644 GIT binary patch delta 256 zcmV+b0ssD`0;~d%G=JksL_t(Ijiu8uP6IIz1<)6SXeo(+YK3SKbVzCFR@{Iaa0@oK z;3T0VP3lFIAOsCap-6#{5TY5X4J_;35crMl@%Nwa8JmBi*S3+1fExvPFl^CHrvY46~7`yWbc5It?*O$eC`L_SzA#niN<|!tdwf4=3@F$ab@1K8W{`VgIh?47If(XD71Hgr)Q|m++Az_60 zH04i^+~cqR&3<2tT|O5d9V8FG3-y68LOMM-A8bAtTTaueopP-)k|Dbsx1mYGt)O?7 z5G=AijWu|C5G=qfjZdPNP^BR)W;rfqrIt`2!U(y?wsF^!<=S1?Z=v3Tc|U)rP{RAj zUUO}n&K~TyS)4l2P|-*;wKmP#&OWuB=6}T#xmZU|6jkA<00000NkvXXu0mjfUE*^F diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeJame.png b/src/main/resources/assets/hbm/textures/models/capes/CapeJame.png new file mode 100644 index 0000000000000000000000000000000000000000..4a7615d18df2c1f7a60300402d697a619fa775ab GIT binary patch literal 852 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$Aj3=B-?JzX3_D&pSWcFYQK6gc*=b64qWMiy7c zm`WD@2evG%jskbIn;toxVBOQe{z2p&Z`UIw>3)IuiCSydt*l%B+}BXz)Bl6+>hG^+ zx4(SFr*iJ1+g#gQb6!q2UH3ZT$&1I&-e-%lBka5*kd!}`5G2ZKbp13@zLRQ>uKVwz*>&w{_PCVOmLM~2t z%H*d%j_W_VbyvUhQSHp?%zru>*Yg|hJ&JlJW_T(~#q4-YjqNGfXDku3vi1H&PB|^T zVEc~!cdr+BOPw@b8GoDOo6f1HyceQ16qDCG>P+09-fbx!|Gv5CHm||<9Ztt~x=wP5 zJR4K>dGVbx<}YOr*K2;7?IiiUY`@B>tZ7N>53@f#=GPz}e56*k-tXi0WTnVGYx1ry zh^b?`A^p!++4}!Ok)Ko7^?dqU-h1_zOVQc)PvRcg7;0QMbGY+&yXo>^JAccIf%~TK zm-hI>6uD@P+UX$S1u?f7_Rg&+@A|Rm@m$S~$J9?{Rc*XJf%WM#e}?(h!70yA&$#=& zbJHwS$DMD56{;WWF1oH@7kKBS;Z2#yfV|%2ZM9oG zdF#aWHEw+kPi?=^JtSDb%;$IS@e8!vk ziq#p;4?f2)roF24XAa4hez3DIt>j?RU2ECi`Q`J~D!iFPtbr<=jtA~lt8@mdSPE3J z{n)PSRS Date: Sun, 14 Jan 2024 20:15:32 +0100 Subject: [PATCH 16/16] updated contributors list --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a48d727f4..1b2ab7ac0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,4 +16,4 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al \ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\ \ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\ \ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\ - \ 70k (textures), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks) + \ 70k (textures, glyphid AI, strand caster), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks)