additionalpipes.proxy.ClientProxy.java Source code

Java tutorial

Introduction

Here is the source code for additionalpipes.proxy.ClientProxy.java

Source

/**
 * Additional Pipes is distributed under the terms of the Minecraft Mod Public
 * License 1.0, or MMPL. Please check the contents of the license located in
 * http://www.mod-buildcraft.com/MMPL-1.0.txt
 */

package additionalpipes.proxy;

import java.util.List;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import additionalpipes.AdditionalPipes;
import additionalpipes.chunk.BoxEx;
import additionalpipes.chunk.EntityBlockEx;
import additionalpipes.client.gui.KeyHandler;
import additionalpipes.network.APPacketIds;
import additionalpipes.network.PacketRequestChunks;
import buildcraft.BuildCraftCore;
import buildcraft.api.core.LaserKind;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.transport.ItemPipe;
import buildcraft.transport.TransportProxyClient;

import com.google.common.collect.Lists;
import com.google.common.collect.Multiset;

import cpw.mods.fml.client.registry.KeyBindingRegistry;

public class ClientProxy extends APProxy {

    @Override
    public void init() {
        super.init();
        //MinecraftForgeClient.preloadTexture(APDefaultProps.TEXTURE);
        KeyBindingRegistry.registerKeyBinding(new KeyHandler());
    }

    @Override
    public void registerRenderer(ItemPipe pipe) {
        MinecraftForgeClient.registerItemRenderer(pipe.itemID, TransportProxyClient.pipeItemRenderer);
    }

    private List<BoxEx> lasers = Lists.newLinkedList();
    private int playerY;

    @Override
    public void showLasers(Multiset<ChunkCoordIntPair> coordSet) {
        World world = Minecraft.getMinecraft().theWorld;
        if (world == null) {
            return;
        }
        hideLasers();

        for (Multiset.Entry<ChunkCoordIntPair> e : coordSet.entrySet()) {
            int chunkX = e.getElement().chunkXPos << 4;
            int chunkZ = e.getElement().chunkZPos << 4;

            BoxEx outsideLaser = new BoxEx();
            outsideLaser.initialize(chunkX, playerY, chunkZ, 16, true);
            outsideLaser.createLasers(world, e.getCount() == 1 ? LaserKind.Blue : LaserKind.Stripes);
            lasers.add(outsideLaser);

            BoxEx insideLaser = new BoxEx();
            insideLaser.initialize(chunkX + 7, playerY, chunkZ + 7, 2, false);
            insideLaser.createLasers(world, LaserKind.Red);
            lasers.add(insideLaser);
        }
    }

    @Override
    public void hideLasers() {
        for (BoxEx laser : lasers) {
            laser.deleteLasers();
        }
        lasers.clear();
    }

    @Override
    public void toggleLasers() {
        EntityPlayer player = Minecraft.getMinecraft().thePlayer;
        if (player == null) {
            return;
        }

        playerY = (int) player.boundingBox.minY;
        PacketRequestChunks packet = new PacketRequestChunks(APPacketIds.TOGGLE_LASERS,
                AdditionalPipes.showAllPersistentChunks);
        CoreProxy.proxy.sendToServer(packet.getPacket());
    }

    @Override
    public EntityBlockEx newEntityBlockEx(World world, double i, double j, double k, double iSize, double jSize,
            double kSize, LaserKind laserKind) {
        EntityBlockEx eb = super.newEntityBlockEx(world, i, j, k, iSize, jSize, kSize, laserKind);
        switch (laserKind) {
        case Blue:
            eb.texture = BuildCraftCore.blueLaserTexture;
            break;

        case Red:
            eb.texture = BuildCraftCore.redLaserTexture;
            break;

        case Stripes:
            eb.texture = BuildCraftCore.stripesLaserTexture;
            break;
        }
        return eb;
    }

}