WorldCommands.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package me.km.snuviscript.commands;
  2. import java.util.ArrayList;
  3. import java.util.stream.Collectors;
  4. import me.hammerle.snuviscript.code.ScriptManager;
  5. import me.km.utils.Location;
  6. import me.km.utils.Mapper;
  7. import me.km.utils.ReflectionUtils;
  8. import me.km.world.WorldManager;
  9. import net.minecraft.server.MinecraftServer;
  10. import net.minecraft.world.Difficulty;
  11. import net.minecraft.world.GameRules;
  12. import net.minecraft.world.World;
  13. import net.minecraft.world.server.ServerWorld;
  14. import net.minecraft.world.storage.WorldInfo;
  15. public class WorldCommands {
  16. @SuppressWarnings("")
  17. public static void registerFunctions(ScriptManager sm, MinecraftServer server) {
  18. sm.registerAlias("players.toworldlist", "world.getplayers");
  19. sm.registerFunction("world.register", (sc, in) -> WorldManager.register(in[0].getString(sc)));
  20. sm.registerFunction("world.unregister", (sc, in) -> WorldManager.unregister(server, in[0].getString(sc)));
  21. sm.registerFunction("world.get", (sc, in) -> WorldManager.get(server, in[0].getString(sc)));
  22. sm.registerFunction("world.getname", (sc, in) -> WorldManager.getName((World) in[0].get(sc)));
  23. sm.registerConsumer("world.setdiffi", (sc, in) -> {
  24. Difficulty diffi = Difficulty.valueOf(in[1].getString(sc).toUpperCase());
  25. ((World) in[0].get(sc)).getWorldInfo().setDifficulty(diffi);
  26. });
  27. sm.registerConsumer("world.setspawn", (sc, in) -> {
  28. Location l = ((Location) in[0].get(sc));
  29. l.getWorld().getWorldInfo().setSpawn(l.getBlockPos());
  30. });
  31. sm.registerFunction("world.getspawn", (sc, in) -> {
  32. World w = (World) in[0].get(sc);
  33. WorldInfo info = w.getWorldInfo();
  34. return new Location(w, info.getSpawnX(), info.getSpawnY(), info.getSpawnZ(), 0.0f, 0.0f);
  35. });
  36. sm.registerFunction("world.getall", (sc, in) -> {
  37. ArrayList<World> worlds = new ArrayList<>();
  38. for(World w : server.getWorlds()) {
  39. worlds.add(w);
  40. }
  41. return worlds;
  42. });
  43. sm.registerConsumer("world.settime", (sc, in) -> ((World) in[0].get(sc)).setDayTime(in[1].getLong(sc)));
  44. sm.registerFunction("world.gettime", (sc, in) -> (double) ((World) in[0].get(sc)).getDayTime());
  45. sm.registerFunction("world.hasstorm", (sc, in) -> ((World) in[0].get(sc)).isRaining());
  46. sm.registerConsumer("world.clearweather", (sc, in) -> {
  47. WorldInfo wi = ((World) in[0].get(sc)).getWorldInfo();
  48. wi.setClearWeatherTime(in[1].getInt(sc));
  49. wi.setRainTime(0);
  50. wi.setThunderTime(0);
  51. wi.setRaining(false);
  52. wi.setThundering(false);
  53. });
  54. sm.registerConsumer("world.setrain", (sc, in) -> {
  55. WorldInfo wi = ((World) in[0].get(sc)).getWorldInfo();
  56. wi.setClearWeatherTime(0);
  57. int i = in[1].getInt(sc);
  58. wi.setRainTime(i);
  59. wi.setThunderTime(i);
  60. wi.setRaining(true);
  61. wi.setThundering(false);
  62. });
  63. sm.registerConsumer("world.setthunder", (sc, in) -> {
  64. WorldInfo wi = ((World) in[0].get(sc)).getWorldInfo();
  65. wi.setClearWeatherTime(0);
  66. int i = in[1].getInt(sc);
  67. wi.setRainTime(i);
  68. wi.setThunderTime(i);
  69. wi.setRaining(true);
  70. wi.setThundering(true);
  71. });
  72. sm.registerFunction("world.getentities", (sc, in) -> {
  73. return ((ServerWorld) in[0].get(sc)).getEntities().collect(Collectors.toList());
  74. });
  75. }
  76. }