diff options
| author | Pugmatt <pugmatt@gmail.com> | 2019-08-09 18:44:16 -0400 |
|---|---|---|
| committer | Pugmatt <pugmatt@gmail.com> | 2019-08-09 18:44:16 -0400 |
| commit | c5ae52d19134f35627922de7f97763c363177d64 (patch) | |
| tree | 5d3ed08f797e8cd63f7915b8690bf2c0dd529c37 | |
| parent | 7edc5e6e7871a318de76d083b8e70b518ad9e6af (diff) | |
| download | BedrockConnect-1.0.tar.gz BedrockConnect-1.0.tar.bz2 BedrockConnect-1.0.zip | |
Clean up code + add more startup arguements1.0
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 { - -} |
