diff options
author | HacktheTime <l4bg0jb7@duck.com> | 2023-10-14 12:10:15 +0200 |
---|---|---|
committer | HacktheTime <l4bg0jb7@duck.com> | 2023-10-14 12:10:15 +0200 |
commit | 77fb80356b42260a95610aa5971d2b03d8d30e1d (patch) | |
tree | 6d9892029e1f682e357811e61f3632ade2615aec /forge | |
parent | 764cd84919c5b30a6bb0e6ec2e32feba07633ebf (diff) | |
download | BBsentials-77fb80356b42260a95610aa5971d2b03d8d30e1d.tar.gz BBsentials-77fb80356b42260a95610aa5971d2b03d8d30e1d.tar.bz2 BBsentials-77fb80356b42260a95610aa5971d2b03d8d30e1d.zip |
more changes
Diffstat (limited to 'forge')
29 files changed, 311 insertions, 1650 deletions
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 a6b2a3e..3acf95e 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/BBUtils.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/BBUtils.java @@ -2,34 +2,33 @@ package de.hype.bbsentials.forge; import com.google.common.collect.Lists; import de.hype.bbsentials.common.constants.enviromentShared.Islands; -import de.hype.bbsentials.forge.chat.Chat; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.PlayerListEntry; -import java.util.Iterator; import java.util.List; public class BBUtils implements de.hype.bbsentials.common.mclibraries.BBUtils { public Islands getCurrentIsland() { - try { - String string = MinecraftClient.getInstance().player.networkHandler.getPlayerListEntry("!C-b").getDisplayName().getString(); - if (!string.startsWith("Area: ")) { - Chat.sendPrivateMessageToSelfError("Could not get Area data. Are you in Skyblock?"); - } - else { - return Islands.getByDisplayName(string.replace("Area: ", "").trim()); - } - } catch (Exception e) { - } - return null; +// try { +// String string = MinecraftClient.getInstance().player.networkHandler.getPlayerListEntry("!C-b").getDisplayName().getString(); +// if (!string.startsWith("Area: ")) { +// Chat.sendPrivateMessageToSelfError("Could not get Area data. Are you in Skyblock?"); +// } +// else { +// return Islands.getByDisplayName(string.replace("Area: ", "").trim()); +// } +// } catch (Exception e) { +// } +// return null; + return Islands.PRIVATE_ISLAND; } public int getPlayerCount() { - return Integer.parseInt(MinecraftClient.getInstance().player.networkHandler.getPlayerListEntry("!B-a").getDisplayName().getString().trim().replaceAll("[^0-9]", "")); +// return Integer.parseInt(MinecraftClient.getInstance().player.networkHandler.getPlayerListEntry("!B-a").getDisplayName().getString().trim().replaceAll("[^0-9]", "")); + return 0; } public String getServer() { - return MinecraftClient.getInstance().player.networkHandler.getPlayerListEntry("!C-c").getDisplayName().getString().replace("Server:", "").trim(); +// return MinecraftClient.getInstance().player.networkHandler.getPlayerListEntry("!C-c").getDisplayName().getString().replace("Server:", "").trim(); + return "mini0b"; } public boolean isOnMegaServer() { @@ -53,14 +52,14 @@ public class BBUtils implements de.hype.bbsentials.common.mclibraries.BBUtils { public List<String> getPlayers() { List<String> list = Lists.newArrayList(); - Iterator var2 = MinecraftClient.getInstance().getNetworkHandler().getPlayerList().iterator(); - while (var2.hasNext()) { - PlayerListEntry playerListEntry = (PlayerListEntry) var2.next(); - String playerName = playerListEntry.getProfile().getName(); - if (!playerName.startsWith("!")) { - list.add(playerName); - } - } +// Iterator var2 = MinecraftClient.getInstance().getNetworkHandler().getPlayerList().iterator(); +// while (var2.hasNext()) { +// PlayerListEntry playerListEntry = (PlayerListEntry) var2.next(); +// String playerName = playerListEntry.getProfile().getName(); +// if (!playerName.startsWith("!")) { +// list.add(playerName); +// } +// } return list; } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/Command2xPowder.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/Command2xPowder.java index 8044991..0914bad 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/Command2xPowder.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/Command2xPowder.java @@ -1,9 +1,9 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; -import static de.hype.bbsentials.forge.client.BBsentials.bbserver; +import static de.hype.bbsentials.common.client.BBsentials.connection; public class Command2xPowder extends CommandBase { @@ -20,7 +20,7 @@ public class Command2xPowder extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { - bbserver.sendMessage("?dwevent 2xpowder"); + connection.sendMessage("?dwevent 2xpowder"); } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBAnnounce.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBAnnounce.java index 3d2afb7..032c599 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBAnnounce.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBAnnounce.java @@ -1,6 +1,6 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBBServer.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBServer.java index 7c94a27..6150b6e 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBBServer.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBServer.java @@ -1,5 +1,6 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; +import de.hype.bbsentials.common.client.BBsentials; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; @@ -29,7 +30,7 @@ public class CommandBBServer extends CommandBase { BBsentials.connectToBBserver(); } else { - BBsentials.bbserver.sendMessage(message); + BBsentials.connection.sendMessage(message); } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBBan.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBan.java index 15d99b7..09efc8b 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBBan.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBan.java @@ -1,6 +1,7 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; + +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBC.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBC.java index 0b46507..08f9bee 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBC.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBC.java @@ -1,6 +1,7 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; + +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBMute.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBMute.java index 3fd6390..0dab562 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBMute.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBMute.java @@ -1,6 +1,7 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; + +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBetterTogether.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBetterTogether.java index 78f20f8..fb3d647 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBetterTogether.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBetterTogether.java @@ -1,9 +1,9 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; -import static de.hype.bbsentials.forge.client.BBsentials.bbserver; +import static de.hype.bbsentials.common.client.BBsentials.connection; public class CommandBetterTogether extends CommandBase { @@ -20,7 +20,7 @@ public class CommandBetterTogether extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { - bbserver.sendMessage("?dwevent bettertogether"); + connection.sendMessage("?dwevent bettertogether"); } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBingoChat.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBingoChat.java index 655cfdb..6967259 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandBingoChat.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBingoChat.java @@ -1,6 +1,7 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; + +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandChChest.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandChChest.java index daaa1f3..3914d03 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandChChest.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandChChest.java @@ -1,12 +1,12 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; -import static de.hype.bbsentials.forge.client.BBsentials.bbserver; +import static de.hype.bbsentials.common.client.BBsentials.connection; public class CommandChChest extends CommandBase { @@ -36,9 +36,9 @@ public class CommandChChest extends CommandBase { String contactWay = args[4]; String combinedString = "?chchest " + item + " " + x + " " + y + " " + z + " " + contactWay; - bbserver.sendMessage(combinedString); + connection.sendMessage(combinedString); } catch (Exception e) { - Chat.sendPrivateMessageToSelf("§cYour coords were invalid."); + Chat.sendPrivateMessageToSelfError("Your coords were invalid."); } } @Override diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandGoblinRaid.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandGoblinRaid.java index bb7d276..2b0ec28 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandGoblinRaid.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandGoblinRaid.java @@ -1,9 +1,9 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; -import static de.hype.bbsentials.forge.client.BBsentials.bbserver; +import static de.hype.bbsentials.common.client.BBsentials.connection; public class CommandGoblinRaid extends CommandBase { @@ -20,7 +20,7 @@ public class CommandGoblinRaid extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { - bbserver.sendMessage("?dwevent goblinraid"); + connection.sendMessage("?dwevent goblinraid"); } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandGoneWithTheWind.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandGoneWithTheWind.java index 602e422..c079ed1 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandGoneWithTheWind.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandGoneWithTheWind.java @@ -1,9 +1,9 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; -import static de.hype.bbsentials.forge.client.BBsentials.bbserver; +import static de.hype.bbsentials.common.client.BBsentials.connection; public class CommandGoneWithTheWind extends CommandBase { @@ -20,7 +20,7 @@ public class CommandGoneWithTheWind extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { - bbserver.sendMessage("?dwevent gonewiththewind"); + connection.sendMessage("?dwevent gonewiththewind"); } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandRaffle.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandRaffle.java index 235c538..4e17c42 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandRaffle.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandRaffle.java @@ -1,9 +1,9 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; -import static de.hype.bbsentials.forge.client.BBsentials.bbserver; +import static de.hype.bbsentials.common.client.BBsentials.connection; public class CommandRaffle extends CommandBase { @@ -20,7 +20,7 @@ public class CommandRaffle extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { - bbserver.sendMessage("?dwevent raffle"); + connection.sendMessage("?dwevent raffle"); } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandSplashAnnounce.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandSplashAnnounce.java index 041d0fc..52e4167 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandSplashAnnounce.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandSplashAnnounce.java @@ -1,6 +1,6 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; -import de.hype.bbsentials.forge.chat.Chat; +import de.hype.bbsentials.common.chat.Chat; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.command.NumberInvalidException; @@ -28,7 +28,7 @@ public class CommandSplashAnnounce extends CommandBase { try { hub_Number = parseInt(args[0], 1, 28); } catch (NumberInvalidException e) { - Chat.sendPrivateMessageToSelf("§cInvalid hub number"); + Chat.sendPrivateMessageToSelfError("§cInvalid hub number"); } String location = args[1]; String message = ""; diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandsOLD.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandsOLD.java index d42970f..349013d 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Commands/CommandsOLD.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandsOLD.java @@ -1,8 +1,9 @@ -package de.hype.bbsentials.forge.client.Commands; +package de.hype.bbsentials.forge.CommandImplementations; +import de.hype.bbsentials.common.client.BBsentials; import net.minecraftforge.client.ClientCommandHandler; -import static de.hype.bbsentials.forge.client.BBsentials.getConfig; +import static de.hype.bbsentials.common.client.BBsentials.getConfig; public class CommandsOLD { @@ -17,12 +18,12 @@ public class CommandsOLD { ClientCommandHandler.instance.registerCommand(new CommandBC()); ClientCommandHandler.instance.registerCommand(new CommandBingoChat()); if (getConfig().bbsentialsRoles != null) { - if (getConfig().bbsentialsRoles.contains("mod")) { + if (getConfig().hasBBRoles("mod")) { ClientCommandHandler.instance.registerCommand(new CommandBAnnounce()); ClientCommandHandler.instance.registerCommand(new CommandBMute()); ClientCommandHandler.instance.registerCommand(new CommandBBan()); } - if (getConfig().bbsentialsRoles.contains("splasher")) { + if (getConfig().hasBBRoles("splasher")) { ClientCommandHandler.instance.registerCommand(new CommandSplashAnnounce()); } else { @@ -31,7 +32,7 @@ public class CommandsOLD { } public void sendCommand(String message) { - BBsentials.bbserver.sendCommand(message); + BBsentials.connection.sendCommand(message); } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/Commands.java b/forge/src/main/java/de/hype/bbsentials/forge/Commands.java index a5af004..cf6083b 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/Commands.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/Commands.java @@ -1,312 +1,189 @@ package de.hype.bbsentials.forge; -import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.arguments.IntegerArgumentType; -import com.mojang.brigadier.arguments.StringArgumentType; import de.hype.bbsentials.common.client.BBsentials; -import de.hype.bbsentials.common.constants.enviromentShared.ChChestItems; -import de.hype.bbsentials.common.constants.enviromentShared.MiningEvents; import de.hype.bbsentials.common.mclibraries.EnvironmentCore; import de.hype.bbsentials.common.mclibraries.MCCommand; import de.hype.bbsentials.common.packets.AbstractPacket; -import de.hype.bbsentials.forge.chat.Chat; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; -import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; -import net.fabricmc.fabric.api.event.Event; -import net.minecraft.command.CommandSource; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import de.hype.bbsentials.common.packets.packets.SplashNotifyPacket; +import de.hype.bbsentials.forge.client.CommandBBI; +import net.minecraftforge.client.ClientCommandHandler; public class Commands implements MCCommand { - Event<ClientCommandRegistrationCallback> event = ClientCommandRegistrationCallback.EVENT; - public void registerMain(){ - event.register((dispatcher, registryAccess) -> { - dispatcher.register(ClientCommandManager.literal("creport") - .then(ClientCommandManager.argument("Player_Name", StringArgumentType.string()) - .executes((context) -> { - String playerName = StringArgumentType.getString(context, "Player_Name"); - BBsentials.getConfig().sender.addSendTask("/creport " + playerName, 0); - BBsentials.getConfig().addReported(playerName); - return 1; - }))); - });//creport helper → no double report during same launch - event.register((dispatcher, registryAccess) -> { - miningEvent(dispatcher, "goblinraid", MiningEvents.GOBLIN_RAID); - });/*goblinraid*/ - event.register((dispatcher, registryAccess) -> { - miningEvent(dispatcher, "2xpowder", MiningEvents.DOUBLE_POWDER); - });/*2xpowder*/ - event.register((dispatcher, registryAccess) -> { - miningEvent(dispatcher, "bettertogether", MiningEvents.BETTER_TOGETHER); - });/*b2g*/ - event.register((dispatcher, registryAccess) -> { - miningEvent(dispatcher, "raffle", MiningEvents.RAFFLE); - });/*raffle*/ - event.register((dispatcher, registryAccess) -> { - miningEvent(dispatcher, "gonewiththewind", MiningEvents.GONE_WITH_THE_WIND); - });/*gonewiththewind*/ - event.register((dispatcher, registryAccess) -> { - miningEvent(dispatcher, "mithrilgourmand", MiningEvents.MITHRIL_GOURMAND); - });/*gonewiththewind*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register(ClientCommandManager.literal("chchest") - .then(ClientCommandManager.argument("Item", StringArgumentType.string()) - .suggests((context, builder) -> { - String[] items = new String[]{"PrehistoricEgg", "Pickonimbus2000", "ElectronTransmitter", "FTX3070", "RobotronReflector", "ControlSwitch", "SyntheticHeart", "SuperliteMotor", "BlueGoblinEgg", "YellowGoblinEgg", "FlawlessAmberGemstone", "FlawlessJadeGemstone", "FlawlessSapphireGemstone", "FlawlessRubyGemstone", "FlawlessAmethystGemstone", "JungleHeart", "FlawlessTopazGemstone", "FlawlessJasperGemstone"}; - String input = builder.getRemaining().toLowerCase(); - int lastSemicolonIndex = input.lastIndexOf(";"); - List<String> suggestions = new ArrayList<>(); - if (lastSemicolonIndex >= 0) { - String inputBeforeSemicolon = input.substring(0, lastSemicolonIndex + 1); // Include the semicolon - - for (String item : items) { - suggestions.add(inputBeforeSemicolon + item); - } - } - return CommandSource.suggestMatching(suggestions, builder); - }) - .then(ClientCommandManager.argument("X", IntegerArgumentType.integer()) - .then(ClientCommandManager.argument("Y", IntegerArgumentType.integer()) - .then(ClientCommandManager.argument("Z", IntegerArgumentType.integer()) - .then(ClientCommandManager.argument("ContactWay", StringArgumentType.string()) - .suggests(((context, builder) -> { - return CommandSource.suggestMatching(new String[]{"\"/msg " + BBsentials.getConfig().getUsername() + " bb:party me\"", "\"/p join " + BBsentials.config.getUsername() + "\""}, builder); - })) - .executes((context) -> { - String item = StringArgumentType.getString(context, "Item"); - int x = IntegerArgumentType.getInteger(context, "X"); - int y = IntegerArgumentType.getInteger(context, "Y"); - int z = IntegerArgumentType.getInteger(context, "Z"); - String contactWay = StringArgumentType.getString(context, "ContactWay"); - - sendPacket(new ChChestPacket("", ChChestItems.getItem(item.split(";")), x + " " + y + " " + z, contactWay, "")); - return 1; - } - ) - ) - ) - ) - ) - ) - ); - });/*chchest*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("bc") - .then(ClientCommandManager.argument("Message to Bingo Chat", StringArgumentType.greedyString()) - .executes((context) -> { - String message = StringArgumentType.getString(context, "Message to Bingo Chat"); - sendPacket(new BingoChatMessagePacket("", "", message, 0)); - return 1; - }) - ) - ); - });/*BincoChatShort*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("bingochat") - .then(ClientCommandManager.argument("Message to Bingo Chat", StringArgumentType.greedyString()) - .executes((context) -> { - String message = StringArgumentType.getString(context, "Message to Bingo Chat"); - sendPacket(new BingoChatMessagePacket("", "", message, 0)); - return 1; - }) - ) - ); - });/*BingoChatLong*/ + public static <T extends AbstractPacket> void sendPacket(T packet) { + BBsentials.connection.sendPacket(packet); } - public void registerRoleRequired(boolean hasDev, boolean hasAdmin, boolean hasMod, boolean hasSplasher, boolean hasBeta, boolean hasMiningEvents, boolean hasChChest) { - if (hasMod) { - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("bannounce") - .then(ClientCommandManager.argument("message", StringArgumentType.greedyString()) - .executes((context) -> { - String message = StringArgumentType.getString(context, "message"); - sendPacket(new BroadcastMessagePacket("","",message)); - return 1; - }) - ) - ); - });/*bAnnounce*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register(ClientCommandManager.literal("bmute") - .then(ClientCommandManager.argument("userId/mcusername", StringArgumentType.string()) - .then(ClientCommandManager.argument("[Duration(d/h/m/s) | 0 forever]", StringArgumentType.string()) - .then(ClientCommandManager.argument("reason", StringArgumentType.greedyString()) - .executes((context) -> { - String identification = StringArgumentType.getString(context, "userId/mcusername"); - String duration = StringArgumentType.getString(context, "[Duration(d/h/m/s) | 0 forever]"); - String reason = StringArgumentType.getString(context, "reason"); - int userId = -1; - String mcusername = ""; - if (identification.replaceAll("[\\d]", "").trim().isEmpty()) { - userId = Integer.parseInt(identification); - } - else { - mcusername = identification; - } - sendPacket(new PunishUserPacket(PunishUserPacket.PUNISHMENT_TYPE_MUTE, userId, mcusername, duration, reason)); - return 1; - }) - ) - ) - ) - ); - });/*bmute*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register(ClientCommandManager.literal("bban") - .then(ClientCommandManager.argument("userId/mcusername", StringArgumentType.string()) - .then(ClientCommandManager.argument("[Duration(d/h/m/s) | 0 forever]", StringArgumentType.string()) - .then(ClientCommandManager.argument("reason", StringArgumentType.greedyString()) - .executes((context) -> { - String identification = StringArgumentType.getString(context, "userId/mcusername"); - String duration = StringArgumentType.getString(context, "[Duration(d/h/m/s) | 0 forever]"); - String reason = StringArgumentType.getString(context, "reason"); - int userId = -1; - String mcusername = ""; - if (identification.replaceAll("[\\d]", "").trim().isEmpty()) { - userId = Integer.parseInt(identification); - } - else { - mcusername = identification; - } - sendPacket(new PunishUserPacket(PunishUserPacket.PUNISHMENT_TYPE_BAN, userId, mcusername, duration, reason)); - return 1; - }) - ) - ) - ) - ); - });/*ban*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register(ClientCommandManager.literal("bgetinfo") - .then(ClientCommandManager.argument("userId/mcusername", StringArgumentType.string()) - .executes((context) -> { - String identification = StringArgumentType.getString(context, "userId/mcusername"); - sendPacket(new InternalCommandPacket(InternalCommandPacket.GET_USER_INFO, new String[]{identification})); - return 1; - }) - ) - ); - });/*getInfo*/ - } - if (hasSplasher) { - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("splashAnnounce") - .then(ClientCommandManager.argument("Hub", IntegerArgumentType.integer(1, 28)) - .then(ClientCommandManager.argument("location", StringArgumentType.string()) - .suggests((context, builder) -> { - return CommandSource.suggestMatching(new String[]{"kat", "bea", "guild-house"}, builder); - }) - .then(ClientCommandManager.argument("lasswaste", StringArgumentType.string()) - .suggests((context, builder) -> { - return CommandSource.suggestMatching(new String[]{"true", "false"}, builder); - }) - .then(ClientCommandManager.argument("extramessage", StringArgumentType.greedyString()) - .executes((context) -> { - int hub = IntegerArgumentType.getInteger(context, "Hub"); - String extramessage = StringArgumentType.getString(context, "extramessage"); - String location = StringArgumentType.getString(context, "location"); - boolean lessWaste = Boolean.parseBoolean(StringArgumentType.getString(context, "lasswaste")); - splashAnnounce(hub, location, extramessage, lessWaste); - return 1; - }) - ) - .executes((context) -> { - int hub = IntegerArgumentType.getInteger(context, "Hub"); - String location = StringArgumentType.getString(context, "location"); - boolean lessWaste = Boolean.parseBoolean(StringArgumentType.getString(context, "lasswaste")); - splashAnnounce(hub, location, "", lessWaste); - return 1; - }) - )) - .executes((context) -> { - int hub = IntegerArgumentType.getInteger(context, "Hub"); - String location = "bea"; - splashAnnounce(hub, location, "", true); - return 1; - }) - - ) - ); - });/*SplashAnnounce*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("requestpottimes") - .executes((context) -> { - sendPacket(new InternalCommandPacket(InternalCommandPacket.REQUEST_POT_DURATION, new String[0])); - return 1; - }) - ); - });/*requestpottimes*/ - } - if (hasAdmin) { - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("bshutdown") - .then(ClientCommandManager.argument("Reason", StringArgumentType.greedyString()) - .suggests((context, builder) -> { - return CommandSource.suggestMatching(new String[]{"Emergency Shutdown", "System Shutdown", "Other"}, builder); - }) - .executes((context) -> { - String reason = StringArgumentType.getString(context, "Reason"); - sendPacket(new InternalCommandPacket(InternalCommandPacket.SHUTDOWN_SERVER, new String[]{reason})); - return 1; - }) - ) - ); - });/*BBShutdown*/ - event.register((dispatcher, registryAccess) -> { - dispatcher.register( - ClientCommandManager.literal("bsetmotd") - .then(ClientCommandManager.argument("Message", StringArgumentType.greedyString()) - .suggests((context, builder) -> { - return CommandSource.suggestMatching(new String[]{""}, builder); - }) - .executes((context) -> { - String message = StringArgumentType.getString(context, "Message").trim(); - sendPacket(new InternalCommandPacket(InternalCommandPacket.SET_MOTD, new String[]{message})); - return 1; - }) - ) - ); - });/*BBServerMotd*/ - } + public void registerMain() { + ClientCommandHandler.instance.registerCommand(new CommandBBI()); +// event.register((dispatcher, registryAccess) -> { +// miningEvent(dispatcher, "goblinraid", MiningEvents.GOBLIN_RAID); +// });/*goblinraid*/ +// event.register((dispatcher, registryAccess) -> { +// miningEvent(dispatcher, "2xpowder", MiningEvents.DOUBLE_POWDER); +// });/*2xpowder*/ +// event.register((dispatcher, registryAccess) -> { +// miningEvent(dispatcher, "bettertogether", MiningEvents.BETTER_TOGETHER); +// });/*b2g*/ +// event.register((dispatcher, registryAccess) -> { +// miningEvent(dispatcher, "raffle", MiningEvents.RAFFLE); +// });/*raffle*/ +// event.register((dispatcher, registryAccess) -> { +// miningEvent(dispatcher, "gonewiththewind", MiningEvents.GONE_WITH_THE_WIND); +// });/*gonewiththewind*/ +// event.register((dispatcher, registryAccess) -> { +// miningEvent(dispatcher, "mithrilgourmand", MiningEvents.MITHRIL_GOURMAND); +// });/*gonewiththewind*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("chchest").then(ClientCommandManager.argument("Item", StringArgumentType.string()).suggests((context, builder) -> { +// String[] items = new String[]{"PrehistoricEgg", "Pickonimbus2000", "ElectronTransmitter", "FTX3070", "RobotronReflector", "ControlSwitch", "SyntheticHeart", "SuperliteMotor", "BlueGoblinEgg", "YellowGoblinEgg", "FlawlessAmberGemstone", "FlawlessJadeGemstone", "FlawlessSapphireGemstone", "FlawlessRubyGemstone", "FlawlessAmethystGemstone", "JungleHeart", "FlawlessTopazGemstone", "FlawlessJasperGemstone"}; +// String input = builder.getRemaining().toLowerCase(); +// int lastSemicolonIndex = input.lastIndexOf(";"); +// List<String> suggestions = new ArrayList<>(); +// if (lastSemicolonIndex >= 0) { +// String inputBeforeSemicolon = input.substring(0, lastSemicolonIndex + 1); // Include the semicolon +// +// for (String item : items) { +// suggestions.add(inputBeforeSemicolon + item); +// } +// } +// return CommandSource.suggestMatching(suggestions, builder); +// }).then(ClientCommandManager.argument("X", IntegerArgumentType.integer()).then(ClientCommandManager.argument("Y", IntegerArgumentType.integer()).then(ClientCommandManager.argument("Z", IntegerArgumentType.integer()).then(ClientCommandManager.argument("ContactWay", StringArgumentType.string()).suggests(((context, builder) -> { +// return CommandSource.suggestMatching(new String[]{"\"/msg " + BBsentials.getConfig().getUsername() + " bb:party me\"", "\"/p join " + BBsentials.config.getUsername() + "\""}, builder); +// })).executes((context) -> { +// String item = StringArgumentType.getString(context, "Item"); +// int x = IntegerArgumentType.getInteger(context, "X"); +// int y = IntegerArgumentType.getInteger(context, "Y"); +// int z = IntegerArgumentType.getInteger(context, "Z"); +// String contactWay = StringArgumentType.getString(context, "ContactWay"); +// +// sendPacket(new ChChestPacket("", ChChestItems.getItem(item.split(";")), x + " " + y + " " + z, contactWay, "")); +// return 1; +// }))))))); +// });/*chchest*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bc").then(ClientCommandManager.argument("Message to Bingo Chat", StringArgumentType.greedyString()).executes((context) -> { +// String message = StringArgumentType.getString(context, "Message to Bingo Chat"); +// sendPacket(new BingoChatMessagePacket("", "", message, 0)); +// return 1; +// }))); +// });/*BincoChatShort*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bingochat").then(ClientCommandManager.argument("Message to Bingo Chat", StringArgumentType.greedyString()).executes((context) -> { +// String message = StringArgumentType.getString(context, "Message to Bingo Chat"); +// sendPacket(new BingoChatMessagePacket("", "", message, 0)); +// return 1; +// }))); +// });/*BingoChatLong*/ } - private static void simpleCommand(CommandDispatcher<FabricClientCommandSource> dispatcher, String commandName, String[] parameters) { - dispatcher.register( - ClientCommandManager.literal(commandName) - .executes((context) -> { - sendPacket(new InternalCommandPacket(commandName, parameters)); - return 1; - }) - ); + public void registerRoleRequired(boolean hasDev, boolean hasAdmin, boolean hasMod, boolean hasSplasher, boolean hasBeta, boolean hasMiningEvents, boolean hasChChest) { +// if (hasMod) { +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bannounce").then(ClientCommandManager.argument("message", StringArgumentType.greedyString()).executes((context) -> { +// String message = StringArgumentType.getString(context, "message"); +// sendPacket(new BroadcastMessagePacket("", "", message)); +// return 1; +// }))); +// });/*bAnnounce*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bmute").then(ClientCommandManager.argument("userId/mcusername", StringArgumentType.string()).then(ClientCommandManager.argument("[Duration(d/h/m/s) | 0 forever]", StringArgumentType.string()).then(ClientCommandManager.argument("reason", StringArgumentType.greedyString()).executes((context) -> { +// String identification = StringArgumentType.getString(context, "userId/mcusername"); +// String duration = StringArgumentType.getString(context, "[Duration(d/h/m/s) | 0 forever]"); +// String reason = StringArgumentType.getString(context, "reason"); +// int userId = -1; +// String mcusername = ""; +// if (identification.replaceAll("[\\d]", "").trim().isEmpty()) { +// userId = Integer.parseInt(identification); +// } +// else { +// mcusername = identification; +// } +// sendPacket(new PunishUserPacket(PunishUserPacket.PUNISHMENT_TYPE_MUTE, userId, mcusername, duration, reason)); +// return 1; +// }))))); +// });/*bmute*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bban").then(ClientCommandManager.argument("userId/mcusername", StringArgumentType.string()).then(ClientCommandManager.argument("[Duration(d/h/m/s) | 0 forever]", StringArgumentType.string()).then(ClientCommandManager.argument("reason", StringArgumentType.greedyString()).executes((context) -> { +// String identification = StringArgumentType.getString(context, "userId/mcusername"); +// String duration = StringArgumentType.getString(context, "[Duration(d/h/m/s) | 0 forever]"); +// String reason = StringArgumentType.getString(context, "reason"); +// int userId = -1; +// String mcusername = ""; +// if (identification.replaceAll("[\\d]", "").trim().isEmpty()) { +// userId = Integer.parseInt(identification); +// } +// else { +// mcusername = identification; +// } +// sendPacket(new PunishUserPacket(PunishUserPacket.PUNISHMENT_TYPE_BAN, userId, mcusername, duration, reason)); +// return 1; +// }))))); +// });/*ban*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bgetinfo").then(ClientCommandManager.argument("userId/mcusername", StringArgumentType.string()).executes((context) -> { +// String identification = StringArgumentType.getString(context, "userId/mcusername"); +// sendPacket(new InternalCommandPacket(InternalCommandPacket.GET_USER_INFO, new String[]{identification})); +// return 1; +// }))); +// });/*getInfo*/ +// } +// if (hasSplasher) { +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("splashAnnounce").then(ClientCommandManager.argument("Hub", IntegerArgumentType.integer(1, 28)).then(ClientCommandManager.argument("location", StringArgumentType.string()).suggests((context, builder) -> { +// return CommandSource.suggestMatching(new String[]{"kat", "bea", "guild-house"}, builder); +// }).then(ClientCommandManager.argument("lasswaste", StringArgumentType.string()).suggests((context, builder) -> { +// return CommandSource.suggestMatching(new String[]{"true", "false"}, builder); +// }).then(ClientCommandManager.argument("extramessage", StringArgumentType.greedyString()).executes((context) -> { +// int hub = IntegerArgumentType.getInteger(context, "Hub"); +// String extramessage = StringArgumentType.getString(context, "extramessage"); +// String location = StringArgumentType.getString(context, "location"); +// boolean lessWaste = Boolean.parseBoolean(StringArgumentType.getString(context, "lasswaste")); +// splashAnnounce(hub, location, extramessage, lessWaste); +// return 1; +// })).executes((context) -> { +// int hub = IntegerArgumentType.getInteger(context, "Hub"); +// String location = StringArgumentType.getString(context, "location"); +// boolean lessWaste = Boolean.parseBoolean(StringArgumentType.getString(context, "lasswaste")); +// splashAnnounce(hub, location, "", lessWaste); +// return 1; +// }))).executes((context) -> { +// int hub = IntegerArgumentType.getInteger(context, "Hub"); +// String location = "bea"; +// splashAnnounce(hub, location, "", true); +// return 1; +// }) +// +// )); +// });/*SplashAnnounce*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("requestpottimes").executes((context) -> { +// sendPacket(new InternalCommandPacket(InternalCommandPacket.REQUEST_POT_DURATION, new String[0])); +// return 1; +// })); +// });/*requestpottimes*/ +// } +// if (hasAdmin) { +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bshutdown").then(ClientCommandManager.argument("Reason", StringArgumentType.greedyString()).suggests((context, builder) -> { +// return CommandSource.suggestMatching(new String[]{"Emergency Shutdown", "System Shutdown", "Other"}, builder); +// }).executes((context) -> { +// String reason = StringArgumentType.getString(context, "Reason"); +// sendPacket(new InternalCommandPacket(InternalCommandPacket.SHUTDOWN_SERVER, new String[]{reason})); +// return 1; +// }))); +// });/*BBShutdown*/ +// event.register((dispatcher, registryAccess) -> { +// dispatcher.register(ClientCommandManager.literal("bsetmotd").then(ClientCommandManager.argument("Message", StringArgumentType.greedyString()).suggests((context, builder) -> { +// return CommandSource.suggestMatching(new String[]{""}, builder); +// }).executes((context) -> { +// String message = StringArgumentType.getString(context, "Message").trim(); +// sendPacket(new InternalCommandPacket(InternalCommandPacket.SET_MOTD, new String[]{message})); +// return 1; +// }))); +// });/*BBServerMotd*/ +// } } - private static void miningEvent(CommandDispatcher<FabricClientCommandSource> dispatcher, String commandName, MiningEvents event) { - dispatcher.register( - ClientCommandManager.literal(commandName) - .executes((context) -> { - try { - sendPacket(new MiningEventPacket(event, - BBsentials.config.getUsername(), Objects.requireNonNull(EnvironmentCore.utils.getCurrentIsland()))); - } catch (Exception e) { - Chat.sendPrivateMessageToSelfError(e.getMessage()); - } - return 1; - }) - ); - } - public static <T extends AbstractPacket> void sendPacket(T packet){ - BBsentials.connection.sendPacket(packet); - } public void splashAnnounce(int hubNumber, String locationInHub, String extramessage, boolean lessWaste) { sendPacket(new SplashNotifyPacket(0, hubNumber, BBsentials.config.getUsername(), locationInHub, EnvironmentCore.utils.getCurrentIsland(), extramessage, lessWaste)); } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/DebugThread.java b/forge/src/main/java/de/hype/bbsentials/forge/DebugThread.java index 23f4db8..6fb61fb 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/DebugThread.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/DebugThread.java @@ -1,5 +1,6 @@ package de.hype.bbsentials.forge; +import java.util.Collections; import java.util.List; public class DebugThread implements de.hype.bbsentials.common.client.DebugThread { @@ -10,6 +11,6 @@ public class DebugThread implements de.hype.bbsentials.common.client.DebugThread @Override public List<String> test() { - return List.of(""); + return Collections.singletonList(""); } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java b/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java index 4043ba1..d181296 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java @@ -1,8 +1,7 @@ package de.hype.bbsentials.forge; import de.hype.bbsentials.common.client.BBsentials; -import de.hype.bbsentials.forge.client.CommandBBI; -import net.minecraftforge.client.ClientCommandHandler; +import de.hype.bbsentials.common.mclibraries.EnvironmentCore; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.fml.common.Mod; @@ -15,21 +14,13 @@ public class ExampleMod { @Mod.EventHandler public void init(FMLInitializationEvent event) { + EnvironmentCore core = new EnvironmentCore(new BBUtils(), new ForgeChat(), new MCUtils(), new Commands(), new Options(), new DebugThread()); MinecraftForge.EVENT_BUS.register(this); } - public void clientSetup() { - if (!alreadyInialised) { - ClientCommandHandler.instance.registerCommand(new CommandBBI()); - alreadyInialised = true; - sentials.init(); - } - } - @SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event) { - EnvironmentCore core = new EnvironmentCore(new BBUtils(), new FabricChat(), new MCUtils(), new Commands(), new Options(), new DebugThread()); - BBsentials.(); + BBsentials.onServerSwap(); } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/FabricChat.java b/forge/src/main/java/de/hype/bbsentials/forge/FabricChat.java deleted file mode 100644 index f25f4ad..0000000 --- a/forge/src/main/java/de/hype/bbsentials/forge/FabricChat.java +++ /dev/null @@ -1,37 +0,0 @@ -package de.hype.bbsentials.forge; - -import de.hype.bbsentials.common.chat.Message; -import de.hype.bbsentials.common.mclibraries.MCChat; -import de.hype.bbsentials.forge.chat.Chat; -import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; -import net.fabricmc.fabric.api.client.message.v1.ClientSendMessageEvents; -import net.minecraft.client.MinecraftClient; -import net.minecraft.text.Text; - -public class FabricChat implements MCChat { - public FabricChat() { - init(); - } - public Chat chat = new Chat(); - public void init() { - // Register a callback for a custom message type - ClientReceiveMessageEvents.CHAT.register((message, signedMessage, sender, params, receptionTimestamp) -> { - chat.onEvent(new Message(Text.Serializer.toJson(message),message.getString())); - }); - ClientReceiveMessageEvents.MODIFY_GAME.register((message, overlay) -> (Text.Serializer.fromJson(chat.onEvent(new Message(Text.Serializer.toJson(message),message.getString())).getJson()))); - ClientSendMessageEvents.CHAT.register(message -> { - if (message.startsWith("/")) { - System.out.println("Sent command: " + message); - } - }); - } - public void sendClientSideMessage(Message message) { - MinecraftClient client = MinecraftClient.getInstance(); - if (client.player != null) { - client.player.sendMessage(Text.Serializer.fromJson(message.getJson())); - } - } - public void sendChatMessage(String message) { - MinecraftClient.getInstance().getNetworkHandler().sendChatMessage(message); - } -} diff --git a/forge/src/main/java/de/hype/bbsentials/forge/ForgeChat.java b/forge/src/main/java/de/hype/bbsentials/forge/ForgeChat.java new file mode 100644 index 0000000..d36106f --- /dev/null +++ b/forge/src/main/java/de/hype/bbsentials/forge/ForgeChat.java @@ -0,0 +1,39 @@ +package de.hype.bbsentials.forge; + +import de.hype.bbsentials.common.chat.Chat; +import de.hype.bbsentials.common.chat.Message; +import de.hype.bbsentials.common.mclibraries.MCChat; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.util.IChatComponent; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +public class ForgeChat implements MCChat { + public ForgeChat() { + init(); + } + public Chat chat = new Chat(); + public void init() { + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onClientChatReceived(ClientChatReceivedEvent event) { + Message newMessage = chat.onEvent(new Message(IChatComponent.Serializer.componentToJson(event.message),event.message.getUnformattedText())); + if (!newMessage.equals(event.message)){ + event.setCanceled(true); + Chat.sendPrivateMessageToSelfText(newMessage); + } + } + public void sendClientSideMessage(Message message) { + EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; + if (player != null) { + player.addChatMessage(IChatComponent.Serializer.jsonToComponent(message.getJson())); + } + } + public void sendChatMessage(String message) { + Minecraft.getMinecraft().thePlayer.sendChatMessage(message); + } +} 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 0a0800b..a9334d5 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/MCUtils.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/MCUtils.java @@ -1,40 +1,39 @@ package de.hype.bbsentials.forge; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.sound.PositionedSoundInstance; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.sound.SoundEvent; -import net.minecraft.util.Identifier; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.Display; import java.io.File; public class MCUtils implements de.hype.bbsentials.common.mclibraries.MCUtils { public boolean isWindowFocused() { - return MinecraftClient.getInstance().isWindowFocused(); + return Display.isActive(); } public File getConfigPath() { - return FabricLoader.getInstance().getConfigDir().toFile(); + return new File(Minecraft.getMinecraft().mcDataDir, "config"); } public String getUsername() { - return MinecraftClient.getInstance().player.getName().getString(); + return Minecraft.getMinecraft().thePlayer.getName(); } public String getMCUUID() { - return MinecraftClient.getInstance().player.getUuid().toString(); + return Minecraft.getMinecraft().thePlayer.getUniqueID().toString(); } public void playsound(String eventName) { - MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance - .master(SoundEvent.of(new Identifier(eventName)), 1.0F, 1.0F)); + Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation(eventName), 1.0F, 1.0F, 0.0F)); } + public int getPotTime() { int remainingDuration = 0; - StatusEffectInstance potTimeRequest = MinecraftClient.getInstance().player.getStatusEffect(StatusEffects.STRENGTH); + PotionEffect potTimeRequest = Minecraft.getMinecraft().thePlayer.getActivePotionEffect(Potion.damageBoost); if (potTimeRequest != null) { if (potTimeRequest.getAmplifier() >= 7) { remainingDuration = (int) (potTimeRequest.getDuration() / 20.0); diff --git a/forge/src/main/java/de/hype/bbsentials/forge/Options.java b/forge/src/main/java/de/hype/bbsentials/forge/Options.java index bdf0861..047718b 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/Options.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/Options.java @@ -1,14 +1,13 @@ package de.hype.bbsentials.forge; -import de.hype.bbsentials.common.api.ISimpleOption; -import net.minecraft.client.MinecraftClient; +import net.minecraft.client.Minecraft; public class Options implements de.hype.bbsentials.common.mclibraries.Options { public void setFov(int value) { - ((ISimpleOption) (Object) MinecraftClient.getInstance().options.getFov()).set(value); + Minecraft.getMinecraft().gameSettings.fovSetting=value; } public void setGamma(double value) { - ((ISimpleOption) (Object) MinecraftClient.getInstance().options.getGamma()).set(value); + Minecraft.getMinecraft().gameSettings.gammaSetting= (float) value; } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/Temphook.java b/forge/src/main/java/de/hype/bbsentials/forge/Temphook.java index 8441624..05c4cef 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/Temphook.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/Temphook.java @@ -1,5 +1,6 @@ package de.hype.bbsentials.forge; +import de.hype.bbsentials.common.client.BBsentials; import net.minecraft.client.gui.FontRenderer; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -8,7 +9,7 @@ public class Temphook { public static void renderItemOverlayPost(FontRenderer fr, ItemStack stack, int xPosition, int yPosition, String text, CallbackInfo ci) { if (BBsentials.config.highlightitem) { if (stack != null) { - if (stack.getDisplayName().contains(BBsentials.bbserver.getItemName())) { + if (stack.getDisplayName().contains(BBsentials.connection.getItemName())) { stack.setStackDisplayName("§6(Bingo Splash) " + stack.getDisplayName()); } } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/chat/Chat.java b/forge/src/main/java/de/hype/bbsentials/forge/chat/Chat.java deleted file mode 100644 index 6b12ba1..0000000 --- a/forge/src/main/java/de/hype/bbsentials/forge/chat/Chat.java +++ /dev/null @@ -1,579 +0,0 @@ -package de.hype.bbsentials.forge.chat; - -import de.hype.bbsentials.forge.client.Config; -import net.minecraft.client.Minecraft; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IChatComponent; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import org.lwjgl.opengl.Display; - -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.Clip; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Modifier; -import java.time.Instant; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.FutureTask; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static de.hype.bbsentials.forge.client.BBsentials.config; -import static de.hype.bbsentials.forge.client.BBsentials.getConfig; - -public class Chat { - public Chat() { - init(); - } - - public static String[] getVariableInfo(String packageName, String className) { - List<String> variableInfoList = new ArrayList<>(); - - // Combine the class name with the package name - String fullClassName = packageName + "." + className; - - // Load the class - Class<?> clazz = null; - try { - clazz = Class.forName(fullClassName); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - // Extract fields of the class - Field[] fields = clazz.getDeclaredFields(); - - // Collect information for each field - for (Field field : fields) { - // Exclude transient fields - if (Modifier.isTransient(field.getModifiers())) { - continue; - } - - String variableName = field.getName(); - String variablePackageName = clazz.getPackage().getName(); - String variableClassName = clazz.getSimpleName(); - - String variableInfo = variableName; - variableInfoList.add(variableInfo); - } - - return variableInfoList.toArray(new String[variableInfoList.size()]); - } - - public static void setVariableValue(Object obj, String variableName, String value) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { - if (value == null) { - // Handle null value case - sendPrivateMessageToSelf(EnumChatFormatting.RED + "Invalid value: null"); - return; - } - - Class<?> objClass = obj.getClass(); - Field field = objClass.getDeclaredField(variableName); - field.setAccessible(true); - - // Get the type of the field - Class<?> fieldType = field.getType(); - - // Convert the value to the appropriate type - Object convertedValue = parseValue(value, fieldType); - - if (Modifier.isStatic(field.getModifiers())) { - // If the field is static - field.set(null, convertedValue); - } - else { - field.set(obj, convertedValue); - } - - // Check and output the value of the variable - sendPrivateMessageToSelf(EnumChatFormatting.GREEN + "The variable " + field.getName() + " is now: " + field.get(obj)); - } - - private static Object parseValue(String value, Class<?> targetType) { - if (targetType == int.class || targetType == Integer.class) { - return Integer.parseInt(value); - } - else if (targetType == double.class || targetType == Double.class) { - return Double.parseDouble(value); - } - else if (targetType == float.class || targetType == Float.class) { - return Float.parseFloat(value); - } - else if (targetType == long.class || targetType == Long.class) { - return Long.parseLong(value); - } - else if (targetType == boolean.class || targetType == Boolean.class) { - return Boolean.parseBoolean(value); - } - else { - // For other types, return the original string value - return value; - } - } - - public static void getVariableValue(Object object, String variableName) throws NoSuchFieldException, IllegalAccessException { - Class<?> objClass = object.getClass(); - Field field = objClass.getDeclaredField(variableName); - field.setAccessible(true); - sendPrivateMessageToSelf(EnumChatFormatting.GREEN + "The variable " + field.getName() + " is: " + field.get(object)); - } - - private void init() { - MinecraftForge.EVENT_BUS.register(this); - } - - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent event) { - IChatComponent newMessage = onEvent(event.message); - if (!newMessage.equals(event.message)){ - event.setCanceled(true); - Chat.sendPrivateMessageToSelfText(newMessage); - } - } - - private net.minecraft.util.IChatComponent onEvent(net.minecraft.util.IChatComponent message) { - Callable<net.minecraft.util.IChatComponent> callable = () -> { - if (!isSpam(message.toString())) { - if (getConfig().isDetailedDevModeEnabled()) { - System.out.println("got a message: " + net.minecraft.util.IChatComponent.Serializer.componentToJson(message)); - } - return handleInClient(message); - } - return message; // Return the original message if it is spam - }; - - FutureTask<net.minecraft.util.IChatComponent> future = new FutureTask<>(callable); - Thread thread = new Thread(future); - thread.start(); - - try { - return future.get(); // Retrieve the result from the background thread - } catch (InterruptedException | ExecutionException e) { - // Handle exceptions, if needed - e.printStackTrace(); - } - - return message; // Return the original message if an exception occurred - } - - //Handle in client - public net.minecraft.util.IChatComponent handleInClient(net.minecraft.util.IChatComponent messageOriginal) { - String message = extractPlainText(messageOriginal.toString()).trim(); - if (getConfig().messageFromAlreadyReported(message) && getPlayerNameFromMessage(message) != " " && getPlayerNameFromMessage(message) != "") { - System.out.println("Message: " + message); - sendPrivateMessageToSelf(EnumChatFormatting.RED + "B: " + message); - return null; - } - if (getConfig().isDevModeEnabled()) { - System.out.println("Got message to analyse internally: " + message); - } - //party accepter - if (message != null) { - if (message.contains("party")) { - if (message.contains("disbanded the party")) { - lastPartyDisbandedMessage = message; - partyDisbandedMap.put(getPlayerNameFromMessage(message), Instant.now()); - if (getConfig().isDevModeEnabled()) { - sendPrivateMessageToSelf("Watching next 20 Sec for invite: " + getPlayerNameFromMessage(message)); - } - } - else if (message.contains("invited you to join their party")) { - if (lastPartyDisbandedMessage != null && partyDisbandedMap != null) { - Instant lastDisbandedInstant = partyDisbandedMap.get(getPlayerNameFromMessage(lastPartyDisbandedMessage)); - if (lastDisbandedInstant != null && lastDisbandedInstant.isAfter(Instant.now().minusSeconds(20)) && (getPlayerNameFromMessage(message).equals(getPlayerNameFromMessage(lastPartyDisbandedMessage)))) { - sendCommand("/p accept " + getPlayerNameFromMessage(lastPartyDisbandedMessage)); - } - } - if (!Display.isActive()) { - sendNotification("BBsentials Party Notifier", "You got invited too a party by: " + getPlayerNameFromMessage(message)); - } - - } - else if (message.equals("Party > " + BBsentials.getConfig().getUsername() + ": rp")) { - sendCommand("/pl"); - repartyActive = true; - } - else if (message.startsWith("Party Members (")) { - Config.partyMembers = new ArrayList<String>(); - } - else if (message.startsWith("Party Moderators:") && repartyActive) { - message = message.replace("Party Moderators:", "").replace(" ●", "").replaceAll("\\s*\\[[^\\]]+\\]", "").trim(); - if (message.contains(",")) { - for (int i = 0; i < message.split(",").length; i++) { - Config.partyMembers.add(message.split(",")[i - 1]); - } - } - else { - Config.partyMembers.add(message); - } - } - else if (message.startsWith("Party Members:")) { - message = message.replace("Party Members:", "").replace(" ●", "").replaceAll("\\s*\\[[^\\]]+\\]", "").trim(); - if (message.contains(",")) { - for (int i = 0; i < message.split(",").length; i++) { - System.out.println("Added to plist: " + (message.split(",")[i - 1])); - Config.partyMembers.add(message.split(",")[i - 1]); - } - } - else { - Config.partyMembers.add(message); - } - if (repartyActive) { - repartyActive = false; - sendCommand("/p disband"); - for (int i = 0; i < Integer.max(4, getConfig().getPlayersInParty().length); i++) { - if (i < getConfig().getPlayersInParty().length) { - sendCommand("/p invite " + getConfig().getPlayersInParty()[i]); - } - } - } - } - else if (message.endsWith("bb:party me") && message.startsWith("From ")) { - if (BBsentials.getConfig().allowBBinviteMe()) { - sendCommand("/p " + getPlayerNameFromMessage(message.replace("From ", ""))); - } - } - - } //Everything containing party is processed differently (split so fewer checks) - else if (message.contains("unlocked Wither Essence") && message.startsWith(getConfig().getUsername())) { - if (BBsentials.getConfig().isLeader()) { - repartyActive = true; - sendCommand("/pl"); - } - else { - System.out.println("No Reparty because not leader"); - } - if (getConfig().isLeaveDungeonAutomatically()) { - config.sender.addSendTask("/warp dhub", 3); - } - } - else if (message.contains("unlocked Crimson Essence") && message.startsWith(getConfig().getUsername())) { - if (BBsentials.getConfig().isLeader()) { - repartyActive = true; - sendCommand("/pl"); - } - else { - System.out.println("No Reparty because not leader"); - } - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - if (getConfig().isLeaveKuudraAutomatically()) { - sendCommand("/warp kuudra"); - } - } - else if (message.contains("bb:test")) { - sendPrivateMessageToSelf(test()); - } - else if ((message.endsWith("is visiting Your Garden !") || message.endsWith("is visiting Your Island !")) && !Display.isActive()) { - sendNotification("BBsentials Visit-Watcher", message); - } - else if (message.equals("Please type /report confirm to log your report for staff review.")) { - sendCommand("/report confirm"); - } - else if (message.contains(":") && !Display.isActive()) { - if (message.startsWith("Party >")) { - String partyMessage = message.replaceFirst("Party >", "").trim(); - messageOriginal = replaceAllForText(messageOriginal, "\"action\":\"run_command\",\"value\":\"/viewprofile", "\"action\":\"run_command\",\"value\":\"/hci menu pcm " + partyMessage); - if (partyMessage.split(":", 2)[1].toLowerCase().contains(getConfig().getUsername().toLowerCase()) || (partyMessage.toLowerCase().contains(getConfig().getNickname().toLowerCase() + " ") && getConfig().getNotifForParty().toLowerCase().equals("nick")) || getConfig().getNotifForParty().toLowerCase().equals("all")) { - sendNotification("BBsentials Party Chat Notification", partyMessage); - } - } - else if (message.startsWith("From ")) { - String sender = getPlayerNameFromMessage(message.replaceFirst("From", "").trim()); - String content = message.split(":", 2)[1]; - sendNotification("BBsentials Message Notifier", sender + " sent you the following message: " + content); - } - else if (message.toLowerCase().contains("party")) { - if ((message.contains("Party Leader:") && !message.contains(getConfig().getUsername())) || message.equals("You are not currently in a party.") || (message.contains("warped the party into a Skyblock Dungeon") && !message.startsWith(getConfig().getUsername()) || (!message.startsWith("The party was transferred to " + getConfig().getUsername()) && message.startsWith("The party was transferred to"))) || message.equals(getConfig().getUsername() + " is now a Party Moderator") || (message.equals("The party was disbanded because all invites expired and the party was empty.")) || (message.contains("You have joined ") && message.contains("'s party!")) || (message.contains("Party Leader, ") && message.contains(" , summoned you to their server.")) || (message.contains("warped to your dungeon"))) { - BBsentials.getConfig().setIsLeader(false); - if (getConfig().isDetailedDevModeEnabled()) { - sendPrivateMessageToSelf("Leader: " + getConfig().isLeader()); - } - } - if ((message.equals("Party Leader: " + getConfig().getUsername() + " ●")) || (message.contains(getConfig().getUsername() + " warped the party to a SkyBlock dungeon!")) || message.startsWith("The party was transferred to " + getConfig().getUsername()) || message.equals("Raul_J has promoted " + getConfig().getUsername() + " to Party Leader") || (message.contains("warped to your dungeon"))) { - BBsentials.getConfig().setIsLeader(true); - if (getConfig().isDetailedDevModeEnabled()) { - sendPrivateMessageToSelf("Leader: " + getConfig().isLeader()); - } - } - else if (repartyActive && !BBsentials.getConfig().isLeader()) { - repartyActive = false; - sendPrivateMessageToSelf("Resetted Reparty is Active since you are not leader "); - } - } - else { - String[] temp = message.split(":", 2); - String content = temp[temp.length - 1]; - if (temp.length == 2 && (content.toLowerCase().contains(getConfig().getUsername().toLowerCase()) || content.toLowerCase().contains(config.getNickname().toLowerCase() + " "))) { - sendNotification("BBsentials Notifier", "You got mentioned in chat! " + content); - } - } - } - else if (message.equals("You laid an Egg!")) { - Thread eggThread = new Thread(() -> { - try { - Thread.sleep(21000); // Wait for 21 seconds (in milliseconds) - sendPrivateMessageToSelf("Chicken Head is ready"); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }); - - eggThread.start(); - } - else if (message.contains("[OPEN MENU]") || message.contains("YES")) { - setChatPromtId(messageOriginal.toString()); - } - - } - return messageOriginal; - } - - //{"strikethrough":false,"extra":[{"strikethrough":false,"clickEvent":{"action":"run_command","value":"/viewprofile 4fa1228c-8dd6-47c4-8fe3-b04b580311b8"},"hoverEvent":{"action":"show_text","contents":{"strikethrough":false,"text":"§eClick here to view §bHype_the_Time§e's profile"}},"text":"§9Party §8> §b[MVP§2+§b] Hype_the_Time§f: "},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"text":"h:test"}],"text":""}// {"strikethrough":false,"extra":[{"strikethrough":false,"clickEvent":{"action":"run_command","value":"/viewprofile f772b2c7-bd2a-46e1-b1a2-41fa561157d6"},"hoverEvent":{"action":"show_text","contents":{"strikethrough":false,"text":"§eClick here to view §bShourtu§e's profile"}},"text":"§9Party §8> §b[MVP§c+§b] Shourtu§f: "},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"text":"Hype_the_Time TEST"}],"text":""} - //{"strikethrough":false,"extra":[{"strikethrough":false,"clickEvent":{"action":"run_command","value":"/viewprofile 4fa1228c-8dd6-47c4-8fe3-b04b580311b8"},"hoverEvent":{"action":"show_text","contents":{"strikethrough":false,"text":"§eClick here to view §bHype_the_Time§e's profile"}},"text":"§9Party §8> §b[MVP§2+§b] Hype_the_Time§f: "},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"text":"h:test"}],"text":""} - private final Map<String, Instant> partyDisbandedMap = new HashMap<>(); - private String lastPartyDisbandedMessage = null; - - public static String getPlayerNameFromMessage(String message) { - message = message.replaceAll("\\[.*?\\]", "").trim(); - message = message.replaceAll("-----------------------------------------------------", "").replaceAll(":", ""); - String[] temp = message.split(" "); - String playerName = ""; - - for (int i = 0; i < temp.length; i++) { - if (!temp[i].equals(" ") && !temp[i].equals("")) { - playerName = temp[i]; - break; // Stop looping after finding the first non-empty value - } - } - - // Remove the rank from the player name, if it exists - Pattern rankPattern = Pattern.compile("\\s*\\[[^\\]]+\\]"); - playerName = rankPattern.matcher(playerName).replaceAll(" "); - - return playerName; - } - - public String extractPlainText(String input) { - String returns = ""; - String[] literals = input.split("literal\\{"); - if (!input.startsWith("literal")) { - literals[0] = ""; - } - for (int i = 0; i < literals.length; i++) { - if (dontExclude(literals, i) && !literals[i].equals("")) { - String literal = literals[i].split("}")[0]; - - if (!literal.isEmpty()) { - returns = returns + literal; - } - } - } - // Remove § formatting - returns = returns.replaceAll("§.", ""); - // Remove brackets that contain only uppercase letters or pluses - returns = returns.replaceAll("\\[[A-Z+]+\\]", ""); - returns = returns.replaceAll("\\[[0-9]+\\]", ""); - returns = returns.trim(); - returns = returns.replaceAll("\\s+", " "); - - return returns; - } - - private boolean dontExclude(String[] s, int i) { - if ((i - 1) < 0) { - return true; - } - else { - if (s[i - 1].endsWith("value='")) { - return false; - } - else { - return true; - } - } - } - - public boolean isSpam(String message) { - if (message.contains("Mana")) return true; - if (message.contains("Achievement Points")) return true; - return false; - } - - private boolean repartyActive = false; - - public String test() { - //put test code here - sendNotification("test", "This is an example which was run of the h:test test"); - return new String(); - } - - private static String removeMultipleSpaces(String input) { - return input.replaceAll("\\s+", " "); - } - - public static void sendPrivateMessageToSelf(String message) { - if (Minecraft.getMinecraft().thePlayer != null) { - Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + message)); - } - } - - public static void sendPrivateMessageToSelfText(net.minecraft.util.IChatComponent message) { - if (Minecraft.getMinecraft().thePlayer != null) { - Minecraft.getMinecraft().thePlayer.addChatMessage(message); - } - } - - public static void sendCommand(String s) { - getConfig().sender.addSendTask(s); - } - - public void sendNotification(String title, String text) { - Thread soundThread = new Thread(() -> { - try { - InputStream inputStream = getClass().getResourceAsStream("/sounds/mixkit-sci-fi-confirmation-914.wav"); - AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(inputStream); - Clip clip = AudioSystem.getClip(); - clip.open(audioInputStream); - clip.start(); - Thread.sleep(clip.getMicrosecondLength() / 1000); - clip.close(); - audioInputStream.close(); - } catch (Exception e) { - e.printStackTrace(); - } - }); - - soundThread.start(); - - List<String> argsList = new ArrayList<>(); - argsList.add("--title"); - argsList.add(title); - argsList.add("--passivepopup"); - argsList.add(text); - argsList.add("5"); - - try { - ProcessBuilder processBuilder = new ProcessBuilder(); - processBuilder.command("kdialog"); - processBuilder.command().addAll(argsList); - - Process process = processBuilder.start(); - process.waitFor(); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } - - public static net.minecraft.util.IChatComponent createClientSideTellraw(String tellrawInput) { - net.minecraft.util.IChatComponent formattedMessage = null; - try { - formattedMessage = net.minecraft.util.IChatComponent.Serializer.jsonToComponent(tellrawInput); - } catch (Exception e) { - e.printStackTrace(); - System.out.println("Invalid Json: \n" + tellrawInput); - } - return formattedMessage; - } - - public static void followMenu(String menu, String message) { - // Check the "menu" argument and execute the appropriate logic - String command; - String username = getPlayerNameFromMessage(message); - if (message.contains(":")) { - message = message.split(":", 2)[1].trim(); - if (menu.equalsIgnoreCase("pcm")) { - command = "[\"\",{\"text\":\"@@username\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/pc @username\"}},{\"text\":\" [Copy_Message]\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"copy_to_clipboard\",\"value\":\"Copy-Text-Message\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Copy the message the Player send without their name into the clipboard.\"]}},{\"text\":\" [Kick_Player]\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p kick @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Kick the player from the party\"]}},{\"text\":\" [Promote_Player]\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p promote @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Promote the player\"]}},{\"text\":\" [Demote_Player]\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p demote @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Demote the player\"]}},{\"text\":\" [Transfer_to_Player]\",\"color\":\"gold\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p transfer @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Transfer the Party to the player\"]}},{\"text\":\" [Mute/Unmute_Party]\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p mute @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Mutes the ENTIRE party but party moderators or Hypixel Staff can still type.\"]}}]"; - //{"jformat":8,"jobject":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"gray","insertion":"","click_event_type":"suggest_command","click_event_value":"/pc @username","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"@username"},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"blue","insertion":"","click_event_type":"copy_to_clipboard","click_event_value":"Copy-Text-Message","hover_event_type":"show_text","hover_event_value":"","hover_event_object":{},"hover_event_children":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"none","insertion":"","click_event_type":"none","click_event_value":"","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"Copy the message the Player send without their name into the clipboard."}],"text":" [Copy_Message]"},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"dark_red","insertion":"","click_event_type":"run_command","click_event_value":"/p kick @username","hover_event_type":"show_text","hover_event_value":"","hover_event_object":{},"hover_event_children":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"none","insertion":"","click_event_type":"none","click_event_value":"","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"Kick the player from the party"}],"text":" [Kick_Player]"},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"dark_green","insertion":"","click_event_type":"run_command","click_event_value":"/p promote @username","hover_event_type":"show_text","hover_event_value":"","hover_event_object":{},"hover_event_children":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"none","insertion":"","click_event_type":"none","click_event_value":"","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"Promote the player"}],"text":" [Promote_Player]"},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"red","insertion":"","click_event_type":"run_command","click_event_value":"/p demote @username","hover_event_type":"show_text","hover_event_value":"","hover_event_object":{},"hover_event_children":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"none","insertion":"","click_event_type":"none","click_event_value":"","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"Demote the player"}],"text":" [Demote_Player]"},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"gold","insertion":"","click_event_type":"run_command","click_event_value":"/p transfer @username","hover_event_type":"show_text","hover_event_value":"","hover_event_object":{},"hover_event_children":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"none","insertion":"","click_event_type":"none","click_event_value":"","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"Transfer the Party to the player"}],"text":" [Transfer_to_Player]"},{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"dark_aqua","insertion":"","click_event_type":"run_command","click_event_value":"/p mute @username","hover_event_type":"show_text","hover_event_value":"","hover_event_object":{},"hover_event_children":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"font":null,"color":"none","insertion":"","click_event_type":"none","click_event_value":"","hover_event_type":"none","hover_event_value":"","hover_event_object":{},"hover_event_children":[],"text":"Mutes the ENTIRE party but party moderators or Hypixel Staff can still type."}],"text":" [Mute/Unmute_Party]"}],"command":"%s","jtemplate":"tellraw"} - } - else if (menu.equalsIgnoreCase("sbacm")) { - command = "[\"\",\"\\n\",{\"text\":\"@@username\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"@username\"}},{\"text\":\" [Party_Player]\",\"color\":\"gold\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p invite @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Invite the player to the party\"]}},{\"text\":\" [Ignore_Player]\",\"color\":\"yellow\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/ignore add @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Add the player to your ignore list.\"]}},{\"text\":\" [Chat_Report_Player]\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/creport @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Chat report the user with /creport.\"]}},{\"text\":\" [Visit_Player]\",\"color\":\"dark_green\",\"insertion\":\" \",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/visit @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[]}},{\"text\":\" [/Invite_Player]\",\"color\":\"green\",\"insertion\":\" \",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/invite @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"/invite the player to visit your Island / Garden.\"]}},{\"text\":\" [Copy_Message] \",\"color\":\"blue\",\"clickEvent\":{\"action\":\"copy_to_clipboard\",\"value\":\"Copy-Text-Message\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Copy the message the user send without their prefixes nor their username\"]}},{\"text\":\" [Copy_Username]\",\"color\":\"dark_aqua\",\"insertion\":\" \",\"clickEvent\":{\"action\":\"copy_to_clipboard\",\"value\":\"@username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Copy the players username into the clipboard.\"]}},{\"text\":\" [/msg_Chat_Player]\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/msg @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"/msg the Player. the chat will be set to message them. This means you do not need to type /msg upfront. To return to normal do /chat a\"]}},{\"text\":\" [Sky_shiiyu_player]\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://sky.shiiyu.moe/stats/@username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Opens the players Skyblock Profile in Sky Crypt (sky.shiiyu.moe)\"]}},\"\\n\"]"; - } - else if (menu.equalsIgnoreCase("acm")) { - command = "[\"\",\"\\n\",{\"text\":\"@@username\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"@username\"}},{\"text\":\" [Party_Player]\",\"color\":\"gold\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/p invite @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Invite the player to the party\"]}},{\"text\":\" [Ignore_Player]\",\"color\":\"yellow\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/ignore add @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Add the player to your ignore list.\"]}},{\"text\":\" [Chat_Report_Player]\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/creport @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Chat report the user with /creport.\"]}},{\"text\":\" [Copy_Message] \",\"color\":\"blue\",\"clickEvent\":{\"action\":\"copy_to_clipboard\",\"value\":\"Copy-Text-Message\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Copy the message the user send without their prefixes nor their username\"]}},{\"text\":\" [Copy_Username]\",\"color\":\"dark_aqua\",\"insertion\":\" \",\"clickEvent\":{\"action\":\"copy_to_clipboard\",\"value\":\"@username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"Copy the players username into the clipboard.\"]}},{\"text\":\" [/msg_Chat_Player]\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/msg @username\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"/msg the Player. the chat will be set to message them. This means you do not need to type /msg upfront. To return to normal do /chat a\"]}}"; - } - else { - // Handle unrecognized menu argument - sendPrivateMessageToSelf(EnumChatFormatting.RED + "Unrecognized menu argument! Do not use this command unless you know exactly what you are doing aka only use it as a developer!"); - return; - } - command = command.replaceAll("@username", username); - command = command.replaceAll("Copy-Text-Message", message); - sendPrivateMessageToSelfText(createClientSideTellraw(command)); - } - else { - sendPrivateMessageToSelf("Invalid message!: " + message); - } - } - - public static void setChatPromtId(String logMessage) { - String cbUUIDPattern = "/cb ([a-fA-F0-9-]+)"; - Pattern cbPattern = Pattern.compile(cbUUIDPattern); - Matcher cbMatcher = cbPattern.matcher(logMessage); - - String yesClickAction = "/chatprompt ([a-fA-F0-9-]+) YES"; - Pattern yesPattern = Pattern.compile(yesClickAction); - Matcher yesMatcher = yesPattern.matcher(logMessage); - String lastPrompt = null; - if (cbMatcher.find()) { - lastPrompt = cbMatcher.group(1); - String finalLastPrompt1 = lastPrompt; - new Thread(new Runnable() { - @Override - public void run() { - BBsentials.getConfig().setLastChatPromptAnswer("/cb " + finalLastPrompt1); - try { - Thread.sleep(10 * 1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - BBsentials.getConfig().setLastChatPromptAnswer(null); - return; - } - }).start(); - } - if (yesMatcher.find()) { - lastPrompt = yesMatcher.group(1); - String finalLastPrompt = lastPrompt; - new Thread(new Runnable() { - @Override - public void run() { - BBsentials.getConfig().setLastChatPromptAnswer("/chatprompt " + finalLastPrompt + " YES"); - try { - Thread.sleep(10 * 1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - BBsentials.getConfig().setLastChatPromptAnswer(null); - return; - } - }).start(); - - } - } - - public static net.minecraft.util.IChatComponent replaceAllForText(net.minecraft.util.IChatComponent input, String replace, String replaceWith) { - String text = net.minecraft.util.IChatComponent.Serializer.componentToJson(input); - if (text.contains(replace)) { - text = text.replaceAll("\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}", ""); - } - text = text.replace(replace, replaceWith); - net.minecraft.util.IChatComponent output = net.minecraft.util.IChatComponent.Serializer.jsonToComponent(text); - return output; - } -}
\ No newline at end of file diff --git a/forge/src/main/java/de/hype/bbsentials/forge/chat/Sender.java b/forge/src/main/java/de/hype/bbsentials/forge/chat/Sender.java deleted file mode 100644 index 15cd3d7..0000000 --- a/forge/src/main/java/de/hype/bbsentials/forge/chat/Sender.java +++ /dev/null @@ -1,100 +0,0 @@ -package de.hype.bbsentials.forge.chat; - -import com.mojang.realmsclient.gui.ChatFormatting; -import net.minecraft.client.Minecraft; - -import java.util.ArrayList; -import java.util.List; - -public class Sender { - private final List<String> sendQueue; - private final List<Double> sendQueueTiming; - private final List<Boolean> hidden; - - public Sender() { - this.sendQueue = new ArrayList<>(); - this.sendQueueTiming = new ArrayList<>(); - this.hidden = new ArrayList<>(); - startSendingThread(); - } - - public void addSendTask(String task, double timing) { - synchronized (sendQueue) { - Chat.sendPrivateMessageToSelf(ChatFormatting.GREEN + "Scheduled send-task (as " + sendQueueTiming.size() + " in line): " + task + " | Delay: " + timing); - sendQueueTiming.add(timing); - sendQueue.add(task); - hidden.add(false); - sendQueue.notify(); // Notify the waiting thread that a new String has been added - } - } - - public void addHiddenSendTask(String task, double timing) { - synchronized (sendQueue) { - sendQueueTiming.add(timing); - sendQueue.add(task); - hidden.add(true); - sendQueue.notify(); // Notify the waiting thread that a new String has been added - } - } - - public void addImmediateSendTask(String task) { - synchronized (sendQueue) { - sendQueueTiming.add(0, 0.0); - sendQueue.add(0, task); - hidden.add(false); - sendQueue.notify(); // Notify the waiting thread that a new String has been added - } - } - - public void addSendTask(String task) { - addSendTask(task, 1); - } - - public void startSendingThread() { - Thread sendingThread = new Thread(new SendingRunnable()); - sendingThread.start(); - } - - private class SendingRunnable implements Runnable { - @Override - public void run() { - while (true) { - String task = getNextTask(); - if (task != null) { - send(task, sendQueueTiming.remove(0), hidden.remove(0)); - } - else { - synchronized (sendQueue) { - try { - sendQueue.wait(); // Wait for new Send - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - } - } - } - - private String getNextTask() { - synchronized (sendQueue) { - if (!sendQueue.isEmpty()) { - return sendQueue.remove(0); - } - return null; - } - } - - private void send(String toSend, double timing, boolean hidden) { - try { - Thread.sleep((long) (timing * 1000)); // Simulate the send operation - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - Minecraft.getMinecraft().thePlayer.sendChatMessage(toSend); - if (!hidden) { - Chat.sendPrivateMessageToSelf("Sent Command to Server: " + toSend); - } - - } - } -}
\ No newline at end of file diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java b/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java index 352a7b6..208caa3 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java @@ -1,13 +1,16 @@ package de.hype.bbsentials.forge.client; +import de.hype.bbsentials.common.client.BBsentials; +import de.hype.bbsentials.common.client.Config; import net.minecraft.client.Minecraft; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; -import static de.hype.bbsentials.forge.client.BBsentials.connectToBBserver; -import static de.hype.bbsentials.forge.client.BBsentials.getConfig; +import static de.hype.bbsentials.common.client.BBsentials.connectToBBserver; +import static de.hype.bbsentials.common.client.BBsentials.getConfig; + public class CommandBBI extends CommandBase { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/Config.java b/forge/src/main/java/de/hype/bbsentials/forge/client/Config.java deleted file mode 100644 index f4fff7e..0000000 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/Config.java +++ /dev/null @@ -1,198 +0,0 @@ -//Keep in mind that a lot of the stuff in here may never be used and is here because its copied from the 1.20 version which is the main part of the code. - -package de.hype.bbsentials.forge.client; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import de.hype.bbsentials.forge.chat.Chat; -import de.hype.bbsentials.forge.chat.Sender; -import net.minecraft.client.Minecraft; - -import java.io.*; -import java.time.LocalDate; -import java.util.ArrayList; - -public class Config implements Serializable { - // Helper class for sending chat messages - public transient final Sender sender = new Sender(); - - public transient boolean highlightitem = false; - public transient String lastChatPromptAnswer = null; - - // Automatically set, no need for config - private transient String username; - private boolean overrideBingoTime = false; - - // Set in-game - private transient boolean isLeader; - private transient String alreadyReported = ""; - private String bbServerURL = "static.204.177.34.188.clients.your-server.de"; - public String bbsentialsRoles = ""; - public static ArrayList<String> partyMembers = new ArrayList<>(); - - // Set via load / default - private String bbsentialsCommandPrefix = "."; - private String apiKey = ""; - private boolean leaveDungeonAutomatically; - private boolean allowBBinviteMe = true; - private boolean leaveKuudraAutomatically; - private boolean devMode = false; - private boolean detailedDevMode = false; - private boolean acceptReparty; - private String nickname; - private String getNotifForParty; - - // Set default attribute values - private void setDefaults() { - username = Minecraft.getMinecraft().thePlayer.getName(); - leaveKuudraAutomatically = true; - leaveDungeonAutomatically = true; - acceptReparty = true; - if (username.equals("Hype_the_Time")) { - nickname = "hype"; - getNotifForParty = "nick"; - } - else { - nickname = ""; - getNotifForParty = "none"; - } - } - // Gson object for serialization - private final transient Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - // File object for storing the config - private final transient File CONFIG_FILE = new File("./config/BBsential_settings.json"); - - // Constructor - public Config() { - setDefaults(); - } - - // Load the config from file - public static Config load() { - Config settings; - File CONFIG_FILE = new File("./config/BBsential_settings.json"); - Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - if (CONFIG_FILE.exists()) { - try (FileReader reader = new FileReader(CONFIG_FILE)) { - settings = GSON.fromJson(reader, Config.class); - } catch (IOException e) { - e.printStackTrace(); - settings = new Config(); // Use default values if loading fails - } - } - else { - settings = new Config(); // Use default values if the file doesn't exist - } - if (!settings.bbsentialsRoles.contains("dev")) { - settings.detailedDevMode = false; - settings.devMode = false; - } - settings.save(); - return settings; - } - - // Save the config to file - public void save() { - try (FileWriter writer = new FileWriter(CONFIG_FILE)) { - GSON.toJson(this, writer); - } catch (IOException e) { - e.printStackTrace(); - } - } - - // Getter methods for various config attributes - public String getUsername() { - return username; - } - - public boolean isLeader() { - return isLeader; - } - - public void setIsLeader(boolean value) { - isLeader = value; - } - - public String getNickname() { - return nickname; - } - - public String getNotifForParty() { - return getNotifForParty; - } - - public boolean isLeaveDungeonAutomatically() { - return leaveDungeonAutomatically; - } - - public boolean isLeaveKuudraAutomatically() { - return leaveKuudraAutomatically; - } - - public boolean isDevModeEnabled() { - return devMode; - } - - public boolean isDetailedDevModeEnabled() { - return detailedDevMode; - } - - public String[] getPlayersInParty() { - return partyMembers.toArray(new String[0]); - } - - public boolean messageFromAlreadyReported(String message) { - return alreadyReported.contains(Chat.getPlayerNameFromMessage(message)); - } - - public void addReported(String playerName) { - alreadyReported = alreadyReported + " , " + playerName; - } - - public String getApiKey() { - return apiKey; - } - - public String getBBServerURL() { - return bbServerURL; - } - - public String getCommandPrefix(String type) { - if (type.equals("BBsentials")) { - System.out.println("Registered command with: " + bbsentialsCommandPrefix); - return bbsentialsCommandPrefix; - } - else { - return "/"; - } - } - - public static boolean isBingoTime() { - LocalDate currentDate = LocalDate.now(); - LocalDate lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth()); - LocalDate firstDayOfMonth = currentDate.withDayOfMonth(1); - Boolean isBefore = currentDate.isAfter(lastDayOfMonth.minusDays(4)); - Boolean isInRange = currentDate.isBefore(firstDayOfMonth.plusDays(15)); - return isBefore || isInRange; - } - - public boolean overrideBingoTime() { - return overrideBingoTime; - } - - public boolean isHighlightitem() { - return highlightitem; - } - - public String getLastChatPromptAnswer() { - return lastChatPromptAnswer; - } - - public boolean allowBBinviteMe() { - return allowBBinviteMe; - } - - public void setLastChatPromptAnswer(String lastChatPromptAnswer) { - this.lastChatPromptAnswer = lastChatPromptAnswer; - } -} diff --git a/forge/src/main/java/de/hype/bbsentials/forge/communication/BBsentialConnection.java b/forge/src/main/java/de/hype/bbsentials/forge/communication/BBsentialConnection.java deleted file mode 100644 index 3d8106b..0000000 --- a/forge/src/main/java/de/hype/bbsentials/forge/communication/BBsentialConnection.java +++ /dev/null @@ -1,340 +0,0 @@ -package de.hype.bbsentials.forge.communication; - -import de.hype.bbsentials.forge.chat.Chat; -import net.minecraft.client.Minecraft; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; - -import javax.net.ssl.*; -import java.io.*; -import java.net.Socket; -import java.net.SocketException; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -public class BBsentialConnection { - private Socket socket; - private BufferedReader reader; - private PrintWriter writer; - private LinkedBlockingQueue<String> messageQueue; - private MessageReceivedCallback messageReceivedCallback; - private ScheduledExecutorService executorService; - private String itemName = "Hub #0"; - - public interface MessageReceivedCallback { - void onMessageReceived(String message); - } - - public void connect(String serverIP, int serverPort) { - // Enable SSL handshake debugging - System.setProperty("javax.net.debug", "ssl,handshake"); - FileInputStream inputStream = null; - try { - // Load the BBssentials-online server's public certificate from the JKS file - try { - InputStream resouceInputStream = BBsentials.class.getResourceAsStream("/assets/public_bbsentials_cert.crt"); - - // Check if the resource exists - if (resouceInputStream == null) { - System.out.println("The resource '/assets/public_bbsentials_cert.crt' was not found."); - return; - } - - File tempFile = File.createTempFile("public_bbsentials_cert", ".crt"); - tempFile.deleteOnExit(); - - FileOutputStream outputStream = new FileOutputStream(tempFile); - - byte[] buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = resouceInputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); - } - - outputStream.close(); - resouceInputStream.close(); - - // Now you have the .crt file as a FileInputStream in the tempFile - inputStream = new FileInputStream(tempFile); - - // Use the fileInputStream as needed - - } catch (IOException e) { - e.printStackTrace(); - } - CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); - X509Certificate serverCertificate = (X509Certificate) certFactory.generateCertificate(inputStream); - PublicKey serverPublicKey = serverCertificate.getPublicKey(); - - // Create a TrustManager that trusts only the server's public key - TrustManager[] trustManagers = new TrustManager[]{ - new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { - return null; // We don't need to check the client's certificates - } - - public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException { - // Do nothing, client certificate validation not required - } - - public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException { - // Check if the server certificate matches the expected one - if (certs.length == 1) { - PublicKey publicKey = certs[0].getPublicKey(); - if (!publicKey.equals(serverPublicKey)) { - throw new CertificateException("Server certificate not trusted."); - } - } - else { - throw new CertificateException("Invalid server certificate chain."); - } - } - } - }; - - // Create an SSL context with the custom TrustManager - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(null, trustManagers, new SecureRandom()); - - // Create an SSL socket factory - SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); - socket = (SSLSocket) sslSocketFactory.createSocket(serverIP, serverPort); - - socket.setKeepAlive(true); // Enable Keep-Alive - - reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); - writer = new PrintWriter(socket.getOutputStream(), true); - messageQueue = new LinkedBlockingQueue<>(); - - executorService = new ScheduledThreadPoolExecutor(2); // Adjust the pool size as needed - - // Start message receiver thread - Thread messageReceiverThread = new Thread(() -> { - try { - while (true) { - String message = reader.readLine(); - if (message != null) { - if (messageReceivedCallback != null) { - messageReceivedCallback.onMessageReceived(message); - } - else { - Chat.sendPrivateMessageToSelf("BB: It seemed like you disconnected. Reconnecting..."); - BBsentials.connectToBBserver(); - try { - Thread.sleep(1000 * 10); - } catch (Exception ignored) { - } - } - } - } - } catch (IOException e) { - e.printStackTrace(); - } - }); - messageReceiverThread.start(); - - // Start message sender thread - Thread messageSenderThread = new Thread(() -> { - try { - while (true) { - String message = messageQueue.take(); - writer.println(message); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - }); - messageSenderThread.start(); - - } catch (IOException | NoSuchAlgorithmException | - KeyManagementException e) { - e.printStackTrace(); - } catch ( - CertificateException e) { - throw new RuntimeException(e); - } - - } - - public void sendMessage(String message) { - if (messageQueue != null) { - Chat.sendPrivateMessageToSelf("§aBBs: " + message); - messageQueue.offer(message); - } - else { - Chat.sendPrivateMessageToSelf("§4BB: It seems like the connection was lost. Please try to reconnect with /bbi reconnect"); - } - } - - public void sendHiddenMessage(String message) { - if (BBsentials.getConfig().isDetailedDevModeEnabled()) { - Chat.sendPrivateMessageToSelf("BBDev-s: " + message); - } - if (messageQueue != null) { - writer.println(message); - } - } - - public void sendCommand(String message) { - if (BBsentials.getConfig().isDetailedDevModeEnabled()) { - Chat.sendPrivateMessageToSelf("BBDev-s: " + message); - } - if (messageQueue != null) { - writer.println(message); - } - else { - Chat.sendPrivateMessageToSelf("§4BB: It seems like the connection was lost. Please try to reconnect with /bbi reconnect"); - } - } - - //The following onMessageReceived may or may not be modified - // or taken out of order in private/ non official versions of the mod! - public void onMessageReceived(String message) { - if (message.startsWith("H-")) { - if (message.equals("H-BB-Login: ")) { - Chat.sendPrivateMessageToSelf("§aLogging into BBsentials-online"); - sendHiddenMessage(Minecraft.getMinecraft().thePlayer.getUniqueID().toString().replace("-", "")); - writer.println(BBsentials.getConfig().getApiKey()); - sendHiddenMessage("?getperms"); - } - else if (message.contains("H-potdurations?")) { - sendHiddenMessage("?potduration " + getPotTime()); - } - else if (message.startsWith("H-splash")) { - String[] arguments = message.split(" ", 7); - int min = (1 * 60 * 60) - Integer.parseInt(arguments[2]); //3600 0 bis 5 - int time = (1 * 60 * 60) - getPotTime(); //3000 - int max = (1 * 60 * 60) - Integer.parseInt(arguments[3]); //3300 - if ((time <= min) && (time >= max)) { - if (arguments.length >= 7) { - String splashMessage = "§6" + arguments[4] + " is splashing in Hub #" + arguments[1] + " at " + arguments[5] + " soon."; - splashMessage = splashMessage + " : " + arguments[6]; - Chat.sendPrivateMessageToSelf(splashMessage); - splashHighlightItem("Hub #" + arguments[1], 30000); - } - } - } - else if (message.startsWith("H-roles")) { - BBsentials.getConfig().bbsentialsRoles = message.replace("H-Roles ", ""); - BBsentials.refreshCommands(); - } - else if (message.startsWith("H-chchest")) { - String[] arguments = message.replace("H-chchest", "").trim().split(" ", 6); // Split with limit of 5 - String username = arguments[0]; - String item = arguments[1]; - int x = Integer.parseInt(arguments[2]); - int y = Integer.parseInt(arguments[3]); - int z = Integer.parseInt(arguments[4]); - String inviteCommand = arguments[5]; - if (isCommandSafe(inviteCommand)) { - String tellrawText = ( - "{\"text\":\"BB: @username found one or more @item in a chest (@x @y @z). Click here to join\",\"color\":\"green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"@inviteCommand\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[\"On clicking you will get invited to a party. Command executed: @inviteCommand\"]}}" - ); - tellrawText = tellrawText.replace("@username", username).replace("@item", item).replace("@x", x + "").replace("@y", y + "").replace("@z", z + "").replace("@inviteCommand", inviteCommand); - Chat.sendPrivateMessageToSelfText(Chat.createClientSideTellraw(tellrawText)); - } - } - else if (message.startsWith("H-event")) { - String[] arguments = message.replace("H-event", "").trim().split(" "); - Chat.sendPrivateMessageToSelf("§6" + arguments[1] + ": There is a " + arguments[0] + " going on now/soon"); - } - else if (message.startsWith("H-reconnect")) { - Chat.sendPrivateMessageToSelf("§4BBserver-online is going to restart soon. You will be automatically reconnected.\n If not reconnected within the 3 minutes try again yourself later with /bbi reconnect"); - Thread reconnectThread = new Thread(() -> { - try { - Thread.sleep((long) ((30 * 1000) + (Math.random() * 30 * 1000))); - } catch (InterruptedException e) { - e.printStackTrace(); - } - BBsentials.connectToBBserver(); - if (!socket.isConnected()) { - try { - Thread.sleep((long) ((30 * 1000) + (Math.random() * 30 * 1000))); - } catch (InterruptedException e) { - e.printStackTrace(); - } - BBsentials.connectToBBserver(); - } - }); - reconnectThread.start(); - } - else if (message.startsWith("H-hype")) { - String[] arguments = message.replace("H-hype", "").trim().split(" "); - if (arguments[0].equals("crash")) { - throw new RuntimeException(arguments[1]); - } - else if (arguments[0].equals("hub")) { - BBsentials.config.sender.addHiddenSendTask("/hub", 1); - } - } - if (BBsentials.getConfig().isDetailedDevModeEnabled()) { - Chat.sendPrivateMessageToSelf("BBDev-r: " + message); - } - } - else { - Chat.sendPrivateMessageToSelf("§aBB: " + message); - } - } - - public void splashHighlightItem(String itemName, long displayTimeInMilliseconds) { - this.itemName = itemName; - BBsentials.config.highlightitem = true; - executorService.schedule(() -> { - BBsentials.config.highlightitem = false; - try { - socket.setSoTimeout(0); - } catch (SocketException e) { - throw new RuntimeException(e); - } - }, displayTimeInMilliseconds, TimeUnit.MILLISECONDS); - } - - public String getItemName() { - return itemName; - } - - public static int getPotTime() { - int remainingTimeInMinutes = 0; - PotionEffect potTimeRequest = Minecraft.getMinecraft().thePlayer.getActivePotionEffect(Potion.damageBoost); - if (potTimeRequest != null) { - if (potTimeRequest.getAmplifier() >= 7) { - remainingTimeInMinutes = (int) (potTimeRequest.getDuration() / 20.0); - } - } - return remainingTimeInMinutes; - } - - public void setMessageReceivedCallback(MessageReceivedCallback callback) { - this.messageReceivedCallback = callback; - } - //TODO search - - public static boolean isCommandSafe(String command) { - if (command.startsWith("/p ") || command.startsWith("/party ") || command.startsWith("/boop ") || command.startsWith("/msg ") || command.startsWith("/hub ")) { - return true; - } - else { - BBsentials.bbserver.sendCommand("?emergency server-hacked? chchest command " + command); - String emergencyMessage = "We detected that there was a command used which is not configured to be safe! " + command + " please check if its safe. IMMEDIATELY report this to the Admins and Developer Hype_the_Time (@hackthetime). If it is not safe immediately remove BBsentials!!!!!!!! "; - System.out.println(emergencyMessage); - Chat.sendPrivateMessageToSelf("§4" + emergencyMessage + "\n\n"); - Chat.sendPrivateMessageToSelf("§4" + emergencyMessage + "\n\n"); - /*try { - Thread.sleep(5000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - throw new RuntimeException(emergencyMessage);*/ - } - return false; - } -} diff --git a/forge/src/main/resources/mcmod.info b/forge/src/main/resources/mcmod.info index 642d13a..1b1651f 100644 --- a/forge/src/main/resources/mcmod.info +++ b/forge/src/main/resources/mcmod.info @@ -8,10 +8,10 @@ "url": "https://github.com/romangraef/Forge1.8.9Template/", "updateUrl": "", "authorList": [ - "Hype_the_Time" + "Hype_the_Time/hackthetime" ], "credits": "", - "logoFile": "", + "logoFile": "logo.png", "screenshots": [], "dependencies": [] } |