add PipeTransportRenderer map

This commit is contained in:
Adrian 2015-08-11 11:10:11 +02:00 committed by asiekierka
parent f958df297c
commit 05b5a847bd
10 changed files with 18 additions and 43 deletions

View file

@ -217,11 +217,9 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
public void updateSignalState() {
for (PipeWire c : PipeWire.values()) {
if (!wireSet[c.ordinal()]) {
return;
if (wireSet[c.ordinal()]) {
updateSignalState(c);
}
updateSignalState(c);
}
}

View file

@ -23,7 +23,6 @@ import buildcraft.core.lib.utils.BitSetUtils;
import buildcraft.transport.render.PipeTransportRenderer;
public abstract class PipeTransport {
public final PipeTransportRenderer renderer;
public TileGenericPipe container;
protected boolean[] inputsOpen = new boolean[ForgeDirection.VALID_DIRECTIONS.length];
@ -34,12 +33,8 @@ public abstract class PipeTransport {
inputsOpen[b] = true;
outputsOpen[b] = true;
}
renderer = createTransportRenderer();
}
public abstract PipeTransportRenderer createTransportRenderer();
public abstract IPipeTile.PipeType getPipeType();
public World getWorld() {

View file

@ -190,11 +190,6 @@ public class PipeTransportFluids extends PipeTransport implements IFluidHandler,
travelDelay = MathUtils.clamp(Math.round(16F / (flowRate / BuildCraftTransport.pipeFluidsBaseFlowRate)), 1, MAX_TRAVEL_DELAY);
}
@Override
public PipeTransportRenderer createTransportRenderer() {
return new PipeTransportFluidsRenderer();
}
@Override
public void initialize() {
super.initialize();

View file

@ -55,11 +55,6 @@ public class PipeTransportItems extends PipeTransport implements IDebuggable {
return IPipeTile.PipeType.ITEM;
}
@Override
public PipeTransportRenderer createTransportRenderer() {
return new PipeTransportItemsRenderer();
}
public void readjustSpeed(TravelingItem item) {
PipeEventItem.AdjustSpeed event = new PipeEventItem.AdjustSpeed(container.pipe, item);
container.pipe.eventBus.handleEvent(PipeEventItem.AdjustSpeed.class, event);

View file

@ -83,11 +83,6 @@ public class PipeTransportPower extends PipeTransport implements IDebuggable {
}
}
@Override
public PipeTransportRenderer createTransportRenderer() {
return new PipeTransportPowerRenderer();
}
@Override
public IPipeTile.PipeType getPipeType() {
return IPipeTile.PipeType.POWER;

View file

@ -12,15 +12,8 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IPipeTile;
import buildcraft.transport.render.PipeTransportRenderer;
import buildcraft.transport.render.PipeTransportStructureRenderer;
public class PipeTransportStructure extends PipeTransport {
@Override
public PipeTransportRenderer createTransportRenderer() {
return new PipeTransportStructureRenderer();
}
@Override
public IPipeTile.PipeType getPipeType() {
return IPipeTile.PipeType.STRUCTURE;

View file

@ -24,6 +24,10 @@ import buildcraft.transport.render.GateItemRenderer;
import buildcraft.transport.render.PipeItemRenderer;
import buildcraft.transport.render.PipeRendererTESR;
import buildcraft.transport.render.PipeRendererWorld;
import buildcraft.transport.render.PipeTransportFluidsRenderer;
import buildcraft.transport.render.PipeTransportItemsRenderer;
import buildcraft.transport.render.PipeTransportPowerRenderer;
import buildcraft.transport.render.PipeTransportRenderer;
import buildcraft.transport.render.PlugItemRenderer;
import buildcraft.transport.render.TileEntityPickupFX;
@ -60,6 +64,10 @@ public class TransportProxyClient extends TransportProxy {
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.plugItem, plugItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeGate, gateItemRenderer);
PipeTransportRenderer.RENDERER_MAP.put(PipeTransportItems.class, new PipeTransportItemsRenderer());
PipeTransportRenderer.RENDERER_MAP.put(PipeTransportFluids.class, new PipeTransportFluidsRenderer());
PipeTransportRenderer.RENDERER_MAP.put(PipeTransportPower.class, new PipeTransportPowerRenderer());
TransportProxy.pipeModel = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(pipeWorldRenderer);

View file

@ -63,8 +63,10 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
renderGatesWires(pipe, x, y, z);
renderPluggables(pipe, x, y, z);
PipeTransportRenderer renderer = pipe.pipe.transport.renderer;
renderer.render(renderer.useServerTileIfPresent() ? (Pipe) (((IPipeTile) CoreProxy.proxy.getServerTile(pipe)).getPipe()) : pipe.pipe, x, y, z, f);
PipeTransportRenderer renderer = PipeTransportRenderer.RENDERER_MAP.get(pipe.pipe.transport.getClass());
if (renderer != null) {
renderer.render(renderer.useServerTileIfPresent() ? (Pipe) (((IPipeTile) CoreProxy.proxy.getServerTile(pipe)).getPipe()) : pipe.pipe, x, y, z, f);
}
}
private void renderGatesWires(TileGenericPipe pipe, double x, double y, double z) {

View file

@ -1,5 +1,7 @@
package buildcraft.transport.render;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.client.Minecraft;
import net.minecraft.util.ResourceLocation;
import cpw.mods.fml.relauncher.Side;
@ -9,6 +11,8 @@ import buildcraft.transport.Pipe;
import buildcraft.transport.PipeTransport;
public abstract class PipeTransportRenderer<T extends PipeTransport> {
public static final Map<Class<? extends PipeTransport>, PipeTransportRenderer> RENDERER_MAP = new HashMap<Class<? extends PipeTransport>, PipeTransportRenderer>();
public boolean useServerTileIfPresent() {
return false;
}

View file

@ -1,10 +0,0 @@
package buildcraft.transport.render;
import buildcraft.transport.Pipe;
import buildcraft.transport.PipeTransportStructure;
public class PipeTransportStructureRenderer extends PipeTransportRenderer<PipeTransportStructure> {
@Override
public void render(Pipe<PipeTransportStructure> pipe, double x, double y, double z, float f) {
}
}