Files
CustomNPC-Plus/src/main/java/noppes/npcs/controllers/data/GlobalNPCDataScript.java
T

82 lines
2.3 KiB
Java

package noppes.npcs.controllers.data;
import kamkeel.npcs.network.packets.request.script.GlobalNPCScriptPacket;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import noppes.npcs.CustomNpcs;
import noppes.npcs.api.entity.ICustomNpc;
import noppes.npcs.constants.ScriptContext;
import noppes.npcs.controllers.ScriptController;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.util.ScriptToStringHelper;
public class GlobalNPCDataScript extends MultiScriptHandler {
private EntityNPCInterface npc;
private ICustomNpc npcAPI;
private long lastNpcUpdate = -1L;
public GlobalNPCDataScript(EntityNPCInterface npc) {
if (npc != null) {
this.npc = npc;
}
}
@Override
protected boolean canRunScripts() {
return isEnabled();
}
public boolean isEnabled() {
return CustomNpcs.proxy.isGlobalNPCScripts() && this.enabled && ScriptController.HasStart && this.scripts.size() > 0;
}
@Override
public ScriptContext getContext() {
return ScriptContext.NPC;
}
@Override
protected boolean needsReInit() {
return ScriptController.Instance.lastLoaded > lastInited || ScriptController.Instance.lastGlobalNpcUpdate > lastNpcUpdate;
}
@Override
protected void reInitScripts() {
super.reInitScripts();
lastNpcUpdate = ScriptController.Instance.lastGlobalNpcUpdate;
}
@Override
public void requestData() {
GlobalNPCScriptPacket.Get();
}
@Override
public void sendSavePacket(int index, int totalCount, NBTTagCompound nbt) {
GlobalNPCScriptPacket.Save(index, totalCount, nbt);
}
@Override
public boolean isClient() {
return this.npc != null && this.npc.isClientWorld();
}
@Override
public String noticeString() {
if (this.npc == null) {
return "Global script";
} else {
BlockPos pos = new BlockPos(this.npc);
return ScriptToStringHelper.toStringHelper(this.npc).add("x", pos.getX()).add("y", pos.getY()).add("z", pos.getZ()).toString();
}
}
public ICustomNpc getNpc() {
if (this.npcAPI == null) {
this.npcAPI = (ICustomNpc) NpcAPI.Instance().getIEntity(this.npc);
}
return this.npcAPI;
}
}