diff --git a/.idea/dictionaries/moritz.xml b/.idea/dictionaries/moritz.xml new file mode 100644 index 000000000..d291cb96b --- /dev/null +++ b/.idea/dictionaries/moritz.xml @@ -0,0 +1,17 @@ + + + + clientbound + cooldown + gamemode + minosoft + mojang + motd + multiblock + notchian + overworld + serverbound + singleplayer + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/doc/Roadmap.txt b/doc/Roadmap.txt index 11d29ee82..340250f56 100644 --- a/doc/Roadmap.txt +++ b/doc/Roadmap.txt @@ -9,7 +9,7 @@ Multithreaded Mostly GPU based, not cpu Aimed for performance (goal: reach v-sync framerate, dynamically disable effects, ...) Server support -No original Minecraft workarounds (API: plugin channel): No invisible entities to show holograms, No Scoreboard workarounds, ... (Scoreboard still must be implemented to avoid compatiblity issues) +No original Minecraft workarounds (API: plugin channel): No invisible entities to show holograms, No Scoreboard workarounds, ... (Scoreboard still must be implemented to avoid compatibility issues) Debug settings (stop entity updates, entity limiter, ...) No cheat client (only per modding api) Server GUI API (server can send custom GUIs to client) diff --git a/src/main/java/de/bixilon/minosoft/config/ConfigEnum.java b/src/main/java/de/bixilon/minosoft/config/ConfigEnum.java index 19bbf9cd6..5d48663d9 100644 --- a/src/main/java/de/bixilon/minosoft/config/ConfigEnum.java +++ b/src/main/java/de/bixilon/minosoft/config/ConfigEnum.java @@ -1,5 +1,5 @@ package de.bixilon.minosoft.config; public interface ConfigEnum { - public String getPath(); + String getPath(); } diff --git a/src/main/java/de/bixilon/minosoft/config/Configuration.java b/src/main/java/de/bixilon/minosoft/config/Configuration.java index b3092fa30..ac3ad2c36 100644 --- a/src/main/java/de/bixilon/minosoft/config/Configuration.java +++ b/src/main/java/de/bixilon/minosoft/config/Configuration.java @@ -62,6 +62,7 @@ public class Configuration { String[] spilt = path.split("\\."); LinkedHashMap temp = config; for (int i = 0; i < spilt.length - 1; i++) { + //noinspection unchecked temp = (LinkedHashMap) temp.get(spilt[i]); } return temp.get(spilt[spilt.length - 1]); diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/BlockPosition.java b/src/main/java/de/bixilon/minosoft/game/datatypes/BlockPosition.java index de99e776a..13d11074f 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/BlockPosition.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/BlockPosition.java @@ -1,9 +1,9 @@ package de.bixilon.minosoft.game.datatypes; public class BlockPosition { - int x; - int y; - int z; + final int x; + final int y; + final int z; public BlockPosition(int x, short y, int z) { // y min -2048, max 2047 diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/ChatComponent.java b/src/main/java/de/bixilon/minosoft/game/datatypes/ChatComponent.java index c7f9f1d9d..ea874c622 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/ChatComponent.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/ChatComponent.java @@ -27,11 +27,14 @@ public class ChatComponent { return json.getString("text"); } StringBuilder buffer = new StringBuilder(); - JSONArray arr = json.getJSONArray("extra"); - for (int i = 0; i < arr.length(); i++) { - buffer.append(arr.getJSONObject(i).getString("text")); + if (json.has("extra")) { + JSONArray arr = json.getJSONArray("extra"); + for (int i = 0; i < arr.length(); i++) { + buffer.append(arr.getJSONObject(i).getString("text")); + } + return buffer.toString(); } - return buffer.toString(); + return ""; } public JSONObject getRaw() { diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkLocation.java b/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkLocation.java index dc02b2e52..f1bd3c12f 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkLocation.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkLocation.java @@ -4,8 +4,8 @@ package de.bixilon.minosoft.game.datatypes; * Chunk X and Z location (block position / 16, rounded down) */ public class ChunkLocation { - int x; - int z; + final int x; + final int z; public ChunkLocation(int x, int z) { this.x = x; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkNibbleLocation.java b/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkNibbleLocation.java index 16eeafc7a..53708f5be 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkNibbleLocation.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/ChunkNibbleLocation.java @@ -4,9 +4,9 @@ package de.bixilon.minosoft.game.datatypes; * Chunk X, Y and Z location (max 16x16x16) */ public class ChunkNibbleLocation { - int x; - int y; - int z; + final int x; + final int y; + final int z; public ChunkNibbleLocation(int x, int y, int z) { this.x = x; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/Difficulty.java b/src/main/java/de/bixilon/minosoft/game/datatypes/Difficulty.java index 0101ffc4d..1d8cbff8c 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/Difficulty.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/Difficulty.java @@ -6,7 +6,7 @@ public enum Difficulty { NORMAL(2), HARD(3); - int id; + final int id; Difficulty(int id) { this.id = id; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/Dimension.java b/src/main/java/de/bixilon/minosoft/game/datatypes/Dimension.java index 721bdb656..208bf8bb1 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/Dimension.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/Dimension.java @@ -5,7 +5,7 @@ public enum Dimension { OVERWORLD(0), END(1); - int id; + final int id; Dimension(int id) { this.id = id; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/GameMode.java b/src/main/java/de/bixilon/minosoft/game/datatypes/GameMode.java index a006bf3a9..a06786e47 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/GameMode.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/GameMode.java @@ -6,7 +6,7 @@ public enum GameMode { ADVENTURE(2), SPECTATOR(3); - int id; + final int id; GameMode(int id) { this.id = id; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/LevelType.java b/src/main/java/de/bixilon/minosoft/game/datatypes/LevelType.java index bba161b24..18d98a2dc 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/LevelType.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/LevelType.java @@ -9,7 +9,7 @@ public enum LevelType { CUSTOMIZED("customized"), BUFFET("buffet"); - String type; + final String type; LevelType(String type) { this.type = type; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/Locale.java b/src/main/java/de/bixilon/minosoft/game/datatypes/Locale.java index d4b2099a2..13863e860 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/Locale.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/Locale.java @@ -5,7 +5,7 @@ public enum Locale { EN_GB("en_gb"), DE_DE("de_DE"); - String name; + final String name; Locale(String name) { this.name = name; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/World.java b/src/main/java/de/bixilon/minosoft/game/datatypes/World.java index 932ff1101..acf74f97d 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/World.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/World.java @@ -39,10 +39,8 @@ public class World { public void setBlock(BlockPosition pos, Block block) { if (getChunk(pos.getChunkLocation()) != null) { getChunk(pos.getChunkLocation()).setBlock(pos.getX() % 16, pos.getX(), pos.getZ() % 16, block); - } else { - //throw new IllegalAccessException("Chunk is not loaded!"); - // ToDo } + // do nothing if chunk is unloaded } public void unloadChunk(ChunkLocation location) { diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/blocks/Block.java b/src/main/java/de/bixilon/minosoft/game/datatypes/blocks/Block.java index 3615ba110..f4dcedcf4 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/blocks/Block.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/blocks/Block.java @@ -48,8 +48,8 @@ public enum Block { //ToDo all blocks //ToDo post water update block states - Identifier identifier; - int legacyId; + final Identifier identifier; + final int legacyId; int legacyData; Block(Identifier identifier, int legacyId, int legacyData) { diff --git a/src/main/java/de/bixilon/minosoft/logging/Log.java b/src/main/java/de/bixilon/minosoft/logging/Log.java index 5354d6e07..b5e653c88 100644 --- a/src/main/java/de/bixilon/minosoft/logging/Log.java +++ b/src/main/java/de/bixilon/minosoft/logging/Log.java @@ -4,7 +4,7 @@ import java.text.SimpleDateFormat; public class Log { static LogLevel level = LogLevel.PROTOCOL; - static SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + final static SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); public static void log(LogLevel l, String message) { if (l.getId() > level.getId()) { diff --git a/src/main/java/de/bixilon/minosoft/objects/Account.java b/src/main/java/de/bixilon/minosoft/objects/Account.java index 8527f4952..fc0287e04 100644 --- a/src/main/java/de/bixilon/minosoft/objects/Account.java +++ b/src/main/java/de/bixilon/minosoft/objects/Account.java @@ -10,8 +10,8 @@ import java.util.UUID; public class Account { - String username; - String password; + final String username; + final String password; String playerName; String token; diff --git a/src/main/java/de/bixilon/minosoft/objects/Player.java b/src/main/java/de/bixilon/minosoft/objects/Player.java index 9ed3edfc8..db417765f 100644 --- a/src/main/java/de/bixilon/minosoft/objects/Player.java +++ b/src/main/java/de/bixilon/minosoft/objects/Player.java @@ -7,7 +7,7 @@ import de.bixilon.minosoft.game.datatypes.player.Location; import java.util.UUID; public class Player { - Account acc; + final Account acc; float health; short food; float saturation; diff --git a/src/main/java/de/bixilon/minosoft/objects/ServerListPing.java b/src/main/java/de/bixilon/minosoft/objects/ServerListPing.java index adbc6abfb..5796885c0 100644 --- a/src/main/java/de/bixilon/minosoft/objects/ServerListPing.java +++ b/src/main/java/de/bixilon/minosoft/objects/ServerListPing.java @@ -3,7 +3,7 @@ package de.bixilon.minosoft.objects; import org.json.JSONObject; public class ServerListPing { - JSONObject raw; + final JSONObject raw; public ServerListPing(JSONObject json) { this.raw = json; diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChangeGameState.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChangeGameState.java index 1c9a696b5..d93a9ce65 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChangeGameState.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChangeGameState.java @@ -64,7 +64,7 @@ public class PacketChangeGameState implements ClientboundPacket { FADE_VALUE(7), FADE_TIME(8); - byte id; + final byte id; Reason(byte id) { this.id = id; diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkBulk.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkBulk.java index 7a535f449..42da49dcd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkBulk.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkBulk.java @@ -17,7 +17,7 @@ import de.bixilon.minosoft.util.Util; import java.util.HashMap; public class PacketChunkBulk implements ClientboundPacket { - HashMap chunkMap = new HashMap<>(); + final HashMap chunkMap = new HashMap<>(); @Override diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/login/PacketEncryptionResponse.java b/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/login/PacketEncryptionResponse.java index b4923b132..d9dffe893 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/login/PacketEncryptionResponse.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/login/PacketEncryptionResponse.java @@ -12,9 +12,9 @@ import java.security.PublicKey; public class PacketEncryptionResponse implements ServerboundPacket { - byte[] secret; - byte[] token; - SecretKey secretKey; + final byte[] secret; + final byte[] token; + final SecretKey secretKey; public PacketEncryptionResponse(SecretKey secret, byte[] token, PublicKey key) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java index 93de7d3e3..3dab1d667 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java @@ -20,7 +20,7 @@ import java.math.BigInteger; import java.security.PublicKey; public class PacketHandler { - Connection connection; + final Connection connection; public PacketHandler(Connection connection) { this.connection = connection; diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java index ecf7a2699..95490f68e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java @@ -6,8 +6,8 @@ import java.util.Map; public class Protocol_1_7_10 implements Protocol { - public HashMap serverboundPacketMapping; - public HashMap clientboundPacketMapping; + public final HashMap serverboundPacketMapping; + public final HashMap clientboundPacketMapping; Protocol_1_7_10() { // serverbound diff --git a/src/main/java/de/bixilon/minosoft/util/BitByte.java b/src/main/java/de/bixilon/minosoft/util/BitByte.java index bff6ebe52..83dbf08ad 100644 --- a/src/main/java/de/bixilon/minosoft/util/BitByte.java +++ b/src/main/java/de/bixilon/minosoft/util/BitByte.java @@ -8,14 +8,6 @@ public class BitByte { return bitSet; } - public static short[] byteArrayToShortArray(byte[] readBytes) { - short[] ret = new short[readBytes.length]; - for (int i = 0; i < readBytes.length; i++) { - ret[0] = readBytes[0]; - } - return ret; - } - public static byte getLow4Bits(byte input) { return (byte) (input & 0xF); }