From 025c6dc40c2cb3cfd72a71cc81c3cd99902011b2 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 12 Oct 2021 23:10:32 +0200 Subject: [PATCH] some more RBMK funnies --- src/main/java/com/hbm/blocks/ModBlocks.java | 13 +--- .../hbm/blocks/machine/rbmk/RBMKStorage.java | 10 ++- src/main/java/com/hbm/handler/GUIHandler.java | 14 ++++ .../container/ContainerRBMKStorage.java | 66 ++++++++++++++++++ .../com/hbm/inventory/gui/GUIRBMKStorage.java | 41 +++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 2 + .../hbm/render/item/ItemRenderLibrary.java | 17 +++++ .../machine/TileEntityTowerLarge.java | 2 +- .../machine/TileEntityTowerSmall.java | 2 +- .../machine/rbmk/TileEntityCraneConsole.java | 15 +++- .../machine/rbmk/TileEntityRBMKCooler.java | 42 ++++++++++- .../machine/rbmk/TileEntityRBMKStorage.java | 2 +- .../textures/models/machines/rbmk_crane.png | Bin 0 -> 1403 bytes 13 files changed, 208 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerRBMKStorage.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKStorage.java create mode 100644 src/main/resources/assets/hbm/textures/models/machines/rbmk_crane.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7f5d1e630..34ec63cc7 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -6,17 +6,10 @@ import com.hbm.blocks.bomb.*; import com.hbm.blocks.fluid.*; import com.hbm.blocks.gas.*; import com.hbm.blocks.machine.*; -import com.hbm.blocks.machine.pile.BlockGraphite; -import com.hbm.blocks.machine.pile.BlockGraphiteDrilled; -import com.hbm.blocks.machine.pile.BlockGraphiteFuel; -import com.hbm.blocks.machine.pile.BlockGraphiteRod; -import com.hbm.blocks.machine.pile.BlockGraphiteSource; +import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; -import com.hbm.blocks.siege.SiegeCircuit; -import com.hbm.blocks.siege.SiegeHole; -import com.hbm.blocks.siege.SiegeInternal; -import com.hbm.blocks.siege.SiegeShield; +import com.hbm.blocks.siege.*; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; import com.hbm.items.block.*; @@ -32,7 +25,6 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.init.Blocks; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -1044,6 +1036,7 @@ public class ModBlocks { public static final int guiID_rbmk_control_auto = 116; public static final int guiID_rbmk_console = 117; public static final int guiID_rbmk_outgasser = 119; + public static final int guiID_rbmk_storage = 123; public static Block rbmk_loader; public static Block rbmk_steam_inlet; public static Block rbmk_steam_outlet; diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKStorage.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKStorage.java index 924a0d009..a320ed12d 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKStorage.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKStorage.java @@ -1,9 +1,11 @@ package com.hbm.blocks.machine.rbmk; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.BossSpawnHandler; import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKOutgasser; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKStorage; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -22,4 +24,10 @@ public class RBMKStorage extends RBMKBase { public int getRenderType(){ return this.renderIDPassive; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + BossSpawnHandler.markFBI(player); + return openInv(world, x, y, z, player, ModBlocks.guiID_rbmk_storage); + } } diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 0c588a9a3..26b7616bf 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -845,6 +845,13 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_rbmk_storage: { + if(entity instanceof TileEntityRBMKStorage) { + return new ContainerRBMKStorage(player.inventory, (TileEntityRBMKStorage) entity); + } + return null; + } } // NON-TE CONTAINERS @@ -1680,6 +1687,13 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_rbmk_storage: { + if(entity instanceof TileEntityRBMKStorage) { + return new GUIRBMKStorage(player.inventory, (TileEntityRBMKStorage) entity); + } + return null; + } } // ITEM GUIS diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKStorage.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKStorage.java new file mode 100644 index 000000000..63c0ededf --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKStorage.java @@ -0,0 +1,66 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKStorage; + +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 ContainerRBMKStorage extends Container { + + private TileEntityRBMKStorage rbmk; + + public ContainerRBMKStorage(InventoryPlayer invPlayer, TileEntityRBMKStorage tedf) { + rbmk = tedf; + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 4; j++) { + this.addSlotToContainer(new Slot(tedf, i + j * 3, 32 + 32 * j, 29 + 16 * i)); + } + } + + 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 + 20)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); + } + } + + @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 == 0) { + if(!this.mergeItemStack(var5, rbmk.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 0, 12, false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return true; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKStorage.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKStorage.java new file mode 100644 index 000000000..49ad99eb3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKStorage.java @@ -0,0 +1,41 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerRBMKStorage; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKStorage; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIRBMKStorage extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_storage.png"); + private TileEntityRBMKStorage rod; + + public GUIRBMKStorage(InventoryPlayer invPlayer, TileEntityRBMKStorage tedf) { + super(new ContainerRBMKStorage(invPlayer, tedf)); + rod = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.rod.hasCustomInventoryName() ? this.rod.getInventoryName() : I18n.format(this.rod.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); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index d7a037b47..d8805d5f3 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -242,6 +242,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKReflector.class, new RenderRBMKLid()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKLid()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKCooler.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKStorage.class, new RenderRBMKLid()); //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 933b0bca4..81d7167ea 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -954,6 +954,23 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); }}); + renderers.put(Item.getItemFromBlock(ModBlocks.rbmk_crane_console), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.rbmk_crane_console_tex); + ResourceManager.rbmk_crane_console.renderPart("Console_Coonsole"); + ResourceManager.rbmk_crane_console.renderPart("JoyStick"); + ResourceManager.rbmk_crane_console.renderPart("Meter1"); + ResourceManager.rbmk_crane_console.renderPart("Meter2"); + bindTexture(ResourceManager.ks23_tex); ResourceManager.rbmk_crane_console.renderPart("Shotgun"); + bindTexture(ResourceManager.mini_nuke_tex); ResourceManager.rbmk_crane_console.renderPart("MiniNuke"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + renderers.put(Item.getItemFromBlock(ModBlocks.lamp_demon), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -3, 0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 782bbf914..07cda9edb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -24,7 +24,7 @@ public class TileEntityTowerLarge extends TileEntityCondenser { if(worldObj.isRemote) { - if(this.waterTimer > 0) { + if(this.waterTimer > 0 && this.worldObj.getTotalWorldTime() % 4 == 0) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); data.setFloat("lift", 0.5F); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java index e89828676..3d43891c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java @@ -24,7 +24,7 @@ public class TileEntityTowerSmall extends TileEntityCondenser { if(worldObj.isRemote) { - if(this.waterTimer > 0) { + if(this.waterTimer > 0 && this.worldObj.getTotalWorldTime() % 2 == 0) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); data.setFloat("lift", 1F); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index a67eb0e1f..d1fa8e8f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -1,7 +1,20 @@ package com.hbm.tileentity.machine.rbmk; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; public class TileEntityCraneConsole extends TileEntity { - + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return AxisAlignedBB.getBoundingBox(xCoord - 1.5, yCoord, zCoord - 1.5, xCoord + 2.5, yCoord + 1.5, zCoord + 2.5); + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 9152872bb..8ff7533ca 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -8,12 +8,16 @@ import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.FluidTank; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor { private FluidTank tank; + private int lastCooled; public TileEntityRBMKCooler() { super(); @@ -34,9 +38,39 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc this.heat -= cooling; this.tank.setFill(this.tank.getFill() - cooling); - /* - * spew fire here - */ + this.lastCooled = cooling; + + if(lastCooled > 0) { + List entities = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 4, zCoord, xCoord + 1, yCoord + 8, zCoord + 1)); + + for(Entity e : entities) { + e.setFire(5); + e.attackEntityFrom(DamageSource.inFire, 10); + } + } + } else { + this.lastCooled = 0; + } + + } else { + + if(this.lastCooled > 100) { + for(int i = 0; i < 2; i++) { + worldObj.spawnParticle("flame", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.2, 0); + worldObj.spawnParticle("smoke", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.2, 0); + } + + if(worldObj.rand.nextInt(20) == 0) + worldObj.spawnParticle("lava", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.0, 0); + } else if(this.lastCooled > 50) { + for(int i = 0; i < 2; i++) { + worldObj.spawnParticle("cloud", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, worldObj.rand.nextGaussian() * 0.05, 0.2, worldObj.rand.nextGaussian() * 0.05); + } + } else if(this.lastCooled > 0) { + + if(worldObj.getTotalWorldTime() % 2 == 0) + worldObj.spawnParticle("cloud", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.2, 0); + } } @@ -48,6 +82,7 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc super.readFromNBT(nbt); tank.readFromNBT(nbt, "cryo"); + this.lastCooled = nbt.getInteger("cooled"); } @Override @@ -55,6 +90,7 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc super.writeToNBT(nbt); tank.writeToNBT(nbt, "cryo"); + nbt.setInteger("cooled", this.lastCooled); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index ece42344a..1fcba0d87 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -20,7 +20,7 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements @Override public void updateEntity() { - if(!worldObj.isRemote) { + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 10 == 0) { for(int i = 0; i < slots.length - 1; i++) { diff --git a/src/main/resources/assets/hbm/textures/models/machines/rbmk_crane.png b/src/main/resources/assets/hbm/textures/models/machines/rbmk_crane.png new file mode 100644 index 0000000000000000000000000000000000000000..af3cd2c6a3fd176c67f32d23c4e7dab50821a698 GIT binary patch literal 1403 zcmeAS@N?(olHy`uVBq!ia0vp^cYt^y2OE%F^X%e0AjMMbXf$0yJT$@r(U)lKKhSCC<;KUg-Y#A;wja-@tMrZ%g*I zvdm{Co!^)m-#5svk@w!1<2}tzZqj*XiK!l)3GLh4ZA5M^%e`&ZAQE4)m)StAso7=l zqxiDD%q#6o`hWksTxS0JV20#Fg+P6`9rI76DPMk_q_W7*&B8+k358tMdAjT7iRr24 zw=4fXZnG|#eff3n^!?Mtr{^!z*E=&|Q(Wl5(Dz$rwwv+iWbOO2MNl@|a!HGe+YaBD zE!UMJES98LH{A~STqAX5iH@#)ytu-&@cp?2!)Y+d&)SHHS#FU-8PZS6Ci`pdhS%)WlDKmGpn zdhPf1tE>0^{`hPCFXvOad0Pvs`L?e5HsRC8i)Z%je;+7p7WkB7`)R>b8ScKTq#k|~ zJ)X0BbN96iQ?=YJBv$?HFE~4G@u}XE!R@U)t%7_)oT%vSvrPwNga4Gg8j?>S6n}cZtsW-8=sn z*>Ep214cy3v`y`Li|5{7{H5gS$xHI@Dh|z*Jo%0@&m~6e#XRRza@KumFJ<0&?u>KW z%fj9XL~{-c>Mu7onC^RI_RH7iXWvcRpL_b=f7xG2<_GV7JTs~2`1QWNzH94m*X2KY z^-4=g>E8bO{d@Fn|L=c(W?lNZd4k5f&z0HCU0HH>ZJpZ=K||%6wg3ti`Aq!u zjvaG!_op`$M=q#V^Hm6Z#j(BWoSF6YTU(o(n=8J*yBoLd?$V<3_qW}<^W)oT>GkDX z=d>Q|D=7Cp;SkPN$!9KY8NT@Uw@UHq&DOq}g>r(vN7nx5d7gY#I;Ft5?Dmo4zMDNK z%${#-7{q_@>lx?AJKq++-uL_N`}ni*^dJ^ADl$NBSXzwP_aan+^3_VWzEbE%E*c*`!aWWm#P%B3al z=gysb*1vG~dC$n2ce&9%eIZT-wndkwxc^P@D!D6sr(=iC1>5HZ6EY?!-#K{D(d9^b zInS5BefhugHz?l`$UndEe~|l*s~q1-xzAp`8oH#vmCCoSs!xj1$y=P+cO?z z{sqd9HaUE^;yq{V`>NpI=i^Ji`-khTtBjPpv`hUW!&=NG#9-rkmb-I_7k@P;5CA~4{gg30(| Z-}1