summaryrefslogtreecommitdiff
path: root/src/main/java/ihl/ClientProxy.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/ihl/ClientProxy.java')
-rw-r--r--src/main/java/ihl/ClientProxy.java496
1 files changed, 496 insertions, 0 deletions
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<MachineType, Integer> sharedBlockRenders = new HashMap<MachineType, Integer>();
+ public Map<Class<? extends TileEntity>, ISelectionBoxSpecialRenderer> selectionBoxSpecialRendererRegistry = new HashMap<Class<? extends TileEntity>, 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<? extends Entity> 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();
+ }
+ }
+
+}