BossBarCommands.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package me.km.snuviscript.commands;
  2. import me.hammerle.snuviscript.code.ScriptManager;
  3. import me.km.permissions.Permissions;
  4. import me.km.snuviscript.Scripts;
  5. import static me.km.snuviscript.commands.CommandUtils.doForGroup;
  6. import net.minecraft.entity.player.ServerPlayerEntity;
  7. import net.minecraft.network.play.server.SUpdateBossInfoPacket;
  8. import net.minecraft.server.MinecraftServer;
  9. import net.minecraft.util.math.MathHelper;
  10. import net.minecraft.util.text.StringTextComponent;
  11. import net.minecraft.world.BossInfo;
  12. public class BossBarCommands {
  13. private static class CustomBossInfo extends BossInfo {
  14. public CustomBossInfo() {
  15. super(MathHelper.getRandomUUID(), new StringTextComponent("nothing"), BossInfo.Color.PINK, BossInfo.Overlay.PROGRESS);
  16. }
  17. }
  18. private static final CustomBossInfo INFO = new CustomBossInfo();
  19. public static void registerFunctions(ScriptManager sm, Scripts scripts, Permissions perms, MinecraftServer server) {
  20. sm.registerConsumer("boss.setcolor", (sc, in) -> {
  21. INFO.setColor(BossInfo.Color.valueOf(in[0].getString(sc)));
  22. });
  23. sm.registerConsumer("boss.setcreatefog", (sc, in) -> {
  24. INFO.setCreateFog(in[0].getBoolean(sc));
  25. });
  26. sm.registerConsumer("boss.setdarkensky", (sc, in) -> {
  27. INFO.setDarkenSky(in[0].getBoolean(sc));
  28. });
  29. sm.registerConsumer("boss.setname", (sc, in) -> {
  30. INFO.setName(new StringTextComponent(in[0].getString(sc)));
  31. });
  32. sm.registerConsumer("boss.setoverlay", (sc, in) -> {
  33. INFO.setOverlay(BossInfo.Overlay.valueOf(in[0].getString(sc)));
  34. });
  35. sm.registerConsumer("boss.setpercent", (sc, in) -> {
  36. INFO.setPercent(in[0].getFloat(sc));
  37. });
  38. sm.registerConsumer("boss.setplayendbossmusic", (sc, in) -> {
  39. INFO.setPlayEndBossMusic(in[0].getBoolean(sc));
  40. });
  41. sm.registerConsumer("boss.send", (sc, in) -> {
  42. SUpdateBossInfoPacket packet = new SUpdateBossInfoPacket(SUpdateBossInfoPacket.Operation.valueOf(in[1].getString(sc)), INFO);
  43. doForGroup(server, scripts, perms, in[0].get(sc), sc, p -> ((ServerPlayerEntity) p).connection.sendPacket(packet));
  44. });
  45. }
  46. }