fix for Java 6/7
This commit is contained in:
commit
0509624c89
13 changed files with 107 additions and 56 deletions
|
@ -57,4 +57,8 @@ public abstract class PipePluggable implements INBTStoreable, ISerializable {
|
|||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public abstract IPipePluggableRenderer getRenderer();
|
||||
|
||||
public boolean requiresRenderUpdate(PipePluggable old) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -372,6 +372,8 @@ public class BuildCraftCore extends BuildCraftMod {
|
|||
|
||||
@Mod.EventHandler
|
||||
public void postInit(FMLPostInitializationEvent event) {
|
||||
BCLog.logger.info("BuildCraft's fake player: UUID = " + gameProfile.getId().toString() + ", name = '" + gameProfile.getName() + "'!");
|
||||
|
||||
for (Object o : Block.blockRegistry) {
|
||||
Block block = (Block) o;
|
||||
|
||||
|
|
|
@ -253,6 +253,11 @@ public class RobotStationPluggable extends PipePluggable implements IPipePluggab
|
|||
data.writeByte(getRenderState().ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresRenderUpdate(PipePluggable o) {
|
||||
return renderState != ((RobotStationPluggable) o).renderState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readData(ByteBuf data) {
|
||||
this.renderState = RobotStationState.values()[data.readUnsignedByte()];
|
||||
|
|
|
@ -77,6 +77,7 @@ public class RenderRobot extends Render implements IItemRenderer {
|
|||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(-0.125F, 0, -0.125F);
|
||||
doRenderItem(robot.getStackInSlot(0));
|
||||
GL11.glColor3f(1, 1, 1);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
@ -84,6 +85,7 @@ public class RenderRobot extends Render implements IItemRenderer {
|
|||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(+0.125F, 0, -0.125F);
|
||||
doRenderItem(robot.getStackInSlot(1));
|
||||
GL11.glColor3f(1, 1, 1);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
@ -91,6 +93,7 @@ public class RenderRobot extends Render implements IItemRenderer {
|
|||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(+0.125F, 0, +0.125F);
|
||||
doRenderItem(robot.getStackInSlot(2));
|
||||
GL11.glColor3f(1, 1, 1);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
@ -98,6 +101,7 @@ public class RenderRobot extends Render implements IItemRenderer {
|
|||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(-0.125F, 0, +0.125F);
|
||||
doRenderItem(robot.getStackInSlot(3));
|
||||
GL11.glColor3f(1, 1, 1);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,12 @@ public class FacadePluggable extends PipePluggable implements IFacadePluggable {
|
|||
public FacadePluggable() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresRenderUpdate(PipePluggable o) {
|
||||
FacadePluggable other = (FacadePluggable) o;
|
||||
return other.block != block || other.meta != meta || other.transparent != transparent || other.renderAsHollow != renderAsHollow;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
if (states != null) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package buildcraft.transport;
|
|||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
@ -94,7 +95,7 @@ public class PipeEventBus {
|
|||
}
|
||||
|
||||
private void updateEventHandlers(List<EventHandler> eventHandlerList) {
|
||||
eventHandlerList.sort(COMPARATOR);
|
||||
Collections.sort(eventHandlerList, COMPARATOR);
|
||||
}
|
||||
|
||||
public void unregisterHandler(Object handler) {
|
||||
|
|
|
@ -36,8 +36,7 @@ public class PipeRenderState implements ISerializable {
|
|||
}
|
||||
|
||||
public boolean needsRenderUpdate() {
|
||||
return pipeConnectionMatrix.isDirty() || textureMatrix.isDirty()
|
||||
|| wireMatrix.isDirty();
|
||||
return pipeConnectionMatrix.isDirty() || textureMatrix.isDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -526,10 +526,10 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler,
|
|||
((FacadePluggable) pluggable).setActiveState(activeState);
|
||||
}
|
||||
|
||||
/* TODO: Rewrite the requiresRenderUpdate API to run on the
|
||||
server side instead of the client side to save network bandwidth */
|
||||
pluggableState.setPluggables(sideProperties.pluggables);
|
||||
|
||||
// TODO: Add way of signalizing render update via Pluggables
|
||||
|
||||
if (renderState.isDirty()) {
|
||||
renderState.clean();
|
||||
}
|
||||
|
@ -979,16 +979,20 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler,
|
|||
return;
|
||||
}
|
||||
|
||||
switch (stateId) {
|
||||
case 0:
|
||||
if (pipe != null) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pipe == null && coreState.pipeId != 0) {
|
||||
initialize(BlockGenericPipe.createPipe((Item) Item.itemRegistry.getObjectById(coreState.pipeId)));
|
||||
}
|
||||
|
||||
if (pipe == null) {
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (stateId) {
|
||||
case 0:
|
||||
worldObj.markBlockRangeForRenderUpdate(xCoord, yCoord, zCoord, xCoord, yCoord, zCoord);
|
||||
break;
|
||||
|
||||
|
@ -1000,9 +1004,26 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler,
|
|||
break;
|
||||
}
|
||||
case 2: {
|
||||
// TODO: Add some kind of isDirty flag? I don't know...
|
||||
PipePluggable[] newPluggables = pluggableState.getPluggables();
|
||||
|
||||
// mark for render update if necessary
|
||||
for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
|
||||
PipePluggable old = sideProperties.pluggables[i];
|
||||
PipePluggable newer = newPluggables[i];
|
||||
if (old == null && newer == null) {
|
||||
continue;
|
||||
} else if (old != null && newer != null && old.getClass() == newer.getClass()) {
|
||||
if (newer.requiresRenderUpdate(old)) {
|
||||
worldObj.markBlockRangeForRenderUpdate(xCoord, yCoord, zCoord, xCoord, yCoord, zCoord);
|
||||
sideProperties.pluggables = pluggableState.getPluggables();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// one of them is null but not the other, so update
|
||||
worldObj.markBlockRangeForRenderUpdate(xCoord, yCoord, zCoord, xCoord, yCoord, zCoord);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sideProperties.pluggables = newPluggables.clone();
|
||||
|
||||
for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
|
||||
final PipePluggable pluggable = getPipePluggable(ForgeDirection.getOrientation(i));
|
||||
|
|
|
@ -97,6 +97,12 @@ public class GatePluggable extends PipePluggable {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresRenderUpdate(PipePluggable o) {
|
||||
// rendered by TESR
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] getDropItems(IPipeTile pipe) {
|
||||
ItemStack gate = ItemGate.makeGateItem(material, logic);
|
||||
|
|
|
@ -15,7 +15,6 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
|
@ -24,21 +23,18 @@ import buildcraft.BuildCraftTransport;
|
|||
import buildcraft.api.core.IIconProvider;
|
||||
import buildcraft.api.core.ISerializable;
|
||||
import buildcraft.api.transport.IPipeTile;
|
||||
import buildcraft.core.lib.RFBattery;
|
||||
import buildcraft.transport.Pipe;
|
||||
import buildcraft.transport.PipeIconProvider;
|
||||
import buildcraft.transport.PipeTransportFluids;
|
||||
|
||||
public class PipeFluidsWood extends Pipe<PipeTransportFluids> implements IEnergyHandler, ISerializable {
|
||||
private static final int ENERGY_MULTIPLIER = 50;
|
||||
|
||||
public int liquidToExtract;
|
||||
|
||||
protected int standardIconIndex = PipeIconProvider.TYPE.PipeFluidsWood_Standard.ordinal();
|
||||
protected int solidIconIndex = PipeIconProvider.TYPE.PipeAllWood_Solid.ordinal();
|
||||
|
||||
private long lastMining = 0;
|
||||
private boolean lastPower = false;
|
||||
private RFBattery battery = new RFBattery(2500, 1000, 0);
|
||||
|
||||
private PipeLogicWood logic = new PipeLogicWood(this) {
|
||||
@Override
|
||||
protected boolean isValidConnectingTile(TileEntity tile) {
|
||||
|
@ -76,42 +72,28 @@ public class PipeFluidsWood extends Pipe<PipeTransportFluids> implements IEnergy
|
|||
super.initialize();
|
||||
}
|
||||
|
||||
private TileEntity getConnectingTile() {
|
||||
int meta = container.getBlockMetadata();
|
||||
return meta >= 6 ? null : container.getTile(ForgeDirection.getOrientation(meta));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
|
||||
int meta = container.getBlockMetadata();
|
||||
|
||||
if (meta >= 6) {
|
||||
battery.setEnergy(0);
|
||||
liquidToExtract = 0;
|
||||
if (liquidToExtract == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (liquidToExtract > 0 && meta < 6) {
|
||||
ForgeDirection side = ForgeDirection.getOrientation(meta);
|
||||
TileEntity tile = container.getTile(side);
|
||||
TileEntity tile = getConnectingTile();
|
||||
|
||||
if (tile instanceof IFluidHandler) {
|
||||
liquidToExtract -= Math.min(10, extractFluid((IFluidHandler) tile, side));
|
||||
} else {
|
||||
liquidToExtract -= 10;
|
||||
}
|
||||
|
||||
if (liquidToExtract < 0) {
|
||||
if (tile == null || !(tile instanceof IFluidHandler)) {
|
||||
liquidToExtract = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
extractFluid((IFluidHandler) tile, ForgeDirection.getOrientation(container.getBlockMetadata()));
|
||||
|
||||
if (battery.useEnergy(10, 10, false) > 0) {
|
||||
TileEntity tile = container.getTile(ForgeDirection
|
||||
.getOrientation(meta));
|
||||
|
||||
if (tile instanceof IFluidHandler) {
|
||||
if (liquidToExtract <= FluidContainerRegistry.BUCKET_VOLUME) {
|
||||
liquidToExtract += FluidContainerRegistry.BUCKET_VOLUME;
|
||||
}
|
||||
}
|
||||
// We always subtract the flowRate to ensure that the buffer goes down reasonably quickly.
|
||||
liquidToExtract -= transport.flowRate;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,7 +155,17 @@ public class PipeFluidsWood extends Pipe<PipeTransportFluids> implements IEnergy
|
|||
@Override
|
||||
public int receiveEnergy(ForgeDirection from, int maxReceive,
|
||||
boolean simulate) {
|
||||
return battery.receiveEnergy(maxReceive, simulate);
|
||||
TileEntity tile = getConnectingTile();
|
||||
if (tile == null || !(tile instanceof IFluidHandler)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int maxToReceive = (1000 - liquidToExtract) / ENERGY_MULTIPLIER;
|
||||
int received = Math.max(maxReceive, maxToReceive);
|
||||
if (!simulate) {
|
||||
liquidToExtract += ENERGY_MULTIPLIER * received;
|
||||
}
|
||||
return received;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -184,21 +176,21 @@ public class PipeFluidsWood extends Pipe<PipeTransportFluids> implements IEnergy
|
|||
|
||||
@Override
|
||||
public int getEnergyStored(ForgeDirection from) {
|
||||
return battery.getEnergyStored();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored(ForgeDirection from) {
|
||||
return battery.getMaxEnergyStored();
|
||||
return 1000 / ENERGY_MULTIPLIER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeData(ByteBuf data) {
|
||||
data.writeInt(liquidToExtract);
|
||||
data.writeShort(liquidToExtract);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readData(ByteBuf data) {
|
||||
liquidToExtract = data.readInt();
|
||||
liquidToExtract = data.readShort();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -145,6 +145,12 @@ public class LensPluggable extends PipePluggable {
|
|||
isFilter = (flags & 0x20) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresRenderUpdate(PipePluggable o) {
|
||||
LensPluggable other = (LensPluggable) o;
|
||||
return other.color != color || other.isFilter != isFilter;
|
||||
}
|
||||
|
||||
private void color(TravelingItem item) {
|
||||
if ((item.toCenter && item.input.getOpposite() == side)
|
||||
|| (!item.toCenter && item.output == side)) {
|
||||
|
|
|
@ -119,4 +119,9 @@ public class PlugPluggable extends PipePluggable {
|
|||
public void readData(ByteBuf data) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresRenderUpdate(PipePluggable o) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue