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 tableData = new ArrayList<>(); - for (var entry : connection.getWorld().getEntities()) { + for (Entity entry : connection.getWorld().getEntities()) { tableData.add(new Object[]{connection.getWorld().getEntities().getId(entry), connection.getWorld().getEntities().getUUID(entry), entry.getEntityType().toString(), entry.getEquipment(), entry.getPosition(), entry.getRotation()}); } @@ -58,7 +59,7 @@ public class CommandEntities extends Command { tableData.add(new Object[]{"Effects", entity.getActiveStatusEffects()}); tableData.add(new Object[]{"Attached to", entity.getAttachedEntity() == -1 ? "" : entity.getAttachedEntity()}); - for (var entry : entity.getEntityMetaDataFormatted().entrySet()) { + for (Map.Entry entry : entity.getEntityMetaDataFormatted().entrySet()) { tableData.add(new Object[]{entry.getKey(), entry.getValue()}); } diff --git a/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandTabList.java b/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandTabList.java index 10601c520..9e846be33 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandTabList.java +++ b/src/main/java/de/bixilon/minosoft/terminal/commands/commands/CommandTabList.java @@ -21,6 +21,8 @@ import de.bixilon.minosoft.data.player.tab.TabListItem; import java.util.ArrayList; import java.util.Iterator; +import java.util.Map; +import java.util.UUID; public class CommandTabList extends Command { @Override @@ -67,7 +69,7 @@ public class CommandTabList extends Command { ArrayList tableData = new ArrayList<>(); - for (var entry : connection.getTabList().getTabListItemsByUUID().entrySet()) { + for (Map.Entry entry : connection.getTabList().getTabListItemsByUUID().entrySet()) { PlayerEntity playerEntity = (PlayerEntity) connection.getWorld().getEntities().get(entry.getKey()); Integer entityId = playerEntity != null ? connection.getWorld().getEntities().getId(playerEntity) : null; tableData.add(new Object[]{entry.getKey(), entityId, entry.getValue().getName(), entry.getValue().getDisplayName(), entry.getValue().getGamemode(), entry.getValue().getPing() + "ms"}); diff --git a/src/main/java/de/bixilon/minosoft/util/Util.java b/src/main/java/de/bixilon/minosoft/util/Util.java index d8200eb62..e5eb0eaf6 100644 --- a/src/main/java/de/bixilon/minosoft/util/Util.java +++ b/src/main/java/de/bixilon/minosoft/util/Util.java @@ -319,7 +319,7 @@ public final class Util { public static String[] headersMapToArray(Map headers) { List headerList = new ArrayList<>(); - for (var entry : headers.entrySet()) { + for (Map.Entry entry : headers.entrySet()) { headerList.add(entry.getKey()); headerList.add(entry.getValue()); } @@ -328,7 +328,7 @@ public final class Util { public static String formatString(String string, Map format) { String output = string; - for (var entry : format.entrySet()) { + for (Map.Entry entry : format.entrySet()) { output = output.replace("${" + entry.getKey() + "}", entry.getValue().toString()); } return output;