diff options
author | HacktheTime <l4bg0jb7@duck.com> | 2023-12-15 18:24:37 +0100 |
---|---|---|
committer | HacktheTime <l4bg0jb7@duck.com> | 2023-12-15 18:24:37 +0100 |
commit | ac68a6fe8200127254e58d0a6005f072075a1842 (patch) | |
tree | 871baae5b1f07e441146b71c956996b39f579e5d /fabric/src/main | |
parent | 127dcc12a982b7b31a098f8f1e011725ead62d9b (diff) | |
download | BBsentials-ac68a6fe8200127254e58d0a6005f072075a1842.tar.gz BBsentials-ac68a6fe8200127254e58d0a6005f072075a1842.tar.bz2 BBsentials-ac68a6fe8200127254e58d0a6005f072075a1842.zip |
changed the BBsentials.onServerSwap() to BBsentials.onServerJoin(). also added BBsentials.onServerLeave() both of those will now also go through a for loop of runnables and execute those ONCE after which being removed.
added a Splash Leecher Display for Splashers. will be enabled automatically when a Splash is announced. Can also be enabled for 2 Minutes through /getLeechers
added the Server host String as base in the github.
Diffstat (limited to 'fabric/src/main')
5 files changed, 84 insertions, 82 deletions
diff --git a/fabric/src/main/java/de/hype/bbsentials/fabric/BBsentialsConfigScreemFactory.java b/fabric/src/main/java/de/hype/bbsentials/fabric/BBsentialsConfigScreemFactory.java index 556208c..3154377 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/BBsentialsConfigScreemFactory.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/BBsentialsConfigScreemFactory.java @@ -31,7 +31,7 @@ public class BBsentialsConfigScreemFactory { ConfigCategory server = builder.getOrCreateCategory(Text.of("Server")); if (BBsentials.config.getUsername().equalsIgnoreCase("Hype_the_Time")) { server.addEntry(entryBuilder.startTextField(Text.of("Server URL"), BBsentials.config.getBBServerURL().replaceAll(".", "*")) - .setDefaultValue("localhost") + .setDefaultValue("static.88-198-149-240.clients.your-server.de") .setTooltip(Text.of("Place the Server URL of the BBsentials Server here")) .setSaveConsumer((newValue) -> { if (newValue.replace("*", "").trim().isEmpty()) { diff --git a/fabric/src/main/java/de/hype/bbsentials/fabric/Commands.java b/fabric/src/main/java/de/hype/bbsentials/fabric/Commands.java index 3d7f76a..e1774a2 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/Commands.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/Commands.java @@ -5,6 +5,7 @@ import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import de.hype.bbsentials.common.chat.Chat; import de.hype.bbsentials.common.client.BBsentials; +import de.hype.bbsentials.common.client.SplashStatusUpdateListener; import de.hype.bbsentials.common.constants.enviromentShared.ChChestItems; import de.hype.bbsentials.common.constants.enviromentShared.MiningEvents; import de.hype.bbsentials.common.mclibraries.EnvironmentCore; @@ -20,6 +21,7 @@ import net.minecraft.command.CommandSource; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.concurrent.TimeUnit; public class Commands implements MCCommand { Event<ClientCommandRegistrationCallback> event = ClientCommandRegistrationCallback.EVENT; @@ -281,7 +283,10 @@ public class Commands implements MCCommand { ClientCommandManager.literal("getLeecher") .executes((context) -> { BBsentials.executionService.execute(() -> { + SplashStatusUpdateListener.showSplashOverlayOverrideDisplay = true; Chat.sendPrivateMessageToSelfInfo("Leeching Players: " + String.join(", ", EnvironmentCore.mcUtils.getSplashLeechingPlayers())); + BBsentials.executionService.schedule(() -> SplashStatusUpdateListener.showSplashOverlayOverrideDisplay = false, + 2, TimeUnit.MINUTES); }); return 1; }) diff --git a/fabric/src/main/java/de/hype/bbsentials/fabric/DebugThread.java b/fabric/src/main/java/de/hype/bbsentials/fabric/DebugThread.java index 92274a3..a530492 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/DebugThread.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/DebugThread.java @@ -1,9 +1,5 @@ package de.hype.bbsentials.fabric; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.entity.player.PlayerEntity; - import java.util.ArrayList; import java.util.List; @@ -26,53 +22,9 @@ public class DebugThread implements de.hype.bbsentials.common.client.DebugThread public void doOnce() { doTest = true; } - @Override public List<String> test() { return List.of(""); } - public List<PlayerEntity> getAllPlayers() { - List<PlayerEntity> players = new ArrayList<>(); - - // Iterate through all players and check their distance from the source player - for (PlayerEntity player : MinecraftClient.getInstance().player.getEntityWorld().getPlayers()) { - if (!player.getDisplayName().getString().startsWith("!")) { - players.add(player); - } - } - - return players; - } - - public List<PlayerEntity> getPlayersInRadius(ClientPlayerEntity referencePlayer, List<PlayerEntity> players, double radius) { - List<PlayerEntity> nearbyPlayers = new ArrayList<>(); - - // Iterate through all players and check their distance from the source player - for (PlayerEntity player : players) { - if (player != referencePlayer && player.squaredDistanceTo(referencePlayer) <= radius * radius) { - nearbyPlayers.add(player); - } - } - - return nearbyPlayers; - } - - public List<PlayerEntity> getNonBingoPlayers(List<PlayerEntity> players) { - List<PlayerEntity> nonBingoPlayers = new ArrayList<>(); - - // Iterate through all players and check their distance from the source player - for (PlayerEntity player : players) { - if (player.getCustomName().getString().contains("Ⓑ")) { - nonBingoPlayers.add(player); - } - } - return nonBingoPlayers; - } - - public List<String> getSplashLeechingPlayers() { - List<PlayerEntity> players = getAllPlayers(); - players.remove(MinecraftClient.getInstance().player); - return getPlayersInRadius(MinecraftClient.getInstance().player, getNonBingoPlayers(players), 5).stream().map((playerEntity -> playerEntity.getDisplayName().getString())).toList(); - } } diff --git a/fabric/src/main/java/de/hype/bbsentials/fabric/MCUtils.java b/fabric/src/main/java/de/hype/bbsentials/fabric/MCUtils.java index 346bdca..2b2b229 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/MCUtils.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/MCUtils.java @@ -2,22 +2,44 @@ package de.hype.bbsentials.fabric; import com.mojang.authlib.exceptions.AuthenticationException; import de.hype.bbsentials.common.chat.Chat; +import de.hype.bbsentials.common.client.BBsentials; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundEvent; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; +import java.util.regex.Pattern; public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { + public static boolean isBingo(PlayerEntity player) { + try { + return player.getDisplayName().getString().contains("Ⓑ"); + } catch (Exception e) { + return false; + } + } + + public static boolean isIronman(PlayerEntity player) { + try { + return player.getDisplayName().getString().contains("♻"); + } catch (Exception e) { + return false; + } + } + public boolean isWindowFocused() { return MinecraftClient.getInstance().isWindowFocused(); } @@ -34,10 +56,8 @@ public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { return MinecraftClient.getInstance().getSession().getUuidOrNull().toString(); } - public void playsound(String eventName) { - MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance - .master(SoundEvent.of(new Identifier(eventName)), 1.0F, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvent.of(new Identifier(eventName)), 1.0F, 1.0F)); } public int getPotTime() { @@ -79,49 +99,71 @@ public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { // Iterate through all players and check their distance from the source player for (PlayerEntity player : MinecraftClient.getInstance().player.getEntityWorld().getPlayers()) { if (!player.getDisplayName().getString().startsWith("!")) { - players.add(player); + if (Pattern.compile("\"color\":\"(?!white)\\w+\"").matcher(Text.Serializer.toJson(player.getDisplayName())).find()) { + players.add(player); + } } } return players; } - public List<PlayerEntity> getPlayersInRadius(ClientPlayerEntity referencePlayer, List<PlayerEntity> players, double radius) { - List<PlayerEntity> nearbyPlayers = new ArrayList<>(); - - // Iterate through all players and check their distance from the source player - for (PlayerEntity player : players) { - if (player != referencePlayer && player.squaredDistanceTo(referencePlayer) <= radius * radius) { - nearbyPlayers.add(player); - } - } + public boolean isInRadius(ClientPlayerEntity referencePlayer, PlayerEntity player, double radius) { + return player != referencePlayer && player.squaredDistanceTo(referencePlayer) <= radius * radius; + } - return nearbyPlayers; + public List<PlayerEntity> filterOut(List<PlayerEntity> players, Predicate<PlayerEntity> predicate) { + return players.stream().filter(predicate).toList(); } - public static boolean isBingo(PlayerEntity player) { - try { - return player.getDisplayName().getString().contains("Ⓑ"); - } catch (Exception e) { - return false; - } + private List<PlayerEntity> getSplashLeechingPlayersPlayerEntity() { + List<PlayerEntity> players = getAllPlayers(); + players.remove(MinecraftClient.getInstance().player); + return filterOut(filterOut(getAllPlayers(), (player -> !isBingo(player))), (player) -> isInRadius(MinecraftClient.getInstance().player, player, 5)); } - public static boolean isIronman(PlayerEntity player) { - try { - return player.getDisplayName().getString().contains("♻"); - } catch (Exception e) { - return false; - } + public List<String> getSplashLeechingPlayers() { + return getSplashLeechingPlayersPlayerEntity().stream().map((player -> player.getDisplayName().getString())).toList(); } - public List<PlayerEntity> filterOut(List<PlayerEntity> players, Predicate<PlayerEntity> predicate) { - return players.stream().filter(predicate).toList(); + public void registerSplashOverlay() { + HudRenderCallback.EVENT.register(this::renderSplashOverlay); } - public List<String> getSplashLeechingPlayers() { - List<PlayerEntity> players = getAllPlayers(); - players.remove(MinecraftClient.getInstance().player); - return getPlayersInRadius(MinecraftClient.getInstance().player, filterOut(getAllPlayers(), MCUtils::isBingo), 5).stream().map((playerEntity -> playerEntity.getDisplayName().getString())).toList(); + private void renderSplashOverlay(DrawContext drawContext, float v) { + if (!BBsentials.splashStatusUpdateListener.showSplashOverlay()) return; + // Set the starting position for the overlay + int x = 10; + int y = 10; + + // Render each string in the list + List<PlayerEntity> splashLeechers = getSplashLeechingPlayersPlayerEntity(); + List<PlayerEntity> allParticipiants = filterOut(getAllPlayers(), (player) -> isInRadius(MinecraftClient.getInstance().player, player, 5)); + List<PlayerEntity> musicPants = new ArrayList<>(); + List<Text> toDisplay = new ArrayList<>(); + toDisplay.add(Text.of("§6Total: " + allParticipiants.size() + " | Bingos: " + (allParticipiants.size() - splashLeechers.size()) + " | Leechers: " + splashLeechers.size())); + for (PlayerEntity participiant : allParticipiants) { + boolean hasPants = false; + for (ItemStack armorItem : participiant.getArmorItems()) { + try { + if (armorItem.getNbt().get("ExtraAttributes").asString().contains("MUSIC_PANTS")) { + musicPants.add(participiant); + hasPants = true; + } + } catch (Exception ignored) { + continue; + } + } + if (hasPants) { + String pantsAddition = Text.Serializer.toJson(Text.of("§4[♪]§ ")); + String normal = Text.Serializer.toJson(participiant.getDisplayName()); + toDisplay.add(Text.Serializer.fromJson("[" + pantsAddition + "," + normal + "]")); + } + } + toDisplay.addAll(splashLeechers.stream().map(PlayerEntity::getDisplayName).toList()); + for (Text text : toDisplay) { + drawContext.drawText(MinecraftClient.getInstance().textRenderer, text, x, y, 0xFFFFFF, true); + y += 10; // Adjust the vertical position for the next string + } } }
\ No newline at end of file diff --git a/fabric/src/main/java/de/hype/bbsentials/fabric/ModInitialiser.java b/fabric/src/main/java/de/hype/bbsentials/fabric/ModInitialiser.java index 2bb6aeb..ebdf7a6 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/ModInitialiser.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/ModInitialiser.java @@ -231,7 +231,10 @@ public class ModInitialiser implements ClientModInitializer { codes = new NumPadCodes(); BBsentials.init(); ClientPlayConnectionEvents.JOIN.register((a, b, c) -> { - BBsentials.onServerSwap(); + BBsentials.onServerJoin(); + }); + ClientPlayConnectionEvents.JOIN.register((a, b, c) -> { + BBsentials.onServerLeave(); }); } |