package me.km.snuviscript; import me.km.KajetansMod; import me.km.api.Module; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.UUID; import net.minecraft.command.ICommandSender; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.text.TextFormatting; public class ScriptAPI extends Module { private final SnuviParser qparser; private int idCounter; private final HashMap questData; private final HashMap playerQuestID; private final HashMap scripts; private final HashSet scriptCommands; public ScriptAPI(String mname, String prefix, TextFormatting color) { super(mname, prefix, color); questData = new HashMap<>(); playerQuestID = new HashMap<>(); scripts = new HashMap<>(); idCounter = 0; qparser = new SnuviParser(); scriptCommands = new HashSet<>(); } // ------------------------------------------------------------------------- // QuestParser // ------------------------------------------------------------------------- public SnuviParser getQuestParser() { return qparser; } // ------------------------------------------------------------------------- // custom commands // ------------------------------------------------------------------------- public boolean isRegisteredScriptCommand(String s) { return scriptCommands.contains(s); } public void registerScriptCommand(String s) { scriptCommands.add(s); } public void unregisterScriptCommand(String s) { scriptCommands.remove(s); } public void clearScriptCommands() { scriptCommands.clear(); } // ------------------------------------------------------------------------- // Quest - Control // ------------------------------------------------------------------------- private void addPlayerToQuest(EntityPlayer p, EntityPlayer p2, Script qd) { if(hasQuest(p)) { this.send(p, "Du hast bereits eine Quest.");; return; } if(qd == null) { if(p2 != null) { this.send(p, p2.getName() + " hat keine aktive Quest."); } return; } if(qd.getBoolean("no-join")) { this.send(p, "Du darfst dieser Quest nicht beitreten."); return; } playerQuestID.put(p.getUniqueID(), qd.getId()); qd.addPlayer(p); if(!qd.getBoolean("no-quest-msg")) { qparser.sendMessageWithSuffix(qd, p.getName() + " ist deiner Quest beigetreten."); if(p2 != null) { this.send(p, "Du bist nun in der Quest von " + p2.getName() + "."); } else { this.send(p, "Du bist einer bereits laufenden Quest beigetreten."); } } qd.setVar("event", "player-join"); ScriptVars.setPlayerVars(qd, p); qd.runCode(); } public void addPlayerToPlayer(EntityPlayer p, EntityPlayer p2) { addPlayerToQuest(p, p2, getQuestData(p2)); } public void addPlayerToQuest(EntityPlayer p, Script qd) { addPlayerToQuest(p, null, qd); } public Collection