Multimeter now implements PartFace
This commit is contained in:
parent
642806b5c5
commit
d3e7347ac1
4 changed files with 24 additions and 78 deletions
|
@ -16,6 +16,7 @@ import net.minecraftforge.fluids.FluidTankInfo;
|
||||||
import net.minecraftforge.fluids.IFluidHandler;
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
import resonantinduction.api.mechanical.IMechanical;
|
import resonantinduction.api.mechanical.IMechanical;
|
||||||
import resonantinduction.core.ResonantInduction;
|
import resonantinduction.core.ResonantInduction;
|
||||||
|
import resonantinduction.core.prefab.part.PartFace;
|
||||||
import resonantinduction.electrical.Electrical;
|
import resonantinduction.electrical.Electrical;
|
||||||
import universalelectricity.api.CompatibilityModule;
|
import universalelectricity.api.CompatibilityModule;
|
||||||
import universalelectricity.api.energy.IConductor;
|
import universalelectricity.api.energy.IConductor;
|
||||||
|
@ -25,15 +26,10 @@ import calclavia.lib.network.IPacketReceiver;
|
||||||
import codechicken.lib.data.MCDataInput;
|
import codechicken.lib.data.MCDataInput;
|
||||||
import codechicken.lib.data.MCDataOutput;
|
import codechicken.lib.data.MCDataOutput;
|
||||||
import codechicken.lib.vec.Cuboid6;
|
import codechicken.lib.vec.Cuboid6;
|
||||||
import codechicken.lib.vec.Rotation;
|
|
||||||
import codechicken.lib.vec.Transformation;
|
|
||||||
import codechicken.lib.vec.Vector3;
|
import codechicken.lib.vec.Vector3;
|
||||||
import codechicken.microblock.FaceMicroClass;
|
import codechicken.microblock.FaceMicroClass;
|
||||||
import codechicken.multipart.IRedstonePart;
|
import codechicken.multipart.IRedstonePart;
|
||||||
import codechicken.multipart.JCuboidPart;
|
|
||||||
import codechicken.multipart.JNormalOcclusion;
|
|
||||||
import codechicken.multipart.NormalOcclusionTest;
|
import codechicken.multipart.NormalOcclusionTest;
|
||||||
import codechicken.multipart.TFacePart;
|
|
||||||
import codechicken.multipart.TMultiPart;
|
import codechicken.multipart.TMultiPart;
|
||||||
import codechicken.multipart.TileMultipart;
|
import codechicken.multipart.TileMultipart;
|
||||||
|
|
||||||
|
@ -49,22 +45,8 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class PartMultimeter extends JCuboidPart implements IConnector<MultimeterNetwork>, TFacePart, JNormalOcclusion, IRedstonePart, IPacketReceiver
|
public class PartMultimeter extends PartFace implements IConnector<MultimeterNetwork>, IRedstonePart, IPacketReceiver
|
||||||
{
|
{
|
||||||
public static Cuboid6[][] bounds = new Cuboid6[6][2];
|
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
bounds[0][0] = new Cuboid6(1 / 8D, 0, 0, 7 / 8D, 1 / 8D, 1);
|
|
||||||
bounds[0][1] = new Cuboid6(0, 0, 1 / 8D, 1, 1 / 8D, 7 / 8D);
|
|
||||||
for (int s = 1; s < 6; s++)
|
|
||||||
{
|
|
||||||
Transformation t = Rotation.sideRotations[s].at(Vector3.center);
|
|
||||||
bounds[s][0] = bounds[0][0].copy().apply(t);
|
|
||||||
bounds[s][1] = bounds[0][1].copy().apply(t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum DetectMode
|
public enum DetectMode
|
||||||
{
|
{
|
||||||
NONE("none"), LESS_THAN("lessThan"), LESS_THAN_EQUAL("lessThanOrEqual"), EQUAL("equal"),
|
NONE("none"), LESS_THAN("lessThan"), LESS_THAN_EQUAL("lessThanOrEqual"), EQUAL("equal"),
|
||||||
|
@ -85,18 +67,10 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
|
|
||||||
// TODO: Move warn settings over.
|
// TODO: Move warn settings over.
|
||||||
public boolean redstoneOn;
|
public boolean redstoneOn;
|
||||||
private byte side;
|
public boolean isPrimary;
|
||||||
private int ticks;
|
|
||||||
|
|
||||||
private MultimeterNetwork network;
|
private MultimeterNetwork network;
|
||||||
|
|
||||||
boolean isPrimary;
|
|
||||||
|
|
||||||
public void preparePlacement(int side, int itemDamage)
|
|
||||||
{
|
|
||||||
this.side = (byte) (side);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasMultimeter(int x, int y, int z)
|
public boolean hasMultimeter(int x, int y, int z)
|
||||||
{
|
{
|
||||||
return getMultimeter(x, y, z) != null;
|
return getMultimeter(x, y, z) != null;
|
||||||
|
@ -165,7 +139,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
|
|
||||||
if (tileEntity instanceof TileMultipart)
|
if (tileEntity instanceof TileMultipart)
|
||||||
{
|
{
|
||||||
TMultiPart part = ((TileMultipart) tileEntity).partMap(side);
|
TMultiPart part = ((TileMultipart) tileEntity).partMap(placementSide.ordinal());
|
||||||
|
|
||||||
if (part instanceof PartMultimeter)
|
if (part instanceof PartMultimeter)
|
||||||
{
|
{
|
||||||
|
@ -179,7 +153,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
@Override
|
@Override
|
||||||
public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item)
|
public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item)
|
||||||
{
|
{
|
||||||
player.openGui(Electrical.INSTANCE, side, world(), x(), y(), z());
|
player.openGui(Electrical.INSTANCE, placementSide.ordinal(), world(), x(), y(), z());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,7 +294,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
public void readDesc(MCDataInput packet)
|
public void readDesc(MCDataInput packet)
|
||||||
{
|
{
|
||||||
packet.readByte();
|
packet.readByte();
|
||||||
this.side = packet.readByte();
|
placementSide = ForgeDirection.getOrientation(packet.readByte());
|
||||||
detectMode = DetectMode.values()[packet.readByte()];
|
detectMode = DetectMode.values()[packet.readByte()];
|
||||||
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
||||||
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
||||||
|
@ -331,7 +305,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
public void writeDesc(MCDataOutput packet)
|
public void writeDesc(MCDataOutput packet)
|
||||||
{
|
{
|
||||||
packet.writeByte(0);
|
packet.writeByte(0);
|
||||||
packet.writeByte(this.side);
|
packet.writeByte(placementSide.ordinal());
|
||||||
packet.writeByte((byte) detectMode.ordinal());
|
packet.writeByte((byte) detectMode.ordinal());
|
||||||
packet.writeNBTTagCompound(getNetwork().center.writeToNBT(new NBTTagCompound()));
|
packet.writeNBTTagCompound(getNetwork().center.writeToNBT(new NBTTagCompound()));
|
||||||
packet.writeNBTTagCompound(getNetwork().size.writeToNBT(new NBTTagCompound()));
|
packet.writeNBTTagCompound(getNetwork().size.writeToNBT(new NBTTagCompound()));
|
||||||
|
@ -358,7 +332,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
{
|
{
|
||||||
if (packetID == 0)
|
if (packetID == 0)
|
||||||
{
|
{
|
||||||
this.side = packet.readByte();
|
placementSide = ForgeDirection.getOrientation(packet.readByte());
|
||||||
detectMode = DetectMode.values()[packet.readByte()];
|
detectMode = DetectMode.values()[packet.readByte()];
|
||||||
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
||||||
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
|
||||||
|
@ -392,7 +366,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
|
|
||||||
public ForgeDirection getDirection()
|
public ForgeDirection getDirection()
|
||||||
{
|
{
|
||||||
return ForgeDirection.getOrientation(this.side);
|
return ForgeDirection.getOrientation(this.placementSide.ordinal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
@ -436,7 +410,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PacketDispatcher.sendPacketToServer(ResonantInduction.PACKET_MULTIPART.getPacket(new universalelectricity.api.vector.Vector3(x(), y(), z()), side));
|
PacketDispatcher.sendPacketToServer(ResonantInduction.PACKET_MULTIPART.getPacket(new universalelectricity.api.vector.Vector3(x(), y(), z()), placementSide.ordinal()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,7 +418,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
public void load(NBTTagCompound nbt)
|
public void load(NBTTagCompound nbt)
|
||||||
{
|
{
|
||||||
super.load(nbt);
|
super.load(nbt);
|
||||||
side = nbt.getByte("side");
|
placementSide = ForgeDirection.getOrientation(nbt.getByte("side"));
|
||||||
detectMode = DetectMode.values()[nbt.getByte("detectMode")];
|
detectMode = DetectMode.values()[nbt.getByte("detectMode")];
|
||||||
redstoneTriggerLimit = nbt.getLong("energyLimit");
|
redstoneTriggerLimit = nbt.getLong("energyLimit");
|
||||||
}
|
}
|
||||||
|
@ -453,7 +427,7 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
public void save(NBTTagCompound nbt)
|
public void save(NBTTagCompound nbt)
|
||||||
{
|
{
|
||||||
super.save(nbt);
|
super.save(nbt);
|
||||||
nbt.setByte("side", this.side);
|
nbt.setByte("side", (byte) placementSide.ordinal());
|
||||||
nbt.setByte("detectMode", (byte) detectMode.ordinal());
|
nbt.setByte("detectMode", (byte) detectMode.ordinal());
|
||||||
nbt.setLong("energyLimit", redstoneTriggerLimit);
|
nbt.setLong("energyLimit", redstoneTriggerLimit);
|
||||||
}
|
}
|
||||||
|
@ -474,30 +448,6 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
return "resonant_induction_multimeter";
|
return "resonant_induction_multimeter";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSlotMask()
|
|
||||||
{
|
|
||||||
return 1 << this.side;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Cuboid6 getBounds()
|
|
||||||
{
|
|
||||||
return FaceMicroClass.aBounds()[0x10 | this.side];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterable<Cuboid6> getOcclusionBoxes()
|
|
||||||
{
|
|
||||||
return Arrays.asList(bounds[this.side]);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean occlusionTest(TMultiPart npart)
|
|
||||||
{
|
|
||||||
return NormalOcclusionTest.apply(this, npart);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int redstoneConductionMap()
|
public int redstoneConductionMap()
|
||||||
{
|
{
|
||||||
|
@ -515,20 +465,6 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
|
||||||
return new ItemStack(Electrical.itemMultimeter);
|
return new ItemStack(Electrical.itemMultimeter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterable<ItemStack> getDrops()
|
|
||||||
{
|
|
||||||
List<ItemStack> drops = new ArrayList<ItemStack>();
|
|
||||||
drops.add(getItem());
|
|
||||||
return drops;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack pickItem(MovingObjectPosition hit)
|
|
||||||
{
|
|
||||||
return getItem();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void renderDynamic(Vector3 pos, float frame, int pass)
|
public void renderDynamic(Vector3 pos, float frame, int pass)
|
||||||
|
|
|
@ -116,7 +116,7 @@ public class ResonantInduction
|
||||||
GameRegistry.registerItem(itemDust, itemDust.getUnlocalizedName());
|
GameRegistry.registerItem(itemDust, itemDust.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(itemRefinedDust, itemRefinedDust.getUnlocalizedName());
|
GameRegistry.registerItem(itemRefinedDust, itemRefinedDust.getUnlocalizedName());
|
||||||
|
|
||||||
// Already registered wih ContentRegistry
|
// Already registered with ContentRegistry
|
||||||
// GameRegistry.registerTileEntity(TileMaterial.class, "ri_material");
|
// GameRegistry.registerTileEntity(TileMaterial.class, "ri_material");
|
||||||
GameRegistry.registerTileEntity(TileFluidMixture.class, "ri_fluid_mixture");
|
GameRegistry.registerTileEntity(TileFluidMixture.class, "ri_fluid_mixture");
|
||||||
proxy.preInit();
|
proxy.preInit();
|
||||||
|
|
|
@ -17,7 +17,9 @@ import codechicken.lib.vec.Vector3;
|
||||||
import codechicken.microblock.FaceMicroClass;
|
import codechicken.microblock.FaceMicroClass;
|
||||||
import codechicken.multipart.JCuboidPart;
|
import codechicken.multipart.JCuboidPart;
|
||||||
import codechicken.multipart.JNormalOcclusion;
|
import codechicken.multipart.JNormalOcclusion;
|
||||||
|
import codechicken.multipart.NormalOcclusionTest;
|
||||||
import codechicken.multipart.TFacePart;
|
import codechicken.multipart.TFacePart;
|
||||||
|
import codechicken.multipart.TMultiPart;
|
||||||
|
|
||||||
public abstract class PartFace extends JCuboidPart implements JNormalOcclusion, TFacePart
|
public abstract class PartFace extends JCuboidPart implements JNormalOcclusion, TFacePart
|
||||||
{
|
{
|
||||||
|
@ -41,9 +43,11 @@ public abstract class PartFace extends JCuboidPart implements JNormalOcclusion,
|
||||||
/** The relative direction this block faces. */
|
/** The relative direction this block faces. */
|
||||||
public byte facing = 0;
|
public byte facing = 0;
|
||||||
|
|
||||||
|
protected int ticks;
|
||||||
|
|
||||||
public void preparePlacement(int side, int facing)
|
public void preparePlacement(int side, int facing)
|
||||||
{
|
{
|
||||||
this.placementSide = ForgeDirection.getOrientation( side);
|
this.placementSide = ForgeDirection.getOrientation(side);
|
||||||
this.facing = (byte) (facing - 2);
|
this.facing = (byte) (facing - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +95,12 @@ public abstract class PartFace extends JCuboidPart implements JNormalOcclusion,
|
||||||
return Arrays.asList(bounds[this.placementSide.ordinal()]);
|
return Arrays.asList(bounds[this.placementSide.ordinal()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean occlusionTest(TMultiPart npart)
|
||||||
|
{
|
||||||
|
return NormalOcclusionTest.apply(this, npart);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<ItemStack> getDrops()
|
public Iterable<ItemStack> getDrops()
|
||||||
{
|
{
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 888 B |
Loading…
Reference in a new issue