From ef228577d911b8d3d591ae757970a1f48f257dfe Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 10 Jul 2024 16:33:33 +0200 Subject: [PATCH] the heinous slop --- src/main/java/com/hbm/blocks/ModBlocks.java | 1 + .../com/hbm/blocks/machine/Floodlight.java | 60 ++++++++++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 2 + .../render/tileentity/RenderFloodlight.java | 58 +++++++++++++++++ .../machine/TileEntityElectrolyser.java | 1 - .../textures/models/machines/floodlight.png | Bin 418 -> 774 bytes 6 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/hbm/render/tileentity/RenderFloodlight.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 011319519..936519c91 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2630,6 +2630,7 @@ public class ModBlocks { GameRegistry.registerBlock(spotlight_halogen, spotlight_halogen.getUnlocalizedName()); GameRegistry.registerBlock(spotlight_halogen_off, spotlight_halogen_off.getUnlocalizedName()); GameRegistry.registerBlock(spotlight_beam, spotlight_beam.getUnlocalizedName()); + register(floodlight); //Reinforced Blocks GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/Floodlight.java b/src/main/java/com/hbm/blocks/machine/Floodlight.java index eb0f3f9c2..5c979550c 100644 --- a/src/main/java/com/hbm/blocks/machine/Floodlight.java +++ b/src/main/java/com/hbm/blocks/machine/Floodlight.java @@ -2,7 +2,14 @@ package com.hbm.blocks.machine; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class Floodlight extends BlockContainer { @@ -19,8 +26,61 @@ public class Floodlight extends BlockContainer { @Override public int getRenderType() { return -1; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } + + //only method that respects sides, called first for orientation + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + //only method with player param, called second for variable rotation + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int meta = world.getBlockMetadata(x, y, z); + + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + float rotation = player.rotationPitch; + + if(meta == 0 || meta == 1) { + if(i == 0 || i == 2) world.setBlockMetadataWithNotify(x, y, z, meta + 6, 3); + if(meta == 1) if(i == 0 || i == 1) rotation = 180F - rotation; + if(meta == 0) if(i == 0 || i == 3) rotation = 180F - rotation; + } + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntityFloodlight) { + TileEntityFloodlight floodlight = (TileEntityFloodlight) tile; + floodlight.rotation = -Math.round(rotation / 5F) * 5F; + } + } public static class TileEntityFloodlight extends TileEntity { + public float rotation; + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.rotation = nbt.getFloat("rotation"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setFloat("rotation", rotation); + } } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 37b781b54..4b4d82843 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -54,6 +54,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; @@ -184,6 +185,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFloodlight.class, new RenderFloodlight()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); diff --git a/src/main/java/com/hbm/render/tileentity/RenderFloodlight.java b/src/main/java/com/hbm/render/tileentity/RenderFloodlight.java new file mode 100644 index 000000000..54c593cee --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderFloodlight.java @@ -0,0 +1,58 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; +import com.hbm.lib.RefStrings; +import com.hbm.render.loader.HFRWavefrontObject; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderFloodlight extends TileEntitySpecialRenderer { + + public static final IModelCustom floodlight = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/floodlight.obj")); + public static final ResourceLocation tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/floodlight.png"); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y + 0.5D, z + 0.5D); + + int meta = tileEntity.getBlockMetadata(); + switch(meta) { + case 0: case 6: GL11.glRotated(180, 1, 0, 0); break; + case 1: case 7: break; + case 2: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(180, 0, 0, 1); break; + case 3: GL11.glRotated(90, 1, 0, 0); break; + case 4: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(90, 0, 0, 1); break; + case 5: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(270, 0, 0, 1); break; + } + + GL11.glTranslated(0, -0.5, 0); + + if(meta != 0 && meta != 1) GL11.glRotated(90, 0, 1, 0); + + bindTexture(tex); + floodlight.renderPart("Base"); + + TileEntityFloodlight floodtile = (TileEntityFloodlight) tileEntity; + float rotation = floodtile.rotation; + if(meta == 0 || meta == 6) rotation -= 90; + if(meta == 1 || meta == 7) rotation += 90; + GL11.glTranslated(0, 0.5, 0); + GL11.glRotatef(rotation, 0, 0, 1); + GL11.glTranslated(0, -0.5, 0); + + floodlight.renderPart("Lights"); + RenderArcFurnace.fullbright(true); + floodlight.renderPart("Lamps"); + RenderArcFurnace.fullbright(false); + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index fa9619d70..9801d413b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -16,7 +16,6 @@ import com.hbm.inventory.gui.GUIElectrolyserMetal; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.inventory.recipes.CrystallizerRecipes; import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; diff --git a/src/main/resources/assets/hbm/textures/models/machines/floodlight.png b/src/main/resources/assets/hbm/textures/models/machines/floodlight.png index 8decf192ab800a2e22348573d866c53befb624a7..5dcd50afb8b8d0ef1e64e1e9c0f60f42c2e5ad08 100644 GIT binary patch delta 735 zcmV<50wDdO1BM2WGk*fTNkl3Zooj zZxC;rYLBs+D~wX*6swH33tG`ogdnAI3I^n1G5+6R2J$2%%L8Mc-}~R+p7G!q`SXM1 z+#lWCd42s7Xun4QxUZYN_X2>=8I+6s`9Z#U`=0%bj+{VEsDEL2UpIU2_2W41ozX1I zw6nnlmE7MyKL`w@_zt8mP8Dm`N9qz%mL-5`)=^*m zLKiq5kF1$bl0<7=ak@Z=H>b6t&0-&hVek8JYelUUyZf{$_h&Y+%8I&LvFWd>YH>tO z@PXHsQLWIeAIq|Ai7uHOyQB)kuvJobtgr-J0ksP1Wq-n@$O*I?G2@=hIx9BzoXeJ0 zS@GBB47k3ndtRRK?t4snSS9BgvZIawVI9NuE%50}-SguSz;9RYHwpsubibeL3!iYC~UYPx6C80*@y4?ciXOf~kSlWNwqAtXs6xkYdvC}dPvpHiu$bQ!Vv ze2U~^b$_nNJ*A?Mni6T6N=_TF*pG2Y1wp{B@cZn&*=$&CfUqCa#nF=ML;&!pB@vg% z*ivh|-L@(eMZs=st$1lg4u?ZK{%*IE`~BXdwgHD{_gR*;ZZMsFbk91bm{c#0V;M!! zS!bT-lPP8*rz4f7sT^ZP=fqTUCg{ervEnSXB3NaTrjF@Z6a#A2y0P4#s;XDxjkV%z zKT0&v#aI_(v*N0@EgZ~l#XiOU3oBAF$pY>2?7oY+#+vni9=78YMZszVz&}aM2XkSb Rjf(&P002ovPDHLkV1h5vZrK0; delta 376 zcmV-;0f+vE2BHIyGk*bDNkl21(cH6d9m9B-!B(z!aG$o6v{0 zs)R}}#&%*5pVX%`)IWd^rVh%?K%jho1)P>GV$47Y#1AzPDF*z7?*rYP{mA{`a<&0l zbjNCAz_y%ig9^=NtUFd418&RrC);|cA<{IPv1T0`GzWhP+J93-u$p6`P|Pl`_Z-u~ zJ{3!$M!q!DG0kSo;Wp<*Xj_XSUz#!Q8q1%GaR7*p9!=V@lp^^&50+2ayfv0;D;R*k zc^Gw0W>+-mTzMTce)4X%j&;XsqkN6UbuMw@mePJyWHM&3Q1jJ&!l{Kl@DuMnDdW>L zIe?ongPD4huW{~U{t?04>!7Rm0DyhpN$-v02!JvbjjQ>XbYD?;nk9ZE`#BZ0I>zZX zNpz}I3v`KrQtdZ&