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);
}