Rename Turbine Rod to Turbine Rotor, work on multiblock form code
This commit is contained in:
parent
0c025e1033
commit
8cab2ebe8c
15 changed files with 326 additions and 71 deletions
|
@ -157,7 +157,10 @@ public abstract class UpdateProtocol<T extends SynchronizedData<T>>
|
|||
break;
|
||||
}
|
||||
else {
|
||||
innerNodes.add(new Coord4D(origX+x, origY+y, origZ+z, pointer.getWorldObj().provider.dimensionId));
|
||||
if(!isAir(origX+x, origY+y, origZ+z))
|
||||
{
|
||||
innerNodes.add(new Coord4D(origX+x, origY+y, origZ+z, pointer.getWorldObj().provider.dimensionId));
|
||||
}
|
||||
}
|
||||
|
||||
volume++;
|
||||
|
@ -227,7 +230,7 @@ public abstract class UpdateProtocol<T extends SynchronizedData<T>>
|
|||
}
|
||||
}
|
||||
|
||||
public boolean canForm(T structure)
|
||||
protected boolean canForm(T structure)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -390,6 +393,8 @@ public abstract class UpdateProtocol<T extends SynchronizedData<T>>
|
|||
protected void onStructureCreated(T structure, int origX, int origY, int origZ, int xmin, int xmax, int ymin, int ymax, int zmin, int zmax) {}
|
||||
|
||||
public void onStructureDestroyed(T structure) {}
|
||||
|
||||
public void killInnerNode(Coord4D coord) {}
|
||||
|
||||
/**
|
||||
* Runs the protocol and updates all nodes that make a part of the multiblock.
|
||||
|
@ -415,6 +420,11 @@ public abstract class UpdateProtocol<T extends SynchronizedData<T>>
|
|||
((IStructuralMultiblock)tile).setController(null);
|
||||
}
|
||||
}
|
||||
|
||||
for(Coord4D coord : innerNodes)
|
||||
{
|
||||
killInnerNode(coord);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -517,6 +527,11 @@ public abstract class UpdateProtocol<T extends SynchronizedData<T>>
|
|||
((IStructuralMultiblock)tile).setController(null);
|
||||
}
|
||||
}
|
||||
|
||||
for(Coord4D coord : innerNodes)
|
||||
{
|
||||
killInnerNode(coord);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ import mekanism.generators.client.render.RenderGasGenerator;
|
|||
import mekanism.generators.client.render.RenderHeatGenerator;
|
||||
import mekanism.generators.client.render.RenderReactor;
|
||||
import mekanism.generators.client.render.RenderSolarGenerator;
|
||||
import mekanism.generators.client.render.RenderTurbineRod;
|
||||
import mekanism.generators.client.render.RenderTurbineRotor;
|
||||
import mekanism.generators.client.render.RenderWindTurbine;
|
||||
import mekanism.generators.common.GeneratorsCommonProxy;
|
||||
import mekanism.generators.common.tile.TileEntityAdvancedSolarGenerator;
|
||||
|
@ -29,7 +29,7 @@ import mekanism.generators.common.tile.TileEntityWindGenerator;
|
|||
import mekanism.generators.common.tile.reactor.TileEntityReactorController;
|
||||
import mekanism.generators.common.tile.reactor.TileEntityReactorLogicAdapter;
|
||||
import mekanism.generators.common.tile.reactor.TileEntityReactorNeutronCapture;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRod;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRotor;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
@ -52,7 +52,7 @@ public class GeneratorsClientProxy extends GeneratorsCommonProxy
|
|||
ClientRegistry.registerTileEntity(TileEntityGasGenerator.class, "GasGenerator", new RenderGasGenerator());
|
||||
ClientRegistry.registerTileEntity(TileEntityWindGenerator.class, "WindTurbine", new RenderWindTurbine());
|
||||
ClientRegistry.registerTileEntity(TileEntityReactorController.class, "ReactorController", new RenderReactor());
|
||||
ClientRegistry.registerTileEntity(TileEntityTurbineRod.class, "TurbineRod", new RenderTurbineRod());
|
||||
ClientRegistry.registerTileEntity(TileEntityTurbineRotor.class, "TurbineRod", new RenderTurbineRotor());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -5,7 +5,7 @@ import mekanism.common.util.MekanismUtils;
|
|||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import mekanism.generators.client.model.ModelTurbine;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityRotationalComplex;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRod;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRotor;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
|
@ -15,7 +15,7 @@ import cpw.mods.fml.relauncher.Side;
|
|||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderTurbineRod extends TileEntitySpecialRenderer
|
||||
public class RenderTurbineRotor extends TileEntitySpecialRenderer
|
||||
{
|
||||
private ModelTurbine model = new ModelTurbine();
|
||||
|
||||
|
@ -24,10 +24,10 @@ public class RenderTurbineRod extends TileEntitySpecialRenderer
|
|||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick)
|
||||
{
|
||||
renderAModelAt((TileEntityTurbineRod)tileEntity, x, y, z, partialTick);
|
||||
renderAModelAt((TileEntityTurbineRotor)tileEntity, x, y, z, partialTick);
|
||||
}
|
||||
|
||||
private void renderAModelAt(TileEntityTurbineRod tileEntity, double x, double y, double z, float partialTick)
|
||||
private void renderAModelAt(TileEntityTurbineRotor tileEntity, double x, double y, double z, float partialTick)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
|
|
@ -25,7 +25,7 @@ import mekanism.generators.common.tile.reactor.TileEntityReactorLogicAdapter;
|
|||
import mekanism.generators.common.tile.reactor.TileEntityReactorNeutronCapture;
|
||||
import mekanism.generators.common.tile.reactor.TileEntityReactorPort;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityRotationalComplex;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRod;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRotor;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
@ -68,7 +68,7 @@ public class GeneratorsCommonProxy
|
|||
GameRegistry.registerTileEntity(TileEntityGasGenerator.class, "GasGenerator");
|
||||
GameRegistry.registerTileEntity(TileEntityWindGenerator.class, "WindTurbine");
|
||||
GameRegistry.registerTileEntity(TileEntityReactorController.class, "ReactorController");
|
||||
GameRegistry.registerTileEntity(TileEntityTurbineRod.class, "TurbineRod");
|
||||
GameRegistry.registerTileEntity(TileEntityTurbineRotor.class, "TurbineRod");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,7 +2,7 @@ package mekanism.generators.common;
|
|||
|
||||
import mekanism.common.item.ItemMekanism;
|
||||
import mekanism.generators.common.item.ItemHohlraum;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRod;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRotor;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -18,7 +18,7 @@ public class GeneratorsItems
|
|||
@Override
|
||||
public boolean doesSneakBypassUse(World world, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
return world.getTileEntity(x, y, z) instanceof TileEntityTurbineRod;
|
||||
return world.getTileEntity(x, y, z) instanceof TileEntityTurbineRotor;
|
||||
}
|
||||
}.setUnlocalizedName("TurbineBlade");
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ import mekanism.generators.common.tile.TileEntityHeatGenerator;
|
|||
import mekanism.generators.common.tile.TileEntitySolarGenerator;
|
||||
import mekanism.generators.common.tile.TileEntityWindGenerator;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityRotationalComplex;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRod;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRotor;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
@ -59,8 +59,11 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
* 4: Bio-Generator
|
||||
* 5: Advanced Solar Generator
|
||||
* 6: Wind Generator
|
||||
* 7: Turbine Rod
|
||||
* 7: Turbine Rotor
|
||||
* 8: Rotational Complex
|
||||
* 9: Pressure Disperser
|
||||
* 10: Turbine Casing
|
||||
* 11: Turbine Valve
|
||||
* @author AidanBrady
|
||||
*
|
||||
*/
|
||||
|
@ -92,7 +95,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta)
|
||||
{
|
||||
if(meta == GeneratorType.TURBINE_ROD.meta)
|
||||
if(meta == GeneratorType.TURBINE_ROTOR.meta)
|
||||
{
|
||||
return icons[meta][0];
|
||||
}
|
||||
|
@ -326,9 +329,9 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
{
|
||||
TileEntityBasicBlock tileEntity = (TileEntityBasicBlock)world.getTileEntity(x, y, z);
|
||||
|
||||
if(!world.isRemote && tileEntity instanceof TileEntityTurbineRod)
|
||||
if(!world.isRemote && tileEntity instanceof TileEntityTurbineRotor)
|
||||
{
|
||||
int amount = ((TileEntityTurbineRod)tileEntity).getHousedBlades();
|
||||
int amount = ((TileEntityTurbineRotor)tileEntity).getHousedBlades();
|
||||
|
||||
if(amount > 0)
|
||||
{
|
||||
|
@ -400,9 +403,9 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
}
|
||||
}
|
||||
|
||||
if(metadata == GeneratorType.TURBINE_ROD.meta)
|
||||
if(metadata == GeneratorType.TURBINE_ROTOR.meta)
|
||||
{
|
||||
TileEntityTurbineRod rod = (TileEntityTurbineRod)tileEntity;
|
||||
TileEntityTurbineRotor rod = (TileEntityTurbineRotor)tileEntity;
|
||||
|
||||
if(!entityplayer.isSneaking())
|
||||
{
|
||||
|
@ -531,7 +534,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
{
|
||||
setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.65F, 1.0F);
|
||||
}
|
||||
else if(metadata == GeneratorType.TURBINE_ROD.meta)
|
||||
else if(metadata == GeneratorType.TURBINE_ROTOR.meta)
|
||||
{
|
||||
setBlockBounds(0.375F, 0.0F, 0.375F, 0.625F, 1.0F, 0.625F);
|
||||
}
|
||||
|
@ -643,7 +646,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
if(metadata != GeneratorType.SOLAR_GENERATOR.meta &&
|
||||
metadata != GeneratorType.ADVANCED_SOLAR_GENERATOR.meta &&
|
||||
metadata != GeneratorType.WIND_GENERATOR.meta &&
|
||||
metadata != GeneratorType.TURBINE_ROD.meta)
|
||||
metadata != GeneratorType.TURBINE_ROTOR.meta)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -659,7 +662,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
BIO_GENERATOR(4, "BioGenerator", 4, 160000, TileEntityBioGenerator.class, true),
|
||||
ADVANCED_SOLAR_GENERATOR(5, "AdvancedSolarGenerator", 1, 200000, TileEntityAdvancedSolarGenerator.class, true),
|
||||
WIND_GENERATOR(6, "WindGenerator", 5, 200000, TileEntityWindGenerator.class, true),
|
||||
TURBINE_ROD(7, "TurbineRod", -1, -1, TileEntityTurbineRod.class, false),
|
||||
TURBINE_ROTOR(7, "TurbineRotor", -1, -1, TileEntityTurbineRotor.class, false),
|
||||
ROTATIONAL_COMPLEX(8, "RotationalComplex", -1, -1, TileEntityRotationalComplex.class, false);
|
||||
|
||||
public int meta;
|
||||
|
@ -727,7 +730,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
{
|
||||
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.65F, 1.0F);
|
||||
}
|
||||
else if(metadata == GeneratorType.TURBINE_ROD.meta)
|
||||
else if(metadata == GeneratorType.TURBINE_ROTOR.meta)
|
||||
{
|
||||
block.setBlockBounds(0.375F, 0.0F, 0.375F, 0.625F, 1.0F, 0.625F);
|
||||
}
|
||||
|
|
|
@ -4,5 +4,9 @@ import mekanism.common.multiblock.SynchronizedData;
|
|||
|
||||
public class SynchronizedTurbineData extends SynchronizedData<SynchronizedTurbineData>
|
||||
{
|
||||
|
||||
public int turbineBlades;
|
||||
public int vents;
|
||||
public int coils;
|
||||
|
||||
public int lowerVolume;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,23 @@
|
|||
package mekanism.generators.common.content.turbine;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.common.multiblock.MultiblockCache;
|
||||
import mekanism.common.multiblock.MultiblockManager;
|
||||
import mekanism.common.multiblock.UpdateProtocol;
|
||||
import mekanism.generators.common.MekanismGenerators;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityElectromagneticCoil;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityPressureDisperser;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityRotationalComplex;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineCasing;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineRotor;
|
||||
import mekanism.generators.common.tile.turbine.TileEntityTurbineVent;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TurbineUpdateProtocol extends UpdateProtocol<SynchronizedTurbineData>
|
||||
{
|
||||
|
@ -21,6 +31,159 @@ public class TurbineUpdateProtocol extends UpdateProtocol<SynchronizedTurbineDat
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isValidInnerNode(int x, int y, int z)
|
||||
{
|
||||
if(super.isValidInnerNode(x, y, z))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
TileEntity tile = pointer.getWorldObj().getTileEntity(x, y, z);
|
||||
|
||||
return tile instanceof TileEntityTurbineRotor || tile instanceof TileEntityRotationalComplex ||
|
||||
tile instanceof TileEntityPressureDisperser || tile instanceof TileEntityElectromagneticCoil;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void killInnerNode(Coord4D coord)
|
||||
{
|
||||
TileEntity tile = coord.getTileEntity(pointer.getWorldObj());
|
||||
|
||||
if(tile instanceof TileEntityRotationalComplex)
|
||||
{
|
||||
((TileEntityRotationalComplex)tile).setMultiblock(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canForm(SynchronizedTurbineData structure)
|
||||
{
|
||||
if(structure.volLength % 2 == 1 && structure.volWidth % 2 == 1)
|
||||
{
|
||||
int innerRadius = (Math.min(structure.volLength, structure.volWidth)-3)/2;
|
||||
|
||||
if(innerRadius >= Math.ceil((structure.volHeight-2)/4))
|
||||
{
|
||||
int centerX = structure.minLocation.xCoord+(structure.volLength-1)/2;
|
||||
int centerZ = structure.minLocation.zCoord+(structure.volWidth-1)/2;
|
||||
|
||||
Coord4D complex = null;
|
||||
Set<Coord4D> turbines = new HashSet<Coord4D>();
|
||||
Set<Coord4D> dispersers = new HashSet<Coord4D>();
|
||||
|
||||
//Scan for complex
|
||||
for(Coord4D coord : innerNodes)
|
||||
{
|
||||
if(coord.getTileEntity(pointer.getWorldObj()) instanceof TileEntityRotationalComplex)
|
||||
{
|
||||
if(complex != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if(coord.xCoord != centerX || coord.zCoord != centerZ)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
complex = coord;
|
||||
}
|
||||
else if(coord.getTileEntity(pointer.getWorldObj()) instanceof TileEntityTurbineRotor)
|
||||
{
|
||||
if(coord.xCoord != centerX || coord.zCoord != centerZ)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
turbines.add(coord);
|
||||
}
|
||||
else if(coord.getTileEntity(pointer.getWorldObj()) instanceof TileEntityPressureDisperser)
|
||||
{
|
||||
dispersers.add(coord);
|
||||
}
|
||||
}
|
||||
|
||||
//Terminate if complex doesn't exist
|
||||
if(complex == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//Make sure a flat, horizontal plane of dispersers exists within the multiblock around the complex
|
||||
for(int x = complex.xCoord-innerRadius; x <= complex.xCoord+innerRadius; x++)
|
||||
{
|
||||
for(int z = complex.zCoord-innerRadius; z <= complex.zCoord+innerRadius; z++)
|
||||
{
|
||||
if(!(x == centerX && z == centerZ))
|
||||
{
|
||||
TileEntity tile = pointer.getWorldObj().getTileEntity(x, complex.yCoord, z);
|
||||
|
||||
if(!(tile instanceof TileEntityPressureDisperser))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
dispersers.remove(new Coord4D(x, complex.yCoord, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//If any dispersers were not processed, they're in the wrong place
|
||||
if(dispersers.size() > 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//Make sure a complete line of turbine rotors exist from the complex to the multiblock's base
|
||||
for(int y = complex.yCoord-1; y > structure.minLocation.yCoord; y--)
|
||||
{
|
||||
TileEntity tile = pointer.getWorldObj().getTileEntity(centerX, y, centerZ);
|
||||
|
||||
if(!(tile instanceof TileEntityTurbineRotor))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
turbines.remove(new Coord4D(centerX, y, centerZ, pointer.getWorldObj().provider.dimensionId));
|
||||
}
|
||||
|
||||
//If any turbines were not processed, they're in the wrong place
|
||||
if(turbines.size() > 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Coord4D startCoord = complex.getFromSide(ForgeDirection.UP);
|
||||
TileEntity startTile = startCoord.getTileEntity(pointer.getWorldObj());
|
||||
|
||||
if(startTile instanceof TileEntityElectromagneticCoil)
|
||||
{
|
||||
structure.coils = new CoilCounter().calculate((TileEntityElectromagneticCoil)startTile);
|
||||
}
|
||||
|
||||
for(Coord4D coord : structure.locations)
|
||||
{
|
||||
if(coord.getTileEntity(pointer.getWorldObj()) instanceof TileEntityTurbineVent)
|
||||
{
|
||||
if(coord.yCoord >= complex.yCoord)
|
||||
{
|
||||
structure.vents++;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
((TileEntityRotationalComplex)complex.getTileEntity(pointer.getWorldObj())).setMultiblock(structure.inventoryID);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MultiblockCache<SynchronizedTurbineData> getNewCache()
|
||||
|
@ -45,4 +208,35 @@ public class TurbineUpdateProtocol extends UpdateProtocol<SynchronizedTurbineDat
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
public class CoilCounter
|
||||
{
|
||||
public Set<Coord4D> iterated = new HashSet<Coord4D>();
|
||||
|
||||
public void loop(Coord4D pos)
|
||||
{
|
||||
iterated.add(pos);
|
||||
|
||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
Coord4D coord = pos.getFromSide(side);
|
||||
TileEntity tile = coord.getTileEntity(pointer.getWorldObj());
|
||||
|
||||
if(!iterated.contains(coord))
|
||||
{
|
||||
if(tile instanceof TileEntityElectromagneticCoil)
|
||||
{
|
||||
loop(coord);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int calculate(TileEntityElectromagneticCoil tileEntity)
|
||||
{
|
||||
loop(Coord4D.get(tileEntity));
|
||||
|
||||
return iterated.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,8 +46,11 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
* 4: Bio-Generator
|
||||
* 5: Advanced Solar Generator
|
||||
* 6: Wind Generator
|
||||
* 7: Turbine Rod
|
||||
* 7: Turbine Rotor
|
||||
* 8: Rotational Complex
|
||||
* 9: Pressure Disperser
|
||||
* 10: Turbine Casing
|
||||
* 11: Turbine Valve
|
||||
* @author AidanBrady
|
||||
*
|
||||
*/
|
||||
|
@ -72,7 +75,7 @@ public class ItemBlockGenerator extends ItemBlock implements IEnergizedItem, ISp
|
|||
{
|
||||
GeneratorType type = GeneratorType.getFromMetadata(stack.getItemDamage());
|
||||
|
||||
if(type == GeneratorType.TURBINE_ROD || type == GeneratorType.ROTATIONAL_COMPLEX)
|
||||
if(type.maxEnergy == -1)
|
||||
{
|
||||
return 64;
|
||||
}
|
||||
|
@ -110,7 +113,7 @@ public class ItemBlockGenerator extends ItemBlock implements IEnergizedItem, ISp
|
|||
{
|
||||
GeneratorType type = GeneratorType.getFromMetadata(itemstack.getItemDamage());
|
||||
|
||||
if(type != GeneratorType.TURBINE_ROD && type != GeneratorType.ROTATIONAL_COMPLEX)
|
||||
if(type.maxEnergy > -1)
|
||||
{
|
||||
if(!MekKeyHandler.getIsKeyPressed(MekanismKeyHandler.sneakKey))
|
||||
{
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package mekanism.generators.common.tile.turbine;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class TileEntityElectromagneticCoil extends TileEntity
|
||||
{
|
||||
@Override
|
||||
public boolean canUpdate()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package mekanism.generators.common.tile.turbine;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class TileEntityPressureDisperser extends TileEntity
|
||||
{
|
||||
@Override
|
||||
public boolean canUpdate()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -88,9 +88,9 @@ public class TileEntityRotationalComplex extends TileEntityBasicBlock
|
|||
Coord4D coord = Coord4D.get(this).getFromSide(ForgeDirection.DOWN);
|
||||
TileEntity tile = coord.getTileEntity(worldObj);
|
||||
|
||||
if(tile instanceof TileEntityTurbineRod)
|
||||
if(tile instanceof TileEntityTurbineRotor)
|
||||
{
|
||||
((TileEntityTurbineRod)tile).updateRods();
|
||||
((TileEntityTurbineRotor)tile).updateRotors();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,9 +18,9 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class TileEntityTurbineRod extends TileEntityBasicBlock
|
||||
public class TileEntityTurbineRotor extends TileEntityBasicBlock
|
||||
{
|
||||
public List<Coord4D> rods = new ArrayList<Coord4D>();
|
||||
public List<Coord4D> rotors = new ArrayList<Coord4D>();
|
||||
|
||||
public boolean hasComplex;
|
||||
|
||||
|
@ -46,34 +46,34 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
{
|
||||
if(!worldObj.isRemote)
|
||||
{
|
||||
updateRods();
|
||||
updateRotors();
|
||||
}
|
||||
}
|
||||
|
||||
public void updateRods()
|
||||
public void updateRotors()
|
||||
{
|
||||
if(rods.contains(Coord4D.get(this)))
|
||||
if(rotors.contains(Coord4D.get(this)))
|
||||
{
|
||||
rods.add(Coord4D.get(this));
|
||||
rotors.add(Coord4D.get(this));
|
||||
}
|
||||
|
||||
buildRods();
|
||||
buildRotors();
|
||||
Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(this)));
|
||||
}
|
||||
|
||||
private void buildRods()
|
||||
private void buildRotors()
|
||||
{
|
||||
List<Coord4D> newRods = new ArrayList<Coord4D>();
|
||||
List<Coord4D> newRotors = new ArrayList<Coord4D>();
|
||||
int newBlades = 0;
|
||||
boolean complex = false;
|
||||
String id = null;
|
||||
|
||||
Coord4D pointer = Coord4D.get(this);
|
||||
|
||||
//Go to bottom rod
|
||||
//Go to bottom rotor
|
||||
while(true)
|
||||
{
|
||||
if(isRod(pointer.getFromSide(ForgeDirection.DOWN)))
|
||||
if(isRotor(pointer.getFromSide(ForgeDirection.DOWN)))
|
||||
{
|
||||
pointer.step(ForgeDirection.DOWN);
|
||||
continue;
|
||||
|
@ -82,13 +82,13 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
break;
|
||||
}
|
||||
|
||||
//Put all rods in new list, top to bottom
|
||||
//Put all rotors in new list, top to bottom
|
||||
while(true)
|
||||
{
|
||||
newRods.add(pointer.clone());
|
||||
newBlades += ((TileEntityTurbineRod)pointer.getTileEntity(worldObj)).getHousedBlades();
|
||||
newRotors.add(pointer.clone());
|
||||
newBlades += ((TileEntityTurbineRotor)pointer.getTileEntity(worldObj)).getHousedBlades();
|
||||
|
||||
if(isRod(pointer.getFromSide(ForgeDirection.UP)))
|
||||
if(isRotor(pointer.getFromSide(ForgeDirection.UP)))
|
||||
{
|
||||
pointer.step(ForgeDirection.UP);
|
||||
continue;
|
||||
|
@ -103,42 +103,42 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
complex = true;
|
||||
}
|
||||
|
||||
//Update all rods, send packet if necessary
|
||||
for(Coord4D coord : newRods)
|
||||
//Update all rotors, send packet if necessary
|
||||
for(Coord4D coord : newRotors)
|
||||
{
|
||||
TileEntityTurbineRod rod = (TileEntityTurbineRod)coord.getTileEntity(worldObj);
|
||||
int prevHoused = rod.getHousedBlades();
|
||||
int prevBlades = rod.blades;
|
||||
TileEntityTurbineRotor rotor = (TileEntityTurbineRotor)coord.getTileEntity(worldObj);
|
||||
int prevHoused = rotor.getHousedBlades();
|
||||
int prevBlades = rotor.blades;
|
||||
|
||||
rod.rods = newRods;
|
||||
rod.blades = newBlades;
|
||||
rod.multiblockUUID = id;
|
||||
rotor.rotors = newRotors;
|
||||
rotor.blades = newBlades;
|
||||
rotor.multiblockUUID = id;
|
||||
|
||||
if(rods.indexOf(coord) == rods.size()-1)
|
||||
if(rotors.indexOf(coord) == rotors.size()-1)
|
||||
{
|
||||
rod.hasComplex = complex;
|
||||
rotor.hasComplex = complex;
|
||||
}
|
||||
else {
|
||||
rod.hasComplex = false;
|
||||
rotor.hasComplex = false;
|
||||
}
|
||||
|
||||
Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(coord, rod.getNetworkedData(new ArrayList())), new Range4D(coord));
|
||||
Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(coord, rotor.getNetworkedData(new ArrayList())), new Range4D(coord));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean editBlade(boolean add)
|
||||
{
|
||||
if(!rods.contains(Coord4D.get(this)))
|
||||
if(!rotors.contains(Coord4D.get(this)))
|
||||
{
|
||||
rods.add(Coord4D.get(this));
|
||||
rotors.add(Coord4D.get(this));
|
||||
}
|
||||
|
||||
if((add && (rods.size()*2) - blades > 0) || (!add && (blades > 0)))
|
||||
if((add && (rotors.size()*2) - blades > 0) || (!add && (blades > 0)))
|
||||
{
|
||||
for(Coord4D coord : rods)
|
||||
for(Coord4D coord : rotors)
|
||||
{
|
||||
TileEntityTurbineRod rod = (TileEntityTurbineRod)coord.getTileEntity(worldObj);
|
||||
rod.internalEditBlade(add);
|
||||
TileEntityTurbineRotor rotor = (TileEntityTurbineRotor)coord.getTileEntity(worldObj);
|
||||
rotor.internalEditBlade(add);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -164,9 +164,9 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
{
|
||||
if(!worldObj.isRemote)
|
||||
{
|
||||
if(rods.size() > 0)
|
||||
if(rotors.size() > 0)
|
||||
{
|
||||
return Math.max(0, Math.min(2, blades - (rods.indexOf(Coord4D.get(this)))*2));
|
||||
return Math.max(0, Math.min(2, blades - (rotors.indexOf(Coord4D.get(this)))*2));
|
||||
}
|
||||
else {
|
||||
return blades;
|
||||
|
@ -177,9 +177,9 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isRod(Coord4D coord)
|
||||
private boolean isRotor(Coord4D coord)
|
||||
{
|
||||
return coord.getTileEntity(worldObj) instanceof TileEntityTurbineRod;
|
||||
return coord.getTileEntity(worldObj) instanceof TileEntityTurbineRotor;
|
||||
}
|
||||
|
||||
private boolean isComplex(Coord4D coord)
|
||||
|
@ -194,7 +194,7 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
|
||||
if(!worldObj.isRemote)
|
||||
{
|
||||
updateRods();
|
||||
updateRotors();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -230,7 +230,7 @@ public class TileEntityTurbineRod extends TileEntityBasicBlock
|
|||
super.getNetworkedData(data);
|
||||
|
||||
data.add(getHousedBlades());
|
||||
data.add(rods.indexOf(Coord4D.get(this)));
|
||||
data.add(rotors.indexOf(Coord4D.get(this)));
|
||||
|
||||
if(multiblockUUID != null)
|
||||
{
|
|
@ -0,0 +1,9 @@
|
|||
package mekanism.generators.common.tile.turbine;
|
||||
|
||||
public class TileEntityTurbineVent extends TileEntityTurbineCasing
|
||||
{
|
||||
public TileEntityTurbineVent()
|
||||
{
|
||||
super("TurbineVent");
|
||||
}
|
||||
}
|
|
@ -735,8 +735,9 @@ tooltip.GasGenerator=A generator that harnesses the molecular !nvarying gasses t
|
|||
tooltip.BioGenerator=A generator that burns organic materials of !nthe world to produce energy.
|
||||
tooltip.AdvancedSolarGenerator=An advanced generator that directly !nabsorbs the sun's rays with little loss !nto produce energy.
|
||||
tooltip.WindGenerator=A generator that uses the strength of the wind !nto produce energy, with greater efficiency !nat higher levels.
|
||||
tooltip.TurbineRod=The steel rod that is used to house !nTurbine Blades within an Industrial Turbine.
|
||||
tooltip.TurbineRotor=The steel rod that is used to house !nTurbine Blades within an Industrial Turbine.
|
||||
tooltip.RotationalComplex=A connector that is placed on !nthe highest turbine rod to carry kinetic energy into the !ngenerator itself.
|
||||
tooltip.PressureDisperser=A block used to
|
||||
|
||||
tooltip.ReactorGlass=Reinforced glass that can be used in !nthe Fusion Reactor multiblock.
|
||||
tooltip.ReactorLaserFocusMatrix=A panel of Reactor Glass that !nis capable of absorbing optical energy and !nthereby heating up the Fusion Reactor.
|
||||
|
@ -848,8 +849,10 @@ tile.Generator.GasGenerator.name=Gas-Burning Generator
|
|||
tile.Generator.BioGenerator.name=Bio-Generator
|
||||
tile.Generator.AdvancedSolarGenerator.name=Advanced Solar Generator
|
||||
tile.Generator.WindGenerator.name=Wind Generator
|
||||
tile.Generator.TurbineRod.name=Turbine Rod
|
||||
tile.Generator.TurbineRotor.name=Turbine Rotor
|
||||
tile.Generator.RotationalComplex.name=Rotational Complex
|
||||
tile.Generator.PressureDisperser.name=Pressure Disperser
|
||||
tile.Generator.ElectromagneticCoil.name=Electromagnetic Coil
|
||||
|
||||
tile.Reactor.ReactorController.name=Reactor Controller
|
||||
tile.Reactor.ReactorFrame.name=Reactor Frame
|
||||
|
|
Loading…
Reference in a new issue