Search in sources :

Example 1 with PipeTransportPower

use of buildcraft.transport.PipeTransportPower in project BuildCraft by BuildCraft.

the class PipeTransportRendererPower method render.

@Override
public void render(Pipe<PipeTransportPower> pipe, double x, double y, double z, float f) {
    PipeTransportPower pow = pipe.transport;
    GL11.glPushMatrix();
    GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
    GlStateManager.disableLighting();
    // GL11.glEnable(GL11.GL_BLEND);
    GL11.glTranslatef((float) x, (float) y, (float) z);
    Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
    // Used for the centre rendering
    double centerPower = 0;
    double[] power = new double[6];
    short[] flow = pow.displayFlow;
    for (int i = 0; i < 6; i++) {
        power[i] = pow.displayPowerAverage[i].getAverage();
        double d = power[i];
        if (d > centerPower) {
            centerPower = d;
        }
    }
    if (centerPower > 0) {
        long ms = System.currentTimeMillis();
        long diff = ms - pow.clientLastDisplayTime;
        if (pow.clientLastDisplayTime == 0 || diff <= 0) {
            diff = 1;
        }
        pow.clientLastDisplayTime = ms;
        for (int i = 0; i < 6; i++) {
            EnumFacing face = EnumFacing.values()[i];
            if (!pipe.getTile().isPipeConnected(face)) {
                continue;
            }
            double actualDiff = flow[i] * diff * FLOW_MULTIPLIER;
            double connectionDiff = face.getAxisDirection() == AxisDirection.POSITIVE ? actualDiff : -actualDiff;
            pow.clientDisplayFlow[i] += connectionDiff;
            while (pow.clientDisplayFlow[i] < 0) {
                pow.clientDisplayFlow[i] += 16;
            }
            while (pow.clientDisplayFlow[i] > 16) {
                pow.clientDisplayFlow[i] -= 16;
            }
            pow.clientDisplayFlowCentre = pow.clientDisplayFlowCentre.add(Utils.convert(face, actualDiff / 2));
            renderSidePower(face, power[i], pow.clientDisplayFlow[i], centerPower);
        }
        for (Axis axis : Axis.values()) {
            double value = VecUtil.getValue(pow.clientDisplayFlowCentre, axis);
            while (value < 0) {
                value += 16;
            }
            while (value > 16) {
                value -= 16;
            }
            pow.clientDisplayFlowCentre = VecUtil.replaceValue(pow.clientDisplayFlowCentre, axis, value);
        }
        renderCenterPower(centerPower, pow.clientDisplayFlowCentre);
    }
    GlStateManager.enableLighting();
    GL11.glPopAttrib();
    GL11.glPopMatrix();
}
Also used : PipeTransportPower(buildcraft.transport.PipeTransportPower) EnumFacing(net.minecraft.util.EnumFacing) Axis(net.minecraft.util.EnumFacing.Axis)

Example 2 with PipeTransportPower

use of buildcraft.transport.PipeTransportPower in project BuildCraft by BuildCraft.

the class PacketPowerUpdate method applyData.

@Override
public void applyData(World world, EntityPlayer player) {
    if (!world.isBlockLoaded(pos)) {
        return;
    }
    TileEntity entity = world.getTileEntity(pos);
    if (!(entity instanceof TileGenericPipe)) {
        return;
    }
    TileGenericPipe pipe = (TileGenericPipe) entity;
    if (pipe.pipe == null) {
        return;
    }
    if (!(pipe.pipe.transport instanceof PipeTransportPower)) {
        return;
    }
    ((PipeTransportPower) pipe.pipe.transport).handlePowerPacket(this);
}
Also used : TileEntity(net.minecraft.tileentity.TileEntity) TileGenericPipe(buildcraft.transport.TileGenericPipe) PipeTransportPower(buildcraft.transport.PipeTransportPower)

Aggregations

PipeTransportPower (buildcraft.transport.PipeTransportPower)2 TileGenericPipe (buildcraft.transport.TileGenericPipe)1 TileEntity (net.minecraft.tileentity.TileEntity)1 EnumFacing (net.minecraft.util.EnumFacing)1 Axis (net.minecraft.util.EnumFacing.Axis)1