diff options
author | hackthetime <l4bg0jb7@duck.com> | 2023-12-14 12:57:03 +0100 |
---|---|---|
committer | hackthetime <l4bg0jb7@duck.com> | 2023-12-14 12:57:03 +0100 |
commit | d7bd502812504373a3d4e181fa4635145d1c10be (patch) | |
tree | d6a47a833e0739c0ae32b9a4a53284b2579f2d63 | |
parent | 1f90b12d47118f2a1132f12c39a2977e8c02fa77 (diff) | |
download | BBsentials-d7bd502812504373a3d4e181fa4635145d1c10be.tar.gz BBsentials-d7bd502812504373a3d4e181fa4635145d1c10be.tar.bz2 BBsentials-d7bd502812504373a3d4e181fa4635145d1c10be.zip |
a lot of prob not full working things
16 files changed, 423 insertions, 52 deletions
diff --git a/common/src/main/java/de/hype/bbsentials/common/client/SplashStatusUpdateListener.java b/common/src/main/java/de/hype/bbsentials/common/client/SplashStatusUpdateListener.java index 5ea2384..b89cfc1 100644 --- a/common/src/main/java/de/hype/bbsentials/common/client/SplashStatusUpdateListener.java +++ b/common/src/main/java/de/hype/bbsentials/common/client/SplashStatusUpdateListener.java @@ -4,6 +4,7 @@ import de.hype.bbsentials.common.communication.BBsentialConnection; import de.hype.bbsentials.common.mclibraries.EnvironmentCore; import de.hype.bbsentials.common.packets.packets.SplashNotifyPacket; import de.hype.bbsentials.common.packets.packets.SplashUpdatePacket; +import sun.java2d.pipe.TextRenderer; import java.util.concurrent.TimeUnit; @@ -24,6 +25,7 @@ public class SplashStatusUpdateListener implements Runnable { public void run() { BBsentials.splashLobby = true; int maxPlayerCount = EnvironmentCore.utils.getMaximumPlayerCount() - 5; + while (BBsentials.splashLobby) { if (!full&&(EnvironmentCore.utils.getPlayerCount() >= maxPlayerCount)) { newStatus = SplashUpdatePacket.STATUS_FULL; @@ -49,7 +51,6 @@ public class SplashStatusUpdateListener implements Runnable { connection.sendPacket(new SplashUpdatePacket(packet.splashId, status)); } } - public void setStatus(String newStatus) { this.newStatus = newStatus; if (newStatus.equals(SplashUpdatePacket.STATUS_SPLASHING)) { diff --git a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/EnumUtils.java b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/EnumUtils.java index df0ff63..2269339 100644 --- a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/EnumUtils.java +++ b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/EnumUtils.java @@ -1,7 +1,6 @@ package de.hype.bbsentials.common.constants.enviromentShared; import de.hype.bbsentials.common.constants.BBDisplayNameProvider; - import java.util.ArrayList; import java.util.Collection; import java.util.List; diff --git a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/Islands.java b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/Islands.java index d88d79b..dff2a97 100644 --- a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/Islands.java +++ b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/Islands.java @@ -4,21 +4,21 @@ import de.hype.bbsentials.common.constants.BBDisplayNameProvider; /** * List of all Islands - * <li>{@link #CRYSTAL_HOLLOWS} - * <li>{@link #CRIMSON_ISLE} - * <li>{@link #DEEP_CAVERNS} - * <li>{@link #DUNGEON} - * <li>{@link #DUNGEON_HUB} - * <li>{@link #DWARVEN_MINES} - * <li>{@link #GOLD_MINE} - * <li>{@link #HUB} - * <li>{@link #KUUDRA} - * <li>{@link #PRIVATE_ISLAND} - * <li>{@link #SPIDERS_DEN} - * <li>{@link #THE_END} - * <li>{@link #THE_FARMING_ISLANDS} - * <li>{@link #JERRYS_WORKSHOP} - * <li>{@link #THE_RIFT} + * {@link #CRYSTAL_HOLLOWS} + * {@link #CRIMSON_ISLE} + * {@link #DEEP_CAVERNS} + * {@link #DUNGEON} + * {@link #DUNGEON_HUB} + * {@link #DWARVEN_MINES} + * {@link #GOLD_MINE} + * {@link #HUB} + * {@link #KUUDRA} + * {@link #PRIVATE_ISLAND} + * {@link #SPIDERS_DEN} + * {@link #THE_END} + * {@link #THE_FARMING_ISLANDS} + * {@link #JERRYS_WORKSHOP} + * {@link #THE_RIFT} */ public enum Islands implements BBDisplayNameProvider { CRYSTAL_HOLLOWS("crystal_hollows", "Crystal Hollows"), diff --git a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/MiningEvents.java b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/MiningEvents.java index e364aab..6336fee 100644 --- a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/MiningEvents.java +++ b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/MiningEvents.java @@ -1,17 +1,17 @@ package de.hype.bbsentials.common.constants.enviromentShared; -// Mining Events - import de.hype.bbsentials.common.constants.BBDisplayNameProvider; +// Mining Events + /** * A List of all Mining Events - * <li>{@link #BETTER_TOGETHER} - * <li>{@link #DOUBLE_POWDER} - * <li>{@link #GONE_WITH_THE_WIND} - * <li>{@link #GOBLIN_RAID} - * <li>{@link #MITHRIL_GOURMAND} - * <li>{@link #RAFFLE} + * {@link #BETTER_TOGETHER} + * {@link #DOUBLE_POWDER} + * {@link #GONE_WITH_THE_WIND} + * {@link #GOBLIN_RAID} + * {@link #MITHRIL_GOURMAND} + * {@link #RAFFLE} */ public enum MiningEvents implements BBDisplayNameProvider { BETTER_TOGETHER("Better Together"), diff --git a/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/StatusConstants.java b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/StatusConstants.java new file mode 100644 index 0000000..288622d --- /dev/null +++ b/common/src/main/java/de/hype/bbsentials/common/constants/enviromentShared/StatusConstants.java @@ -0,0 +1,43 @@ +package de.hype.bbsentials.common.constants.enviromentShared; + +import de.hype.bbsentials.common.constants.BBDisplayNameProvider; + +import java.awt.*; + +public enum StatusConstants implements BBDisplayNameProvider { + DONEGOOD("Done", Color.GREEN), + DONEBAD("Done", Color.ORANGE), + WAITING("Waiting", Color.GREEN), + FULL("Full", Color.YELLOW), + ONGOING("Ongoing", Color.YELLOW), + OPEN("Open", Color.GREEN), + SPLASHING("Splashing", Color.YELLOW), + CLOSING("Closing", Color.ORANGE), + CLOSINGSOON("Closing Soon", Color.ORANGE), + LEAVINGSOON("Leaving Soon", Color.ORANGE), + CANCELED("Canceled", Color.RED), + CLOSED("Closed", Color.RED), + LEFT("Left", Color.ORANGE), + ; + String displayName; + Color color; + + StatusConstants(String displayName, Color color) { + this.displayName = displayName; + this.color = color; + } + + public String getDisplayName() { + return displayName; + } + + public Color getColor() { + return color; + } + + @Deprecated + @Override + public String toString() { + return displayName; + } +} diff --git a/common/src/main/java/de/hype/bbsentials/common/mclibraries/MCUtils.java b/common/src/main/java/de/hype/bbsentials/common/mclibraries/MCUtils.java index c007d31..dbd407f 100644 --- a/common/src/main/java/de/hype/bbsentials/common/mclibraries/MCUtils.java +++ b/common/src/main/java/de/hype/bbsentials/common/mclibraries/MCUtils.java @@ -1,6 +1,7 @@ package de.hype.bbsentials.common.mclibraries; import java.io.File; +import java.util.List; public interface MCUtils { boolean isWindowFocused(); @@ -15,4 +16,6 @@ public interface MCUtils { int getPotTime(); String mojangAuth(String serverId); + + List<String> getSplashLeechingPlayers(); } diff --git a/common/src/main/java/de/hype/bbsentials/common/packets/PacketManager.java b/common/src/main/java/de/hype/bbsentials/common/packets/PacketManager.java index 2cc672d..2a10960 100644 --- a/common/src/main/java/de/hype/bbsentials/common/packets/PacketManager.java +++ b/common/src/main/java/de/hype/bbsentials/common/packets/PacketManager.java @@ -1,5 +1,6 @@ package de.hype.bbsentials.common.packets; +import de.hype.bbsentials.common.client.SplashManager; import de.hype.bbsentials.common.communication.BBsentialConnection; import de.hype.bbsentials.common.packets.packets.*; @@ -40,6 +41,7 @@ public class PacketManager { packets.add(new Packet<>(SystemMessagePacket.class, connection::onSystemMessagePacket)); packets.add(new Packet<>(WelcomeClientPacket.class, connection::onWelcomePacket)); packets.add(new Packet<>(RequestAuthentication.class, connection::onRequestAuthentication)); + packets.add(new Packet<>(SplashUpdatePacket.class, SplashManager::updateSplash)); } // Method to handle a received packet diff --git a/common/src/main/java/de/hype/bbsentials/common/packets/packets/ChChestsUpdatePacket.java b/common/src/main/java/de/hype/bbsentials/common/packets/packets/ChChestsUpdatePacket.java new file mode 100644 index 0000000..2e015ac --- /dev/null +++ b/common/src/main/java/de/hype/bbsentials/common/packets/packets/ChChestsUpdatePacket.java @@ -0,0 +1,31 @@ +package de.hype.bbsentials.common.packets.packets; + +import de.hype.bbsentials.common.constants.enviromentShared.StatusConstants; +import de.hype.bbsentials.common.packets.AbstractPacket; + +import java.util.Date; +import java.util.List; + +/** + * Client and Server. Updates ChChests Status. + */ +public class ChChestsUpdatePacket extends AbstractPacket { + public final int lobbyId; + public final StatusConstants status; + public final List<String> playersStillIn; + public final Date closingTime; + + /** + * @param lobbyId id of the lobby + * @param status one of the following types: {@link StatusConstants#OPEN}, {@link StatusConstants#FULL}, {@link StatusConstants#LEAVINGSOON}, {@link StatusConstants#LEFT}, {@link StatusConstants#CLOSED} + * @param playersStillIn Players that were still in when leaving the lobby. + * @param closingTime assumed closingTime. + */ + public ChChestsUpdatePacket(int lobbyId, StatusConstants status, List<String> playersStillIn, Date closingTime) { + super(1, 1); //Min and Max supported Version + this.lobbyId = lobbyId; + this.status = status; + this.playersStillIn = playersStillIn; + this.closingTime = closingTime; + } +} diff --git a/fabric/src/main/java/de/hype/bbsentials/fabric/BBUtils.java b/fabric/src/main/java/de/hype/bbsentials/fabric/BBUtils.java index 5dca4ac..a47419d 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/BBUtils.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/BBUtils.java @@ -2,6 +2,7 @@ package de.hype.bbsentials.fabric; import com.google.common.collect.Lists; import de.hype.bbsentials.common.chat.Chat; +import de.hype.bbsentials.common.constants.enviromentShared.EnumUtils; import de.hype.bbsentials.common.constants.enviromentShared.Islands; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.PlayerListEntry; @@ -17,7 +18,7 @@ public class BBUtils implements de.hype.bbsentials.common.mclibraries.BBUtils { Chat.sendPrivateMessageToSelfError("Could not get Area data. Are you in Skyblock?"); } else { - return Islands.getByDisplayName(string.replace("Area: ", "").trim()); + return EnumUtils.getEnumByName(Islands.class, string.replace("Area: ", "").trim()); } } catch (Exception e) { } 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 e23d76b..f3a6d80 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/Commands.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/Commands.java @@ -246,6 +246,15 @@ public class Commands implements MCCommand { }) ); });/*requestpottimes*/ + event.register((dispatcher, registryAccess) -> { + dispatcher.register( + ClientCommandManager.literal("getLeecher") + .executes((context) -> { + Chat.sendPrivateMessageToSelfInfo("Leeching Players: " + String.join(", ", EnvironmentCore.mcUtils.getSplashLeechingPlayers())); + return 1; + }) + ); + });/*getLeecher*/ } if (hasAdmin) { event.register((dispatcher, registryAccess) -> { 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 e792ff9..92274a3 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/DebugThread.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/DebugThread.java @@ -1,10 +1,16 @@ 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; public class DebugThread implements de.hype.bbsentials.common.client.DebugThread { boolean doTest = false; + public static List<Object> store = new ArrayList<>(); @Override public void loop() { if (doTest) { @@ -25,4 +31,48 @@ public class DebugThread implements de.hype.bbsentials.common.client.DebugThread 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 26d2872..b87a54c 100644 --- a/fabric/src/main/java/de/hype/bbsentials/fabric/MCUtils.java +++ b/fabric/src/main/java/de/hype/bbsentials/fabric/MCUtils.java @@ -4,13 +4,18 @@ import com.mojang.authlib.exceptions.AuthenticationException; import de.hype.bbsentials.common.chat.Chat; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.network.PlayerListEntry; 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.sound.SoundEvent; import net.minecraft.util.Identifier; import java.io.File; +import java.util.ArrayList; +import java.util.List; public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { public boolean isWindowFocused() { @@ -57,14 +62,117 @@ public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { } catch (AuthenticationException e) { try { Thread.sleep(1000); - }catch (Exception ignored){ + } catch (Exception ignored) { } - if (tries==0){ - Chat.sendPrivateMessageToSelfError("Could not authenticate at mojang: "+e.getMessage()); + if (tries == 0) { + Chat.sendPrivateMessageToSelfError("Could not authenticate at mojang: " + e.getMessage()); e.printStackTrace(); } } } return serverId; } -} + + 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<String> getBingoPlayers() { + List<String> bingoPlayers = new ArrayList<>(); + + // Iterate through all players and check their distance from the source player + for (PlayerListEntry entry : MinecraftClient.getInstance().player.networkHandler.getPlayerList()) { + try { + if (entry.getProfile().getName().startsWith("!")) { + String customName = entry.getDisplayName().getString(); + if (customName.contains("Ⓑ")) { + bingoPlayers.add(customName.trim().split(" ")[1]); + } + } + } catch (Exception ignored) { + } + + } + return bingoPlayers; + } + + public List<String> getIronmanPlayers() { + List<String> ironmanPlayers = new ArrayList<>(); + + // Iterate through all players and check their distance from the source player + for (PlayerListEntry entry : MinecraftClient.getInstance().player.networkHandler.getPlayerList()) { + try { + if (entry.getProfile().getName().startsWith("!")) { + String customName = entry.getDisplayName().getString(); + if (customName.contains("♻")) { + ironmanPlayers.add(customName.trim().split(" ")[1]); + } + } + } catch (Exception ignored) { + } + + } + return ironmanPlayers; + } + + public List<PlayerEntity> onlyFromList(List<PlayerEntity> players, List<String> usernames) { + ArrayList<PlayerEntity> filtered = new ArrayList<>(); + for (PlayerEntity player : players) { + String playerUsername = player.getGameProfile().getName(); + for (int i = 0; i < usernames.size(); i++) { + if (playerUsername.equals(usernames.get(i))) { + usernames.remove(i); + filtered.add(player); + } + } + } + return filtered; + } + + public List<PlayerEntity> filterOut(List<PlayerEntity> players, List<String> usernames) { + ArrayList<PlayerEntity> filtered = new ArrayList<>(); + for (PlayerEntity player : players) { + String playerUsername = player.getGameProfile().getName(); + boolean toAdd = true; + for (int i = 0; i < usernames.size(); i++) { + if (playerUsername.equals(usernames.get(i))) { + toAdd = false; + usernames.remove(i); + break; + } + } + if (toAdd) { + filtered.add(player); + } + } + return filtered; + } + + public List<String> getSplashLeechingPlayers() { + List<PlayerEntity> players = getAllPlayers(); + players.remove(MinecraftClient.getInstance().player); + return getPlayersInRadius(MinecraftClient.getInstance().player, filterOut(getAllPlayers(), getBingoPlayers()), 5).stream().map((playerEntity -> playerEntity.getDisplayName().getString())).toList(); + } +}
\ No newline at end of file diff --git a/forge/src/main/java/de/hype/bbsentials/forge/BBUtils.java b/forge/src/main/java/de/hype/bbsentials/forge/BBUtils.java index e50ef3b..97845c6 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/BBUtils.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/BBUtils.java @@ -3,6 +3,7 @@ package de.hype.bbsentials.forge; import com.google.common.collect.Lists; import com.mojang.realmsclient.dto.PlayerInfo; import de.hype.bbsentials.common.chat.Chat; +import de.hype.bbsentials.common.constants.enviromentShared.EnumUtils; import de.hype.bbsentials.common.constants.enviromentShared.Islands; import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetworkPlayerInfo; @@ -19,7 +20,7 @@ public class BBUtils implements de.hype.bbsentials.common.mclibraries.BBUtils { Chat.sendPrivateMessageToSelfError("Could not get Area data. Are you in Skyblock?"); } else { - return Islands.getByDisplayName(string.replace("Area: ", "").trim()); + return EnumUtils.getEnumByName(Islands.class, string.replace("Area: ", "").trim()); } } catch (Exception e) { } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/MCUtils.java b/forge/src/main/java/de/hype/bbsentials/forge/MCUtils.java index 251b20b..8bb02f0 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/MCUtils.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/MCUtils.java @@ -3,14 +3,18 @@ package de.hype.bbsentials.forge; import com.mojang.authlib.exceptions.AuthenticationException; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.Display; import java.io.File; -import java.math.BigInteger; -import java.util.Random; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { public boolean isWindowFocused() { @@ -58,4 +62,109 @@ public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { return serverId; } + public List<EntityPlayer> getAllPlayers() { + List<EntityPlayer> players = new ArrayList<>(); + + // Iterate through all players on the server + for (EntityPlayer player : Minecraft.getMinecraft().thePlayer.getEntityWorld().playerEntities) { + if (!player.getDisplayNameString().startsWith("!")) { + players.add(player); + } + } + + return players; + } + + public List<EntityPlayer> getPlayersInRadius(EntityPlayer referencePlayer, List<EntityPlayer> players, double radius) { + List<EntityPlayer> nearbyPlayers = new ArrayList<>(); + + // Iterate through all players and check their distance from the reference player + for (EntityPlayer player : players) { + if (player != referencePlayer && player.getDistanceSq(referencePlayer.posX, referencePlayer.posY, referencePlayer.posZ) <= radius * radius) { + nearbyPlayers.add(player); + } + } + + return nearbyPlayers; + } + + + public List<String> getBingoPlayers() { + List<String> bingoPlayers = new ArrayList<>(); + + // Iterate through all players and check their distance from the source player + for (Iterator<NetworkPlayerInfo> it = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap().stream().iterator(); it.hasNext(); ) { + NetworkPlayerInfo entry = it.next(); + try { + if (entry.getGameProfile().getName().startsWith("!")) { + String customName = entry.getDisplayName().getUnformattedText(); + if (customName.contains("Ⓑ")) { + bingoPlayers.add(customName.trim().split(" ")[1]); + } + } + } catch (Exception ignored) { + } + + } + return bingoPlayers; + } + + public List<String> getIronmanPlayers() { + List<String> ironmanPlayers = new ArrayList<>(); + + // Iterate through all players and check their distance from the source player + for (Iterator<NetworkPlayerInfo> it = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap().stream().iterator(); it.hasNext(); ) { + NetworkPlayerInfo entry = it.next(); + try { + if (entry.getGameProfile().getName().startsWith("!")) { + String customName = entry.getDisplayName().getUnformattedText(); + if (customName.contains("♻")) { + ironmanPlayers.add(customName.trim().split(" ")[1]); + } + } + } catch (Exception ignored) { + } + + } + return ironmanPlayers; + } + + public List<EntityPlayer> onlyFromList(List<EntityPlayer> players, List<String> usernames) { + ArrayList<EntityPlayer> filtered = new ArrayList<>(); + for (EntityPlayer player : players) { + String playerUsername = player.getGameProfile().getName(); + for (int i = 0; i < usernames.size(); i++) { + if (playerUsername.equals(usernames.get(i))) { + usernames.remove(i); + filtered.add(player); + } + } + } + return filtered; + } + + public List<EntityPlayer> filterOut(List<EntityPlayer> players, List<String> usernames) { + ArrayList<EntityPlayer> filtered = new ArrayList<>(); + for (EntityPlayer player : players) { + String playerUsername = player.getGameProfile().getName(); + boolean toAdd = true; + for (int i = 0; i < usernames.size(); i++) { + if (playerUsername.equals(usernames.get(i))) { + toAdd = false; + usernames.remove(i); + break; + } + } + if (toAdd) { + filtered.add(player); + } + } + return filtered; + } + + public List<String> getSplashLeechingPlayers() { + List<EntityPlayer> players = getAllPlayers(); + players.remove(Minecraft.getMinecraft().thePlayer); + return getPlayersInRadius(Minecraft.getMinecraft().thePlayer, filterOut(getAllPlayers(), getBingoPlayers()), 5).stream().map((playerEntity -> playerEntity.getDisplayName().getFormattedText())).collect(Collectors.toList()); + } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java b/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java index 4d50a4e..e0598ff 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java @@ -4,43 +4,35 @@ import com.google.gson.annotations.Expose; import de.hype.bbsentials.forge.client.categories.FirstCategory; import io.github.moulberry.moulconfig.Config; import io.github.moulberry.moulconfig.annotations.Category; -import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown; -import io.github.moulberry.moulconfig.annotations.ConfigOption; -import io.github.moulberry.moulconfig.gui.GuiScreenElementWrapper; -import io.github.moulberry.moulconfig.gui.MoulConfigEditor; -import io.github.moulberry.moulconfig.processor.BuiltinMoulConfigGuis; -import io.github.moulberry.moulconfig.processor.ConfigProcessorDriver; -import io.github.moulberry.moulconfig.processor.MoulConfigProcessor; import net.minecraft.client.Minecraft; -import net.minecraftforge.common.config.ConfigCategory; +import net.minecraft.util.ChatComponentText; import static de.hype.bbsentials.common.client.BBsentials.config; public class MoulConfig extends Config { - MoulConfigEditor<MoulConfig> editor; - MoulConfigProcessor<MoulConfig> processor; @Expose @Category(name = "First Category", desc = "This is the first category.") public FirstCategory firstCategory = new FirstCategory(); - public MoulConfig() { - processor = new MoulConfigProcessor<>(this); - editor = new MoulConfigEditor<>(processor); - BuiltinMoulConfigGuis.addProcessors(processor); - ConfigProcessorDriver.processConfig(MoulConfig.class, this, processor); - } - @Override public String getTitle() { return "BBsentials " + de.hype.bbsentials.common.client.Config.apiVersion; } + @Override public void saveNow() { config.save(); } - public void openConfigGui() { - Minecraft.getMinecraft().displayGuiScreen(new GuiScreenElementWrapper(editor)); + @Override + public void executeRunnable(int runnableId) { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("Just executed runnableId " + runnableId)); + } + + @Override + public boolean shouldAutoFocusSearchbar() { + return true; } + } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfigManager.java b/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfigManager.java new file mode 100644 index 0000000..07491cd --- /dev/null +++ b/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfigManager.java @@ -0,0 +1,22 @@ +package de.hype.bbsentials.forge.client; + +import io.github.moulberry.moulconfig.gui.MoulGuiOverlayEditor; +import io.github.moulberry.moulconfig.processor.BuiltinMoulConfigGuis; +import io.github.moulberry.moulconfig.processor.ConfigProcessorDriver; +import io.github.moulberry.moulconfig.processor.MoulConfigProcessor; +import net.minecraft.client.Minecraft; + +public class MoulConfigManager { + static MoulConfig moulConfig = new MoulConfig(); + MoulConfigProcessor<MoulConfig> testConfigMoulConfigProcessor; + + public MoulConfigManager() { + testConfigMoulConfigProcessor = new MoulConfigProcessor<>(moulConfig); + BuiltinMoulConfigGuis.addProcessors(testConfigMoulConfigProcessor); + ConfigProcessorDriver.processConfig(moulConfig.getClass(), moulConfig, testConfigMoulConfigProcessor); + } + + public void openConfigGui() { + Minecraft.getMinecraft().displayGuiScreen(new MoulGuiOverlayEditor(testConfigMoulConfigProcessor)); + } +} |