Selaa lähdekoodia

fixed rendering position error of custom stack bar, snuvi boss bar api

Kajetan Johannes Hammerle 3 vuotta sitten
vanhempi
commit
748757f2be

+ 2 - 1
src/main/java/me/km/networking/ItemStackDisplayGui.java

@@ -56,7 +56,7 @@ public class ItemStackDisplayGui extends AbstractGui {
         }
         
         int screenWidth = (mc.getMainWindow().getScaledWidth() >> 1) - 91;
-        int y = 3;
+        int y = 0;
         if(ClientReflectionUtils.isRenderingBossBar()) {
             y += 20;
         }
@@ -69,6 +69,7 @@ public class ItemStackDisplayGui extends AbstractGui {
         blit(screenWidth, y, 0, 0, 182, 22);
         setBlitOffset(oldBlitOffset);
         
+        y += 3;
         ItemRenderer ir = mc.getItemRenderer();
         int i = 0;
         for(int x = 3; x < 164; x += 20) {

+ 1 - 0
src/main/java/me/km/snuviscript/MinecraftFunctions.java

@@ -50,6 +50,7 @@ public class MinecraftFunctions {
         EnchantmentCommands.registerFunctions(sm);
         ItemEntityCommands.registerFunctions(sm);
         LimitCommands.registerFunctions(sm, scripts);
+        BossBarCommands.registerFunctions(sm, scripts, perms, server);
         Commands.registerFunctions(sm, scripts, perms, scheduler, server, commands);
     }
 }

+ 51 - 0
src/main/java/me/km/snuviscript/commands/BossBarCommands.java

@@ -0,0 +1,51 @@
+package me.km.snuviscript.commands;
+
+import me.hammerle.snuviscript.code.ScriptManager;
+import me.km.permissions.Permissions;
+import me.km.snuviscript.Scripts;
+import static me.km.snuviscript.commands.CommandUtils.doForGroup;
+import net.minecraft.entity.player.ServerPlayerEntity;
+import net.minecraft.network.play.server.SUpdateBossInfoPacket;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.util.math.MathHelper;
+import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.world.BossInfo;
+
+public class BossBarCommands {
+
+    private static class CustomBossInfo extends BossInfo {
+        public CustomBossInfo() {
+            super(MathHelper.getRandomUUID(), new StringTextComponent("nothing"), BossInfo.Color.PINK, BossInfo.Overlay.PROGRESS);
+        }
+    }
+
+    private static final CustomBossInfo INFO = new CustomBossInfo();
+
+    public static void registerFunctions(ScriptManager sm, Scripts scripts, Permissions perms, MinecraftServer server) {
+        sm.registerConsumer("boss.setcolor", (sc, in) -> {
+            INFO.setColor(BossInfo.Color.valueOf(in[0].getString(sc)));
+        });
+        sm.registerConsumer("boss.setcreatefog", (sc, in) -> {
+            INFO.setCreateFog(in[0].getBoolean(sc));
+        });
+        sm.registerConsumer("boss.setdarkensky", (sc, in) -> {
+            INFO.setDarkenSky(in[0].getBoolean(sc));
+        });
+        sm.registerConsumer("boss.setname", (sc, in) -> {
+            INFO.setName(new StringTextComponent(in[0].getString(sc)));
+        });
+        sm.registerConsumer("boss.setoverlay", (sc, in) -> {
+            INFO.setOverlay(BossInfo.Overlay.valueOf(in[0].getString(sc)));
+        });
+        sm.registerConsumer("boss.setpercent", (sc, in) -> {
+            INFO.setPercent(in[0].getFloat(sc));
+        });
+        sm.registerConsumer("boss.setplayendbossmusic", (sc, in) -> {
+            INFO.setPlayEndBossMusic(in[0].getBoolean(sc));
+        });
+        sm.registerConsumer("boss.send", (sc, in) -> {
+            SUpdateBossInfoPacket packet = new SUpdateBossInfoPacket(SUpdateBossInfoPacket.Operation.valueOf(in[1].getString(sc)), INFO);
+            doForGroup(server, scripts, perms, in[0].get(sc), sc, p -> ((ServerPlayerEntity) p).connection.sendPacket(packet));
+        });
+    }
+}