aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hype/bbsentials/packets
diff options
context:
space:
mode:
authorHacktheTime <l4bg0jb7@duck.com>2023-09-03 11:09:38 +0200
committerHacktheTime <l4bg0jb7@duck.com>2023-09-03 11:09:38 +0200
commitcdd951d912e172ea42fc9707a786db6e69ba2901 (patch)
tree006302c766d9e09e141a9ee03e73c0626750191b /src/main/java/de/hype/bbsentials/packets
parent7d9f695e2603c2349ce0693bb0e1e6dbbd274fbc (diff)
downloadBBsentials-cdd951d912e172ea42fc9707a786db6e69ba2901.tar.gz
BBsentials-cdd951d912e172ea42fc9707a786db6e69ba2901.tar.bz2
BBsentials-cdd951d912e172ea42fc9707a786db6e69ba2901.zip
added packet communication to work now at least as base. not all features changed and therefore supported yet. first version working at least partially with the new server.
fixed trapper yes via chat prompt action not working. changed the get getter of the string from messageOriginal in Chat.java to now use just messageOriginal.getString(). previosly removed everything in [] brackets.
Diffstat (limited to 'src/main/java/de/hype/bbsentials/packets')
-rw-r--r--src/main/java/de/hype/bbsentials/packets/AbstractPacket.java67
-rw-r--r--src/main/java/de/hype/bbsentials/packets/EnviromentPacketConfig.java7
-rw-r--r--src/main/java/de/hype/bbsentials/packets/Packet.java26
-rw-r--r--src/main/java/de/hype/bbsentials/packets/PacketManager.java48
-rw-r--r--src/main/java/de/hype/bbsentials/packets/PacketUtils.java122
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/BingoChatMessagePacket.java26
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/BroadcastMessagePacket.java17
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/ChChestPackage.java24
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/DisconnectPacket.java20
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/DisplayMessagePacket.java14
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/DisplayTellrawMessagePacket.java13
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/InternalCommandPacket.java18
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/InvalidCommandFeedbackPacket.java25
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/MiningEventPacket.java26
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/RequestConnectPacket.java21
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/SplashNotifyPacket.java26
-rw-r--r--src/main/java/de/hype/bbsentials/packets/packets/WelcomeClientPacket.java19
17 files changed, 519 insertions, 0 deletions
diff --git a/src/main/java/de/hype/bbsentials/packets/AbstractPacket.java b/src/main/java/de/hype/bbsentials/packets/AbstractPacket.java
new file mode 100644
index 0000000..116c9b2
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/AbstractPacket.java
@@ -0,0 +1,67 @@
+package de.hype.bbsentials.packets;
+
+import de.hype.bbsentials.chat.Chat;
+import de.hype.bbsentials.client.BBsentials;
+import de.hype.bbsentials.client.Config;
+import de.hype.bbsentials.communication.BBsentialConnection;
+import de.hype.bbsentials.packets.packets.InvalidCommandFeedbackPacket;
+
+import java.lang.reflect.Field;
+
+public class AbstractPacket {
+ public final int apiVersionMin;
+ public final int apiVersionMax;
+
+ protected AbstractPacket(int apiVersionMin, int apiVersionMax) {
+ this.apiVersionMax = apiVersionMax;
+ this.apiVersionMin = apiVersionMin;
+
+ }
+
+ public boolean isValid(BBsentialConnection connection, String[] allowedNullFields) {
+ if (isApiSupported(BBsentials.config)) {
+ Chat.sendPrivateMessageToSelf("You are using an outdated version of the mod");
+ }
+ return true;
+ }
+
+ public boolean isApiSupported(Config config) {
+ //int version = Core.getConfig().getVersion();
+ int version = config.getApiVersion();
+ if (version >= apiVersionMin && version <= apiVersionMax) {
+ return true;
+ }
+ return false;
+ }
+
+ public String hasNullFields(String[] allowedNullFields) {
+ Field[] fields = this.getClass().getDeclaredFields();
+ if (!this.getClass().getSimpleName().equals(InvalidCommandFeedbackPacket.class.getSimpleName())) {
+ for (Field field : fields) {
+ field.setAccessible(true);
+ try {
+ if (field.get(this) == null) {
+ if (allowedNullFields == null) return field.getName();
+ if (isAllowedNull(allowedNullFields, field.getName())) {
+ return field.getName();
+ }
+ }
+ } catch (IllegalAccessException e) {
+ // Handle the exception if needed
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
+
+ }
+
+ public boolean isAllowedNull(String[] allowedFields, String fieldName) {
+ for (String allowedField : allowedFields) {
+ if (allowedField.equals(fieldName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/de/hype/bbsentials/packets/EnviromentPacketConfig.java b/src/main/java/de/hype/bbsentials/packets/EnviromentPacketConfig.java
new file mode 100644
index 0000000..da05704
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/EnviromentPacketConfig.java
@@ -0,0 +1,7 @@
+package de.hype.bbsentials.packets;
+
+public class EnviromentPacketConfig {
+ public static final String enviroment = "Client";
+ public static final String notEnviroment = "Server";
+ public static final int apiVersion = 1;
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/Packet.java b/src/main/java/de/hype/bbsentials/packets/Packet.java
new file mode 100644
index 0000000..6a4ecbf
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/Packet.java
@@ -0,0 +1,26 @@
+package de.hype.bbsentials.packets;
+
+import java.util.function.Consumer;
+
+public class Packet<T extends AbstractPacket> {
+
+ private final Class<T> clazz;
+ private final Consumer<T> consumer;
+
+ public Packet(Class<T> clazz, Consumer<T> consumer) {
+ this.clazz = clazz;
+ this.consumer = consumer;
+ }
+
+ public String getName() {
+ return clazz.getSimpleName();
+ }
+
+ public Class<T> getClazz() {
+ return clazz;
+ }
+
+ public Consumer<T> getConsumer() {
+ return consumer;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/PacketManager.java b/src/main/java/de/hype/bbsentials/packets/PacketManager.java
new file mode 100644
index 0000000..a6d94d4
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/PacketManager.java
@@ -0,0 +1,48 @@
+package de.hype.bbsentials.packets;
+
+import de.hype.bbsentials.communication.BBsentialConnection;
+import de.hype.bbsentials.packets.packets.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PacketManager {
+ private static List<Packet<? extends AbstractPacket>> packets = new ArrayList<>();
+
+ public List<Packet<? extends AbstractPacket>> getPackets() {
+ return packets;
+ }
+
+ // Define a map to store packet classes and their associated actions
+ BBsentialConnection connection;
+
+ // Method to initialize packet actions
+ public PacketManager(BBsentialConnection connection) {
+ this.connection = connection;
+ initializePacketActions(connection);
+ }
+
+ public static void initializePacketActions(BBsentialConnection connection) {
+ packets.add(new Packet<>(SplashNotifyPacket.class, connection::onSplashNotify));
+ packets.add(new Packet<>(BingoChatMessagePacket.class, connection::onBingoChatMessagePacket));
+ packets.add(new Packet<>(ChChestPackage.class, connection::onChChestPackage));
+// packets.add(new Packet<>(DisconnectPacket.class, connection::dummy));
+// packets.add(new Packet<>(InternalCommandPacket.class, connection::dummy));
+ packets.add(new Packet<>(MiningEventPacket.class, connection::onMiningEventPacket));
+// packets.add(new Packet<>(RequestConnectPacket.class, connection::dummy));
+ packets.add(new Packet<>(WelcomeClientPacket.class, connection::onWelcomePacket));
+ }
+
+ // Method to handle a received packet
+
+
+ // method to get a list of all packets
+ public static List<Class<? extends AbstractPacket>> getAllPacketClasses() {
+ initializePacketActions(null);
+ List<Class<? extends AbstractPacket>> allPackets = new ArrayList<>();
+ for (int i = 0; i < allPackets.size(); i++) {
+ allPackets.add(packets.get(i).getClazz());
+ }
+ return allPackets;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/PacketUtils.java b/src/main/java/de/hype/bbsentials/packets/PacketUtils.java
new file mode 100644
index 0000000..2c6d8a5
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/PacketUtils.java
@@ -0,0 +1,122 @@
+package de.hype.bbsentials.packets;
+
+import com.google.gson.Gson;
+import de.hype.bbsentials.client.CustomGson;
+import de.hype.bbsentials.communication.BBsentialConnection;
+
+import java.util.function.Consumer;
+
+
+public class PacketUtils {
+ public static final Gson gson = CustomGson.create();
+
+ public static String parsePacketToJson(AbstractPacket packet) {
+ return gson.toJson(packet);
+ }
+
+ public static <T extends AbstractPacket> void tryToProcessPacket(Packet<T> packet, String rawJson) {
+ Class<T> clazz = packet.getClazz();
+ Consumer<T> consumer = packet.getConsumer();
+ T abstractPacket = gson.fromJson(rawJson, clazz);
+ consumer.accept(abstractPacket);
+ }
+
+ private static void showError(Throwable t, String errorMessage) {
+ System.out.println(errorMessage + " because of: " + t.getClass().getSimpleName() + ": " + t.getMessage());
+ new Error(errorMessage, t).printStackTrace();
+ }
+
+ public static class APIException extends Error {
+
+ public APIException(String errorMessage, Throwable t) {
+ super(errorMessage, t);
+ }
+
+ public APIException(String errorMessage) {
+ super(errorMessage);
+ }
+ }
+
+ public static <T extends AbstractPacket> T getAsPacket(String message, Class<T> clazz) {
+ if (!message.contains(".")) return null;
+ String packetName = message.split("\\.")[0];
+ String rawJson = message.substring(packetName.length() + 1);
+ if (!packetName.equals(clazz.getSimpleName())) {
+ try {
+ T parsedPacket = gson.fromJson(rawJson, clazz);
+ return parsedPacket;
+ } catch (Throwable t) {
+ showError(t, "Could not process packet '" + packetName + "' from " + EnviromentPacketConfig.notEnviroment);
+ }
+ }
+ String errorMessage = "Could not process packet '" + packetName + "' from " + EnviromentPacketConfig.notEnviroment;
+
+ showError(new APIException("Found unknown packet: " + packetName + "'"), errorMessage);
+ return null;
+ }
+
+// public static <T extends AbstractPacket> T getAsPacket(String message) {
+// if (!message.contains(".")) return null;
+// String packetName = message.split("\\.")[0];
+// String rawJson = message.substring(packetName.length() + 1);
+//
+// for (Class<? extends AbstractPacket> clazz : PacketManager.getAllPacketClasses()) {
+// if (packetName.equals(clazz.getSimpleName())) {
+// try {
+// if (clazz.isAssignableFrom(clazz)) {
+// //TODO the problem
+// T parsedPacket = (T) gson.fromJson(rawJson, clazz);
+// return parsedPacket;
+// }
+// else {
+// return null;
+// }
+// } catch (Throwable t) {
+// showError(t, "Could not process packet '" + packetName + "' from " + EnviromentPacketConfig.notEnviroment);
+// }
+// }
+// }
+// return null;
+// }
+
+ public static boolean isPacket(String message, Class<? extends AbstractPacket> clazz) {
+ if (!message.contains(".")) return false;
+ String packetName = message.split("\\.")[0];
+ if (packetName.equals(clazz.getSimpleName())) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isPacket(String message) {
+ if (!message.contains(".")) return false;
+ String packetName = message.split("\\.")[0];
+ for (Class<? extends AbstractPacket> packetClass : PacketManager.getAllPacketClasses()) {
+ if (!packetName.equals(packetClass.getSimpleName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static <T extends AbstractPacket> boolean handleIfPacket(BBsentialConnection connection, String message) {
+ //Return = is Packet
+ if (!message.contains(".")) return false;
+ String packetName = message.split("\\.")[0];
+ String rawJson = message.substring(packetName.length() + 1);
+ PacketManager manager = new PacketManager(connection);
+ for (Packet<? extends AbstractPacket> packet : manager.getPackets()) {
+ if (!packetName.equals(packet.getClazz().getSimpleName())) continue;
+ try {
+ tryToProcessPacket(packet, rawJson);
+ return true;
+ } catch (Throwable t) {
+ showError(t, "Could not process packet '" + packetName + "' from " + EnviromentPacketConfig.notEnviroment);
+ }
+ }
+ String errorMessage = "Could not process packet '" + packetName + "' from " + EnviromentPacketConfig.notEnviroment;
+
+ showError(new APIException("Found unknown packet: " + packetName + "'"), errorMessage);
+ return false;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/BingoChatMessagePacket.java b/src/main/java/de/hype/bbsentials/packets/packets/BingoChatMessagePacket.java
new file mode 100644
index 0000000..56a7152
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/BingoChatMessagePacket.java
@@ -0,0 +1,26 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class BingoChatMessagePacket extends AbstractPacket {
+
+ public BingoChatMessagePacket(String prefix, String username, String message, int bingo_cards) {
+ super(1, 1); //Min and Max supported Version
+ this.message = message;
+ this.username = username;
+ this.prefix = prefix;
+ this.bingo_cards = bingo_cards;
+ }
+
+ public final String message;
+ public final String username;
+ public final String prefix;
+ public final int bingo_cards;
+
+ public boolean baseCheck() {
+ boolean cancelPacket = false;
+
+ return !cancelPacket;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/BroadcastMessagePacket.java b/src/main/java/de/hype/bbsentials/packets/packets/BroadcastMessagePacket.java
new file mode 100644
index 0000000..2e507c7
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/BroadcastMessagePacket.java
@@ -0,0 +1,17 @@
+package de.hype.bbsentials.packets.packets;
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class BroadcastMessagePacket extends AbstractPacket {
+
+ public final String message;
+ public final String username;
+ public final String prefix;
+
+ public BroadcastMessagePacket(String prefix, String username, String message) {
+ super(1, 1); //Min and Max supported Version
+ this.message = message;
+ this.username = username;
+ this.prefix = prefix;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/ChChestPackage.java b/src/main/java/de/hype/bbsentials/packets/packets/ChChestPackage.java
new file mode 100644
index 0000000..e2252e8
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/ChChestPackage.java
@@ -0,0 +1,24 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.constants.enviromentShared.ChChestItem;
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class ChChestPackage extends AbstractPacket {
+
+ public ChChestPackage(String announcerUsername, ChChestItem[] items, String locationCoords, String bbcommand, String extraMessage) {
+ super(1, 1); //Min and Max supported Version
+ this.announcerUsername = announcerUsername;
+ this.locationCoords = locationCoords;
+ this.bbcommand = bbcommand;
+ this.extraMessage = extraMessage;
+ this.items = items;
+ }
+
+ public final String announcerUsername;
+ public final String locationCoords;
+ public final String bbcommand;
+ public final String extraMessage;
+ public final ChChestItem[] items;
+
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/DisconnectPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/DisconnectPacket.java
new file mode 100644
index 0000000..4a37693
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/DisconnectPacket.java
@@ -0,0 +1,20 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class DisconnectPacket extends AbstractPacket {
+
+ public DisconnectPacket(String internalReason, int[] waitBeforeReconnect, String displayReason, String displayMessage) {
+ super(1, 1); //Min and Max supportet Version
+ this.internalReason = internalReason;
+ this.waitBeforeReconnect = waitBeforeReconnect;
+ this.displayReason = displayReason;
+ this.displayMessage = displayMessage;
+ }
+ public final String internalReason;
+ public final int[] waitBeforeReconnect;
+ public final String displayReason;
+ public final String displayMessage;
+
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/DisplayMessagePacket.java b/src/main/java/de/hype/bbsentials/packets/packets/DisplayMessagePacket.java
new file mode 100644
index 0000000..da99a99
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/DisplayMessagePacket.java
@@ -0,0 +1,14 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class DisplayMessagePacket extends AbstractPacket {
+
+ public final String message;
+
+ public DisplayMessagePacket(String message) {
+ super(1, 1); //Min and Max supported Version
+ this.message = message;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/DisplayTellrawMessagePacket.java b/src/main/java/de/hype/bbsentials/packets/packets/DisplayTellrawMessagePacket.java
new file mode 100644
index 0000000..9329878
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/DisplayTellrawMessagePacket.java
@@ -0,0 +1,13 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class DisplayTellrawMessagePacket extends AbstractPacket {
+ public final String rawJson;
+
+ public DisplayTellrawMessagePacket(String rawJson) {
+ super(1, 1); //Min and Max supported Version
+ this.rawJson = rawJson;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/InternalCommandPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/InternalCommandPacket.java
new file mode 100644
index 0000000..cf8c8f7
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/InternalCommandPacket.java
@@ -0,0 +1,18 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+//Only used for small things which don't really need an own Packet.
+public class InternalCommandPacket extends AbstractPacket {
+
+ public InternalCommandPacket(String command, String[] parameters) {
+ super(1, 1); //Min and Max supported Version
+ this.command = command;
+ this.parameters = parameters;
+ }
+
+ public final String command;
+ public final String[] parameters;
+
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/InvalidCommandFeedbackPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/InvalidCommandFeedbackPacket.java
new file mode 100644
index 0000000..b57be4a
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/InvalidCommandFeedbackPacket.java
@@ -0,0 +1,25 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class InvalidCommandFeedbackPacket extends AbstractPacket {
+
+ public InvalidCommandFeedbackPacket(String internalReason, String command, String displayMessage, String argument, String permissionNeeded, String[] userPermissions) {
+ super(1, 1); //Min and Max supportet Version
+ this.internalReason = internalReason;
+ this.argument = argument;
+ this.permissionNeeded = permissionNeeded;
+ this.userPermissions = userPermissions;
+ this.command = command;
+ this.displayMessage = displayMessage;
+ }
+
+ public final String internalReason;
+ public final String argument;
+ public final String permissionNeeded;
+ public final String[] userPermissions;
+ public final String command;
+ public final String displayMessage;
+
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/MiningEventPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/MiningEventPacket.java
new file mode 100644
index 0000000..5dd383f
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/MiningEventPacket.java
@@ -0,0 +1,26 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.constants.enviromentShared.Islands;
+import de.hype.bbsentials.constants.enviromentShared.MiningEvents;
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class MiningEventPacket extends AbstractPacket {
+
+
+ public final MiningEvents event;
+ public final String username;
+ public final Islands island;
+
+ public MiningEventPacket(MiningEvents event, String username, Islands island) throws Exception {
+ super(1, 1); //Min and Max supported Version
+ this.event = event;
+ this.username = username;
+ if (island.equals(Islands.CRYSTAL_HOLLOWS)) {
+ if (event.equals(MiningEvents.MITHRIL_GOURMAND) || event.equals(MiningEvents.RAFFLE) || event.equals(MiningEvents.GOBLIN_RAID)) {
+ throw new Exception("The specified event can not happen on this Server");
+ }
+ }
+ this.island = island;
+ }
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/RequestConnectPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/RequestConnectPacket.java
new file mode 100644
index 0000000..62bac83
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/RequestConnectPacket.java
@@ -0,0 +1,21 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class RequestConnectPacket extends AbstractPacket {
+
+
+ public RequestConnectPacket(String mcuuid, String key, int clientApiVersion, String authType ) {
+ super(1, 1); //Min and Max supported Version
+ this.mcuuid = mcuuid;
+ this.key = key;
+ this.authType = authType;
+ this.clientApiVersion = clientApiVersion;
+ }
+
+ public final String mcuuid;
+ public final String key;
+ public final String authType;
+ public final int clientApiVersion;
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/SplashNotifyPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/SplashNotifyPacket.java
new file mode 100644
index 0000000..bfdc275
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/SplashNotifyPacket.java
@@ -0,0 +1,26 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.constants.enviromentShared.Islands;
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class SplashNotifyPacket extends AbstractPacket {
+
+
+ public SplashNotifyPacket(int hub, String splasherUsername, String location, Islands hubType, String extraMessage, boolean lessWaste) {
+ super(1, 1); //Min and Max supported Version
+ this.hub = hub;
+ this.lessWaste = lessWaste;
+ this.splasherUsername = splasherUsername;
+ this.location = location;
+ this.hubType = hubType;
+ this.extraMessage = extraMessage;
+ }
+
+ public final int hub;
+ public final boolean lessWaste;
+ public final String splasherUsername;
+ public final String location;
+ public final Islands hubType;
+ public final String extraMessage;
+}
diff --git a/src/main/java/de/hype/bbsentials/packets/packets/WelcomeClientPacket.java b/src/main/java/de/hype/bbsentials/packets/packets/WelcomeClientPacket.java
new file mode 100644
index 0000000..4b2f7c3
--- /dev/null
+++ b/src/main/java/de/hype/bbsentials/packets/packets/WelcomeClientPacket.java
@@ -0,0 +1,19 @@
+package de.hype.bbsentials.packets.packets;
+
+
+import de.hype.bbsentials.packets.AbstractPacket;
+
+public class WelcomeClientPacket extends AbstractPacket {
+
+ public WelcomeClientPacket(String[] roles, String motd, boolean success) {
+ super(1, 1); //Min and Max supportet Version
+ this.roles = roles;
+ this.motd = motd;
+ this.success = success;
+ }
+
+ public final String[] roles;
+ public final String motd;
+ public final boolean success;
+
+} \ No newline at end of file