mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-05-23 01:23:38 +02:00
96 lines
3.1 KiB
Java
96 lines
3.1 KiB
Java
package de.ellpeck.actuallyadditions.common.misc.apiimpl;
|
|
|
|
import de.ellpeck.actuallyadditions.api.laser.IConnectionPair;
|
|
import de.ellpeck.actuallyadditions.api.laser.LaserType;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
public class ConnectionPair implements IConnectionPair {
|
|
|
|
private final BlockPos[] positions = new BlockPos[2];
|
|
private boolean suppressConnectionRender;
|
|
private LaserType type;
|
|
|
|
public ConnectionPair() {
|
|
|
|
}
|
|
|
|
public ConnectionPair(BlockPos firstRelay, BlockPos secondRelay, LaserType type, boolean suppressConnectionRender) {
|
|
this.positions[0] = firstRelay;
|
|
this.positions[1] = secondRelay;
|
|
this.suppressConnectionRender = suppressConnectionRender;
|
|
this.type = type;
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound compound) {
|
|
if (compound != null) {
|
|
for (int i = 0; i < this.positions.length; i++) {
|
|
int anX = compound.getInteger("x" + i);
|
|
int aY = compound.getInteger("y" + i);
|
|
int aZ = compound.getInteger("z" + i);
|
|
this.positions[i] = new BlockPos(anX, aY, aZ);
|
|
}
|
|
this.suppressConnectionRender = compound.getBoolean("SuppressRender");
|
|
|
|
String typeStrg = compound.getString("Type");
|
|
if (typeStrg != null && !typeStrg.isEmpty()) {
|
|
this.type = LaserType.valueOf(typeStrg);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public BlockPos[] getPositions() {
|
|
return this.positions;
|
|
}
|
|
|
|
@Override
|
|
public boolean doesSuppressRender() {
|
|
return this.suppressConnectionRender;
|
|
}
|
|
|
|
@Override
|
|
public LaserType getType() {
|
|
return this.type;
|
|
}
|
|
|
|
@Override
|
|
public boolean contains(BlockPos relay) {
|
|
for (BlockPos position : this.positions) {
|
|
if (position != null && position.equals(relay)) { return true; }
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return (this.positions[0] == null ? "-" : this.positions[0].toString()) + " | " + (this.positions[1] == null ? "-" : this.positions[1].toString());
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound compound) {
|
|
for (int i = 0; i < this.positions.length; i++) {
|
|
BlockPos relay = this.positions[i];
|
|
compound.setInteger("x" + i, relay.getX());
|
|
compound.setInteger("y" + i, relay.getY());
|
|
compound.setInteger("z" + i, relay.getZ());
|
|
}
|
|
if (this.type != null) {
|
|
compound.setString("Type", this.type.name());
|
|
}
|
|
compound.setBoolean("SuppressRender", this.suppressConnectionRender);
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (obj instanceof ConnectionPair) {
|
|
ConnectionPair pair = (ConnectionPair) obj;
|
|
for (int i = 0; i < this.positions.length; i++) {
|
|
if (this.positions[i] == pair.positions[i] || this.positions[i] != null && this.positions[i].equals(pair.positions[i])) { return true; }
|
|
}
|
|
}
|
|
return super.equals(obj);
|
|
}
|
|
}
|