package mods.ocminecart.common.util;
import li.cil.oc.api.Persistable;
import li.cil.oc.api.network.*;
import net.minecraft.nbt.NBTTagCompound;
public class Plug implements Environment, Persistable{
private IPlugable master;
private Node netnode;
public Plug(IPlugable master){
this.master=master;
}
public void setNode(Node snode){
this.netnode=snode;
}
@Override
public Node node() {
return this.netnode;
}
@Override
public void onConnect(Node node) {
master.onPlugConnect(this, node);
}
@Override
public void onDisconnect(Node node) {
master.onPlugDisconnect(this, node);
}
@Override
public void onMessage(Message message) {
master.onPlugMessage(this, message);
}
public IPlugable getMaster(){
return this.master;
}
@Override
public void load(NBTTagCompound nbt) {
NBTTagCompound ntag = nbt.getCompoundTag("node");
if(this.netnode instanceof ComponentConnector) ((ComponentConnector)this.netnode).load(nbt);
else if(this.netnode instanceof Connector) ((Connector)this.netnode).load(nbt);
else if(this.netnode instanceof Component) ((Component)this.netnode).load(nbt);
else this.netnode.save(ntag);
}
@Override
public void save(NBTTagCompound nbt) {
NBTTagCompound ntag = new NBTTagCompound();
if(this.netnode instanceof ComponentConnector) ((ComponentConnector)this.netnode).save(nbt);
else if(this.netnode instanceof Connector) ((Connector)this.netnode).save(nbt);
else if(this.netnode instanceof Component) ((Component)this.netnode).save(nbt);
else this.netnode.save(ntag);
nbt.setTag("node", ntag);
}
}