package li.cil.oc.common.asm.template;
import li.cil.oc.api.network.Message;
import li.cil.oc.api.network.Node;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
// This is a template implementation of methods injected into classes that are
// marked for component functionality. These methods will be copied into tile
// entities marked as simple components as necessary by the class transformer.
@SuppressWarnings("unused")
public abstract class SimpleEnvironment extends TileEntity implements SimpleComponentImpl {
@Override
public Node node() {
return StaticSimpleEnvironment.node(this);
}
@Override
public void onConnect(Node node) {
}
@Override
public void onDisconnect(Node node) {
}
@Override
public void onMessage(Message message) {
}
// These are always injected, after possibly existing versions have been
// renamed to the below variants from the SimpleComponentImpl interface.
// This allows transparent wrapping of already present implementations,
// instead of plain overwriting them.
@Override
public void validate() {
StaticSimpleEnvironment.validate(this);
}
@Override
public void invalidate() {
StaticSimpleEnvironment.invalidate(this);
}
@Override
public void onChunkUnload() {
StaticSimpleEnvironment.onChunkUnload(this);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
StaticSimpleEnvironment.readFromNBT(this, nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
StaticSimpleEnvironment.writeToNBT(this, nbt);
}
// The following methods are only injected if their real versions do not
// exist in the class we're injecting into. Otherwise their real versions
// are renamed to these variations, which simply delegate to the parent.
// This way they are always guaranteed to be present, so we can simply call
// them through an interface, and need no runtime reflection.
public void validate_OpenComputers() {
super.validate();
}
public void invalidate_OpenComputers() {
super.invalidate();
}
public void onChunkUnload_OpenComputers() {
super.onChunkUnload();
}
public void readFromNBT_OpenComputers(NBTTagCompound nbt) {
super.readFromNBT(nbt);
}
public void writeToNBT_OpenComputers(NBTTagCompound nbt) {
super.writeToNBT(nbt);
}
}