re-added wires
This commit is contained in:
parent
916559e802
commit
1cae25ad79
6 changed files with 503 additions and 1 deletions
|
@ -88,6 +88,8 @@ import com.builtbroken.assemblyline.machine.encoder.BlockEncoder;
|
|||
import com.builtbroken.assemblyline.machine.encoder.ItemDisk;
|
||||
import com.builtbroken.assemblyline.machine.processor.BlockProcessor;
|
||||
import com.builtbroken.assemblyline.machine.red.BlockAdvancedHopper;
|
||||
import com.builtbroken.assemblyline.transmit.BlockWire;
|
||||
import com.builtbroken.assemblyline.transmit.ItemBlockWire;
|
||||
import com.builtbroken.assemblyline.worldgen.OreGenReplaceStone;
|
||||
import com.builtbroken.assemblyline.worldgen.OreGenerator;
|
||||
import com.builtbroken.minecraft.CoreRegistry;
|
||||
|
@ -290,7 +292,7 @@ public class AssemblyLine
|
|||
|
||||
ALRecipeLoader.blockSteamGen = CoreRegistry.createNewBlock("DMBlockSteamMachine", AssemblyLine.MOD_ID, BlockSmallSteamGen.class, ItemBlockHolder.class);
|
||||
ALRecipeLoader.blockOre = CoreRegistry.createNewBlock("DMBlockOre", AssemblyLine.MOD_ID, BlockOre.class, ItemBlockOre.class);
|
||||
//ALRecipeLoader.blockWire = CoreRegistry.createNewBlock("DMBlockWire", AssemblyLine.MOD_ID, BlockWire.class, ItemBlockWire.class);
|
||||
ALRecipeLoader.blockWire = CoreRegistry.createNewBlock("DMBlockWire", AssemblyLine.MOD_ID, BlockWire.class, ItemBlockWire.class);
|
||||
ALRecipeLoader.blockDebug = CoreRegistry.createNewBlock("DMBlockDebug", AssemblyLine.MOD_ID, BlockDebug.class, ItemBlockHolder.class);
|
||||
ALRecipeLoader.blockStainGlass = CoreRegistry.createNewBlock("DMBlockStainedGlass", AssemblyLine.MOD_ID, BlockColorGlass.class, ItemBlockColored.class);
|
||||
ALRecipeLoader.blockColorSand = CoreRegistry.createNewBlock("DMBlockColorSand", AssemblyLine.MOD_ID, BlockColorSand.class, ItemBlockColored.class);
|
||||
|
|
293
src/com/builtbroken/assemblyline/transmit/BlockWire.java
Normal file
293
src/com/builtbroken/assemblyline/transmit/BlockWire.java
Normal file
|
@ -0,0 +1,293 @@
|
|||
package com.builtbroken.assemblyline.transmit;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import universalelectricity.api.energy.IConductor;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
|
||||
import com.builtbroken.assemblyline.AssemblyLine;
|
||||
import com.builtbroken.assemblyline.client.render.RenderBlockWire;
|
||||
import com.builtbroken.common.Pair;
|
||||
import com.builtbroken.minecraft.IndustryTabs;
|
||||
import com.builtbroken.minecraft.prefab.BlockMachine;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class BlockWire extends BlockMachine
|
||||
{
|
||||
public static float wireResistance = 0.001f;
|
||||
public static long energyMax = 100000;
|
||||
public boolean isWireCollision = true;
|
||||
public Vector3 minVector = new Vector3(0.3, 0.3, 0.3);
|
||||
public Vector3 maxVector = new Vector3(0.7, 0.7, 0.7);
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Icon wireIcon;
|
||||
|
||||
public BlockWire()
|
||||
{
|
||||
super(AssemblyLine.CONFIGURATION, "DMWire", Material.cloth);
|
||||
this.setStepSound(soundClothFootstep);
|
||||
this.setResistance(0.2F);
|
||||
this.setHardness(0.1f);
|
||||
this.setBlockBounds(0.3f, 0.3f, 0.3f, 0.7f, 0.7f, 0.7f);
|
||||
Block.setBurnProperties(this.blockID, 30, 60);
|
||||
this.setCreativeTab(IndustryTabs.tabIndustrial());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerIcons(IconRegister par1IconRegister)
|
||||
{
|
||||
this.wireIcon = par1IconRegister.registerIcon(AssemblyLine.PREFIX + "CopperWire");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Icon getIcon(int side, int meta)
|
||||
{
|
||||
if (meta == 17)
|
||||
{
|
||||
return this.blockIcon;
|
||||
}
|
||||
return Block.blockRedstone.getIcon(side, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType()
|
||||
{
|
||||
return this.zeroRendering ? 0 : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, int metadata)
|
||||
{
|
||||
if (metadata == 1)
|
||||
{
|
||||
return new TileEntityDetectorWire();
|
||||
}
|
||||
else if (metadata == 2)
|
||||
{
|
||||
return new TileEntitySwitchWire();
|
||||
}
|
||||
return this.createNewTileEntity(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world)
|
||||
{
|
||||
return new TileEntityWire();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(World world, int x, int y, int z)
|
||||
{
|
||||
super.onBlockAdded(world, x, y, z);
|
||||
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
if (tileEntity instanceof TileEntityWire)
|
||||
{
|
||||
((TileEntityWire) tileEntity).refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
|
||||
{
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
if (tileEntity instanceof TileEntityWire)
|
||||
{
|
||||
((TileEntityWire) tileEntity).refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
|
||||
{
|
||||
this.setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return super.getCollisionBoundingBoxFromPool(world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z)
|
||||
{
|
||||
this.setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return super.getSelectedBoundingBoxFromPool(world, x, y, z);
|
||||
}
|
||||
|
||||
/** Returns the bounding box of the wired rectangular prism to render. */
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z)
|
||||
{
|
||||
if (this.isWireCollision)
|
||||
{
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if (tileEntity instanceof TileEntityWire)
|
||||
{
|
||||
TileEntity[] connectable = ((TileEntityWire) tileEntity).getConnections();
|
||||
|
||||
if (connectable != null)
|
||||
{
|
||||
float minX = (float) this.minVector.x;
|
||||
float minY = (float) this.minVector.y;
|
||||
float minZ = (float) this.minVector.z;
|
||||
float maxX = (float) this.maxVector.x;
|
||||
float maxY = (float) this.maxVector.y;
|
||||
float maxZ = (float) this.maxVector.z;
|
||||
|
||||
if (connectable[0] != null)
|
||||
{
|
||||
minY = 0.0F;
|
||||
}
|
||||
|
||||
if (connectable[1] != null)
|
||||
{
|
||||
maxY = 1.0F;
|
||||
}
|
||||
|
||||
if (connectable[2] != null)
|
||||
{
|
||||
minZ = 0.0F;
|
||||
}
|
||||
|
||||
if (connectable[3] != null)
|
||||
{
|
||||
maxZ = 1.0F;
|
||||
}
|
||||
|
||||
if (connectable[4] != null)
|
||||
{
|
||||
minX = 0.0F;
|
||||
}
|
||||
|
||||
if (connectable[5] != null)
|
||||
{
|
||||
maxX = 1.0F;
|
||||
}
|
||||
|
||||
this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB axisalignedbb, List list, Entity entity)
|
||||
{
|
||||
if (this.isWireCollision)
|
||||
{
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if (tileEntity instanceof TileEntityWire)
|
||||
{
|
||||
TileEntity[] connectable = ((TileEntityWire) tileEntity).getConnections();
|
||||
|
||||
this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
|
||||
if (connectable[4] != null)
|
||||
{
|
||||
this.setBlockBounds(0, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
|
||||
if (connectable[5] != null)
|
||||
{
|
||||
this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, 1, (float) this.maxVector.y, (float) this.maxVector.z);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
|
||||
if (connectable[0] != null)
|
||||
{
|
||||
this.setBlockBounds((float) this.minVector.x, 0, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
|
||||
if (connectable[1] != null)
|
||||
{
|
||||
this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, 1, (float) this.maxVector.z);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
|
||||
if (connectable[2] != null)
|
||||
{
|
||||
this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, 0, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
|
||||
if (connectable[3] != null)
|
||||
{
|
||||
this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, 1);
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getTileEntities(int blockID, Set<Pair<String, Class<? extends TileEntity>>> list)
|
||||
{
|
||||
list.add(new Pair<String, Class<? extends TileEntity>>("DMWireTile", TileEntityWire.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getClientTileEntityRenderers(List<Pair<Class<? extends TileEntity>, TileEntitySpecialRenderer>> list)
|
||||
{
|
||||
if (!this.zeroRendering)
|
||||
{
|
||||
list.add(new Pair<Class<? extends TileEntity>, TileEntitySpecialRenderer>(TileEntityWire.class, new RenderBlockWire()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasExtraConfigs()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadExtraConfigs(Configuration config)
|
||||
{
|
||||
super.loadExtraConfigs(config);
|
||||
BlockWire.wireResistance = config.get("Settings", "miliOhms", 1, "Resistance of the wire in 1/1000 of an ohm").getInt() / 1000;
|
||||
BlockWire.energyMax = config.get("Settings", "maxEnergy", energyMax, "Max energy the wire can move at any given time").getInt();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadOreNames()
|
||||
{
|
||||
OreDictionary.registerOre("copperwire", new ItemStack(this, 1, 0));
|
||||
OreDictionary.registerOre("wirecopper", new ItemStack(this, 1, 0));
|
||||
}
|
||||
}
|
22
src/com/builtbroken/assemblyline/transmit/ItemBlockWire.java
Normal file
22
src/com/builtbroken/assemblyline/transmit/ItemBlockWire.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package com.builtbroken.assemblyline.transmit;
|
||||
|
||||
import net.minecraft.util.Icon;
|
||||
|
||||
import com.builtbroken.assemblyline.ALRecipeLoader;
|
||||
import com.builtbroken.minecraft.prefab.ItemBlockHolder;
|
||||
|
||||
public class ItemBlockWire extends ItemBlockHolder
|
||||
{
|
||||
|
||||
public ItemBlockWire(int id)
|
||||
{
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIconFromDamage(int par1)
|
||||
{
|
||||
return ALRecipeLoader.blockWire instanceof BlockWire ? ((BlockWire) ALRecipeLoader.blockWire).wireIcon : ALRecipeLoader.blockWire.getIcon(0, par1);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.builtbroken.assemblyline.transmit;
|
||||
|
||||
public class TileEntityDetectorWire extends TileEntityWire
|
||||
{
|
||||
|
||||
@Override
|
||||
public void updateEntity()
|
||||
{
|
||||
if (!this.worldObj.isRemote && this.getNetwork() != null && this.ticks % 5 == 0)
|
||||
{
|
||||
//TODO if produced watts > minimal set value by the detector gui activate redstone on all sides
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package com.builtbroken.assemblyline.transmit;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
public class TileEntitySwitchWire extends TileEntityWire
|
||||
{
|
||||
protected boolean activated = true;
|
||||
|
||||
@Override
|
||||
public TileEntity[] getConnections()
|
||||
{
|
||||
if (activated)
|
||||
{
|
||||
return super.getConnections();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setActivate(boolean yes)
|
||||
{
|
||||
boolean p = this.activated;
|
||||
this.activated = yes;
|
||||
if (p != this.activated)
|
||||
{
|
||||
this.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getActivated()
|
||||
{
|
||||
return this.activated;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction)
|
||||
{
|
||||
return this.getActivated();
|
||||
}
|
||||
}
|
125
src/com/builtbroken/assemblyline/transmit/TileEntityWire.java
Normal file
125
src/com/builtbroken/assemblyline/transmit/TileEntityWire.java
Normal file
|
@ -0,0 +1,125 @@
|
|||
package com.builtbroken.assemblyline.transmit;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.api.CompatibilityModule;
|
||||
import universalelectricity.api.energy.EnergyNetworkLoader;
|
||||
import universalelectricity.api.energy.IConductor;
|
||||
import universalelectricity.api.energy.IEnergyNetwork;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import universalelectricity.api.vector.VectorHelper;
|
||||
import universalelectricity.core.net.EnergyNetwork;
|
||||
|
||||
import com.builtbroken.minecraft.helpers.ColorCode;
|
||||
import com.builtbroken.minecraft.prefab.TileEntityAdvanced;
|
||||
|
||||
public class TileEntityWire extends TileEntityAdvanced implements IConductor
|
||||
{
|
||||
protected int updateTick = 1;
|
||||
protected ColorCode color = ColorCode.BLACK;
|
||||
|
||||
private IEnergyNetwork network;
|
||||
|
||||
public TileEntity[] connections = new TileEntity[6];
|
||||
|
||||
@Override
|
||||
public void updateEntity()
|
||||
{
|
||||
super.updateEntity();
|
||||
if (!worldObj.isRemote)
|
||||
{
|
||||
if (ticks % this.updateTick == 0)
|
||||
{
|
||||
this.updateTick = this.worldObj.rand.nextInt(5) * 40 + 20;
|
||||
this.refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void refresh()
|
||||
{
|
||||
this.connections = new TileEntity[6];
|
||||
for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if (this.canConnect(direction.getOpposite()))
|
||||
{
|
||||
TileEntity entity = VectorHelper.getConnectorFromSide(this.worldObj, new Vector3(this), direction);
|
||||
if (CompatibilityModule.isHandler(entity))
|
||||
{
|
||||
this.connections[direction.ordinal()] = entity;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity[] getConnections()
|
||||
{
|
||||
if (this.connections == null)
|
||||
{
|
||||
this.refresh();
|
||||
}
|
||||
return this.connections;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IEnergyNetwork getNetwork()
|
||||
{
|
||||
if (!(this.network instanceof IEnergyNetwork))
|
||||
{
|
||||
this.network = EnergyNetworkLoader.getNewNetwork(this);
|
||||
}
|
||||
return this.network;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNetwork(IEnergyNetwork network)
|
||||
{
|
||||
if (network instanceof IEnergyNetwork)
|
||||
{
|
||||
this.network = (EnergyNetwork) network;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive)
|
||||
{
|
||||
if (this.canConnect(from) && network != null)
|
||||
{
|
||||
return network.produce(receive);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long onExtractEnergy(ForgeDirection from, long extract, boolean doExtract)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getEnergyLoss()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getEnergyCapacitance()
|
||||
{
|
||||
return BlockWire.energyMax;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue