Merge branch 'development' into 1.8
Conflicts: src/main/java/mekanism/client/ClientTickHandler.java src/main/java/mekanism/common/item/ItemConfigurator.java src/main/java/mekanism/common/tile/TileEntityElectricPump.java src/main/java/mekanism/generators/client/gui/GuiSolarGenerator.java
This commit is contained in:
commit
81d3d53d76
19 changed files with 459 additions and 196 deletions
83
src/main/java/mekanism/api/Range4D.java
Normal file
83
src/main/java/mekanism/api/Range4D.java
Normal file
|
@ -0,0 +1,83 @@
|
|||
package mekanism.api;
|
||||
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
|
||||
public class Range4D
|
||||
{
|
||||
public int dimensionId;
|
||||
|
||||
public int xMin;
|
||||
public int yMin;
|
||||
public int zMin;
|
||||
public int xMax;
|
||||
public int yMax;
|
||||
public int zMax;
|
||||
|
||||
public Range4D(int minX, int minY, int minZ, int maxX, int maxY, int maxZ, int dimension)
|
||||
{
|
||||
xMin = minX;
|
||||
yMin = minY;
|
||||
zMin = minZ;
|
||||
xMax = maxX;
|
||||
yMax = maxY;
|
||||
zMax = maxZ;
|
||||
|
||||
dimensionId = dimension;
|
||||
}
|
||||
|
||||
public Range4D(Chunk3D chunk)
|
||||
{
|
||||
xMin = chunk.xCoord*16;
|
||||
yMin = 0;
|
||||
zMin = chunk.zCoord*16;
|
||||
xMax = xMin+16;
|
||||
}
|
||||
|
||||
public static Range4D getLoadedChunks(MinecraftServer server)
|
||||
{
|
||||
int range = server.getConfigurationManager().getViewDistance();
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Range4D clone()
|
||||
{
|
||||
return new Range4D(xMin, yMin, zMin, xMax, yMax, zMax, dimensionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[Range4D: " + xMin + ", " + yMin + ", " + zMin + ", " + xMax + ", " + yMax + ", " + zMax + ", dim=" + dimensionId + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
return obj instanceof Range4D &&
|
||||
((Range4D)obj).xMin == xMin &&
|
||||
((Range4D)obj).yMin == yMin &&
|
||||
((Range4D)obj).zMin == zMin &&
|
||||
((Range4D)obj).xMax == xMax &&
|
||||
((Range4D)obj).yMax == yMax &&
|
||||
((Range4D)obj).zMax == zMax &&
|
||||
((Range4D)obj).dimensionId == dimensionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int code = 1;
|
||||
code = 31 * code + xMin;
|
||||
code = 31 * code + yMin;
|
||||
code = 31 * code + zMin;
|
||||
code = 31 * code + xMax;
|
||||
code = 31 * code + yMax;
|
||||
code = 31 * code + zMax;
|
||||
code = 31 * code + dimensionId;
|
||||
return code;
|
||||
}
|
||||
}
|
|
@ -45,14 +45,12 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
|
|||
public GasNetwork(IGridTransmitter<GasNetwork>... varPipes)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varPipes));
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public GasNetwork(Collection<IGridTransmitter<GasNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
|
@ -97,8 +95,6 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
|
|||
|
||||
gasScale = getScale();
|
||||
|
||||
updateCapacity();
|
||||
fullRefresh();
|
||||
register();
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import java.util.Set;
|
|||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.IClientTicker;
|
||||
import mekanism.common.Mekanism;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
|
@ -52,8 +53,20 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
Coord4D coord = Coord4D.get(transmitter.getTile()).getFromSide(side);
|
||||
possibleAcceptors.remove(coord);
|
||||
acceptorDirections.remove(coord.getTileEntity(transmitter.getTile().getWorldObj()));
|
||||
|
||||
if(possibleAcceptors.containsKey(coord))
|
||||
{
|
||||
clearIfNecessary(coord, transmitter, side.getOpposite());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void clearIfNecessary(Coord4D acceptor, IGridTransmitter<N> transmitter, ForgeDirection side)
|
||||
{
|
||||
if(acceptor.getTileEntity(getWorld()) == null || acceptor.getTileEntity(getWorld()).isInvalid() || transmitter.canConnectToAcceptor(side, true))
|
||||
{
|
||||
possibleAcceptors.remove(acceptor);
|
||||
acceptorDirections.remove(acceptor.getTileEntity(getWorld()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -92,14 +105,14 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
return packetRange;
|
||||
}
|
||||
|
||||
public int getDimension()
|
||||
public World getWorld()
|
||||
{
|
||||
if(getSize() == 0)
|
||||
{
|
||||
return 0;
|
||||
return null;
|
||||
}
|
||||
|
||||
return transmitters.iterator().next().getTile().getWorldObj().provider.dimensionId;
|
||||
return transmitters.iterator().next().getTile().getWorldObj();
|
||||
}
|
||||
|
||||
protected AxisAlignedBB genPacketRange()
|
||||
|
@ -198,7 +211,8 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
return possibleAcceptors.size();
|
||||
}
|
||||
|
||||
public synchronized void updateCapacity() {
|
||||
public synchronized void updateCapacity()
|
||||
{
|
||||
updateMeanCapacity();
|
||||
capacity = (int)meanCapacity * transmitters.size();
|
||||
}
|
||||
|
|
|
@ -315,8 +315,15 @@ public class ClientTickHandler
|
|||
{
|
||||
if(!lastTickUpdate)
|
||||
{
|
||||
if(mc.thePlayer.isSneaking())
|
||||
{
|
||||
((ItemJetpack)jetpack.getItem()).setMode(stack, JetpackMode.DISABLED);
|
||||
}
|
||||
else {
|
||||
((ItemJetpack)jetpack.getItem()).incrementMode(jetpack);
|
||||
Mekanism.packetHandler.sendToServer(new JetpackDataMessage(JetpackPacket.MODE, null, false));
|
||||
}
|
||||
|
||||
Mekanism.packetHandler.sendToServer(new JetpackDataMessage(JetpackPacket.MODE, null, mc.thePlayer.isSneaking()));
|
||||
SoundHandler.playSound("mekanism:etc.Hydraulic");
|
||||
lastTickUpdate = true;
|
||||
}
|
||||
|
|
|
@ -42,22 +42,15 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
public EnergyNetwork(IGridTransmitter<EnergyNetwork>... varCables)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varCables));
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public EnergyNetwork(Collection<IGridTransmitter<EnergyNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public static double round(double d)
|
||||
{
|
||||
return Math.round(d * 10000)/10000;
|
||||
}
|
||||
|
||||
public EnergyNetwork(Set<EnergyNetwork> networks)
|
||||
{
|
||||
for(EnergyNetwork net : networks)
|
||||
|
@ -79,10 +72,14 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
}
|
||||
}
|
||||
|
||||
fullRefresh();
|
||||
register();
|
||||
}
|
||||
|
||||
public static double round(double d)
|
||||
{
|
||||
return Math.round(d * 10000)/10000;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void updateMeanCapacity()
|
||||
{
|
||||
|
|
|
@ -43,14 +43,12 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
public FluidNetwork(IGridTransmitter<FluidNetwork>... varPipes)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varPipes));
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public FluidNetwork(Collection<IGridTransmitter<FluidNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
|
@ -95,9 +93,6 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
|
||||
fluidScale = getScale();
|
||||
|
||||
updateCapacity();
|
||||
|
||||
fullRefresh();
|
||||
register();
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
|
|||
*/
|
||||
@Mod(modid = "Mekanism", name = "Mekanism", version = "8.0.0", guiFactory = "mekanism.client.gui.ConfigGuiFactory",
|
||||
dependencies = "after:ForgeMultipart;after:BuildCraftAPI|power;after:BuildCraftAPI|tools;after:BuildCraftAPI|transport;after:IC2API;after:CoFHAPI|energy;after:ComputerCraft;after:Galacticraft API;" +
|
||||
"after:MineFactoryReloaded;after:MetallurgyCore;after:EnderIO;after:ExtraUtilities;after:Railcraft")
|
||||
"after:MineFactoryReloaded;after:MetallurgyCore;after:EnderIO;after:ExtraUtilities;after:Railcraft;after:Forestry")
|
||||
public class Mekanism
|
||||
{
|
||||
/** Mekanism Packet Pipeline */
|
||||
|
@ -1136,7 +1136,7 @@ public class Mekanism
|
|||
public void onEnergyTransferred(EnergyTransferEvent event)
|
||||
{
|
||||
try {
|
||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.ENERGY, Coord4D.get((TileEntity)event.energyNetwork.transmitters.iterator().next()), event.power), event.energyNetwork.getDimension());
|
||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.ENERGY, Coord4D.get((TileEntity)event.energyNetwork.transmitters.iterator().next()), event.power), event.energyNetwork.getWorld().provider.dimensionId);
|
||||
} catch(Exception e) {}
|
||||
}
|
||||
|
||||
|
@ -1144,7 +1144,7 @@ public class Mekanism
|
|||
public void onGasTransferred(GasTransferEvent event)
|
||||
{
|
||||
try {
|
||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.GAS, Coord4D.get((TileEntity)event.gasNetwork.transmitters.iterator().next()), event.transferType, event.didTransfer), event.gasNetwork.getDimension());
|
||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.GAS, Coord4D.get((TileEntity)event.gasNetwork.transmitters.iterator().next()), event.transferType, event.didTransfer), event.gasNetwork.getWorld().provider.dimensionId);
|
||||
} catch(Exception e) {}
|
||||
}
|
||||
|
||||
|
@ -1152,7 +1152,7 @@ public class Mekanism
|
|||
public void onLiquidTransferred(FluidTransferEvent event)
|
||||
{
|
||||
try {
|
||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.FLUID, Coord4D.get((TileEntity)event.fluidNetwork.transmitters.iterator().next()), event.fluidType, event.didTransfer), event.fluidNetwork.getDimension());
|
||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.FLUID, Coord4D.get((TileEntity)event.fluidNetwork.transmitters.iterator().next()), event.fluidType, event.didTransfer), event.fluidNetwork.getWorld().provider.dimensionId);
|
||||
} catch(Exception e) {}
|
||||
}
|
||||
|
||||
|
|
|
@ -803,4 +803,44 @@ public class BlockBasic extends Block
|
|||
return super.shouldSideBeRendered(world, x, y, z, side);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
ForgeDirection[] valid = new ForgeDirection[6];
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if(basicTile.canSetFacing(dir.ordinal()))
|
||||
{
|
||||
valid[dir.ordinal()] = dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
if(basicTile.canSetFacing(axis.ordinal()))
|
||||
{
|
||||
basicTile.setFacing((short)axis.ordinal());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -13,10 +13,16 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class BlockBounding extends Block
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
|
||||
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheralProvider", modid = "ComputerCraft")
|
||||
public class BlockBounding extends Block implements IPeripheralProvider
|
||||
{
|
||||
public BlockBounding()
|
||||
{
|
||||
|
@ -52,11 +58,11 @@ public class BlockBounding extends Block
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z)
|
||||
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest)
|
||||
{
|
||||
try {
|
||||
TileEntityBoundingBlock tileEntity = (TileEntityBoundingBlock)world.getTileEntity(x, y, z);
|
||||
return world.getBlock(tileEntity.mainX, tileEntity.mainY, tileEntity.mainZ).removedByPlayer(world, player, tileEntity.mainX, tileEntity.mainY, tileEntity.mainZ);
|
||||
return world.getBlock(tileEntity.mainX, tileEntity.mainY, tileEntity.mainZ).removedByPlayer(world, player, tileEntity.mainX, tileEntity.mainY, tileEntity.mainZ, willHarvest);
|
||||
} catch(Exception e) {
|
||||
return false;
|
||||
}
|
||||
|
@ -122,4 +128,18 @@ public class BlockBounding extends Block
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "ComputerCraft")
|
||||
public IPeripheral getPeripheral(World world, int x, int y, int z, int side)
|
||||
{
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(te != null && te instanceof IPeripheral)
|
||||
{
|
||||
return (IPeripheral)te;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ import mekanism.common.tile.TileEntityBasicBlock;
|
|||
import mekanism.common.tile.TileEntityElectricBlock;
|
||||
import mekanism.common.tile.TileEntityEnergyCube;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
@ -34,8 +33,11 @@ import net.minecraft.world.IBlockAccess;
|
|||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
import cpw.mods.fml.common.ModAPIManager;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
|
@ -47,7 +49,8 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
* @author AidanBrady
|
||||
*
|
||||
*/
|
||||
public class BlockEnergyCube extends BlockContainer
|
||||
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheralProvider", modid = "ComputerCraft")
|
||||
public class BlockEnergyCube extends BlockContainer implements IPeripheralProvider
|
||||
{
|
||||
public IIcon[][] icons = new IIcon[256][256];
|
||||
|
||||
|
@ -322,4 +325,59 @@ public class BlockEnergyCube extends BlockContainer
|
|||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
ForgeDirection[] valid = new ForgeDirection[6];
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if(basicTile.canSetFacing(dir.ordinal()))
|
||||
{
|
||||
valid[dir.ordinal()] = dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
if(basicTile.canSetFacing(axis.ordinal()))
|
||||
{
|
||||
basicTile.setFacing((short)axis.ordinal());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "ComputerCraft")
|
||||
public IPeripheral getPeripheral(World world, int x, int y, int z, int side)
|
||||
{
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(te != null && te instanceof IPeripheral)
|
||||
{
|
||||
return (IPeripheral)te;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
|
||||
import cpw.mods.fml.common.ModAPIManager;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
@ -236,4 +236,45 @@ public class BlockGasTank extends BlockContainer
|
|||
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
ForgeDirection[] valid = new ForgeDirection[6];
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if(basicTile.canSetFacing(dir.ordinal()))
|
||||
{
|
||||
valid[dir.ordinal()] = dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
if(basicTile.canSetFacing(axis.ordinal()))
|
||||
{
|
||||
basicTile.setFacing((short)axis.ordinal());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1294,4 +1294,45 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
ForgeDirection[] valid = new ForgeDirection[6];
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if(basicTile.canSetFacing(dir.ordinal()))
|
||||
{
|
||||
valid[dir.ordinal()] = dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
if(basicTile.canSetFacing(axis.ordinal()))
|
||||
{
|
||||
basicTile.setFacing((short)axis.ordinal());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mekanism.common.item;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
|
@ -13,6 +14,8 @@ import mekanism.common.network.PacketTileEntity.TileEntityMessage;
|
|||
import mekanism.common.tile.TileEntityBasicBlock;
|
||||
import mekanism.common.tile.TileEntityElectricChest;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
|
@ -22,10 +25,11 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
|
||||
@Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraftAPI|tools")
|
||||
public class ItemConfigurator extends ItemEnergized implements IToolWrench
|
||||
{
|
||||
|
@ -62,6 +66,9 @@ public class ItemConfigurator extends ItemEnergized implements IToolWrench
|
|||
@Override
|
||||
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if(!world.isRemote)
|
||||
{
|
||||
Block block = world.getBlock(x, y, z);
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof IConfigurable)
|
||||
|
@ -77,8 +84,6 @@ public class ItemConfigurator extends ItemEnergized implements IToolWrench
|
|||
}
|
||||
}
|
||||
|
||||
if(!world.isRemote)
|
||||
{
|
||||
if(getState(stack) == 0)
|
||||
{
|
||||
if(tile instanceof IInvConfiguration)
|
||||
|
@ -171,28 +176,20 @@ public class ItemConfigurator extends ItemEnergized implements IToolWrench
|
|||
}
|
||||
else if(getState(stack) == 2)
|
||||
{
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicBlock = (TileEntityBasicBlock)tile;
|
||||
int newSide = basicBlock.facing;
|
||||
ForgeDirection axis = ForgeDirection.getOrientation(side);
|
||||
List<ForgeDirection> l = Arrays.asList(block.getValidRotations(world, x, y, z));
|
||||
|
||||
if(!player.isSneaking())
|
||||
if(!player.isSneaking() && l.contains(axis))
|
||||
{
|
||||
newSide = side;
|
||||
block.rotateBlock(world, x, y, z, axis);
|
||||
}
|
||||
else {
|
||||
newSide = ForgeDirection.OPPOSITES[side];
|
||||
}
|
||||
|
||||
if(basicBlock.canSetFacing(newSide))
|
||||
else if(player.isSneaking() && l.contains(axis.getOpposite()))
|
||||
{
|
||||
basicBlock.setFacing((short)newSide);
|
||||
world.playSoundEffect(x, y, z, "random.click", 1.0F, 1.0F);
|
||||
block.rotateBlock(world, x, y, z, axis.getOpposite());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(getState(stack) == 3)
|
||||
{
|
||||
if(!world.isRemote && player.isSneaking())
|
||||
|
|
|
@ -100,6 +100,8 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
|
|||
if(connectedNets.size() == 0)
|
||||
{
|
||||
theNetwork = createNetworkFromSingleTransmitter((IGridTransmitter<N>)tile());
|
||||
theNetwork.fullRefresh();
|
||||
theNetwork.updateCapacity();
|
||||
}
|
||||
else if(connectedNets.size() == 1)
|
||||
{
|
||||
|
@ -113,6 +115,8 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
|
|||
else {
|
||||
theNetwork = createNetworkByMergingSet(connectedNets);
|
||||
theNetwork.transmitters.add((IGridTransmitter<N>)tile());
|
||||
theNetwork.fullRefresh();
|
||||
theNetwork.updateCapacity();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -134,8 +134,10 @@ public class PartUniversalCable extends PartTransmitter<EnergyNetwork> implement
|
|||
super.refreshTransmitterNetwork();
|
||||
|
||||
if(MekanismUtils.useBuildCraft())
|
||||
{
|
||||
reconfigure();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TransmitterType getTransmitter()
|
||||
|
|
|
@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
|
|||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.item.ItemJetpack;
|
||||
import mekanism.common.item.ItemJetpack.JetpackMode;
|
||||
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -38,9 +39,15 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
ItemStack stack = player.getEquipmentInSlot(3);
|
||||
|
||||
if(stack != null && stack.getItem() instanceof ItemJetpack)
|
||||
{
|
||||
if(!message.value)
|
||||
{
|
||||
((ItemJetpack)stack.getItem()).incrementMode(stack);
|
||||
}
|
||||
else {
|
||||
((ItemJetpack)stack.getItem()).setMode(stack, JetpackMode.DISABLED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -58,11 +65,11 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
public JetpackDataMessage(JetpackPacket type, String name, boolean state)
|
||||
{
|
||||
packetType = type;
|
||||
value = state;
|
||||
|
||||
if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
username = name;
|
||||
value = state;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +78,11 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
{
|
||||
dataStream.writeInt(packetType.ordinal());
|
||||
|
||||
if(packetType == JetpackPacket.UPDATE)
|
||||
if(packetType == JetpackPacket.MODE)
|
||||
{
|
||||
dataStream.writeBoolean(value);
|
||||
}
|
||||
else if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
PacketHandler.writeString(dataStream, username);
|
||||
dataStream.writeBoolean(value);
|
||||
|
@ -92,7 +103,16 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
{
|
||||
packetType = JetpackPacket.values()[dataStream.readInt()];
|
||||
|
||||
if(packetType == JetpackPacket.FULL)
|
||||
if(packetType == JetpackPacket.MODE)
|
||||
{
|
||||
value = dataStream.readBoolean();
|
||||
}
|
||||
else if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
username = PacketHandler.readString(dataStream);
|
||||
value = dataStream.readBoolean();
|
||||
}
|
||||
else if(packetType == JetpackPacket.FULL)
|
||||
{
|
||||
Mekanism.jetpackOn.clear();
|
||||
|
||||
|
@ -103,11 +123,6 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
Mekanism.jetpackOn.add(PacketHandler.readString(dataStream));
|
||||
}
|
||||
}
|
||||
else if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
username = PacketHandler.readString(dataStream);
|
||||
value = dataStream.readBoolean();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,9 +45,6 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
/** The nodes that have full sources near them or in them */
|
||||
public Set<Coord4D> recurringNodes = new HashSet<Coord4D>();
|
||||
|
||||
/** The nodes that have already been sucked up, but are held on to in order to remove dead blocks */
|
||||
public Set<Coord4D> cleaningNodes = new HashSet<Coord4D>();
|
||||
|
||||
public TileEntityElectricPump()
|
||||
{
|
||||
super("ElectricPump", 10000);
|
||||
|
@ -130,8 +127,6 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
{
|
||||
Mekanism.packetHandler.sendToAllAround(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), Coord4D.get(this).getTargetPoint(50D));
|
||||
}
|
||||
|
||||
clean(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -162,6 +157,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
List<Coord4D> tempPumpList = Arrays.asList(recurringNodes.toArray(new Coord4D[recurringNodes.size()]));
|
||||
Collections.shuffle(tempPumpList);
|
||||
|
||||
//First see if there are any fluid blocks touching the pump - if so, sucks and adds the location to the recurring list
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
Coord4D wrapper = Coord4D.get(this).getFromSide(orientation);
|
||||
|
@ -183,24 +179,8 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
}
|
||||
}
|
||||
|
||||
for(Coord4D wrapper : cleaningNodes)
|
||||
{
|
||||
if(MekanismUtils.isFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord))
|
||||
{
|
||||
if(fluidTank.getFluid() != null && MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord).isFluidEqual(fluidTank.getFluid()))
|
||||
{
|
||||
if(take)
|
||||
{
|
||||
setEnergy(getEnergy() - usage.electricPumpUsage);
|
||||
fluidTank.fill(MekanismUtils.getFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord), true);
|
||||
worldObj.setBlockToAir(wrapper.xCoord, wrapper.yCoord, wrapper.zCoord);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Finally, go over the recurring list of nodes and see if there is a fluid block available to suck - if not, will iterate around the recurring block, attempt to suck,
|
||||
//and then add the adjacent block to the recurring list
|
||||
for(Coord4D wrapper : tempPumpList)
|
||||
{
|
||||
if(MekanismUtils.isFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord))
|
||||
|
@ -218,6 +198,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
}
|
||||
}
|
||||
|
||||
//Add all the blocks surrounding this recurring node to the recurring node list
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
Coord4D side = wrapper.getFromSide(orientation);
|
||||
|
@ -242,73 +223,12 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
}
|
||||
}
|
||||
|
||||
cleaningNodes.add(wrapper);
|
||||
recurringNodes.remove(wrapper);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean clean(boolean take)
|
||||
{
|
||||
boolean took = false;
|
||||
|
||||
if(!worldObj.isRemote)
|
||||
{
|
||||
for(Coord4D wrapper : cleaningNodes)
|
||||
{
|
||||
if(MekanismUtils.isDeadFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord))
|
||||
{
|
||||
if(fluidTank.getFluid() != null && MekanismUtils.getFluidId(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord) == fluidTank.getFluid().fluidID)
|
||||
{
|
||||
took = true;
|
||||
|
||||
if(take)
|
||||
{
|
||||
worldObj.setBlockToAir(wrapper.xCoord, wrapper.yCoord, wrapper.zCoord);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(Coord4D wrapper : recurringNodes)
|
||||
{
|
||||
if(MekanismUtils.isDeadFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord))
|
||||
{
|
||||
if(fluidTank.getFluid() != null && MekanismUtils.getFluidId(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord) == fluidTank.getFluid().fluidID)
|
||||
{
|
||||
took = true;
|
||||
|
||||
if(take)
|
||||
{
|
||||
worldObj.setBlockToAir(wrapper.xCoord, wrapper.yCoord, wrapper.zCoord);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
Coord4D wrapper = Coord4D.get(this).getFromSide(orientation);
|
||||
|
||||
if(MekanismUtils.isDeadFluid(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord))
|
||||
{
|
||||
if(fluidTank.getFluid() != null && MekanismUtils.getFluidId(worldObj, wrapper.xCoord, wrapper.yCoord, wrapper.zCoord) == fluidTank.getFluid().fluidID)
|
||||
{
|
||||
took = true;
|
||||
|
||||
if(take)
|
||||
{
|
||||
worldObj.setBlockToAir(wrapper.xCoord, wrapper.yCoord, wrapper.zCoord);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return took;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacketData(ByteBuf dataStream)
|
||||
{
|
||||
|
@ -371,18 +291,6 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
{
|
||||
nbtTags.setTag("recurringNodes", recurringList);
|
||||
}
|
||||
|
||||
NBTTagList cleaningList = new NBTTagList();
|
||||
|
||||
for(Coord4D obj : cleaningNodes)
|
||||
{
|
||||
cleaningList.appendTag(obj.write(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
if(cleaningList.tagCount() != 0)
|
||||
{
|
||||
nbtTags.setTag("cleaningNodes", cleaningList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -404,16 +312,6 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
recurringNodes.add(Coord4D.read((NBTTagCompound)tagList.getCompoundTagAt(i)));
|
||||
}
|
||||
}
|
||||
|
||||
if(nbtTags.hasKey("cleaningNodes"))
|
||||
{
|
||||
NBTTagList tagList = nbtTags.getTagList("cleaningNodes", NBT.TAG_COMPOUND);
|
||||
|
||||
for(int i = 0; i < tagList.tagCount(); i++)
|
||||
{
|
||||
cleaningNodes.add(Coord4D.read((NBTTagCompound)tagList.getCompoundTagAt(i)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -549,14 +447,10 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
|||
|
||||
@Override
|
||||
public boolean onSneakRightClick(EntityPlayer player, int side)
|
||||
{
|
||||
if(!worldObj.isRemote)
|
||||
{
|
||||
recurringNodes.clear();
|
||||
cleaningNodes.clear();
|
||||
|
||||
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + MekanismUtils.localize("tooltip.configurator.pumpReset")));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ package mekanism.generators.client.gui;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.api.MekanismConfig.generators;
|
||||
import mekanism.api.util.ListUtils;
|
||||
import mekanism.client.gui.GuiEnergyInfo;
|
||||
import mekanism.client.gui.GuiEnergyInfo.IInfoHandler;
|
||||
|
@ -39,7 +38,7 @@ public class GuiSolarGenerator extends GuiMekanism
|
|||
public List<String> getInfo()
|
||||
{
|
||||
return ListUtils.asList(
|
||||
"Producing: " + MekanismUtils.getEnergyDisplay(tileEntity.isActive ? generators.solarGeneration : 0) + "/t",
|
||||
"Producing: " + MekanismUtils.getEnergyDisplay(tileEntity.isActive ? tileEntity.GENERATION_RATE : 0) + "/t",
|
||||
"Storing: " + MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()),
|
||||
"Max Output: " + MekanismUtils.getEnergyDisplay(tileEntity.getMaxOutput()) + "/t");
|
||||
}
|
||||
|
|
|
@ -42,7 +42,11 @@ import net.minecraft.world.IBlockAccess;
|
|||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
import cpw.mods.fml.common.ModAPIManager;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
|
@ -57,7 +61,8 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
* @author AidanBrady
|
||||
*
|
||||
*/
|
||||
public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
||||
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheralProvider", modid = "ComputerCraft")
|
||||
public class BlockGenerator extends BlockContainer implements ISpecialBounds, IPeripheralProvider
|
||||
{
|
||||
public Random machineRand = new Random();
|
||||
|
||||
|
@ -612,4 +617,59 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds
|
|||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
ForgeDirection[] valid = new ForgeDirection[6];
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if(basicTile.canSetFacing(dir.ordinal()))
|
||||
{
|
||||
valid[dir.ordinal()] = dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
|
||||
{
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock)
|
||||
{
|
||||
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
|
||||
|
||||
if(basicTile.canSetFacing(axis.ordinal()))
|
||||
{
|
||||
basicTile.setFacing((short)axis.ordinal());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "ComputerCraft")
|
||||
public IPeripheral getPeripheral(World world, int x, int y, int z, int side)
|
||||
{
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(te != null && te instanceof IPeripheral)
|
||||
{
|
||||
return (IPeripheral)te;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue