From 0427ab89f1753a44b30cbc35ce021cbbdc845109 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Thu, 10 Aug 2017 18:52:45 +0300 Subject: fix missing source folder --- src/main/java/ihl/ClientProxy.java | 496 +++++++++++++++++++++++++++++++++++++ 1 file changed, 496 insertions(+) create mode 100644 src/main/java/ihl/ClientProxy.java (limited to 'src/main/java/ihl/ClientProxy.java') diff --git a/src/main/java/ihl/ClientProxy.java b/src/main/java/ihl/ClientProxy.java new file mode 100644 index 0000000..12bccbe --- /dev/null +++ b/src/main/java/ihl/ClientProxy.java @@ -0,0 +1,496 @@ +package ihl; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; + +import cpw.mods.fml.client.registry.ClientRegistry; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.network.FMLNetworkEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ihl.crop_harvestors.BlobEntityFX; +import ihl.crop_harvestors.BlobEntityFX.FluidType; +import ihl.crop_harvestors.BlobRenderFX; +import ihl.crop_harvestors.SackRender; +import ihl.crop_harvestors.SackTileEntity; +import ihl.enviroment.MirrorRender; +import ihl.enviroment.MirrorTileEntity; +import ihl.explosion.ExplosionEntityFX; +import ihl.explosion.ExplosionRenderFX; +import ihl.explosion.IHLEntityFallingPile; +import ihl.explosion.IHLEntityFallingPileRender; +import ihl.explosion.PileBlockRender; +import ihl.explosion.PileTileEntity; +import ihl.flexible_cable.AnchorTileEntity; +import ihl.flexible_cable.BatterySwitchUnitModel; +import ihl.flexible_cable.BatterySwitchUnitTileEntity; +import ihl.flexible_cable.BlastEntityFX; +import ihl.flexible_cable.IronWorkbenchRender; +import ihl.flexible_cable.IronWorkbenchTileEntity; +import ihl.flexible_cable.NodeEntity; +import ihl.flexible_cable.NodeRender; +import ihl.flexible_cable.RectifierTransformerUnitTileEntity; +import ihl.interfaces.INetworkListener; +import ihl.interfaces.ISelectionBoxSpecialRenderer; +import ihl.items_blocks.FlexibleCableItem; +import ihl.items_blocks.IHLTool; +import ihl.items_blocks.MachineBaseBlock.MachineType; +import ihl.model.CableHolderSelectionBoxSpecialRenderer; +import ihl.model.FlexibleCableItemRender; +import ihl.model.IHLBlockRenderer; +import ihl.model.IHLToolRenderer; +import ihl.model.ImpregnatingMachineBlockRender; +import ihl.model.IronWorkbenchBlockRender; +import ihl.model.RectifierTransformerUnitBlockRender; +import ihl.model.RectifierTransformerUnitSelectionBoxSpecialRenderer; +import ihl.model.RefluxCondenserBlockRender; +import ihl.model.UniversalTileRender; +import ihl.processing.chemistry.ElectrolysisBathModel; +import ihl.processing.chemistry.ElectrolysisBathTileEntity; +import ihl.processing.chemistry.FractionatorBottomModel; +import ihl.processing.chemistry.FractionatorBottomTileEntity; +import ihl.processing.chemistry.FractionatorCoverModel; +import ihl.processing.chemistry.FractionatorCoverTileEntity; +import ihl.processing.chemistry.FractionatorSectionModel; +import ihl.processing.chemistry.FractionatorSectionTileEntity; +import ihl.processing.chemistry.GaedesMercuryRotaryPumpModel; +import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity; +import ihl.processing.chemistry.LoomModel; +import ihl.processing.chemistry.LoomTileEntity; +import ihl.processing.chemistry.RefluxCondenserModel; +import ihl.processing.chemistry.RefluxCondenserTileEntity; +import ihl.processing.chemistry.SolarEvaporatorTileEntity; +import ihl.processing.metallurgy.CoilerModel; +import ihl.processing.metallurgy.CoilerRender; +import ihl.processing.metallurgy.CoilerTileEntity; +import ihl.processing.metallurgy.DetonationSprayingMachineModel; +import ihl.processing.metallurgy.DetonationSprayingMachineRender; +import ihl.processing.metallurgy.DetonationSprayingMachineTileEntity; +import ihl.processing.metallurgy.ExtruderModel; +import ihl.processing.metallurgy.ExtruderTileEntity; +import ihl.processing.metallurgy.GasWeldingStationModel; +import ihl.processing.metallurgy.GasWeldingStationTileEntity; +import ihl.processing.metallurgy.ImpregnatingMachineRender; +import ihl.processing.metallurgy.ImpregnatingMachineTileEntity; +import ihl.processing.metallurgy.LathePart1Model; +import ihl.processing.metallurgy.LathePart1TileEntity; +import ihl.processing.metallurgy.LathePart2Model; +import ihl.processing.metallurgy.LathePart2TileEntity; +import ihl.processing.metallurgy.RollingMachinePart1Model; +import ihl.processing.metallurgy.RollingMachinePart1TileEntity; +import ihl.processing.metallurgy.RollingMachinePart2Model; +import ihl.processing.metallurgy.RollingMachinePart2TileEntity; +import ihl.processing.metallurgy.RollingMachineRender; +import ihl.processing.metallurgy.VulcanizationExtrudingMoldModel; +import ihl.processing.metallurgy.VulcanizationExtrudingMoldTileEntity; +import ihl.processing.metallurgy.WoodenRollingMachinePart1TileEntity; +import ihl.processing.metallurgy.WoodenRollingMachinePart2Model; +import ihl.processing.metallurgy.WoodenRollingMachinePart2TileEntity; +import ihl.processing.metallurgy.WoodenRollingMachineRender; +import ihl.servitor.FlameEntityFX; +import ihl.servitor.FlameRenderFX; +import ihl.servitor.LostHeadEntity; +import ihl.servitor.LostHeadRender; +import ihl.servitor.SkullItemRender; +import ihl.utils.BlockItemRender; +import ihl.utils.IHLRenderUtils; +import ihl.utils.IHLUtils; +import ihl.worldgen.ores.IHLFluid; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufInputStream; +import io.netty.buffer.ByteBufOutputStream; +import io.netty.buffer.Unpooled; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.multiplayer.WorldClient; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.common.MinecraftForge; + +@SideOnly(value = Side.CLIENT) +public class ClientProxy extends ServerProxy { + + public boolean loadMirrorRender = true; + public IHLRenderUtils renderUtils; + public Map sharedBlockRenders = new HashMap(); + public Map, ISelectionBoxSpecialRenderer> selectionBoxSpecialRendererRegistry = new HashMap, ISelectionBoxSpecialRenderer>(); + + public ClientProxy() { + } + + @Override + public void load() throws ParserConfigurationException { + if (channel == null) { + channel = NetworkRegistry.INSTANCE.newEventDrivenChannel(IHLModInfo.MODID); + channel.register(this); + } + this.renderUtils = new IHLRenderUtils(); + MinecraftForge.EVENT_BUS.register(this.renderUtils); + registerBlockHandler(new ImpregnatingMachineBlockRender(), MachineType.BronzeTub); + registerBlockHandler(new ImpregnatingMachineBlockRender(), MachineType.SolarEvaporator); + registerBlockHandler(new RefluxCondenserBlockRender(), MachineType.RefluxCondenser); + registerBlockHandler(new RectifierTransformerUnitBlockRender(), MachineType.RectifierTransformerUnit); + registerBlockHandler(new IronWorkbenchBlockRender(), MachineType.IronWorkbench); + PileBlockRender pileBlockRender = new PileBlockRender(); + RenderingRegistry.registerBlockHandler(pileBlockRender); + ClientRegistry.bindTileEntitySpecialRenderer(PileTileEntity.class, pileBlockRender.pileTileEntityRender); + + RenderingRegistry.registerEntityRenderingHandler(IHLEntityFallingPile.class, new IHLEntityFallingPileRender()); + ClientRegistry.bindTileEntitySpecialRenderer(SackTileEntity.class, new SackRender()); + ClientRegistry.bindTileEntitySpecialRenderer(LathePart1TileEntity.class, new UniversalTileRender( + new LathePart1Model(), new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(LathePart2TileEntity.class, new UniversalTileRender( + new LathePart2Model(), new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(LoomTileEntity.class, new UniversalTileRender(new LoomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/detonationSprayingMachine.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(ImpregnatingMachineTileEntity.class, + new ImpregnatingMachineRender(900f)); + ClientRegistry.bindTileEntitySpecialRenderer(SolarEvaporatorTileEntity.class, + new ImpregnatingMachineRender(900f)); + ClientRegistry.bindTileEntitySpecialRenderer(DetonationSprayingMachineTileEntity.class, + new DetonationSprayingMachineRender()); + ClientRegistry.bindTileEntitySpecialRenderer(CoilerTileEntity.class, new CoilerRender()); + ClientRegistry.bindTileEntitySpecialRenderer(IronWorkbenchTileEntity.class, new IronWorkbenchRender()); + ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart1TileEntity.class, new RollingMachineRender()); + ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart2TileEntity.class, + new UniversalTileRender(new RollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(VulcanizationExtrudingMoldTileEntity.class, + new UniversalTileRender(new VulcanizationExtrudingMoldModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(ExtruderTileEntity.class, new UniversalTileRender( + new ExtruderModel(), new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart1TileEntity.class, + new WoodenRollingMachineRender()); + ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart2TileEntity.class, + new UniversalTileRender(new WoodenRollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/woodenRollingMachine.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(GasWeldingStationTileEntity.class, + new UniversalTileRender(new GasWeldingStationModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/gasWeldingStation.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(GaedesMercuryRotaryPumpTileEntity.class, + new UniversalTileRender(new GaedesMercuryRotaryPumpModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/extruder.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(FractionatorBottomTileEntity.class, + new UniversalTileRender(new FractionatorBottomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(FractionatorSectionTileEntity.class, + new UniversalTileRender(new FractionatorSectionModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(FractionatorCoverTileEntity.class, + new UniversalTileRender(new FractionatorCoverModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(RefluxCondenserTileEntity.class, + new UniversalTileRender(new RefluxCondenserModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(BatterySwitchUnitTileEntity.class, + new UniversalTileRender(new BatterySwitchUnitModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/batterySwitchUnit.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(ElectrolysisBathTileEntity.class, + new UniversalTileRender(new ElectrolysisBathModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/electrolysisBath.png"))); + if (loadMirrorRender && IHLMod.config.mirrorReflectionRange > 0) { + ClientRegistry.bindTileEntitySpecialRenderer(MirrorTileEntity.class, new MirrorRender()); + } + selectionBoxSpecialRendererRegistry.put(AnchorTileEntity.class, new CableHolderSelectionBoxSpecialRenderer()); + selectionBoxSpecialRendererRegistry.put(RectifierTransformerUnitTileEntity.class, + new RectifierTransformerUnitSelectionBoxSpecialRenderer()); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("cannonBronze"), + new BlockItemRender(new DetonationSprayingMachineModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/detonationSprayingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart1"), + new BlockItemRender(new LathePart1Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart2"), + new BlockItemRender(new LathePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart1"), + new BlockItemRender(new RollingMachinePart1Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 5, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart2"), + new BlockItemRender(new RollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("coiler"), + new BlockItemRender(new CoilerModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 6, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("loom"), + new BlockItemRender(new LoomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/detonationSprayingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("vulcanizationExtrudingMold"), + new BlockItemRender(new VulcanizationExtrudingMoldModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("extruder"), + new BlockItemRender(new ExtruderModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart1"), + new BlockItemRender(new WoodenRollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/woodenRollingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart2"), + new BlockItemRender(new WoodenRollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/woodenRollingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gasWeldingStation"), + new BlockItemRender(new GasWeldingStationModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/gasWeldingStation.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gaedesMercuryRotaryPump"), + new BlockItemRender(new GaedesMercuryRotaryPumpModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/extruder.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLMod.ihlSkull, new SkullItemRender()); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorBottom"), + new BlockItemRender(new FractionatorBottomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorSection"), + new BlockItemRender(new FractionatorSectionModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorCover"), + new BlockItemRender(new FractionatorCoverModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("refluxCondenser"), + new BlockItemRender(new RefluxCondenserModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("batterySwitchUnit"), + new BlockItemRender(new BatterySwitchUnitModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/batterySwitchUnit.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("electrolysisBath"), + new BlockItemRender(new ElectrolysisBathModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/electrolysisBath.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLTool.instance, new IHLToolRenderer()); + MinecraftForgeClient.registerItemRenderer(FlexibleCableItem.instance, new FlexibleCableItemRender()); + RenderingRegistry.registerEntityRenderingHandler(LostHeadEntity.class, new LostHeadRender()); + RenderingRegistry.registerEntityRenderingHandler(FlameEntityFX.class, + new FlameRenderFX(IHLModInfo.MODID + ":textures/particles/flameTongue.png")); + RenderingRegistry.registerEntityRenderingHandler(BlastEntityFX.class, + new FlameRenderFX(IHLModInfo.MODID + ":textures/particles/blast.png")); + RenderingRegistry.registerEntityRenderingHandler(BlobEntityFX.class, new BlobRenderFX()); + RenderingRegistry.registerEntityRenderingHandler(ExplosionEntityFX.class, + new ExplosionRenderFX(IHLModInfo.MODID + ":textures/particles/explosion.png")); + RenderingRegistry.registerEntityRenderingHandler(NodeEntity.class, new NodeRender()); + } + + @Override + public void spawnParticle(int particle, World world, double x, double y, double z, double mx, double my, double mz, + float particleScale) { + switch (particle) { + case 0: + FlameEntityFX flamePEFX1 = new FlameEntityFX(world, x, y, z, mx, my, mz, particleScale); + world.spawnEntityInWorld(flamePEFX1); + break; + case 1: + BlobEntityFX blob = new BlobEntityFX(world, x, y, z, mx, my, mz, particleScale, FluidType.RESIN); + world.spawnEntityInWorld(blob); + break; + case 2: + BlobEntityFX blob2 = new BlobEntityFX(world, x, y, z, mx, my, mz, particleScale, FluidType.SAP); + world.spawnEntityInWorld(blob2); + break; + case 3: + BlastEntityFX blast = new BlastEntityFX(world, x, y, z, mx, my, mz, particleScale); + world.spawnEntityInWorld(blast); + break; + case 4: + world.spawnParticle("smoke", x, y, z, mx, my, mz); + break; + default: + FlameEntityFX flamePEFX2 = new FlameEntityFX(world, x, y, z, mx, my, mz, particleScale); + world.spawnEntityInWorld(flamePEFX2); + break; + } + } + + @Override + public void createExplosionEffect(World world, int x, int y, int z, float radius) { + world.playSound(x, y, z, IHLModInfo.MODID + ":explosion", 100f, 1f, false); + ExplosionEntityFX explosionFX = new ExplosionEntityFX(world, x, y, z, radius); + world.spawnEntityInWorld(explosionFX); + } + + @Override + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void registerIcons(TextureStitchEvent.Pre event) { + if (event.map.getTextureType() == 0) { + IHLFluid.registerIcons(event.map); + } + } + + @Override + public Render getRenderForEntityClass(Class entityClass) { + return (Render) RenderManager.instance.entityRenderMap.get(entityClass); + } + + @Override + public void initBlockRenderer() { + new IHLBlockRenderer(); + } + + @Override + public int getGLDisplayList() { + return GLAllocation.generateDisplayLists(1); + } + + @Override + public File getMinecraftDir() { + return Minecraft.getMinecraft().mcDataDir; + } + + @Override + public int shareBlockRendererByMachineType(MachineType type) { + return sharedBlockRenders.get(type); + } + + public void registerBlockHandler(ISimpleBlockRenderingHandler handler, MachineType... types) { + RenderingRegistry.registerBlockHandler(handler); + for (MachineType type : types) { + sharedBlockRenders.put(type, handler.getRenderId()); + } + } + + @SubscribeEvent + public void onPacketFromServerToClient(FMLNetworkEvent.ClientCustomPacketEvent event) throws IOException { + WorldClient world = Minecraft.getMinecraft().theWorld; + ByteBuf data = event.packet.payload(); + ByteBufInputStream byteBufInputStream = new ByteBufInputStream(data); + switch (byteBufInputStream.read()) { + case 0: + int particleId = byteBufInputStream.read(); + float x = byteBufInputStream.readFloat(); + float y = byteBufInputStream.readFloat(); + float z = byteBufInputStream.readFloat(); + float mx = byteBufInputStream.readFloat(); + float my = byteBufInputStream.readFloat(); + float mz = byteBufInputStream.readFloat(); + float particleScale = byteBufInputStream.readFloat(); + this.spawnParticle(particleId, world, x, y, z, mx, my, mz, particleScale); + break; + case 1: + int entityId = byteBufInputStream.readInt(); + INetworkListener listener = (INetworkListener) world.getEntityByID(entityId); + if (listener != null) { + listener.recieveData(byteBufInputStream); + IHLMod.log.debug("Data delivered to client"); + } else { + delayedEntityDataPacket.put(entityId, data); + IHLMod.log.debug("Data delayed. Entity ID=" + entityId); + } + break; + case 2: + int posX = byteBufInputStream.readInt(); + int posY = byteBufInputStream.readInt(); + int posZ = byteBufInputStream.readInt(); + float radius = byteBufInputStream.readFloat(); + this.createExplosionEffect(world, posX, posY, posZ, radius); + break; + case 3: + int soundId = byteBufInputStream.read(); + x = byteBufInputStream.readFloat(); + y = byteBufInputStream.readFloat(); + z = byteBufInputStream.readFloat(); + float volume = byteBufInputStream.readFloat(); + float pitch = byteBufInputStream.readFloat(); + this.playSound(world, soundId, x, y, z, volume, pitch); + break; + } + byteBufInputStream.close(); + } + + private void playSound(WorldClient world, int soundId, float x, float y, float z, float volume, float pitch) { + world.playSound(x, y, z, IHLModInfo.MODID + ":fuse", 1f, 1f, false); + } + + @Override + public boolean renderTESpecialSelectionBox(TileEntity te, EntityPlayer player, ItemStack currentItem, + MovingObjectPosition target, float partialTicks) { + ISelectionBoxSpecialRenderer ssbr = selectionBoxSpecialRendererRegistry.get(te.getClass()); + if (ssbr != null) { + ssbr.drawSelectionBox(player, currentItem, target, partialTicks); + return true; + } else { + return false; + } + } + + @Override + public void sendItemStackNBTTagFromClientToServerPlayer(EntityPlayer player, int slotNumber, String fieldName, + int fieldValue) { + ByteBuf bb = Unpooled.buffer(36); + ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb); + try { + byteBufOutputStream.write(0); + byteBufOutputStream.writeInt(player.getEntityId()); + byteBufOutputStream.writeInt(player.worldObj.provider.dimensionId); + byteBufOutputStream.writeInt(slotNumber); + byteBufOutputStream.writeInt(fieldValue); + byteBufOutputStream.writeUTF(fieldName); + channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID)); + byteBufOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void requestTileEntityInitdataFromClientToServer(int x, int y, int z) { + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + ByteBuf bb = Unpooled.buffer(36); + ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb); + try { + byteBufOutputStream.write(1); + byteBufOutputStream.writeInt(player.getEntityId()); + byteBufOutputStream.writeInt(player.worldObj.provider.dimensionId); + byteBufOutputStream.writeInt(x); + byteBufOutputStream.writeInt(y); + byteBufOutputStream.writeInt(z); + channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID)); + byteBufOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void sendIntegerFieldValueFromClientToServer(int value, String fieldName, TileEntity tileEntity) { + ByteBuf bb = Unpooled.buffer(64); + ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb); + try { + byteBufOutputStream.write(2); + byteBufOutputStream.writeInt(tileEntity.getWorldObj().provider.dimensionId); + byteBufOutputStream.writeInt(tileEntity.xCoord); + byteBufOutputStream.writeInt(tileEntity.yCoord); + byteBufOutputStream.writeInt(tileEntity.zCoord); + byteBufOutputStream.writeInt(value); + byteBufOutputStream.writeUTF(fieldName); + channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID)); + byteBufOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} -- cgit v1.2.3