summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPugmatt <pugmatt@gmail.com>2019-08-09 18:44:16 -0400
committerPugmatt <pugmatt@gmail.com>2019-08-09 18:44:16 -0400
commitc5ae52d19134f35627922de7f97763c363177d64 (patch)
tree5d3ed08f797e8cd63f7915b8690bf2c0dd529c37
parent7edc5e6e7871a318de76d083b8e70b518ad9e6af (diff)
downloadBedrockConnect-1.0.tar.gz
BedrockConnect-1.0.tar.bz2
BedrockConnect-1.0.zip
Clean up code + add more startup arguements1.0
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/AuthData.java30
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java46
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Chunk.java107
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/PipePlayer.java43
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java6
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ChunkData.java80
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ExtraData.java40
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/Section.java35
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/ClientPacketHandler.java17
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java818
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/sql/Data.java8
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/utils/FixedPlayerListPacket.java7
12 files changed, 50 insertions, 1187 deletions
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/AuthData.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/AuthData.java
deleted file mode 100644
index 46955e8..0000000
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/AuthData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package main.com.pyratron.pugmatt.bedrockconnect;
-
-import java.util.UUID;
-
-public class AuthData {
- private final String displayName;
- private final UUID identity;
-
- public String getDisplayName() {
- return displayName;
- }
-
- public UUID getIdentity() {
- return identity;
- }
-
- public String getXuid() {
- return xuid;
- }
-
- private final String xuid;
-
- public AuthData(String displayName, UUID identity, String xuid) {
- this.displayName = displayName;
- this.identity = identity;
- this.xuid = xuid;
- }
-
-
-} \ No newline at end of file
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
index f5ab2bc..149727c 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
@@ -28,15 +28,42 @@ public class BedrockConnect {
paletteManager = new PaletteManager();
try {
- String password = new String(Files.readAllBytes(Paths.get("mysql.txt")));
-
- MySQL = new MySQL("localhost", "bedrock-connect", "root", password);
+ String hostname = "localhost";
+ String database = "bedrock-connect";
+ String username = "root";
+ String password = "";
+ String port = "19132";
+
+ String serverLimit = "100";
+
+ for(String str : args) {
+ if(str.startsWith("mysql_host="))
+ hostname = getArgValue(str, "mysql_host");
+ if(str.startsWith("mysql_db="))
+ database = getArgValue(str, "mysql_db");
+ if(str.startsWith("mysql_user="))
+ username = getArgValue(str, "mysql_user");
+ if(str.startsWith("mysql_pass="))
+ password = getArgValue(str, "mysql_pass");
+ if(str.startsWith("server_limit="))
+ serverLimit = getArgValue(str, "server_limit");
+ if(str.startsWith("port="))
+ port = getArgValue(str, "port");
+ }
+
+ System.out.println("MySQL Host: " + hostname + "\n" +
+ "MySQL Database: " + database + "\n" +
+ "MySQL User: " + username + "\n" +
+ "Server Limit: " + serverLimit + "\n" +
+ "Port: " + port + "\n");
+
+ MySQL = new MySQL(hostname, database, username, password);
connection = null;
connection = MySQL.openConnection();
- data = new Data();
+ data = new Data(serverLimit);
// Keep MySQL connection alive
Timer timer = new Timer();
@@ -73,11 +100,18 @@ public class BedrockConnect {
timer.scheduleAtFixedRate(task, 0L, 1200L);
- server = new Server();
- } catch(IOException e) {
+ server = new Server(port);
+ } catch(Exception e) {
e.printStackTrace();
}
}
+ public static String getArgValue(String str, String name) {
+ String target = name + "=";
+ int index = str.indexOf(target);
+ int subIndex = index + target.length();
+ return str.substring(subIndex);
+ }
+
}
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Chunk.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Chunk.java
deleted file mode 100644
index 3f9ec0f..0000000
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Chunk.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package main.com.pyratron.pugmatt.bedrockconnect;
-
-// References to this: https://github.com/NukkitX/Nukkit/blob/4ce13f2afb9a1a330df63a482bee9995ce1f96d5/src/main/java/cn/nukkit/level/format/anvil/ChunkRequestTask.java
-// https://github.com/Nukkit/Nukkit/blob/master/src/main/java/cn/nukkit/level/format/generic/BaseFullChunk.java
-// https://github.com/Nukkit/Nukkit/blob/master/src/main/java/cn/nukkit/level/format/leveldb/Chunk.java
-// https://github.com/NukkitX/Nukkit/blob/4ce13f2afb9a1a330df63a482bee9995ce1f96d5/src/main/java/cn/nukkit/level/format/mcregion/McRegion.java
-
-import java.nio.ByteBuffer;
-
-public class Chunk{
-
- byte[] ids;
- byte[] meta;
- byte[] heightMap;
- byte[] skyLight;
- byte[] blockLight;
- byte[] biomes;
- byte[] blockEntities;
-
- public Chunk(int x, int z) {
- ids = getBlockIdArray();
- meta = getBlockDataArray();
- heightMap = getHeightMapArray(x, z);
- skyLight = getBlockSkyLightArray();
- blockLight = getBlockLightArray();
- biomes = getBiomeIdArray();
- blockEntities = getBlockEntitiesArray();
- }
-
- public byte[] encode() {
- return ByteBuffer.allocate(
- 16 * 16 * 128
- + 16 * 16 * 64
- + heightMap.length
- + biomes.length
- + this.blockEntities.length)
- .put(ids)
- .put(meta)
- .put(heightMap)
- .put(biomes)
- .put(blockEntities)
- .array();
- }
-
- public byte[] getBlockIdArray() {
- byte[] blocks = new byte[16*128*16];
- for (int i = 0; i < 16*128*16; i++) {
- int d = 1;
- blocks[i] = (byte) d;
- }
- return blocks;
- }
-
- public byte[] getBlockDataArray() {
- byte[] blocks = new byte[16384];
- for (int i = 0; i < 16384; i++) {
- int d = 0;
- blocks[i] = (byte) d;
- }
- return blocks;
- }
-
- public byte[] getBlockSkyLightArray() {
- byte[] lights = new byte[16384];
- for (int i = 0; i < 16384; i++) {
- int d = 0;
- lights[i] = (byte) d;
- }
- return lights;
- }
-
- public byte[] getBlockLightArray() {
- byte[] lights = new byte[16384];
- for (int i = 0; i < 16384; i++) {
- int d = 0;
- lights[i] = (byte) d;
- }
- return lights;
- }
-
- public byte[] getHeightMapArray(int x, int z) {
- byte[] heights = new byte[256];
- for (int i = 0; i < 256; i++) {
- int d = 1;
- heights[i] = (byte) ((z << 4) | x & 0xFF);
- }
- return heights;
- }
-
- public byte[] getBiomeIdArray() {
- byte[] ids = new byte[1024];
- for (int i = 0; i < 1024; i++) {
- int d = i;
- ids[i] = (byte) (d >> 24);
- }
- return ids;
- }
-
- public byte[] getBlockEntitiesArray() {
- byte[] ids = new byte[32];
- for (int i = 0; i < 32; i++) {
- int d = i;
- ids[i] = (byte) d;
- }
- return ids;
- }
-}
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/PipePlayer.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/PipePlayer.java
index 0cf725f..f5c39fc 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/PipePlayer.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/PipePlayer.java
@@ -12,11 +12,8 @@ import com.nukkitx.protocol.bedrock.data.Attribute;
import com.nukkitx.protocol.bedrock.data.GamePublishSetting;
import com.nukkitx.protocol.bedrock.data.GameRule;
import com.nukkitx.protocol.bedrock.packet.*;
-import io.netty.buffer.ByteBuf;
-import main.com.pyratron.pugmatt.bedrockconnect.chunk.ChunkData;
import main.com.pyratron.pugmatt.bedrockconnect.gui.UIComponents;
import main.com.pyratron.pugmatt.bedrockconnect.sql.Data;
-import main.com.pyratron.pugmatt.bedrockconnect.utils.PaletteManager;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -90,22 +87,6 @@ public class PipePlayer {
public void joinGame() {
- /**
- StartGamePacket pkStartGame = new StartGamePacket();
- pkStartGame.setUniqueEntityId(packet.getEntityId());
- pkStartGame.setRuntimeEntityId(packet.getEntityId());
- pkStartGame.setDimensionId(0);
- pkStartGame.setSeed(0);
- pkStartGame.setGeneratorId(1);
- pkStartGame.setDifficulty(0);
- pkStartGame.setDefaultSpawn(new Vector3i(0, 72, 0));
- pkStartGame.setPlayerPosition(new Vector3f(0f, 72f + 5, 0f));
- pkStartGame.setLevelId("");
- pkStartGame.setWorldName("World");
- pkStartGame.setDefaultPlayerPermission(2);
- pkStartGame.setCommandsEnabled(true);
- pkStartGame.setPremiumWorldTemplateId(""); **/
-
MovePlayerPacket mp = new MovePlayerPacket();
mp.setRuntimeEntityId(-1);
mp.setOnGround(false);
@@ -167,32 +148,8 @@ public class PipePlayer {
spawn();
}
- public void sendAttributes() {
- UpdateAttributesPacket pk = new UpdateAttributesPacket();
- pk.setRuntimeEntityId(0);
- pk.setAttributes(new ArrayList<Attribute>() {
- {
- add(new Attribute("minecraft:health", 0.00f, 20.00f, 20.00f, 20.00f));
- add(new Attribute("minecraft:player.hunger", 0.00f, 20.00f, 20.00f, 20.00f));
- add(new Attribute("minecraft:movement", 0.00f, 340282346638528859811704183484516925440.00f, 0.10f, 0.10f));
- add(new Attribute("minecraft:player.level", 0.00f, 24791.00f, 0.00f, 0.00f));
- add(new Attribute("minecraft:player.experience", 0.00f, 1.00f, 0.00f, 0.00f));
- }
- });
- session.sendPacketImmediately(pk);
-
- RespawnPacket rp = new RespawnPacket();
- rp.setPosition(new Vector3f(0, 0 ,0));
- session.sendPacketImmediately(rp);
-
- spawn();
- }
-
public void spawn() {
- ChunkData data = new ChunkData(true);
- data.encode();
-
Vector3f pos = new Vector3f(-249, 67, -275);
int chunkX = pos.getFloorX() >> 4;
int chunkZ = pos.getFloorX() >> 4;
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java
index 46a8ff1..cd63e1c 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java
@@ -61,11 +61,11 @@ public class Server {
}
- public Server() {
+ public Server(String port) {
Server current = this;
players = new ArrayList<>();
- InetSocketAddress bindAddress = new InetSocketAddress("0.0.0.0", 19132);
+ InetSocketAddress bindAddress = new InetSocketAddress("0.0.0.0", Integer.parseInt(port));
codec = Bedrock_v361.V361_CODEC;
server = new BedrockServer(bindAddress);
pong = new BedrockPong();
@@ -75,7 +75,7 @@ public class Server {
pong.setPlayerCount(0);
pong.setMaximumPlayerCount(20);
pong.setGameType("Survival");
- pong.setIpv4Port(19132);
+ pong.setIpv4Port(Integer.parseInt(port));
pong.setProtocolVersion(Bedrock_v361.V361_CODEC.getProtocolVersion());
server.setHandler(new BedrockServerEventHandler() {
@Override
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ChunkData.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ChunkData.java
deleted file mode 100644
index a7460d3..0000000
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ChunkData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package main.com.pyratron.pugmatt.bedrockconnect.chunk;
-
-import main.com.pyratron.pugmatt.bedrockconnect.utils.BinaryStream;
-
-import java.util.Arrays;
-
-// reference: https://github.com/DragonetMC/DragonProxy/blob/master/protocol/src/main/java/org/dragonet/protocol/type/chunk/ChunkData.java
-// Original Author: HoverEpic
-
-public class ChunkData extends BinaryStream {
-
- /**
- * 16x16x16 section of the chunk. The array's keys also indicate the
- * section's height (the 3rd element of the array will be the 3rd section
- * from bottom, starting at `y=24`). The amount of sections should be in a
- * range from 0 (empty chunk) to 16.
- */
- public Section[] sections = new Section[0];
- public short[] heights = new short[256];
- /**
- * Biomes in order `xz`.
- */
- public byte[] biomes = new byte[256];
- /**
- * Colums where there are world borders (in format `xz`). This feature
- * hasn't been implemented in the game yet and crashes the client.
- */
- public byte[] borders = new byte[0];
- public ExtraData[] extraData = new ExtraData[0];
- /**
- * Additional data for the chunk's block entities (tiles), encoded in the
- * same way as BlockEntityData.nbt is. The position is given by the `Int`
- * tags `x`, `y`, `z` which are added to the block's compound tag together
- * with the `String` tag `id` that contains the name of the tile in pascal
- * case. Wrong encoding or missing tags may result in the block becoming
- * invisible.
- */
- public byte[] blockEntities = new byte[0];
-
- public ChunkData(boolean empty) {
- if(empty) {
- sections = new Section[16];
- for (int cy = 0; cy < 16; cy++) {
- sections[cy] = new Section();
- if (cy < 6)
- Arrays.fill(sections[cy].blockIds, (byte) 1);
- }
- }
- }
-
- public ChunkData(Section[] sections, short[] heights, byte[] biomes, byte[] borders, ExtraData[] extraData,
- byte[] blockEntities) {
- this.sections = sections;
- this.heights = heights;
- this.biomes = biomes;
- this.borders = borders;
- this.extraData = extraData;
- this.blockEntities = blockEntities;
- }
-
- public void encode() {
- reset();
- putByte((byte) (sections.length & 0xff));
- for (Section s : sections) {
- s.encode(this);
- }
- for (short h : heights) {
- this.putLShort(h);
- }
- this.put(biomes);
- this.putByte((byte) (borders.length & 0xFF));
- this.put(borders);
- this.putVarInt(extraData.length);
- for (ExtraData extra : extraData) {
- extra.encode(this);
- }
- this.put(blockEntities);
- }
-
-}
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ExtraData.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ExtraData.java
deleted file mode 100644
index 351b2ad..0000000
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/ExtraData.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package main.com.pyratron.pugmatt.bedrockconnect.chunk;
-
-// reference: https://github.com/DragonetMC/DragonProxy/blob/master/protocol/src/main/java/org/dragonet/protocol/type/chunk/ExtraData.java
-// Original Author: HoverEpic
-
-import main.com.pyratron.pugmatt.bedrockconnect.utils.BinaryStream;
-
-public class ExtraData {
-
- private int key;
- private short value;
-
- public int getKey() {
- return key;
- }
-
- public short getValue() {
- return value;
- }
-
- public ExtraData() {
-
- }
-
- public ExtraData(int key, short value) {
- this.key = key;
- this.value = value;
- }
-
- public void encode(BinaryStream out) {
- out.putVarInt(key);
- out.putLShort(value);
- }
-
- public void decode(BinaryStream in) {
- key = (int) in.getUnsignedVarInt();
- value = (short) in.getLShort();
- }
-
-}
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/Section.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/Section.java
deleted file mode 100644
index f771f06..0000000
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/chunk/Section.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package main.com.pyratron.pugmatt.bedrockconnect.chunk;
-
-// reference: https://github.com/DragonetMC/DragonProxy/blob/master/protocol/src/main/java/org/dragonet/protocol/type/chunk/Section.java
-// Original Author: HoverEpic
-
-import main.com.pyratron.pugmatt.bedrockconnect.utils.BinaryStream;
-
-public class Section {
-
- public byte storageVers = 0;
- public byte[] blockIds = new byte[4096];
- public byte[] blockMetas = new byte[2048];
-
- public Section(byte storageVers, byte[] blockIds, byte[] blockMetas) {
- this.storageVers = storageVers;
- this.blockIds = blockIds;
- this.blockMetas = blockMetas;
- }
-
- public Section() {
-
- }
-
- public void encode(BinaryStream out) {
- out.putByte(storageVers);
- out.put(blockIds);
- out.put(blockMetas);
- }
-
- public void decode(BinaryStream in) {
- storageVers = (byte) (in.getByte() & 0xFF);
- blockIds = in.get(4096);
- blockMetas = in.get(2048);
- }
-}
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/ClientPacketHandler.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/ClientPacketHandler.java
index 306c3a2..0987f46 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/ClientPacketHandler.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/ClientPacketHandler.java
@@ -1,33 +1,16 @@
package main.com.pyratron.pugmatt.bedrockconnect.listeners;
-import com.fasterxml.jackson.databind.node.ArrayNode;
import com.nukkitx.protocol.bedrock.BedrockClientSession;
import com.nukkitx.protocol.bedrock.packet.*;
import com.nukkitx.protocol.bedrock.handler.BedrockPacketHandler;
import com.nukkitx.protocol.bedrock.packet.LoginPacket;
-import main.com.pyratron.pugmatt.bedrockconnect.AuthData;
-import main.com.pyratron.pugmatt.bedrockconnect.PipePlayer;
-import net.minidev.json.JSONObject;
-
-// Heavily referenced from https://github.com/NukkitX/ProxyPass/blob/master/src/main/java/com/nukkitx/proxypass/network/bedrock/session/UpstreamPacketHandler.java
public class ClientPacketHandler implements BedrockPacketHandler {
private static final int PIXEL_SIZE = 4;
- public static final int SINGLE_SKIN_SIZE = 64 * 32 * PIXEL_SIZE;
- public static final int DOUBLE_SKIN_SIZE = 64 * 64 * PIXEL_SIZE;
- public static final int SKIN_128_64_SIZE = 128 * 64 * PIXEL_SIZE;
- public static final int SKIN_128_128_SIZE = 128 * 128 * PIXEL_SIZE;
-
private BedrockClientSession session;
- private PipePlayer player;
-
- private JSONObject skinData;
- private JSONObject extraData;
- private ArrayNode chainData;
- private AuthData authData;
@Override
public boolean handle(AdventureSettingsPacket packet) {
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java
index e162ec0..a1ccb90 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java
@@ -1,7 +1,6 @@
package main.com.pyratron.pugmatt.bedrockconnect.listeners;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.nukkitx.network.util.Preconditions;
import com.nukkitx.protocol.bedrock.packet.*;
@@ -13,9 +12,7 @@ import com.nukkitx.protocol.bedrock.BedrockServerSession;
import com.nukkitx.protocol.bedrock.handler.BedrockPacketHandler;
import com.nukkitx.protocol.bedrock.packet.LoginPacket;
import com.nukkitx.protocol.bedrock.util.EncryptionUtils;
-import main.com.pyratron.pugmatt.bedrockconnect.AuthData;
import main.com.pyratron.pugmatt.bedrockconnect.BedrockConnect;
-import main.com.pyratron.pugmatt.bedrockconnect.PipePlayer;
import main.com.pyratron.pugmatt.bedrockconnect.Server;
import main.com.pyratron.pugmatt.bedrockconnect.gui.UIComponents;
import main.com.pyratron.pugmatt.bedrockconnect.gui.UIForms;
@@ -25,192 +22,21 @@ import java.io.IOException;
import java.security.interfaces.ECPublicKey;
import java.util.ArrayList;
import java.util.List;
-import java.util.UUID;
// Heavily referenced from https://github.com/NukkitX/ProxyPass/blob/master/src/main/java/com/nukkitx/proxypass/network/bedrock/session/UpstreamPacketHandler.java
public class PacketHandler implements BedrockPacketHandler {
- private static final int PIXEL_SIZE = 4;
-
- public static final int SINGLE_SKIN_SIZE = 64 * 32 * PIXEL_SIZE;
- public static final int DOUBLE_SKIN_SIZE = 64 * 64 * PIXEL_SIZE;
- public static final int SKIN_128_64_SIZE = 128 * 64 * PIXEL_SIZE;
- public static final int SKIN_128_128_SIZE = 128 * 128 * PIXEL_SIZE;
-
private Server server;
private BedrockServerSession session;
private String name;
private String uuid;
- private JSONObject skinData;
private JSONObject extraData;
- private ArrayNode chainData;
- private AuthData authData;
-
- /** @Override
- public boolean handle(AdventureSettingsPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AnimatePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(BlockEntityDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(BlockPickRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(BookEditPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ClientToServerHandshakePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(CommandBlockUpdatePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(CommandRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ContainerClosePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(CraftingEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(EntityEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(EntityFallPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(EntityPickRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(EventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(InteractPacket packet) {
- System.out.println(packet.getClass().getName());
- session.sendPacketImmediately(packet);
- return false;
- }
-
- @Override
- public boolean handle(InventoryContentPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(InventorySlotPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(InventoryTransactionPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ItemFrameDropItemPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(LabTablePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(LecternUpdatePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(LevelSoundEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(LevelSoundEvent3Packet packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MapInfoRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MobArmorEquipmentPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MobEquipmentPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- } **/
-
@Override
public boolean handle(ModalFormResponsePacket packet) {
- System.out.println(packet.getClass().getName());
- System.out.println("\"" + packet.getFormData().replaceAll("\\s+","") + "\"");
switch (packet.getFormId()) {
case UIForms.MAIN:
@@ -261,7 +87,7 @@ public class PacketHandler implements BedrockPacketHandler {
if (addServer) {
List<String> serverList = server.getPlayer(uuid).getServerList();
if (serverList.size() >= server.getPlayer(uuid).getServerLimit())
- session.sendPacketImmediately(UIForms.createError("You have it your serverlist limit of " + server.getPlayer(uuid).getServerLimit() + " servers. Remove some to add more."));
+ session.sendPacketImmediately(UIForms.createError("You have hit your serverlist limit of " + server.getPlayer(uuid).getServerLimit() + " servers. Remove some to add more."));
else {
serverList.add(data.get(0) + ":" + data.get(1));
server.getPlayer(uuid).setServerList(serverList);
@@ -310,607 +136,12 @@ public class PacketHandler implements BedrockPacketHandler {
return false;
}
- /**
- @Override
- public boolean handle(MoveEntityAbsolutePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MovePlayerPacket packet) {
- System.out.println(packet.getClass().getName());
- session.sendPacketImmediately(packet);
- return false;
- }
-
- @Override
- public boolean handle(NetworkStackLatencyPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PhotoTransferPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlayerActionPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlayerHotbarPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlayerInputPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlayerSkinPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PurchaseReceiptPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- } **/
-
- @Override
- public boolean handle(RequestChunkRadiusPacket packet) {
- System.out.println(packet.getClass().getName());
- /** chunk = new ChunkRadiusUpdatedPacket();
- chunk.setRadius(Math.max(3, Math.min(packet.getRadius(), 5)));
- //PacketHeader ph = new PacketHeader();
- // ph.set
- //chunk.setHeader();
- session.sendPacketImmediately(chunk);
-
- int chunkPositionX = 0;
- int chunkPositionZ = 0;
- int chunkRadius = 5;
- for (int x = -chunkRadius; x < chunkRadius; x++) {
- for (int z = -chunkRadius; z < chunkRadius; z++) {
- FullChunkDataPacket fullChunk = new FullChunkDataPacket();
- fullChunk.setChunkX(chunkPositionX + x);
- fullChunk.setChunkZ(chunkPositionZ + z);
- fullChunk.setData(new byte[0]);
- session.sendPacketImmediately(fullChunk);
- }
- }
-
- PlayStatusPacket play = new PlayStatusPacket();
- play.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
- session.sendPacketImmediately(play);
-
- SetTimePacket st = new SetTimePacket();
- st.setTime(0);
- session.sendPacketImmediately(st);
- return false; **/
- return false;
- }
- /**
- @Override
- public boolean handle(RiderJumpPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ServerSettingsRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetDefaultGameTypePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- } **/
-
@Override
public boolean handle(SetLocalPlayerAsInitializedPacket packet) {
session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList()));
return false;
}
- /**
- @Override
- public boolean handle(SetPlayerGameTypePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SubClientLoginPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(TextPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AddBehaviorTreePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AddEntityPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AddHangingEntityPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AddItemEntityPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AddPaintingPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AddPlayerPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AvailableCommandsPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(BlockEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(BossEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(CameraPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ChangeDimensionPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ChunkRadiusUpdatedPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ClientboundMapItemDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(CommandOutputPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ContainerOpenPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ContainerSetDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(CraftingDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ExplodePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(FullChunkDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(GameRulesChangedPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(GuiDataPickItemPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(HurtArmorPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AutomationClientConnectPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(LevelEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MapCreateLockedCopyPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MobEffectPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ModalFormRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(MoveEntityDeltaPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(NpcRequestPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(OnScreenTextureAnimationPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlayerListPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlaySoundPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(PlayStatusPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(RemoveEntityPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(RemoveObjectivePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ResourcePackChunkDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ResourcePackDataInfoPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ResourcePacksInfoPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ResourcePackStackPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(RespawnPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ScriptCustomEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ServerSettingsResponsePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ServerToClientHandshakePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetCommandsEnabledPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetDifficultyPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetDisplayObjectivePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetEntityDataPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetEntityLinkPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetEntityMotionPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetHealthPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetLastHurtByPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetScoreboardIdentityPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetScorePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetSpawnPositionPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetTimePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SetTitlePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ShowCreditsPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ShowProfilePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(ShowStoreOfferPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SimpleEventPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SpawnExperienceOrbPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(StartGamePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(StopSoundPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(StructureBlockUpdatePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(TakeItemEntityPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(TransferPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(UpdateAttributesPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(UpdateBlockPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(UpdateBlockSyncedPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(UpdateEquipPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(UpdateSoftEnumPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(UpdateTradePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(AvailableEntityIdentifiersPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(BiomeDefinitionListPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(LevelSoundEvent2Packet packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(NetworkChunkPublisherUpdatePacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(SpawnParticleEffectPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- }
-
- @Override
- public boolean handle(VideoStreamConnectPacket packet) {
- System.out.println(packet.getClass().getName());
- return false;
- } **/
-
public PacketHandler(BedrockServerSession session, Server server) {
this.session = session;
this.server = server;
@@ -956,12 +187,6 @@ public class PacketHandler implements BedrockPacketHandler {
}
@Override
- public boolean handle(ResourcePackChunkRequestPacket packet) {
- System.out.println("Received Chunk Radius request");
- return false;
- }
-
- @Override
public boolean handle(ResourcePackClientResponsePacket packet) {
switch (packet.getStatus()) {
case COMPLETED:
@@ -1007,7 +232,6 @@ public class PacketHandler implements BedrockPacketHandler {
if (certChainData.getNodeType() != JsonNodeType.ARRAY) {
throw new RuntimeException("Certificate data is not valid");
}
- chainData = (ArrayNode) certChainData;
boolean validChain;
try {
@@ -1022,9 +246,6 @@ public class PacketHandler implements BedrockPacketHandler {
extraData = (JSONObject) jwt.getPayload().toJSONObject().get("extraData");
- this.authData = new AuthData(extraData.getAsString("displayName"),
- UUID.fromString(extraData.getAsString("identity")), extraData.getAsString("XUID"));
-
if (payload.get("identityPublicKey").getNodeType() != JsonNodeType.STRING) {
throw new RuntimeException("Identity Public Key was not found!");
}
@@ -1032,7 +253,6 @@ public class PacketHandler implements BedrockPacketHandler {
JWSObject clientJwt = JWSObject.parse(packet.getSkinData().toString());
verifyJwt(clientJwt, identityPublicKey);
- skinData = clientJwt.getPayload().toJSONObject();
System.out.println("Made it through login - " + "User: " + extraData.getAsString("displayName") + " (" + extraData.getAsString("identity") + ")");
@@ -1047,42 +267,6 @@ public class PacketHandler implements BedrockPacketHandler {
resourcePacksInfo.setForcedToAccept(false);
session.sendPacketImmediately(resourcePacksInfo);
- //this.player = this.server.addPlayer(authData, session);
- //System.out.println(this.player.getProtocol().getProfile().getId());
-
- /** MovePlayerPacket mp = new MovePlayerPacket();
- mp.setRuntimeEntityId(-1);
- session.sendPacket(mp);
-
- SetSpawnPositionPacket ss = new SetSpawnPositionPacket();
- ss.setBlockPosition(new Vector3i(0, 0 ,0));
- ss.setSpawnForced(true);
- ss.setSpawnType(SetSpawnPositionPacket.Type.PLAYER_SPAWN);
- session.sendPacket(ss);
-
- session.sendPacket(mp);
-
- SetTimePacket st = new SetTimePacket();
- st.setTime(0);
- session.sendPacket(st);
-
- RespawnPacket rp = new RespawnPacket();
- rp.setPosition(new Vector3f(0, 0 ,0));
- session.sendPacket(rp); **/
-
- //MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
- //PlayerList playerList = server.getPlayerList();
-
- // GameProfile gameProfile = new GameProfile(UUID.fromString(extraData.getAsString("identity")), extraData.getAsString("displayName"));
-
- // PipePlayer pl = new PipePlayer(session);
- // pl.addEvent(new LoginEvent(gameProfile));
- // this.server.addPlayer(pl);
-
-
-
-
- //saveSkin();
} catch (Exception e) {
session.disconnect("disconnectionScreen.internalError.cantConnect");
throw new RuntimeException("Unable to complete login", e);
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/sql/Data.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/sql/Data.java
index 68caa23..24ae277 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/sql/Data.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/sql/Data.java
@@ -16,7 +16,11 @@ import java.util.List;
public class Data {
- public Data() {
+ String serverLimit;
+
+ public Data(String serverLimit) {
+ this.serverLimit = serverLimit;
+
try {
createTables();
} catch(Exception e) {
@@ -107,7 +111,7 @@ public class Data {
PreparedStatement s = BedrockConnect.connection.prepareStatement("INSERT INTO servers (uuid, name, serverLimit) VALUES ('" + uuid + "', '" + name + "', 10)");
s.executeUpdate();
System.out.println("[BedrockConnect] Added new user '" + name + "' (" + uuid + ") to Database.");
- PipePlayer pl = new PipePlayer(uuid, db, session, new ArrayList<>(), 10);
+ PipePlayer pl = new PipePlayer(uuid, db, session, new ArrayList<>(), Integer.parseInt(serverLimit));
BedrockConnect.server.addPlayer(pl);
}
catch (Exception e)
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/utils/FixedPlayerListPacket.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/utils/FixedPlayerListPacket.java
deleted file mode 100644
index 8313681..0000000
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/utils/FixedPlayerListPacket.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package main.com.pyratron.pugmatt.bedrockconnect.utils;
-
-import com.nukkitx.protocol.bedrock.packet.PlayerListPacket;
-
-public class FixedPlayerListPacket extends PlayerListPacket {
-
-}