Worked on pipe names and items

This commit is contained in:
DarkGuardsman 2013-10-29 03:01:47 -04:00
parent 85e57658d6
commit 50b3f7cd03
13 changed files with 636 additions and 248 deletions

View file

@ -11,39 +11,223 @@ tile.ReleaseValve.0.name=Release Valve
tile.FluidTank.name = Tank tile.FluidTank.name = Tank
tile.FluidSink.name = Sink tile.FluidSink.name = Sink
tile.FluidPipe.0.name =Black Pipe # Fluid pipes now have more than 32 sub types, currently there are only 160 sub types of pipe
tile.FluidPipe.1.name =Red Pipe tile.FluidPipe.0.name =Wood Trough
tile.FluidPipe.2.name =Green Pipe tile.FluidPipe.1.name =Black Wood Trough
tile.FluidPipe.3.name =Brown Pipe tile.FluidPipe.2.name =Red Wood Trough
tile.FluidPipe.4.name =Blue Pipe tile.FluidPipe.3.name =Green Wood Trough
tile.FluidPipe.5.name =Purple Pipe tile.FluidPipe.4.name =Brown Wood Trough
tile.FluidPipe.6.name =Cyan Pipe tile.FluidPipe.5.name =Blue Wood Trough
tile.FluidPipe.7.name =Silver Pipe tile.FluidPipe.6.name =Purple Wood Trough
tile.FluidPipe.8.name =Grey Pipe tile.FluidPipe.7.name =Cyan Wood Trough
tile.FluidPipe.9.name =Pink Pipe tile.FluidPipe.8.name =Silver Wood Trough
tile.FluidPipe.10.name =Lime Pipe tile.FluidPipe.9.name =Grey Wood Trough
tile.FluidPipe.11.name =Yellow Pipe tile.FluidPipe.10.name =Pink Wood Trough
tile.FluidPipe.12.name =LightBlue Pipe tile.FluidPipe.11.name =Lime Wood Trough
tile.FluidPipe.13.name =Mangenta Pipe tile.FluidPipe.12.name =Yellow Wood Trough
tile.FluidPipe.14.name =Orange Pipe tile.FluidPipe.13.name =Light Blue Wood Trough
tile.FluidPipe.15.name =White Pipe tile.FluidPipe.14.name =Mangenta Wood Trough
tile.FluidPipe.15.name =Orange Wood Trough
tile.FluidPipe.16.name =White Wood Trough
tile.FluidPipe.1000.name =Glass Tube
tile.FluidPipe.1001.name =Black Glass Tube
tile.FluidPipe.1002.name =Red Glass Tube
tile.FluidPipe.1003.name =Green Glass Tube
tile.FluidPipe.1004.name =Brown Glass Tube
tile.FluidPipe.1005.name =Blue Glass Tube
tile.FluidPipe.1006.name =Purple Glass Tube
tile.FluidPipe.1007.name =Cyan Glass Tube
tile.FluidPipe.1008.name =Silver Glass Tube
tile.FluidPipe.1009.name =Grey Glass Tube
tile.FluidPipe.1010.name =Pink Glass Tube
tile.FluidPipe.1011.name =Lime Glass Tube
tile.FluidPipe.1012.name =Yellow Glass Tube
tile.FluidPipe.1013.name =Light Blue Glass Tube
tile.FluidPipe.1014.name =Mangenta Glass Tube
tile.FluidPipe.1015.name =Orange Glass Tube
tile.FluidPipe.1016.name =White Glass Tube
tile.FluidPipe.2000.name =Stone Trough
tile.FluidPipe.2001.name =Black Stone Trough
tile.FluidPipe.2002.name =Red Stone Trough
tile.FluidPipe.2003.name =Green Stone Trough
tile.FluidPipe.2004.name =Brown Stone Trough
tile.FluidPipe.2005.name =Blue Stone Trough
tile.FluidPipe.2006.name =Purple Stone Trough
tile.FluidPipe.2007.name =Cyan Stone Trough
tile.FluidPipe.2008.name =Silver Stone Trough
tile.FluidPipe.2009.name =Grey Stone Trough
tile.FluidPipe.2010.name =Pink Stone Trough
tile.FluidPipe.2011.name =Lime Stone Trough
tile.FluidPipe.2012.name =Yellow Stone Trough
tile.FluidPipe.2013.name =Light Stone Trough
tile.FluidPipe.2014.name =Mangenta Stone Trough
tile.FluidPipe.2015.name =Orange Stone Trough
tile.FluidPipe.2016.name =White Stone Trough
tile.FluidPipe.2000.name =Tin Pipe
tile.FluidPipe.2001.name =Black Tin Pipe
tile.FluidPipe.2002.name =Red Tin Pipe
tile.FluidPipe.2003.name =Green Tin Pipe
tile.FluidPipe.2004.name =Brown Tin Pipe
tile.FluidPipe.2005.name =Blue Tin Pipe
tile.FluidPipe.2006.name =Purple Tin Pipe
tile.FluidPipe.2007.name =Cyan Tin Pipe
tile.FluidPipe.2008.name =Silver Tin Pipe
tile.FluidPipe.2009.name =Grey Tin Pipe
tile.FluidPipe.2010.name =Pink Tin Pipe
tile.FluidPipe.2011.name =Lime Tin Pipe
tile.FluidPipe.2012.name =Yellow Tin Pipe
tile.FluidPipe.2013.name =Light Tin Pipe
tile.FluidPipe.2014.name =Mangenta Tin Pipe
tile.FluidPipe.2015.name =Orange Tin Pipe
tile.FluidPipe.2016.name =White Tin Pipe
tile.FluidPipe.3000.name =Tin Pipe
tile.FluidPipe.3001.name =Black Tin Pipe
tile.FluidPipe.3002.name =Red Tin Pipe
tile.FluidPipe.3003.name =Green Tin Pipe
tile.FluidPipe.3004.name =Brown Tin Pipe
tile.FluidPipe.3005.name =Blue Tin Pipe
tile.FluidPipe.3006.name =Purple Tin Pipe
tile.FluidPipe.3007.name =Cyan Tin Pipe
tile.FluidPipe.3008.name =Silver Tin Pipe
tile.FluidPipe.3009.name =Grey Tin Pipe
tile.FluidPipe.3010.name =Pink Tin Pipe
tile.FluidPipe.3011.name =Lime Tin Pipe
tile.FluidPipe.3012.name =Yellow Tin Pipe
tile.FluidPipe.3013.name =Light Tin Pipe
tile.FluidPipe.3014.name =Mangenta Tin Pipe
tile.FluidPipe.3015.name =Orange Tin Pipe
tile.FluidPipe.3016.name =White Tin Pipe
tile.FluidPipe.4000.name =Copper Pipe
tile.FluidPipe.4001.name =Black Copper Pipe
tile.FluidPipe.4002.name =Red Copper Pipe
tile.FluidPipe.4003.name =Green Copper Pipe
tile.FluidPipe.4004.name =Brown Copper Pipe
tile.FluidPipe.4005.name =Blue Copper Pipe
tile.FluidPipe.4006.name =Purple Copper Pipe
tile.FluidPipe.4007.name =Cyan Copper Pipe
tile.FluidPipe.4008.name =Silver Copper Pipe
tile.FluidPipe.4009.name =Grey Copper Pipe
tile.FluidPipe.4010.name =Pink Copper Pipe
tile.FluidPipe.4011.name =Lime Copper Pipe
tile.FluidPipe.4012.name =Yellow Copper Pipe
tile.FluidPipe.4013.name =Light Copper Pipe
tile.FluidPipe.4014.name =Mangenta Copper Pipe
tile.FluidPipe.4015.name =Orange Copper Pipe
tile.FluidPipe.4016.name =White Copper Pipe
tile.FluidPipe.5000.name =Iron Pipe
tile.FluidPipe.5001.name =Black Iron Pipe
tile.FluidPipe.5002.name =Red Iron Pipe
tile.FluidPipe.5003.name =Green Iron Pipe
tile.FluidPipe.5004.name =Brown Iron Pipe
tile.FluidPipe.5005.name =Blue Iron Pipe
tile.FluidPipe.5006.name =Purple Iron Pipe
tile.FluidPipe.5007.name =Cyan Iron Pipe
tile.FluidPipe.5008.name =Silver Iron Pipe
tile.FluidPipe.5009.name =Grey Iron Pipe
tile.FluidPipe.5010.name =Pink Iron Pipe
tile.FluidPipe.5011.name =Lime Iron Pipe
tile.FluidPipe.5012.name =Yellow Iron Pipe
tile.FluidPipe.5013.name =Light Iron Pipe
tile.FluidPipe.5014.name =Mangenta Iron Pipe
tile.FluidPipe.5015.name =Orange Iron Pipe
tile.FluidPipe.5016.name =White Iron Pipe
tile.FluidPipe.6000.name =Gold Pipe
tile.FluidPipe.6001.name =Black Gold Pipe
tile.FluidPipe.6002.name =Red Gold Pipe
tile.FluidPipe.6003.name =Green Gold Pipe
tile.FluidPipe.6004.name =Brown Gold Pipe
tile.FluidPipe.6005.name =Blue Gold Pipe
tile.FluidPipe.6006.name =Purple Gold Pipe
tile.FluidPipe.6007.name =Cyan Gold Pipe
tile.FluidPipe.6008.name =Silver Gold Pipe
tile.FluidPipe.6009.name =Grey Gold Pipe
tile.FluidPipe.6010.name =Pink Gold Pipe
tile.FluidPipe.6011.name =Lime Gold Pipe
tile.FluidPipe.6012.name =Yellow Gold Pipe
tile.FluidPipe.6013.name =Light Gold Pipe
tile.FluidPipe.6014.name =Mangenta Gold Pipe
tile.FluidPipe.6015.name =Orange Gold Pipe
tile.FluidPipe.6016.name =White Gold Pipe
tile.FluidPipe.7000.name =Obby Pipe
tile.FluidPipe.7001.name =Black Obby Pipe
tile.FluidPipe.7002.name =Red Obby Pipe
tile.FluidPipe.7003.name =Green Obby Pipe
tile.FluidPipe.7004.name =Brown Obby Pipe
tile.FluidPipe.7005.name =Blue Obby Pipe
tile.FluidPipe.7006.name =Purple Obby Pipe
tile.FluidPipe.7007.name =Cyan Obby Pipe
tile.FluidPipe.7008.name =Silver Obby Pipe
tile.FluidPipe.7009.name =Grey Obby Pipe
tile.FluidPipe.7010.name =Pink Obby Pipe
tile.FluidPipe.7011.name =Lime Obby Pipe
tile.FluidPipe.7012.name =Yellow Obby Pipe
tile.FluidPipe.7013.name =Light Obby Pipe
tile.FluidPipe.7014.name =Mangenta Obby Pipe
tile.FluidPipe.7015.name =Orange Obby Pipe
tile.FluidPipe.7016.name =White Obby Pipe
tile.FluidPipe.8000.name =Steel Pipe
tile.FluidPipe.8001.name =Black Steel Pipe
tile.FluidPipe.8002.name =Red Steel Pipe
tile.FluidPipe.8003.name =Green Steel Pipe
tile.FluidPipe.8004.name =Brown Steel Pipe
tile.FluidPipe.8005.name =Blue Steel Pipe
tile.FluidPipe.8006.name =Purple Steel Pipe
tile.FluidPipe.8007.name =Cyan Steel Pipe
tile.FluidPipe.8008.name =Silver Steel Pipe
tile.FluidPipe.8009.name =Grey Steel Pipe
tile.FluidPipe.8010.name =Pink Steel Pipe
tile.FluidPipe.8011.name =Lime Steel Pipe
tile.FluidPipe.8012.name =Yellow Steel Pipe
tile.FluidPipe.8013.name =Light Steel Pipe
tile.FluidPipe.8014.name =Mangenta Steel Pipe
tile.FluidPipe.8015.name =Orange Steel Pipe
tile.FluidPipe.8016.name =White Steel Pipe
tile.FluidPipe.9000.name =Bronze Pipe
tile.FluidPipe.9001.name =Black Bronze Pipe
tile.FluidPipe.9002.name =Red Bronze Pipe
tile.FluidPipe.9003.name =Green Bronze Pipe
tile.FluidPipe.9004.name =Brown Bronze Pipe
tile.FluidPipe.9005.name =Blue Bronze Pipe
tile.FluidPipe.9006.name =Purple Bronze Pipe
tile.FluidPipe.9007.name =Cyan Bronze Pipe
tile.FluidPipe.9008.name =Silver Bronze Pipe
tile.FluidPipe.9009.name =Grey Bronze Pipe
tile.FluidPipe.9010.name =Pink Bronze Pipe
tile.FluidPipe.9011.name =Lime Bronze Pipe
tile.FluidPipe.9012.name =Yellow Bronze Pipe
tile.FluidPipe.9013.name =Light Bronze Pipe
tile.FluidPipe.9014.name =Mangenta Bronze Pipe
tile.FluidPipe.9015.name =Orange Bronze Pipe
tile.FluidPipe.9016.name =White Bronze Pipe
tile.FluidPipe.10000.name =Hell Pipe
tile.FluidPipe.10001.name =Black Hell Pipe
tile.FluidPipe.10002.name =Red Hell Pipe
tile.FluidPipe.10003.name =Green Hell Pipe
tile.FluidPipe.10004.name =Brown Hell Pipe
tile.FluidPipe.10005.name =Blue Hell Pipe
tile.FluidPipe.10006.name =Purple Hell Pipe
tile.FluidPipe.10007.name =Cyan Hell Pipe
tile.FluidPipe.10008.name =Silver Hell Pipe
tile.FluidPipe.10009.name =Grey Hell Pipe
tile.FluidPipe.10010.name =Pink Hell Pipe
tile.FluidPipe.10011.name =Lime Hell Pipe
tile.FluidPipe.10012.name =Yellow Hell Pipe
tile.FluidPipe.10013.name =Light Hell Pipe
tile.FluidPipe.10014.name =Mangenta Hell Pipe
tile.FluidPipe.10015.name =Orange Hell Pipe
tile.FluidPipe.10016.name =White Hell Pipe
tile.FluidPipe.16.name =Oil Pipe
tile.FluidPipe.17.name =Fuel Pipe
tile.FluidPipe.18.name =Lava Pipe
tile.FluidPipe.19.name =Water Pipe
tile.FluidPipe.20.name =Waste Pipe
tile.FluidPipe.21.name =P Pipe
tile.FluidPipe.22.name =C Pipe
tile.FluidPipe.23.name =S Pipe
tile.FluidPipe.24.name =G Pipe
tile.FluidPipe.25.name =P Pipe
tile.FluidPipe.26.name =W Pipe
tile.FluidPipe.27.name =G Pipe
tile.FluidPipe.28.name =S Pipe
tile.FluidPipe.29.name =v Pipe
tile.FluidPipe.30.name =B Pipe
tile.FluidPipe.31.name =Iron Pipe
tile.FluidTank.0.name =Oil Tank tile.FluidTank.0.name =Oil Tank
tile.FluidTank.1.name =Lava Tank tile.FluidTank.1.name =Lava Tank

View file

@ -282,6 +282,6 @@ public class NetworkFluidTiles extends NetworkTileEntities
String name = combinedStorage().getFluid().getFluid().getLocalizedName(); String name = combinedStorage().getFluid().getFluid().getLocalizedName();
return String.format("%d/%d %S Stored", vol, cap, name); return String.format("%d/%d %S Stored", vol, cap, name);
} }
return ("As far as you can tell it is empty"); return ("Empty");
} }
} }

View file

@ -10,7 +10,7 @@ import dark.api.ColorCode;
import dark.core.common.CoreRecipeLoader; import dark.core.common.CoreRecipeLoader;
import dark.core.common.RecipeLoader; import dark.core.common.RecipeLoader;
import dark.core.common.items.ItemParts.Parts; import dark.core.common.items.ItemParts.Parts;
import dark.fluid.common.pipes.BlockPipe.PipeMaterial; import dark.fluid.common.pipes.PipeMaterial;
public class FMRecipeLoader extends RecipeLoader public class FMRecipeLoader extends RecipeLoader
{ {

View file

@ -4,7 +4,6 @@ import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.logging.Logger; import java.util.logging.Logger;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.Configuration; import net.minecraftforge.common.Configuration;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
@ -31,8 +30,8 @@ import dark.fluid.common.machines.BlockReleaseValve;
import dark.fluid.common.machines.BlockSink; import dark.fluid.common.machines.BlockSink;
import dark.fluid.common.machines.BlockTank; import dark.fluid.common.machines.BlockTank;
import dark.fluid.common.pipes.BlockPipe; import dark.fluid.common.pipes.BlockPipe;
import dark.fluid.common.pipes.BlockPipe.PipeData;
import dark.fluid.common.pipes.ItemBlockPipe; import dark.fluid.common.pipes.ItemBlockPipe;
import dark.fluid.common.pipes.PipeMaterial;
import dark.fluid.common.pump.BlockConstructionPump; import dark.fluid.common.pump.BlockConstructionPump;
import dark.fluid.common.pump.BlockDrain; import dark.fluid.common.pump.BlockDrain;
import dark.fluid.common.pump.BlockPumpMachine; import dark.fluid.common.pump.BlockPumpMachine;
@ -103,7 +102,10 @@ public class FluidMech extends ModPrefab
/* LANG LOADING */ /* LANG LOADING */
FMLog.info(" Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " Languages."); FMLog.info(" Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " Languages.");
DMCreativeTab.tabHydrualic.setIconItemStack(new ItemStack(FMRecipeLoader.blockPipe, 1, PipeData.IRON_PIPE.ordinal())); if (FMRecipeLoader.blockPipe instanceof BlockPipe)
{
DMCreativeTab.tabHydrualic.setIconItemStack(PipeMaterial.IRON.getStack());
}
} }
@Override @Override

View file

@ -107,9 +107,9 @@ public class TileEntityBoiler extends TileEntityFluidDevice implements IFluidHan
} }
@Override @Override
public void setColor(Object obj) public boolean setColor(Object obj)
{ {
// TODO Auto-generated method stub return false;
} }

View file

@ -97,8 +97,9 @@ public class TileEntitySink extends TileEntityFluidStorage implements IPacketRec
} }
@Override @Override
public void setColor(Object obj) public boolean setColor(Object obj)
{ {
return false;
} }
@Override @Override

View file

@ -158,12 +158,14 @@ public class TileEntityTank extends TileEntityFluidStorage implements IFluidHand
/** sets the current color mark of the pipe */ /** sets the current color mark of the pipe */
@Override @Override
public void setColor(Object cc) public boolean setColor(Object cc)
{ {
if (!worldObj.isRemote) if (!worldObj.isRemote)
{ {
this.colorCode = ColorCode.get(cc); this.colorCode = ColorCode.get(cc);
return true;
} }
return false;
} }
@Override @Override

View file

@ -7,9 +7,13 @@ import java.util.Set;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.Configuration; import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
@ -21,9 +25,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import dark.api.ColorCode; import dark.api.ColorCode;
import dark.api.ColorCode.IColorCoded; import dark.api.ColorCode.IColorCoded;
import dark.core.prefab.helpers.FluidHelper;
import dark.fluid.common.BlockFM; import dark.fluid.common.BlockFM;
import dark.fluid.common.FMRecipeLoader;
public class BlockPipe extends BlockFM public class BlockPipe extends BlockFM
{ {
@ -39,6 +41,28 @@ public class BlockPipe extends BlockFM
} }
@Override
public void fillWithRain(World world, int x, int y, int z)
{
int meta = world.getBlockMetadata(x, y, z);
if (meta == PipeMaterial.WOOD.ordinal() || meta == PipeMaterial.STONE.ordinal())
{
//TODO fill pipe since it will have an open top and can gather rain
}
}
@Override
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
{
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
TileEntity entity = world.getBlockTileEntity(x, y, z);
if (entity instanceof TileEntityPipe)
{
ret.add(new ItemStack(this, 1, (world.getBlockMetadata(x, y, z) * PipeMaterial.spacing) + ((TileEntityPipe) entity).getPipeID()));
}
return ret;
}
@Override @Override
public boolean isOpaqueCube() public boolean isOpaqueCube()
{ {
@ -70,6 +94,28 @@ public class BlockPipe extends BlockFM
return PipeMaterial.getDropItem(world, x, y, z); return PipeMaterial.getDropItem(world, x, y, z);
} }
@Override
public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata)
{
return false;
}
@Override
public int getLightValue(IBlockAccess world, int x, int y, int z)
{
if (world.getBlockMetadata(x, y, z) == PipeMaterial.HELL.ordinal())
{
return 5;
}
return super.getLightValue(world, x, y, z);
}
@Override
public boolean isLadder(World world, int x, int y, int z, EntityLivingBase entity)
{
return true;
}
@Override @Override
public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
{ {
@ -104,13 +150,10 @@ public class BlockPipe extends BlockFM
@Override @Override
public boolean recolourBlock(World world, int x, int y, int z, ForgeDirection side, int colour) public boolean recolourBlock(World world, int x, int y, int z, ForgeDirection side, int colour)
{
if (world.getBlockMetadata(x, y, z) < 16)
{ {
if (world.getBlockTileEntity(x, y, z) instanceof IColorCoded) if (world.getBlockTileEntity(x, y, z) instanceof IColorCoded)
{ {
((IColorCoded) world.getBlockTileEntity(x, y, z)).setColor(ColorCode.get(colour)); return ((IColorCoded) world.getBlockTileEntity(x, y, z)).setColor(ColorCode.get(colour));
}
} }
return false; return false;
} }
@ -134,112 +177,4 @@ public class BlockPipe extends BlockFM
BlockPipe.waterFlowRate = config.get("settings", "FlowRate", BlockPipe.waterFlowRate, "Base value for flow rate is based off of water. It is in milibuckets so 1000 equals one bucket of fluid").getInt(); BlockPipe.waterFlowRate = config.get("settings", "FlowRate", BlockPipe.waterFlowRate, "Base value for flow rate is based off of water. It is in milibuckets so 1000 equals one bucket of fluid").getInt();
} }
/** Enum to hold info about each pipe material. Values are by default and some can change with
* pipe upgrades.
*
* @Note unsupportedFluids should only be used by filters. All pipes should allow all fluid
* types. However, pipes that can't support the fluid should have an effect. Eg no gas support
* should cause the pipe to leak. No molten support should cause the pipe to take damage.
*
* @author DarkGuardsman */
public static enum PipeMaterial
{
/** Simple water only pipe. Should render open toped when it can */
WOOD("wood", false, true, false, 50, 200),
/** Gas only pipe */
GLASS("wood", true, false, false, 100, 300),
/** Another version of the wooden pipe */
STONE("wood", false, true, false, 200, 1000),
/** Cheap fluid pipe */
TIN("wood", false, true, false, 300, 1000),
/** Cheap fluid pipe */
COPPER("wood", false, true, false, 400, 1000),
/** First duel gas and fluid pipe */
IRON("wood", true, true, false, 500, 1000),
/** Fluid movement pipe that doesn't work well with pressure */
GOLD("wood", true, true, false, 200, 2000),
/** Cheap molten metal pipe */
OBBY("wood", false, true, true, 1000, 1000),
/** Very strong fluid and gas support pipe. Should also support molten metal as long as they
* don't stay in the pipe too long. */
STEEL("wood", true, true, false, 10000, 3000),
/** Weaker equal to steel pipes. Should also support steam very well */
BRONZE("wood", true, true, false, 6000, 2000),
/** Hell fluids only. Meaning lava, and molten metals. Water should turn to steam, fuel and
* oil should cause an explosion around the pipe */
HELL("wood", true, true, true, 10000, 5000, "water", "fuel", "oil");
public String matName = "material";
List<String> unsupportedFluids = new ArrayList<String>();
public boolean supportsAllFluids = false;
public boolean supportsAllGas = false;
public boolean canSupportGas = false;
public boolean canSupportFluids = false;
public boolean canSupportMoltenFluids = false;
public int maxPressure = 1000;
public int maxVolume = 2000;
/** Materials are stored as meta were there sub types are stored by NBT. Item versions of the
* pipes are still meta so there is a set spacing to allow for a large but defined range of
* sub pipes */
public static int spacing = 1000;
private PipeMaterial()
{
supportsAllFluids = true;
supportsAllGas = true;
canSupportMoltenFluids = true;
}
private PipeMaterial(String name, boolean gas, boolean fluid, boolean molten, String... strings)
{
this.matName = name;
this.canSupportGas = gas;
this.canSupportFluids = fluid;
this.canSupportMoltenFluids = molten;
}
private PipeMaterial(String name, boolean gas, boolean fluid, boolean molten, int pressure, int volume, String... strings)
{
this(name, gas, fluid, molten, strings);
this.maxPressure = pressure;
this.maxVolume = volume;
}
public ItemStack getStack()
{
return getStack(1);
}
public ItemStack getStack(ColorCode color)
{
return getStack(1, color);
}
public ItemStack getStack(int s)
{
return new ItemStack(FMRecipeLoader.blockPipe, s, (this.ordinal() * spacing));
}
public ItemStack getStack(int s, ColorCode color)
{
return new ItemStack(FMRecipeLoader.blockPipe, s, (this.ordinal() * spacing) + color.ordinal());
}
public static ItemStack getDropItem(World world, int x, int y, int z)
{
int meta = world.getBlockMetadata(x, y, z);
TileEntity ent = world.getBlockTileEntity(x, y, z);
if (ent instanceof IColorCoded)
{
meta += ((IColorCoded) ent).getColor().ordinal();
}
return new ItemStack(FMRecipeLoader.blockPipe, 1, meta);
}
}
public static enum PipeSubType
{
//TODO list sub types then create an enum interface to have each sub handle its own metadata
COLOR();
}
} }

View file

@ -0,0 +1,107 @@
package dark.fluid.common.pipes;
import dark.api.ColorCode;
import dark.api.ColorCode.IColoredId;
public enum EnumPipeType implements IColoredId
{
Base(0, 0, true),
COLOR(new IPipeType()
{
@Override
public ColorCode getColor(int meta)
{
return ColorCode.get(meta);
}
@Override
public String getName()
{
return "Colored Pipe";
}
}, 0, 15, true);
private IPipeType type;
public int metaStart = 1;
public int metaEnd = 16;
public boolean canColor = false;
private EnumPipeType()
{
this.metaStart = this.ordinal() * 16;
this.metaEnd = this.metaStart + 15;
}
private EnumPipeType(int metaStart, int metaEnd, boolean canColor)
{
}
private EnumPipeType(IPipeType type, int metaStart, int metaEnd, boolean canColor)
{
this.type = type;
this.metaStart = metaStart;
this.metaEnd = metaEnd;
this.canColor = canColor;
}
public static EnumPipeType get(int meta)
{
for (EnumPipeType type : EnumPipeType.values())
{
if (meta >= type.metaStart && meta <= type.metaEnd)
{
return type;
}
}
return null;
}
public static boolean canColor(int meta)
{
EnumPipeType type = get(meta);
if (type != null)
{
return type.canColor;
}
return false;
}
public static int getUpdatedID(int pipeID, ColorCode newColor)
{
if(pipeID == 0)
{
return 1 + newColor.ordinal();
}
return pipeID;
}
public static ColorCode getColorCode(int meta)
{
EnumPipeType type = get(meta);
if (type != null)
{
return type.getColor(meta);
}
return ColorCode.UNKOWN;
}
@Override
public ColorCode getColor(int meta)
{
if (type != null)
{
return type.getColor(meta);
}
return ColorCode.UNKOWN;
}
public String getName()
{
if (type != null)
{
return type.getName();
}
return "PipeType" + this.ordinal();
}
}

View file

@ -0,0 +1,8 @@
package dark.fluid.common.pipes;
import dark.api.ColorCode.IColoredId;
public interface IPipeType extends IColoredId
{
public String getName();
}

View file

@ -33,21 +33,13 @@ public class ItemBlockPipe extends ItemBlock
@Override @Override
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
{ {
if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata / PipeMaterial.spacing))
{ {
TileEntity tile = world.getBlockTileEntity(x, y, z); TileEntity tile = world.getBlockTileEntity(x, y, z);
if (tile instanceof IColorCoded)
{
if (tile instanceof TileEntityPipe) if (tile instanceof TileEntityPipe)
{ {
((TileEntityPipe) tile).setPipeID(stack.getItemDamage()); ((TileEntityPipe) tile).setPipeID(stack.getItemDamage());
} }
else
{
((IColorCoded) tile).setColor((stack.getItemDamage() % 16) & 15);
}
}
return true; return true;
} }
return false; return false;

View file

@ -0,0 +1,151 @@
package dark.fluid.common.pipes;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import dark.api.ColorCode;
import dark.fluid.common.FMRecipeLoader;
/** Enum to hold info about each pipe material. Values are by default and some can change with pipe
* upgrades.
*
* @Note unsupportedFluids should only be used by filters. All pipes should allow all fluid types.
* However, pipes that can't support the fluid should have an effect. Eg no gas support should cause
* the pipe to leak. No molten support should cause the pipe to take damage.
*
* @author DarkGuardsman */
public enum PipeMaterial
{
/** Simple water only pipe. Should render open toped when it can */
WOOD("wood", false, true, false, 50, 200),
/** Gas only pipe */
GLASS("wood", true, false, false, 100, 300),
/** Another version of the wooden pipe */
STONE("wood", false, true, false, 200, 1000),
/** Cheap fluid pipe */
TIN("wood", false, true, false, 300, 1000),
/** Cheap fluid pipe */
COPPER("wood", false, true, false, 400, 1000),
/** First duel gas and fluid pipe */
IRON("wood", true, true, false, 500, 1000),
/** Fluid movement pipe that doesn't work well with pressure */
GOLD("wood", true, true, false, 200, 2000),
/** Cheap molten metal pipe */
OBBY("wood", false, true, true, 1000, 1000),
/** Very strong fluid and gas support pipe. Should also support molten metal as long as they
* don't stay in the pipe too long. */
STEEL("wood", true, true, false, 10000, 3000),
/** Weaker equal to steel pipes. Should also support steam very well */
BRONZE("wood", true, true, false, 6000, 2000),
/** Hell fluids only. Meaning lava, and molten metals. Water should turn to steam, fuel and oil
* should cause an explosion around the pipe */
HELL("wood", true, true, true, 10000, 5000, "water", "fuel", "oil");
public String matName = "material";
List<String> unsupportedFluids = new ArrayList<String>();
public boolean supportsAllFluids = false;
public boolean supportsAllGas = false;
public boolean canSupportGas = false;
public boolean canSupportFluids = false;
public boolean canSupportMoltenFluids = false;
public int maxPressure = 1000;
public int maxVolume = 2000;
/** Materials are stored as meta were there sub types are stored by NBT. Item versions of the
* pipes are still meta so there is a set spacing to allow for a large but defined range of sub
* pipes */
public static int spacing = 1000;
private PipeMaterial()
{
supportsAllFluids = true;
supportsAllGas = true;
canSupportMoltenFluids = true;
}
private PipeMaterial(String name, boolean gas, boolean fluid, boolean molten, String... strings)
{
this.matName = name;
this.canSupportGas = gas;
this.canSupportFluids = fluid;
this.canSupportMoltenFluids = molten;
}
private PipeMaterial(String name, boolean gas, boolean fluid, boolean molten, int pressure, int volume, String... strings)
{
this(name, gas, fluid, molten, strings);
this.maxPressure = pressure;
this.maxVolume = volume;
}
public static PipeMaterial get(World world, int x, int y, int z)
{
return get(world.getBlockMetadata(x, y, z));
}
public static PipeMaterial get(ItemStack stack)
{
if (stack != null)
{
return get(stack.getItemDamage());
}
return null;
}
public static PipeMaterial get(int meta)
{
meta = meta / spacing;
if (meta < PipeMaterial.values().length)
{
return PipeMaterial.values()[meta];
}
return null;
}
public ItemStack getStack()
{
return getStack(1);
}
public ItemStack getStack(ColorCode color)
{
return getStack(1, color);
}
public ItemStack getStack(int s)
{
return new ItemStack(FMRecipeLoader.blockPipe, s, (this.ordinal() * spacing));
}
public ItemStack getStack(int s, ColorCode color)
{
return new ItemStack(FMRecipeLoader.blockPipe, s, (this.ordinal() * spacing) + color.ordinal() + 1);
}
public static ItemStack getDropItem(World world, int x, int y, int z)
{
int meta = world.getBlockMetadata(x, y, z);
TileEntity ent = world.getBlockTileEntity(x, y, z);
meta *= spacing;
if (ent instanceof TileEntityPipe)
{
meta += ((TileEntityPipe) ent).getPipeID();
}
return new ItemStack(FMRecipeLoader.blockPipe, 1, meta);
}
public static ColorCode getColor(int pipeID)
{
return EnumPipeType.getColorCode(pipeID % spacing);
}
public static int updateColor(Object cc, int pipeID)
{
if(EnumPipeType.canColor(pipeID))
{
return EnumPipeType.getUpdatedID(pipeID, ColorCode.get(cc));
}
return pipeID;
}
}

View file

@ -40,7 +40,6 @@ import dark.core.network.PacketHandler;
import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.helpers.FluidHelper;
import dark.core.prefab.tilenetwork.NetworkTileEntities; import dark.core.prefab.tilenetwork.NetworkTileEntities;
import dark.core.prefab.tilenetwork.fluid.NetworkPipes; import dark.core.prefab.tilenetwork.fluid.NetworkPipes;
import dark.fluid.common.pipes.BlockPipe.PipeData;
public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, IToolReadOut, IColorCoded, INetworkPipe, IPacketReceiver public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, IToolReadOut, IColorCoded, INetworkPipe, IPacketReceiver
{ {
@ -55,11 +54,9 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
/** Network that links the collective pipes together to work */ /** Network that links the collective pipes together to work */
private NetworkPipes pipeNetwork; private NetworkPipes pipeNetwork;
protected PipeData pipeData = PipeData.IRON_PIPE;
protected boolean flagForColorCodeUpdate = false, resetting = false;
protected int updateTick = 1; protected int updateTick = 1;
protected int pipeID = 0;
String refClassID = ""; String refClassID = "";
public enum PipePacketID public enum PipePacketID
@ -69,25 +66,6 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
EXTENTION_UPDATE; EXTENTION_UPDATE;
} }
@Override
public void initiate()
{
if (!this.worldObj.isRemote)
{
if (this.flagForColorCodeUpdate)
{
int meta = this.worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
if (!this.refClassID.equalsIgnoreCase("ColoredPipe"))
{
meta += 16;
}
this.pipeData = PipeData.values()[meta & 31];
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, 0, 3);
this.flagForColorCodeUpdate = false;
}
}
}
@Override @Override
public void updateEntity() public void updateEntity()
{ {
@ -106,7 +84,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
public void invalidate() public void invalidate()
{ {
super.invalidate(); super.invalidate();
if (!this.worldObj.isRemote && !this.resetting) if (!this.worldObj.isRemote)
{ {
this.getTileNetwork().splitNetwork(this.worldObj, this); this.getTileNetwork().splitNetwork(this.worldObj, this);
} }
@ -120,7 +98,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
{ {
if (this.worldObj.isRemote) if (this.worldObj.isRemote)
{ {
this.pipeData = PipeData.values()[dataStream.readInt()]; this.pipeID = dataStream.readInt();
this.renderConnection[0] = dataStream.readBoolean(); this.renderConnection[0] = dataStream.readBoolean();
this.renderConnection[1] = dataStream.readBoolean(); this.renderConnection[1] = dataStream.readBoolean();
this.renderConnection[2] = dataStream.readBoolean(); this.renderConnection[2] = dataStream.readBoolean();
@ -139,50 +117,54 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
return PacketHandler.instance().getPacket(DarkMain.CHANNEL, this, this.pipeData.ordinal(), this.renderConnection[0], this.renderConnection[1], this.renderConnection[2], this.renderConnection[3], this.renderConnection[4], this.renderConnection[5]); return PacketHandler.instance().getPacket(DarkMain.CHANNEL, this, this.pipeID, this.renderConnection[0], this.renderConnection[1], this.renderConnection[2], this.renderConnection[3], this.renderConnection[4], this.renderConnection[5]);
} }
/** gets the current color mark of the pipe */ /** gets the current color mark of the pipe */
@Override @Override
public ColorCode getColor() public ColorCode getColor()
{ {
return this.pipeData.colorCode; return PipeMaterial.getColor(this.pipeID);
} }
/** sets the current color mark of the pipe */ /** sets the current color mark of the pipe */
@Override @Override
public void setColor(Object cc) public boolean setColor(Object cc)
{ {
if (!worldObj.isRemote && (this.pipeData.colorCode != ColorCode.UNKOWN || this.pipeData == PipeData.IRON_PIPE)) if (!worldObj.isRemote)
{ {
this.pipeData = PipeData.get(ColorCode.get(cc).ordinal()); int p = this.pipeID;
this.pipeID = PipeMaterial.updateColor(cc, pipeID);
return p != this.pipeID;
} }
return false;
} }
@Override @Override
public String getMeterReading(EntityPlayer user, ForgeDirection side, EnumTools tool) public String getMeterReading(EntityPlayer user, ForgeDirection side, EnumTools tool)
{
if (tool == EnumTools.PIPE_GUAGE)
{ {
/* DEBUG CODE ACTIVATERS */ /* DEBUG CODE ACTIVATERS */
boolean testConnections = false, testNetwork = false; boolean testConnections = true;
/* NORMAL OUTPUT */ /* NORMAL OUTPUT */
String string = ((NetworkPipes) this.getTileNetwork()).pressureProduced + "p " + ((NetworkPipes) this.getTileNetwork()).getNetworkFluid() + " Extra"; String string = ((NetworkPipes) this.getTileNetwork()).pressureProduced + "p " + ((NetworkPipes) this.getTileNetwork()).getNetworkFluid();
/* DEBUG CODE */ /* DEBUG CODE */
if (testConnections) if (testConnections)
{ {
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
string += ":" + (this.renderConnection[i] ? "T" : "F") + (this.renderConnection[i] ? "T" : "F"); string += "||" + (this.renderConnection[i] ? "T" : "F");
} }
} }
if (testNetwork)
{
string += " " + this.getTileNetwork().toString(); string += " " + this.getTileNetwork().toString();
}
return string; return string;
} }
return null;
}
@Override @Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
@ -217,29 +199,17 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
{ {
if (tileEntity instanceof ITileConnector) if (tileEntity instanceof ITileConnector)
{ {
if (((ITileConnector) tileEntity).canTileConnect(Connection.NETWORK, side.getOpposite())) if (((ITileConnector) tileEntity).canTileConnect(Connection.FLUIDS, side.getOpposite()))
{ {
if (tileEntity instanceof INetworkPipe) if (tileEntity instanceof INetworkPipe)
{ {
if (((INetworkPipe) tileEntity).getColor() == this.getColor()) if (((INetworkPipe) tileEntity).canTileConnect(Connection.NETWORK, side.getOpposite()))
{
if (tileEntity instanceof TileEntityPipe)
{
if (((TileEntityPipe) tileEntity).pipeData == this.pipeData)
{ {
this.getTileNetwork().merge(((INetworkPipe) tileEntity).getTileNetwork(), this); this.getTileNetwork().merge(((INetworkPipe) tileEntity).getTileNetwork(), this);
return connectedBlocks.add(tileEntity); return connectedBlocks.add(tileEntity);
} }
} }
else else
{
this.getTileNetwork().merge(((INetworkPipe) tileEntity).getTileNetwork(), this);
return connectedBlocks.add(tileEntity);
}
}
}
else
{ {
return connectedBlocks.add(tileEntity); return connectedBlocks.add(tileEntity);
} }
@ -260,10 +230,54 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
return false; return false;
} }
@Override
public boolean canTileConnect(Connection type, ForgeDirection dir)
{
Vector3 connection = new Vector3(this).modifyPositionFromSide(dir.getOpposite());
TileEntity entity = connection.getTileEntity(this.worldObj);
//Unknown color codes can connect to any color, however two different colors can connect to support better pipe layouts
if (entity instanceof IColorCoded && ((IColorCoded) entity).getColor() != this.getColor() && ((IColorCoded) entity).getColor() != ColorCode.UNKOWN)
{
return false;
}//All Fluid connections are supported
else if (type == Connection.FLUIDS)
{
return true;
}//Network connections are only supported for if pipe materials match
else if (type == Connection.NETWORK && entity instanceof INetworkPipe)
{
if (entity instanceof TileEntityPipe)
{
int meta = new Vector3(this).getBlockMetadata(this.worldObj);
int metaOther = connection.getBlockMetadata(this.worldObj);
if (meta < PipeMaterial.values().length && metaOther < PipeMaterial.values().length)
{
PipeMaterial pipeMat = PipeMaterial.values()[meta];
PipeMaterial pipeMatOther = PipeMaterial.values()[metaOther];
//Same pipe types can connect
if (pipeMat == pipeMatOther)
{
return true;
}//Wood and stone pipes can connect to each other but not other pipe types since they are more like a trough than a pipe
else if ((pipeMat == PipeMaterial.WOOD || pipeMat == PipeMaterial.STONE) && (pipeMatOther == PipeMaterial.WOOD || pipeMatOther == PipeMaterial.STONE))
{
return true;
}//Any other pipe can connect to each other as long as the color matches except for glass which only works with itself at the moment
else if (pipeMat != PipeMaterial.WOOD && pipeMat != PipeMaterial.STONE && pipeMatOther != PipeMaterial.WOOD && pipeMatOther != PipeMaterial.STONE && pipeMat != PipeMaterial.GLASS && pipeMatOther != PipeMaterial.GLASS)
{
return true;
}
}
return false;
}
return true;
}
return false;
}
@Override @Override
public void refresh() public void refresh()
{ {
if (this.worldObj != null && !this.worldObj.isRemote) if (this.worldObj != null && !this.worldObj.isRemote)
{ {
@ -300,12 +314,6 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
} }
} }
@Override
public boolean canTileConnect(Connection type, ForgeDirection dir)
{
return new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj) instanceof IFluidHandler;
}
@Override @Override
public double getMaxPressure(ForgeDirection side) public double getMaxPressure(ForgeDirection side)
{ {
@ -450,14 +458,8 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
super.readFromNBT(nbt); super.readFromNBT(nbt);
//Load color code from nbt //Load color code from nbt
this.refClassID = nbt.getString("id"); this.refClassID = nbt.getString("id");
if (nbt.hasKey("PipeID"))
{ this.pipeID = nbt.getInteger("PipeItemId");
this.pipeData = PipeData.get(nbt.getInteger("PipeID"));
}
else
{
this.flagForColorCodeUpdate = true;
}
//Load fluid tank //Load fluid tank
FluidStack liquid = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("FluidTank")); FluidStack liquid = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("FluidTank"));
@ -483,7 +485,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
public void writeToNBT(NBTTagCompound nbt) public void writeToNBT(NBTTagCompound nbt)
{ {
super.writeToNBT(nbt); super.writeToNBT(nbt);
nbt.setInteger("PipeID", this.pipeData.ordinal()); nbt.setInteger("PipeItemId", this.pipeID);
if (this.tank != null && this.tank.getFluid() != null) if (this.tank != null && this.tank.getFluid() != null)
{ {
nbt.setTag("FluidTank", this.tank.getFluid().writeToNBT(new NBTTagCompound())); nbt.setTag("FluidTank", this.tank.getFluid().writeToNBT(new NBTTagCompound()));
@ -492,7 +494,11 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler,
public void setPipeID(int itemDamage) public void setPipeID(int itemDamage)
{ {
this.pipeData = PipeData.get(itemDamage); this.pipeID = itemDamage;
} }
public int getPipeID()
{
return this.pipeID;
}
} }