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

81 lines
2.3 KiB
Java
Raw Normal View History

2022-03-23 03:54:06 -05:00
package noppes.npcs.controllers.data;
2026-01-22 20:05:07 +02:00
import kamkeel.npcs.network.packets.request.script.GlobalNPCScriptPacket;
2022-03-23 03:54:06 -05:00
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
2023-01-12 21:33:06 -05:00
import noppes.npcs.api.entity.ICustomNpc;
2023-01-07 00:21:08 -05:00
import noppes.npcs.config.ConfigScript;
2026-01-22 20:05:07 +02:00
import noppes.npcs.constants.ScriptContext;
2022-03-23 03:54:06 -05:00
import noppes.npcs.controllers.ScriptController;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.scripted.NpcAPI;
2026-01-22 14:27:48 -05:00
import noppes.npcs.util.ScriptToStringHelper;
2022-03-23 03:54:06 -05:00
2026-01-22 14:27:48 -05:00
public class GlobalNPCDataScript extends MultiScriptHandler {
2022-03-23 03:54:06 -05:00
private EntityNPCInterface npc;
private ICustomNpc npcAPI;
private long lastNpcUpdate = -1L;
2022-03-23 03:54:06 -05:00
2023-03-16 04:27:19 -05:00
public GlobalNPCDataScript(EntityNPCInterface npc) {
2025-03-13 17:14:45 -04:00
if (npc != null) {
2022-03-23 03:54:06 -05:00
this.npc = npc;
}
}
2025-03-13 17:14:45 -04:00
2026-01-22 14:27:48 -05:00
@Override
protected boolean canRunScripts() {
return isEnabled();
2022-03-23 03:54:06 -05:00
}
public boolean isEnabled() {
return ConfigScript.GlobalNPCScripts && this.enabled && ScriptController.HasStart && this.scripts.size() > 0;
}
2026-01-22 20:05:07 +02:00
@Override
public ScriptContext getContext() {
return ScriptContext.NPC;
}
@Override
2026-01-22 14:27:48 -05:00
protected boolean needsReInit() {
return ScriptController.Instance.lastLoaded > lastInited || ScriptController.Instance.lastGlobalNpcUpdate > lastNpcUpdate;
}
@Override
protected void reInitScripts() {
super.reInitScripts();
lastNpcUpdate = ScriptController.Instance.lastGlobalNpcUpdate;
2026-01-22 20:05:07 +02:00
}
@Override
public void requestData() {
GlobalNPCScriptPacket.Get();
}
@Override
public void sendSavePacket(int index, int totalCount, NBTTagCompound nbt) {
GlobalNPCScriptPacket.Save(index, totalCount, nbt);
}
@Override
2022-03-23 03:54:06 -05:00
public boolean isClient() {
2026-01-22 14:27:48 -05:00
return this.npc != null && this.npc.isClientWorld();
2022-03-23 03:54:06 -05:00
}
2025-03-13 17:14:45 -04:00
2026-01-22 14:27:48 -05:00
@Override
2022-03-23 03:54:06 -05:00
public String noticeString() {
2025-03-13 17:14:45 -04:00
if (this.npc == null) {
2022-03-23 03:54:06 -05:00
return "Global script";
} else {
BlockPos pos = new BlockPos(this.npc);
2026-01-22 14:27:48 -05:00
return ScriptToStringHelper.toStringHelper(this.npc).add("x", pos.getX()).add("y", pos.getY()).add("z", pos.getZ()).toString();
2022-03-23 03:54:06 -05:00
}
}
2025-03-13 17:14:45 -04:00
2022-03-23 03:54:06 -05:00
public ICustomNpc getNpc() {
if (this.npcAPI == null) {
this.npcAPI = (ICustomNpc) NpcAPI.Instance().getIEntity(this.npc);
2022-03-23 03:54:06 -05:00
}
return this.npcAPI;
}
}