2016-07-30 17:07:32 +02:00
|
|
|
/*
|
|
|
|
* This file ("ConnectionPair.java") is part of the Actually Additions mod for Minecraft.
|
|
|
|
* It is created and owned by Ellpeck and distributed
|
|
|
|
* under the Actually Additions License to be found at
|
|
|
|
* http://ellpeck.de/actaddlicense
|
|
|
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
|
|
|
*
|
|
|
|
* © 2015-2016 Ellpeck
|
|
|
|
*/
|
|
|
|
|
|
|
|
package de.ellpeck.actuallyadditions.api.laser;
|
|
|
|
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
|
|
|
|
public class ConnectionPair{
|
|
|
|
|
|
|
|
public final BlockPos[] positions = new BlockPos[2];
|
2016-08-01 14:15:09 +02:00
|
|
|
public final boolean suppressConnectionRender;
|
2016-07-30 17:07:32 +02:00
|
|
|
|
2016-08-01 14:15:09 +02:00
|
|
|
public ConnectionPair(BlockPos firstRelay, BlockPos secondRelay, boolean suppressConnectionRender){
|
2016-07-30 17:07:32 +02:00
|
|
|
this.positions[0] = firstRelay;
|
|
|
|
this.positions[1] = secondRelay;
|
2016-08-01 14:15:09 +02:00
|
|
|
this.suppressConnectionRender = suppressConnectionRender;
|
2016-07-30 17:07:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static ConnectionPair readFromNBT(NBTTagCompound compound){
|
|
|
|
if(compound != null){
|
|
|
|
BlockPos[] pos = new BlockPos[2];
|
|
|
|
for(int i = 0; i < pos.length; i++){
|
|
|
|
int anX = compound.getInteger("x"+i);
|
|
|
|
int aY = compound.getInteger("y"+i);
|
|
|
|
int aZ = compound.getInteger("z"+i);
|
|
|
|
pos[i] = new BlockPos(anX, aY, aZ);
|
|
|
|
}
|
2016-08-01 14:15:09 +02:00
|
|
|
return new ConnectionPair(pos[0], pos[1], compound.getBoolean("SuppressRender"));
|
2016-07-30 17:07:32 +02:00
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
|
|
|
public NBTTagCompound writeToNBT(){
|
|
|
|
NBTTagCompound compound = new NBTTagCompound();
|
|
|
|
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());
|
|
|
|
}
|
2016-08-01 14:15:09 +02:00
|
|
|
compound.setBoolean("SuppressRender", this.suppressConnectionRender);
|
2016-07-30 17:07:32 +02:00
|
|
|
return compound;
|
|
|
|
}
|
|
|
|
|
|
|
|
@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);
|
|
|
|
}
|
|
|
|
}
|