diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 419ea165d..3986a2aa1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ variables:
MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
MAVEN_CLI_OPTS: "--errors --fail-at-end --show-version"
-image: maven:3-openjdk-16
+image: maven:3-openjdk-11
cache:
paths:
diff --git a/jitpack.yml b/jitpack.yml
deleted file mode 100644
index e5bc069fc..000000000
--- a/jitpack.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-before_install:
- - wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
- - source install-jdk.sh --feature 16
- - jshell --version
diff --git a/pom.xml b/pom.xml
index 071b4633f..7bc023972 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
- 14
+ ${maven.compiler.target}
@@ -73,8 +73,8 @@
- 14
- 14
+ ${maven.compiler.source}
+ ${maven.compiler.target}
@@ -194,8 +194,8 @@
UTF-8
de.bixilon.minosoft.Minosoft
- 14
- 14
+ 11
+ ${maven.compiler.source}
18-ea+4
1.5.21
3.2.3
diff --git a/src/main/java/de/bixilon/minosoft/config/key/KeyCodes.kt b/src/main/java/de/bixilon/minosoft/config/key/KeyCodes.kt
index 9558f3357..a3c85314e 100644
--- a/src/main/java/de/bixilon/minosoft/config/key/KeyCodes.kt
+++ b/src/main/java/de/bixilon/minosoft/config/key/KeyCodes.kt
@@ -17,7 +17,10 @@ import org.lwjgl.glfw.GLFW.*
import java.util.*
// ToDo: Replace glfwKeyIds
-enum class KeyCodes(val glfwKeyId: Int) {
+enum class KeyCodes(
+ @Deprecated("GLFW specific -> abstraction layer")
+ val glfwKeyId: Int,
+) {
KEY_UNKNOWN(GLFW_KEY_UNKNOWN),
KEY_SPACE(GLFW_KEY_SPACE),
KEY_APOSTROPHE(GLFW_KEY_APOSTROPHE),
diff --git a/src/main/java/de/bixilon/minosoft/data/commands/CommandArgumentNode.java b/src/main/java/de/bixilon/minosoft/data/commands/CommandArgumentNode.java
index ba59dbdc1..28f72e652 100644
--- a/src/main/java/de/bixilon/minosoft/data/commands/CommandArgumentNode.java
+++ b/src/main/java/de/bixilon/minosoft/data/commands/CommandArgumentNode.java
@@ -45,14 +45,25 @@ public class CommandArgumentNode extends CommandLiteralNode {
}
if (BitByte.isBitMask(flags, 0x10)) {
String resourceLocation = buffer.readResourceLocation().getFull();
- this.suggestionType = switch (resourceLocation) {
- case "minecraft:ask_server" -> CommandArgumentNode.SuggestionTypes.ASK_SERVER;
- case "minecraft:all_recipes" -> CommandArgumentNode.SuggestionTypes.ALL_RECIPES;
- case "minecraft:available_sounds" -> CommandArgumentNode.SuggestionTypes.AVAILABLE_SOUNDS;
- case "minecraft:summonable_entities" -> CommandArgumentNode.SuggestionTypes.SUMMONABLE_ENTITIES;
- case "minecraft:available_biomes" -> CommandArgumentNode.SuggestionTypes.AVAILABLE_BIOMES;
- default -> throw new IllegalArgumentException("Unexpected value: " + resourceLocation);
- };
+ switch (resourceLocation) {
+ case "minecraft:ask_server":
+ this.suggestionType = CommandArgumentNode.SuggestionTypes.ASK_SERVER;
+ break;
+ case "minecraft:all_recipes":
+ this.suggestionType = CommandArgumentNode.SuggestionTypes.ALL_RECIPES;
+ break;
+ case "minecraft:available_sounds":
+ this.suggestionType = CommandArgumentNode.SuggestionTypes.AVAILABLE_SOUNDS;
+ break;
+ case "minecraft:summonable_entities":
+ this.suggestionType = CommandArgumentNode.SuggestionTypes.SUMMONABLE_ENTITIES;
+ break;
+ case "minecraft:available_biomes":
+ this.suggestionType = CommandArgumentNode.SuggestionTypes.AVAILABLE_BIOMES;
+ break;
+ default:
+ throw new IllegalArgumentException("Unexpected value: " + resourceLocation);
+ }
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/StringParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/StringParser.java
index bda40b094..7e41fd5ac 100644
--- a/src/main/java/de/bixilon/minosoft/data/commands/parser/StringParser.java
+++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/StringParser.java
@@ -32,11 +32,20 @@ public class StringParser extends CommandParser {
@Override
public Object parse(PlayConnection connection, ParserProperties properties, CommandStringReader stringReader) throws CommandParseException {
StringParserProperties stringParserProperties = ((StringParserProperties) properties);
- String string = switch (stringParserProperties.getSetting()) {
- case SINGLE_WORD -> stringReader.readUnquotedString();
- case QUOTABLE_PHRASE -> stringReader.readString();
- case GREEDY_PHRASE -> stringReader.readRemaining();
- };
+ String string;
+ switch (stringParserProperties.getSetting()) {
+ case SINGLE_WORD:
+ string = stringReader.readUnquotedString();
+ break;
+ case QUOTABLE_PHRASE:
+ string = stringReader.readString();
+ break;
+ case GREEDY_PHRASE:
+ string = stringReader.readRemaining();
+ break;
+ default:
+ throw new IllegalStateException();
+ }
if (!stringParserProperties.isAllowEmptyString() && string.isBlank()) {
throw new BlankStringCommandParseException(stringReader, string);
diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/TimeParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/TimeParser.java
index 7d5fe8f08..7c6077f8c 100644
--- a/src/main/java/de/bixilon/minosoft/data/commands/parser/TimeParser.java
+++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/TimeParser.java
@@ -29,16 +29,22 @@ public class TimeParser extends CommandParser {
if (stringReader.canRead()) {
char unit = stringReader.read();
- time *= switch (unit) {
- case 'd' -> 24000;
- case 's' -> 20;
- case 't' -> 1;
- case ' ' -> {
+ switch (unit) {
+ case 'd':
+ time *= 24000;
+ break;
+ case 's':
+ time *= 20;
+ break;
+ case 't':
+ time *= 1;
+ break;
+ case ' ':
stringReader.skip(-1);
- yield 1;
- }
- default -> throw new UnknownTimeUnitCommandParseException(stringReader, String.valueOf(unit));
- };
+ break;
+ default:
+ throw new UnknownTimeUnitCommandParseException(stringReader, String.valueOf(unit));
+ }
}
return time;
}
diff --git a/src/main/java/de/bixilon/minosoft/generator/JarHashGenerator.java b/src/main/java/de/bixilon/minosoft/generator/JarHashGenerator.java
index ccf7dc764..964006698 100644
--- a/src/main/java/de/bixilon/minosoft/generator/JarHashGenerator.java
+++ b/src/main/java/de/bixilon/minosoft/generator/JarHashGenerator.java
@@ -18,6 +18,7 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import de.bixilon.minosoft.Minosoft;
import de.bixilon.minosoft.config.Configuration;
+import de.bixilon.minosoft.data.assets.AssetVersion;
import de.bixilon.minosoft.data.assets.MinecraftAssetsManager;
import de.bixilon.minosoft.data.assets.Resources;
import de.bixilon.minosoft.data.registries.versions.Version;
@@ -48,7 +49,7 @@ public class JarHashGenerator {
Resources.loadVersion(version, versionJson);
- var resource = Resources.getAssetVersionByVersion(version);
+ AssetVersion resource = Resources.getAssetVersionByVersion(version);
MinecraftAssetsManager assetsManager = new MinecraftAssetsManager(resource, "dummy");
String jarAssetsHash = assetsManager.generateJarAssets();
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/Network.java b/src/main/java/de/bixilon/minosoft/protocol/network/Network.java
index 35a32dff9..a1633873f 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/Network.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/Network.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.protocol.network;
import de.bixilon.minosoft.data.registries.versions.Version;
+import de.bixilon.minosoft.protocol.ErrorHandler;
import de.bixilon.minosoft.protocol.exceptions.PacketNotImplementedException;
import de.bixilon.minosoft.protocol.exceptions.PacketParseException;
import de.bixilon.minosoft.protocol.exceptions.UnknownPacketException;
@@ -65,8 +66,8 @@ public abstract class Network {
bytes = Util.decompress(bytes);
}
}
- var data = new InByteBuffer(bytes, this.connection);
- var packetId = data.readVarInt();
+ InByteBuffer data = new InByteBuffer(bytes, this.connection);
+ int packetId = data.readVarInt();
PacketTypes.S2C packetType = null;
@@ -85,14 +86,14 @@ public abstract class Network {
S2CPacket packet;
try {
if (packetType.getPlayFactory() != null) {
- var playData = new PlayInByteBuffer(data.readRest(), ((PlayConnection) this.connection));
+ PlayInByteBuffer playData = new PlayInByteBuffer(data.readRest(), ((PlayConnection) this.connection));
packet = packetType.getPlayFactory().invoke(playData);
if (playData.getBytesLeft() > 0) {
throw new PacketParseException(String.format("Could not parse packet %s (used=%d, available=%d, total=%d)", packetType, playData.getPointer(), playData.getBytesLeft(), playData.getSize()));
}
((PlayS2CPacket) packet).check(((PlayConnection) this.connection));
} else if (packetType.getStatusFactory() != null) {
- var statusData = new InByteBuffer(data);
+ InByteBuffer statusData = new InByteBuffer(data);
packet = packetType.getStatusFactory().invoke(statusData);
if (statusData.getBytesLeft() > 0) {
throw new PacketParseException(String.format("Could not parse packet %s (used=%d, available=%d, total=%d)", packetType, statusData.getPointer(), statusData.getBytesLeft(), statusData.getSize()));
@@ -104,7 +105,7 @@ public abstract class Network {
} catch (Throwable exception) {
- var errorHandler = packetType.getErrorHandler();
+ ErrorHandler errorHandler = packetType.getErrorHandler();
if (errorHandler != null) {
errorHandler.onError(this.connection);
}
@@ -124,11 +125,11 @@ public abstract class Network {
protected byte[] prepareC2SPacket(C2SPacket packet) {
byte[] data;
if (packet instanceof PlayC2SPacket) {
- var buffer = new PlayOutByteBuffer((PlayConnection) this.connection);
+ PlayOutByteBuffer buffer = new PlayOutByteBuffer((PlayConnection) this.connection);
((PlayC2SPacket) packet).write(buffer);
data = buffer.toByteArray();
} else if (packet instanceof AllC2SPacket) {
- var buffer = new OutByteBuffer(this.connection);
+ OutByteBuffer buffer = new OutByteBuffer(this.connection);
((AllC2SPacket) packet).write(buffer);
data = buffer.toByteArray();
} else {
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java b/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java
index b61116a27..e7442535c 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java
@@ -111,7 +111,7 @@ public class BlockingSocketNetwork extends Network {
break;
}
try {
- var typeAndPacket = prepareS2CPacket(this.inputStream);
+ Pair typeAndPacket = prepareS2CPacket(this.inputStream);
while (this.receivingPaused && this.connection.getProtocolState() != ProtocolStates.DISCONNECTED && !this.shouldDisconnect) {
Util.sleep(1L);
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/socket/NonBlockingSocketNetwork.java b/src/main/java/de/bixilon/minosoft/protocol/network/socket/NonBlockingSocketNetwork.java
index 7da621613..f432dfb5b 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/socket/NonBlockingSocketNetwork.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/socket/NonBlockingSocketNetwork.java
@@ -19,9 +19,12 @@ import de.bixilon.minosoft.protocol.network.Network;
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection;
import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket;
import de.bixilon.minosoft.protocol.packets.c2s.login.EncryptionResponseC2SP;
+import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket;
import de.bixilon.minosoft.protocol.protocol.CryptManager;
+import de.bixilon.minosoft.protocol.protocol.PacketTypes;
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
import de.bixilon.minosoft.protocol.protocol.ProtocolStates;
+import de.bixilon.minosoft.util.Pair;
import de.bixilon.minosoft.util.ServerAddress;
import de.bixilon.minosoft.util.logging.Log;
import de.bixilon.minosoft.util.logging.LogLevels;
@@ -138,7 +141,7 @@ public class NonBlockingSocketNetwork extends Network {
if (!currentPacketBuffer.hasRemaining()) {
currentPacketBuffer.flip();
try {
- var typeAndPacket = receiveS2CPacket(decryptData(currentPacketBuffer.array()));
+ Pair typeAndPacket = receiveS2CPacket(decryptData(currentPacketBuffer.array()));
handlePacket(typeAndPacket.getKey(), typeAndPacket.getValue());
} catch (PacketParseException e) {
Log.log(LogMessageType.NETWORK_PACKETS_IN, LogLevels.WARN, e);
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketDeclareRecipes.java b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketDeclareRecipes.java
index 3d3c780d0..c778cbd2f 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketDeclareRecipes.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketDeclareRecipes.java
@@ -44,41 +44,51 @@ public class PacketDeclareRecipes extends PlayS2CPacket {
}
RecipeTypes type = RecipeTypes.byName(typeName);
switch (type) {
- case SHAPELESS -> {
+ case SHAPELESS: {
String group = buffer.readString();
Ingredient[] ingredients = buffer.readIngredientArray();
ItemStack result = buffer.readItemStack();
recipe = new Recipe(type, group, ingredients, result);
+ break;
}
- case SHAPED -> {
+ case SHAPED: {
int width = buffer.readVarInt();
int height = buffer.readVarInt();
String group = buffer.readString();
Ingredient[] ingredients = buffer.readIngredientArray(width * height);
ItemStack result = buffer.readItemStack();
recipe = new Recipe(width, height, type, group, ingredients, result);
+ break;
}
- case SMELTING, BLASTING, SMOKING, CAMPFIRE -> {
+ case SMELTING:
+ case BLASTING:
+ case SMOKING:
+ case CAMPFIRE: {
String group = buffer.readString();
Ingredient ingredient = buffer.readIngredient();
ItemStack result = buffer.readItemStack();
float experience = buffer.readFloat();
int cookingTime = buffer.readVarInt();
recipe = new Recipe(type, group, ingredient, result, experience, cookingTime);
+ break;
}
- case STONE_CUTTING -> {
+ case STONE_CUTTING: {
String group = buffer.readString();
Ingredient ingredient = buffer.readIngredient();
ItemStack result = buffer.readItemStack();
recipe = new Recipe(type, group, ingredient, result);
+ break;
}
- case SMITHING -> {
+ case SMITHING: {
Ingredient base = buffer.readIngredient();
Ingredient addition = buffer.readIngredient();
ItemStack result = buffer.readItemStack();
recipe = new Recipe(type, base, addition, result);
+ break;
}
- default -> recipe = new Recipe(type);
+ default:
+ recipe = new Recipe(type);
+ break;
}
this.recipes.put(resourceLocation, recipe);
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketMapData.java b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketMapData.java
index 6ded7015e..8e915e87f 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketMapData.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketMapData.java
@@ -48,12 +48,13 @@ public class PacketMapData extends PlayS2CPacket {
// read action
this.dataData = PacketMapDataDataActions.byId(buffer.readUnsignedByte());
switch (this.dataData) {
- case START -> {
+ case START: {
this.xStart = buffer.readByte();
this.yStart = buffer.readByte();
this.colors = buffer.readByteArray(length - 3); // 3: dataData(1) + xStart (1) + yStart (1)
+ break;
}
- case PLAYERS -> {
+ case PLAYERS: {
this.pins = new ArrayList<>();
length--; // minus the dataData
for (int i = 0; i < length / 3; i++) { // loop over all sets ( 1 set: 3 bytes)
@@ -62,8 +63,11 @@ public class PacketMapData extends PlayS2CPacket {
byte z = buffer.readByte();
this.pins.add(new MapPinSet(MapPinTypes.byId(directionAndType & 0xF), directionAndType >>> 4, x, z));
}
+ break;
}
- case SCALE -> this.scale = buffer.readByte();
+ case SCALE:
+ this.scale = buffer.readByte();
+ break;
}
return;
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketSelectAdvancementTab.java b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketSelectAdvancementTab.java
index 2e207e8eb..c27006c5f 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketSelectAdvancementTab.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketSelectAdvancementTab.java
@@ -48,7 +48,7 @@ public class PacketSelectAdvancementTab extends PlayS2CPacket {
public static final HashMap VALUES = new HashMap<>();
static {
- for (var tab : values()) {
+ for (AdvancementTabs tab : values()) {
VALUES.put(tab.resourceLocation, tab);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketStatistics.java b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketStatistics.java
index 33224beab..46eb9e6e4 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketStatistics.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PacketStatistics.java
@@ -31,7 +31,7 @@ public class PacketStatistics extends PlayS2CPacket {
if (buffer.getVersionId() < V_17W47A) { // ToDo
this.statistics.put(buffer.getConnection().getRegistries().getStatisticRegistry().get(buffer.readResourceLocation()), buffer.readVarInt());
} else {
- var category = buffer.getConnection().getRegistries().getStatisticRegistry().get(buffer.readVarInt()); // category before?
+ Statistic category = buffer.getConnection().getRegistries().getStatisticRegistry().get(buffer.readVarInt()); // category before?
this.statistics.put(buffer.getConnection().getRegistries().getStatisticRegistry().get(buffer.readVarInt()), buffer.readVarInt());
}
}
diff --git a/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandEntities.java b/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandEntities.java
index 06ab29c0d..ec144375d 100644
--- a/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandEntities.java
+++ b/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandEntities.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.data.commands.parser.properties.IntegerParserProperti
import de.bixilon.minosoft.data.entities.entities.Entity;
import java.util.ArrayList;
+import java.util.Map;
public class CommandEntities extends Command {
@@ -32,7 +33,7 @@ public class CommandEntities extends Command {
new CommandLiteralNode("list", (connection, stack) -> {
ArrayList