From 58d3178650e5ab821b8dc56ab77ad292e58e8779 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 8 Mar 2022 22:21:28 +0100 Subject: [PATCH] C4 now uses a finished ExVNT, chemmfac slot shenanigans --- .../com/hbm/blocks/bomb/BlockChargeC4.java | 2 + .../hbm/blocks/bomb/BlockChargeSemtex.java | 2 +- .../vanillant/ExplosionEffectStandard.java | 62 ++++++++++++ .../hbm/explosion/vanillant/ExplosionVNT.java | 24 ++++- .../inventory/container/ContainerChemfac.java | 32 ++++++- .../com/hbm/inventory/gui/GUIChemfac.java | 20 ++-- .../hbm/items/tool/ItemLaserDetonator.java | 15 +-- src/main/java/com/hbm/main/ClientProxy.java | 3 + .../com/hbm/packet/AuxParticlePacketNT.java | 3 +- .../hbm/packet/ExplosionKnockbackPacket.java | 4 +- ...lientEffectsAndParticleHandlingPacket.java | 94 +++++++++++++++++++ src/main/java/com/hbm/packet/NBTPacket.java | 2 - .../java/com/hbm/packet/PacketDispatcher.java | 4 +- .../com/hbm/packet/PlayerInformPacket.java | 29 +++++- .../machine/TileEntityMachineChemfac.java | 8 +- 15 files changed, 265 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/hbm/explosion/vanillant/ExplosionEffectStandard.java create mode 100644 src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java index 4ff467dc8..3ca182cd9 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java @@ -1,5 +1,6 @@ package com.hbm.blocks.bomb; +import com.hbm.explosion.vanillant.BlockAllocatorStandard; import com.hbm.explosion.vanillant.ExplosionVNT; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -16,6 +17,7 @@ public class BlockChargeC4 extends BlockChargeBase { safe = false; ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10F).makeStandard(); + xnt.setBlockAllocator(new BlockAllocatorStandard(64)); xnt.explode(); return BombReturnCode.DETONATED; diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java index 163b93578..7b0d1d633 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java @@ -26,6 +26,6 @@ public class BlockChargeSemtex extends BlockChargeBase { @Override public int getRenderType() { - return BlockChargeDynamite.renderID; + return BlockChargeC4.renderID; } } diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionEffectStandard.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionEffectStandard.java new file mode 100644 index 000000000..57ecffb9f --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionEffectStandard.java @@ -0,0 +1,62 @@ +package com.hbm.explosion.vanillant; + +import java.util.List; + +import com.hbm.packet.ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class ExplosionEffectStandard implements IExplosionSFX { + + @Override + public void doEffect(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + if(world.isRemote) + return; + + world.playSoundEffect(x, y, z, "random.explode", 4.0F, (1.0F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F) * 0.7F); + + PacketDispatcher.wrapper.sendToAllAround(new ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket(x, y, z, explosion.size, explosion.compat.affectedBlockPositions), new TargetPoint(world.provider.dimensionId, x, y, z, 250)); + } + + public static void performClient(World world, double x, double y, double z, float size, List affectedBlocks) { + + if(size >= 2.0F) { + world.spawnParticle("hugeexplosion", x, y, z, 1.0D, 0.0D, 0.0D); + } else { + world.spawnParticle("largeexplode", x, z, z, 1.0D, 0.0D, 0.0D); + } + + int count = affectedBlocks.size(); + + for(int i = 0; i < count; i++) { + + ChunkPosition pos = (ChunkPosition) affectedBlocks.get(i); + int pX = pos.chunkPosX; + int pY = pos.chunkPosY; + int pZ = pos.chunkPosZ; + + double oX = (double) ((float) pX + world.rand.nextFloat()); + double oY = (double) ((float) pY + world.rand.nextFloat()); + double oZ = (double) ((float) pZ + world.rand.nextFloat()); + double dX = oX - x; + double dY = oY - y; + double dZ = oZ - z; + double delta = (double) MathHelper.sqrt_double(dX * dX + dY * dY + dZ * dZ) / 1D /* hehehe */; + dX /= delta; + dY /= delta; + dZ /= delta; + double mod = 0.5D / (delta / (double) size + 0.1D); + mod *= (double) (world.rand.nextFloat() * world.rand.nextFloat() + 0.3F); + dX *= mod; + dY *= mod; + dZ *= mod; + world.spawnParticle("explode", (oX + x * 1.0D) / 2.0D, (oY + y * 1.0D) / 2.0D, (oZ + z * 1.0D) / 2.0D, dX, dY, dZ); + world.spawnParticle("smoke", oX, oY, oZ, dX, dY, dZ); + } + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java index b677e6bb8..34f2a0725 100644 --- a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java @@ -2,6 +2,7 @@ package com.hbm.explosion.vanillant; import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -31,8 +32,9 @@ public class ExplosionVNT { protected double posZ; protected float size; public Entity exploder; - - public Explosion compat; //TODO: override and implement getters for the EVNT's data + + private Map compatPlayers = new HashMap(); + public Explosion compat; public ExplosionVNT(World world, double x, double y, double z, float size) { this(world, x, y, z, size, null); @@ -46,10 +48,19 @@ public class ExplosionVNT { this.size = size; this.exploder = exploder; - this.compat = new Explosion(world, exploder, x, y, z, size); + this.compat = new Explosion(world, exploder, x, y, z, size) { + + @Override + public Map func_77277_b() { + return ExplosionVNT.this.compatPlayers; + } + }; } public void explode() { + + this.compat.exploder = this.exploder; + this.compat.explosionSize = this.size; boolean processBlocks = blockAllocator != null && blockProcessor != null; boolean processEntities = entityProcessor != null && playerProcessor != null; @@ -57,12 +68,18 @@ public class ExplosionVNT { HashSet affectedBlocks = null; HashMap affectedPlayers = null; + //allocation if(processBlocks) affectedBlocks = blockAllocator.allocate(this, world, posX, posY, posZ, size); if(processEntities) affectedPlayers = entityProcessor.process(this, world, posX, posY, posZ, size); + //serverside processing if(processBlocks) blockProcessor.process(this, world, posX, posY, posZ, affectedBlocks); if(processEntities) playerProcessor.process(this, world, posX, posY, posZ, affectedPlayers); + //compat + if(processBlocks) this.compat.affectedBlockPositions.addAll(affectedBlocks); + if(processEntities) this.compatPlayers.putAll(affectedPlayers); + if(sfx != null) { for(IExplosionSFX fx : sfx) { fx.doEffect(this, world, posX, posY, posZ, size); @@ -96,6 +113,7 @@ public class ExplosionVNT { this.setBlockProcessor(new BlockProcessorStandard()); this.setEntityProcessor(new EntityProcessorStandard()); this.setPlayerProcessor(new PlayerProcessorStandard()); + this.setSFX(new ExplosionEffectStandard()); return this; } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerChemfac.java b/src/main/java/com/hbm/inventory/container/ContainerChemfac.java index 9d2c93f37..45604135d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerChemfac.java +++ b/src/main/java/com/hbm/inventory/container/ContainerChemfac.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotUpgrade; import com.hbm.tileentity.machine.TileEntityMachineChemfac; import net.minecraft.entity.player.EntityPlayer; @@ -15,14 +16,41 @@ public class ContainerChemfac extends Container { public ContainerChemfac(InventoryPlayer playerInv, TileEntityMachineChemfac tile) { chemfac = tile; + this.addSlotToContainer(new Slot(tile, 0, 234, 79)); + + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 2; j++) { + this.addSlotToContainer(new SlotUpgrade(tile, 1 + i * 2 + j, 217 + j * 18, 172 + i * 18)); + } + } + + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 2; j++) { + + for(int k = 0; k < 2; k++) { + for(int l = 0; l < 2; l++) { + this.addSlotToContainer(new Slot(tile, this.inventorySlots.size(), 7 + j * 110 + l * 16, 14 + i * 38 + k * 16)); + } + } + + for(int k = 0; k < 2; k++) { + for(int l = 0; l < 2; l++) { + this.addSlotToContainer(new Slot(tile, this.inventorySlots.size(), 69 + j * 110 + l * 16, 14 + i * 38 + k * 16)); + } + } + + this.addSlotToContainer(new Slot(tile, this.inventorySlots.size(), 51 + j * 110, 30 + i * 38)); + } + } + for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 34 + j * 18, 174 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + this.addSlotToContainer(new Slot(playerInv, i, 34 + i * 18, 232)); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIChemfac.java b/src/main/java/com/hbm/inventory/gui/GUIChemfac.java index b5a5aa7d8..51036d6b3 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIChemfac.java +++ b/src/main/java/com/hbm/inventory/gui/GUIChemfac.java @@ -7,8 +7,8 @@ import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineChemfac; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; import net.minecraft.util.ResourceLocation; public class GUIChemfac extends GuiInfoContainer { @@ -30,18 +30,20 @@ public class GUIChemfac extends GuiInfoContainer { } @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - - String name = this.chemfac.hasCustomInventoryName() ? this.chemfac.getInventoryName() : I18n.format(this.chemfac.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } + protected void drawGuiContainerForegroundLayer(int i, int j) { } @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); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, 211); + drawTexturedModalRect(guiLeft + 26, guiTop + 211, 26, 211, 176, 45); + + for(int i = 0; i < this.inventorySlots.inventorySlots.size(); i++) { + Slot s = this.inventorySlots.getSlot(i); + + this.fontRendererObj.drawStringWithShadow(i + "", guiLeft + s.xDisplayPosition + 2, guiTop + s.yDisplayPosition, 0xffffff); + this.fontRendererObj.drawStringWithShadow(s.getSlotIndex() + "", guiLeft + s.xDisplayPosition + 2, guiTop + s.yDisplayPosition + 8, 0xff8080); + } } } diff --git a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java index 6a8fe97e1..263c5510c 100644 --- a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java @@ -10,10 +10,13 @@ import com.hbm.interfaces.IBomb.BombReturnCode; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.ChatBuilder; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -44,19 +47,11 @@ public class ItemLaserDetonator extends Item implements IHoldableWeapon { MainRegistry.logger.log(Level.INFO, "[DET] Tried to detonate block at " + x + " / " + y + " / " + z + " by " + player.getDisplayName() + "!"); world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - - player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) - .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) - .next("] ").color(EnumChatFormatting.DARK_AQUA) - .nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush()); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush()), (EntityPlayerMP) player); } else { world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - - player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) - .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) - .next("] ").color(EnumChatFormatting.DARK_AQUA) - .nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush()); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush()), (EntityPlayerMP) player); } } else { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 46d66127d..e9db0e21c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -50,6 +50,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.explosion.vanillant.ExplosionEffectStandard; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.ModItems; @@ -779,6 +780,8 @@ public class ClientProxy extends ServerProxy { World world = Minecraft.getMinecraft().theWorld; + System.out.println("FUCK YOU"); + if(world == null) //might i ask why? return; diff --git a/src/main/java/com/hbm/packet/AuxParticlePacketNT.java b/src/main/java/com/hbm/packet/AuxParticlePacketNT.java index 393314d6b..f3b311e3a 100644 --- a/src/main/java/com/hbm/packet/AuxParticlePacketNT.java +++ b/src/main/java/com/hbm/packet/AuxParticlePacketNT.java @@ -60,9 +60,10 @@ public class AuxParticlePacketNT implements IMessage { if(Minecraft.getMinecraft().theWorld == null) return null; + try { - + NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); if(nbt != null) diff --git a/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java b/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java index 3d832aafb..9d0aa99c2 100644 --- a/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java +++ b/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java @@ -20,8 +20,8 @@ public class ExplosionKnockbackPacket implements IMessage { public ExplosionKnockbackPacket(Vec3 vec) { this.motionX = (float) vec.xCoord; - this.motionY = (float) vec.xCoord; - this.motionZ = (float) vec.xCoord; + this.motionY = (float) vec.yCoord; + this.motionZ = (float) vec.zCoord; } @Override diff --git a/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java b/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java new file mode 100644 index 000000000..4810fa151 --- /dev/null +++ b/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java @@ -0,0 +1,94 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import com.hbm.explosion.vanillant.ExplosionEffectStandard; + +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 cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.world.ChunkPosition; + +/** + * Can you tell I'm fucking done with packets? Well, can you? + * @author hbm + * + */ +public class ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket implements IMessage { + + private double posX; + private double posY; + private double posZ; + private float size; + private List affectedBlocks; + + public ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket() { } + + public ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket(double x, double y, double z, float size, List blocks) { + this.posX = x; + this.posY = y; + this.posZ = z; + this.size = size; + this.affectedBlocks = new ArrayList(blocks); + } + + @Override + public void fromBytes(ByteBuf buf) { + this.posX = (double) buf.readFloat(); + this.posY = (double) buf.readFloat(); + this.posZ = (double) buf.readFloat(); + this.size = buf.readFloat(); + int i = buf.readInt(); + this.affectedBlocks = new ArrayList(i); + int j = (int) this.posX; + int k = (int) this.posY; + int l = (int) this.posZ; + + for(int i1 = 0; i1 < i; ++i1) { + int j1 = buf.readByte() + j; + int k1 = buf.readByte() + k; + int l1 = buf.readByte() + l; + this.affectedBlocks.add(new ChunkPosition(j1, k1, l1)); + } + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeFloat((float) this.posX); + buf.writeFloat((float) this.posY); + buf.writeFloat((float) this.posZ); + buf.writeFloat(this.size); + buf.writeInt(this.affectedBlocks.size()); + int i = (int) this.posX; + int j = (int) this.posY; + int k = (int) this.posZ; + Iterator iterator = this.affectedBlocks.iterator(); + + while(iterator.hasNext()) { + ChunkPosition chunkposition = (ChunkPosition) iterator.next(); + int l = chunkposition.chunkPosX - i; + int i1 = chunkposition.chunkPosY - j; + int j1 = chunkposition.chunkPosZ - k; + buf.writeByte(l); + buf.writeByte(i1); + buf.writeByte(j1); + } + } + + public static class Handler implements IMessageHandler { + + @Override + @SideOnly(Side.CLIENT) + public IMessage onMessage(ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket m, MessageContext ctx) { + + ExplosionEffectStandard.performClient(Minecraft.getMinecraft().theWorld, m.posX, m.posY, m.posZ, m.size, m.affectedBlocks); + return null; + } + } +} diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/NBTPacket.java index cdca9f2eb..80645347d 100644 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ b/src/main/java/com/hbm/packet/NBTPacket.java @@ -3,8 +3,6 @@ package com.hbm.packet; import java.io.IOException; import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.tileentity.TileEntityTickingBase; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index a3023730b..f4abdc6e7 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -95,8 +95,10 @@ public class PacketDispatcher { wrapper.registerMessage(AnvilCraftPacket.Handler.class, AnvilCraftPacket.class, i++, Side.SERVER); //Sends a funi text to display like a music disc announcement wrapper.registerMessage(TEDoorAnimationPacket.Handler.class, TEDoorAnimationPacket.class, i++, Side.CLIENT); - //Sends a funi text to display like a music disc announcement + //Does ExVNT standard player knockback wrapper.registerMessage(ExplosionKnockbackPacket.Handler.class, ExplosionKnockbackPacket.class, i++, Side.CLIENT); + //just go fuck yourself already + wrapper.registerMessage(ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.Handler.class, ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.class, i++, Side.CLIENT); } } diff --git a/src/main/java/com/hbm/packet/PlayerInformPacket.java b/src/main/java/com/hbm/packet/PlayerInformPacket.java index c5be89aec..659f70a6d 100644 --- a/src/main/java/com/hbm/packet/PlayerInformPacket.java +++ b/src/main/java/com/hbm/packet/PlayerInformPacket.java @@ -9,25 +9,45 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import net.minecraft.util.IChatComponent; public class PlayerInformPacket implements IMessage { - String dmesg = ""; + boolean fancy; + private String dmesg = ""; + private IChatComponent component; public PlayerInformPacket() { } public PlayerInformPacket(String dmesg) { + this.fancy = false; this.dmesg = dmesg; } + public PlayerInformPacket(IChatComponent component) { + this.fancy = true; + this.component = component; + } + @Override public void fromBytes(ByteBuf buf) { - dmesg = ByteBufUtils.readUTF8String(buf); + fancy = buf.readBoolean(); + + if(!fancy) { + dmesg = ByteBufUtils.readUTF8String(buf); + } else { + component = IChatComponent.Serializer.func_150699_a(ByteBufUtils.readUTF8String(buf)); + } } @Override public void toBytes(ByteBuf buf) { - ByteBufUtils.writeUTF8String(buf, dmesg); + buf.writeBoolean(fancy); + if(!fancy) { + ByteBufUtils.writeUTF8String(buf, dmesg); + } else { + ByteBufUtils.writeUTF8String(buf, IChatComponent.Serializer.func_150696_a(component)); + } } public static class Handler implements IMessageHandler { @@ -36,7 +56,8 @@ public class PlayerInformPacket implements IMessage { @SideOnly(Side.CLIENT) public IMessage onMessage(PlayerInformPacket m, MessageContext ctx) { try { - MainRegistry.proxy.displayTooltip(m.dmesg); + + MainRegistry.proxy.displayTooltip(m.fancy ? m.component.getFormattedText() : m.dmesg); } catch (Exception x) { } return null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index a82ff751e..4eaa15658 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -46,22 +46,22 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { @Override public int getRecipeCount() { - return 0; + return 8; } @Override public int getTankCapacity() { - return 0; + return 32_000; } @Override public int getTemplateIndex(int index) { - return 0; + return 13 + index * 9; } @Override public int[] getSlotIndicesFromIndex(int index) { - return new int[] {4, 4, 4, 4}; //yeah whatever + return new int[] {5 + index * 9, 8 + index * 9, 9 + index * 9, 12 + index * 9}; } @Override