ScriptCommands.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package me.km.snuviscript.commands;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.UUID;
  5. import me.hammerle.snuviscript.code.Script;
  6. import me.hammerle.snuviscript.code.ScriptManager;
  7. import me.km.snuviscript.Scripts;
  8. import net.minecraft.entity.player.PlayerEntity;
  9. import net.minecraft.server.MinecraftServer;
  10. public class ScriptCommands {
  11. private static void nothing(Script sc) {
  12. }
  13. public static void registerFunctions(ScriptManager sm, Scripts scripts, MinecraftServer server) {
  14. sm.registerConsumer("script.callevent", (sc, in) -> {
  15. String name = in[0].getString(sc);
  16. if(in.length >= 2) {
  17. sm.callEvent(name, (Script) in[1].get(sc), ScriptCommands::nothing, ScriptCommands::nothing);
  18. } else {
  19. sm.callEvent(name, ScriptCommands::nothing, ScriptCommands::nothing);
  20. }
  21. });
  22. sm.registerFunction("script.playerstolist", (sc, in) -> new ArrayList<>(scripts.getPlayerList(sc.getId())));
  23. sm.registerFunction("script.getplayeramount", (sc, in) -> (double) scripts.getPlayerList(sc.getId()).size());
  24. sm.registerFunction("script.start", (sc, in) -> {
  25. Object o = in[0].get(sc);
  26. if(o instanceof PlayerEntity) {
  27. String[] names = new String[in.length - 1];
  28. for(int i = 1; i < in.length; i++) {
  29. names[i - 1] = in[i].getString(sc);
  30. }
  31. return scripts.startPlayerScript((PlayerEntity) in[0].get(sc), names);
  32. }
  33. String[] names = new String[in.length];
  34. names[0] = o.toString();
  35. for(int i = 1; i < in.length; i++) {
  36. names[i] = in[i].getString(sc);
  37. }
  38. scripts.startScript(names);
  39. return true;
  40. });
  41. sm.registerFunction("script.join", (sc, in) -> scripts.registerPlayer((Script) in[0].get(sc), (PlayerEntity) in[1].get(sc)));
  42. sm.registerFunction("script.kick", (sc, in) -> scripts.unregisterPlayer(sc, (PlayerEntity) in[0].get(sc)));
  43. sm.registerFunction("script.getleader", (sc, in) -> {
  44. List<UUID> players = scripts.getPlayerList(sc.getId());
  45. if(players.isEmpty()) {
  46. return null;
  47. }
  48. return server.getPlayerList().getPlayerByUUID(players.get(0));
  49. });
  50. }
  51. }