2022-03-23 03:54:06 -05:00
|
|
|
package noppes.npcs.client.gui.script;
|
|
|
|
|
|
2025-02-02 23:15:53 -05:00
|
|
|
import kamkeel.npcs.network.packets.request.script.GlobalNPCScriptPacket;
|
2022-03-23 03:54:06 -05:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
2023-02-19 15:20:51 -06:00
|
|
|
import noppes.npcs.NBTTags;
|
2023-02-19 13:38:43 -06:00
|
|
|
import noppes.npcs.controllers.ScriptContainer;
|
2023-03-16 04:27:19 -05:00
|
|
|
import noppes.npcs.controllers.data.GlobalNPCDataScript;
|
2022-03-23 03:54:06 -05:00
|
|
|
|
2023-02-19 13:38:43 -06:00
|
|
|
import java.util.List;
|
|
|
|
|
|
2022-03-23 03:54:06 -05:00
|
|
|
public class GuiScriptAllNPCs extends GuiScriptInterface {
|
2023-03-16 04:27:19 -05:00
|
|
|
private GlobalNPCDataScript script = new GlobalNPCDataScript(null);
|
2022-03-23 03:54:06 -05:00
|
|
|
|
|
|
|
|
public GuiScriptAllNPCs() {
|
2023-03-16 04:27:19 -05:00
|
|
|
hookList.add("init");
|
|
|
|
|
hookList.add("tick");
|
|
|
|
|
hookList.add("interact");
|
|
|
|
|
hookList.add("dialog");
|
|
|
|
|
hookList.add("damaged");
|
|
|
|
|
hookList.add("killed");
|
|
|
|
|
hookList.add("meleeAttack");
|
2024-02-12 02:58:34 -05:00
|
|
|
hookList.add("meleeSwing");
|
2023-03-16 04:27:19 -05:00
|
|
|
hookList.add("rangedLaunched");
|
|
|
|
|
hookList.add("target");
|
|
|
|
|
hookList.add("collide");
|
|
|
|
|
hookList.add("kills");
|
|
|
|
|
hookList.add("dialogClose");
|
|
|
|
|
hookList.add("timer");
|
2023-03-16 04:56:33 -05:00
|
|
|
hookList.add("targetLost");
|
|
|
|
|
hookList.add("projectileTick");
|
|
|
|
|
hookList.add("projectileImpact");
|
2023-03-16 04:27:19 -05:00
|
|
|
|
2022-03-23 03:54:06 -05:00
|
|
|
this.handler = this.script;
|
2025-02-02 23:15:53 -05:00
|
|
|
GlobalNPCScriptPacket.Get();
|
2022-03-23 03:54:06 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setGuiData(NBTTagCompound compound) {
|
2023-02-19 13:38:43 -06:00
|
|
|
if (!compound.hasKey("Tab")) {
|
|
|
|
|
script.setLanguage(compound.getString("ScriptLanguage"));
|
|
|
|
|
script.setEnabled(compound.getBoolean("ScriptEnabled"));
|
|
|
|
|
super.setGuiData(compound);
|
|
|
|
|
} else {
|
|
|
|
|
int tab = compound.getInteger("Tab");
|
|
|
|
|
ScriptContainer container = new ScriptContainer(script);
|
|
|
|
|
container.readFromNBT(compound.getCompoundTag("Script"));
|
|
|
|
|
if (script.getScripts().isEmpty()) {
|
|
|
|
|
for (int i = 0; i < compound.getInteger("TotalScripts"); i++) {
|
|
|
|
|
script.getScripts().add(new ScriptContainer(script));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
script.getScripts().set(tab,container);
|
|
|
|
|
initGui();
|
|
|
|
|
}
|
2022-03-23 03:54:06 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void save() {
|
|
|
|
|
super.save();
|
2023-02-19 13:38:43 -06:00
|
|
|
List<ScriptContainer> containers = this.script.getScripts();
|
|
|
|
|
for (int i = 0; i < containers.size(); i++) {
|
|
|
|
|
ScriptContainer container = containers.get(i);
|
2025-02-02 23:15:53 -05:00
|
|
|
GlobalNPCScriptPacket.Save(i, containers.size(), container.writeToNBT(new NBTTagCompound()));
|
2023-02-19 13:38:43 -06:00
|
|
|
}
|
|
|
|
|
NBTTagCompound scriptData = new NBTTagCompound();
|
|
|
|
|
scriptData.setString("ScriptLanguage", this.script.getLanguage());
|
|
|
|
|
scriptData.setBoolean("ScriptEnabled", this.script.getEnabled());
|
2023-02-19 15:20:51 -06:00
|
|
|
scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.script.getConsoleText()));
|
2025-02-02 23:15:53 -05:00
|
|
|
GlobalNPCScriptPacket.Save(-1, containers.size(), scriptData);
|
2022-03-23 03:54:06 -05:00
|
|
|
}
|
|
|
|
|
}
|