add glowing textures to fluid pipes, close #2926
This commit is contained in:
parent
88f5e17316
commit
ce9caf6dc8
|
@ -1,6 +1,7 @@
|
|||
Improvements:
|
||||
|
||||
* [#2941] Knights and Butchers now respect all your fancy sword enchantments, knockbacks and damage modifiers. Woo! (asie)
|
||||
* [#2926] Fluid pipes are now extra glowy (asie)
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
|
|
|
@ -21,7 +21,9 @@ import net.minecraft.entity.Entity;
|
|||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import buildcraft.core.lib.EntityBlock;
|
||||
|
||||
|
@ -69,6 +71,10 @@ public final class RenderEntityBlock extends Render {
|
|||
setBounds(minX, minY, minZ, maxX, maxY, maxZ);
|
||||
}
|
||||
|
||||
public void setSkyBlockLight(World world, int x, int y, int z, int light) {
|
||||
this.brightness = world.getSkyBlockTypeBrightness(EnumSkyBlock.Sky, x, y, z) << 16 | light;
|
||||
}
|
||||
|
||||
public float getBlockBrightness(IBlockAccess iblockaccess, int i, int j, int k) {
|
||||
return baseBlock.getMixedBrightnessForBlock(iblockaccess, i, j, k);
|
||||
}
|
||||
|
|
|
@ -436,6 +436,7 @@ public class PipeTransportFluids extends PipeTransport implements IFluidHandler
|
|||
changed = true;
|
||||
renderCache.fluidID = fluidType != null ? fluidType.getFluid().getID() : 0;
|
||||
renderCache.color = fluidType != null ? fluidType.getFluid().getColor(fluidType) : 0;
|
||||
renderCache.flags = FluidRenderData.getFlags(fluidType);
|
||||
delta.set(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ public class PacketFluidUpdate extends PacketCoordinates {
|
|||
if (delta.get(0)) {
|
||||
renderCache.fluidID = data.readShort();
|
||||
renderCache.color = renderCache.fluidID != 0 ? data.readInt() : 0xFFFFFF;
|
||||
renderCache.flags = renderCache.fluidID != 0 ? data.readUnsignedByte() : 0;
|
||||
}
|
||||
|
||||
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||
|
@ -101,6 +102,7 @@ public class PacketFluidUpdate extends PacketCoordinates {
|
|||
data.writeShort(renderCache.fluidID);
|
||||
if (renderCache.fluidID != 0) {
|
||||
data.writeInt(renderCache.color);
|
||||
data.writeByte(renderCache.flags);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.IntHashMap;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
|
@ -110,9 +111,11 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
|||
initialized = false;
|
||||
}
|
||||
|
||||
private DisplayFluidList getDisplayFluidLists(int liquidId, World world) {
|
||||
if (displayFluidLists.containsItem(liquidId)) {
|
||||
return (DisplayFluidList) displayFluidLists.lookup(liquidId);
|
||||
private DisplayFluidList getDisplayFluidLists(int liquidId, int skylight, int flags, World world) {
|
||||
int listId = (liquidId & 0x3FFFF) << 13 | flags << 5 | (skylight & 31);
|
||||
|
||||
if (displayFluidLists.containsItem(listId)) {
|
||||
return (DisplayFluidList) displayFluidLists.lookup(listId);
|
||||
}
|
||||
|
||||
Fluid fluid = FluidRegistry.getFluid(liquidId);
|
||||
|
@ -122,7 +125,7 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
|||
}
|
||||
|
||||
DisplayFluidList d = new DisplayFluidList();
|
||||
displayFluidLists.addKey(liquidId, d);
|
||||
displayFluidLists.addKey(listId, d);
|
||||
|
||||
RenderInfo block = new RenderInfo();
|
||||
|
||||
|
@ -133,6 +136,7 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
|||
}
|
||||
|
||||
block.texture = fluid.getStillIcon();
|
||||
block.brightness = skylight << 16 | flags & 31;
|
||||
|
||||
float size = CoreConstants.PIPE_MAX_POS - CoreConstants.PIPE_MIN_POS;
|
||||
|
||||
|
@ -744,7 +748,7 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
|||
|
||||
GL11.glTranslatef((float) x, (float) y, (float) z);
|
||||
|
||||
// sides
|
||||
int skylight = pipe.container.getWorld().getSkyBlockTypeBrightness(EnumSkyBlock.Sky, pipe.container.x(), pipe.container.y(), pipe.container.z());
|
||||
|
||||
boolean sides = false, above = false;
|
||||
|
||||
|
@ -761,7 +765,8 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
|||
continue;
|
||||
}
|
||||
|
||||
DisplayFluidList d = getDisplayFluidLists(fluidRenderData.fluidID, pipe.container.getWorldObj());
|
||||
DisplayFluidList d = getDisplayFluidLists(fluidRenderData.fluidID, skylight,
|
||||
fluidRenderData.flags, pipe.container.getWorldObj());
|
||||
|
||||
if (d == null) {
|
||||
continue;
|
||||
|
@ -804,7 +809,8 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
|||
FluidRenderData fluidRenderData = trans.renderCache;
|
||||
|
||||
if (fluidRenderData.amount[6] > 0) {
|
||||
DisplayFluidList d = getDisplayFluidLists(fluidRenderData.fluidID, pipe.container.getWorldObj());
|
||||
DisplayFluidList d = getDisplayFluidLists(fluidRenderData.fluidID, skylight,
|
||||
fluidRenderData.flags, pipe.container.getWorldObj());
|
||||
|
||||
if (d != null) {
|
||||
int stage = (int) ((float) fluidRenderData.amount[6] / (float) (trans.getCapacity()) * (LIQUID_STAGES - 1));
|
||||
|
|
|
@ -1,14 +1,24 @@
|
|||
package buildcraft.transport.utils;
|
||||
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class FluidRenderData {
|
||||
public int fluidID, color;
|
||||
public int fluidID, color, flags;
|
||||
public int[] amount = new int[7];
|
||||
|
||||
public FluidRenderData duplicate() {
|
||||
FluidRenderData n = new FluidRenderData();
|
||||
n.fluidID = fluidID;
|
||||
n.color = color;
|
||||
n.flags = flags;
|
||||
System.arraycopy(this.amount, 0, n.amount, 0, 7);
|
||||
return n;
|
||||
}
|
||||
|
||||
public static int getFlags(FluidStack s) {
|
||||
if (s == null) {
|
||||
return 0;
|
||||
}
|
||||
return s.getFluid().getLuminosity();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue