From 963afa0681caa5932d72336a0f8da430d4b86f0f Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 13 Dec 2020 23:34:54 +0100 Subject: [PATCH] More kotlin, code improvements --- .gitlab-ci.yml | 2 +- .idea/codeStyles/Project.xml | 29 +++++++-------- .idea/codeStyles/codeStyleConfig.xml | 1 + pom.xml | 2 +- .../data/commands/parser/EntityParser.java | 22 ++++++------ .../data/commands/parser/ItemStackParser.kt | 2 +- .../data/commands/parser/StringParser.java | 2 +- .../entity/DoubleSelectorArgumentParser.java | 4 +-- .../entity/EntitySelectorArgumentParser.java | 2 +- .../IdentifierSelectorArgumentParser.java | 6 ++-- .../entity/IntegerSelectorArgumentParser.java | 4 +-- .../entity/ListSelectorArgumentParser.java | 6 ++-- .../entity/RangeSelectorArgumentParser.java | 16 ++++----- ...ssSelectorEntityCommandParseException.java | 4 +-- .../minosoft/util/{Pair.java => Pair.kt} | 36 ++++--------------- .../util/buffers/ImprovedStringReader.java | 25 ++++++------- 16 files changed, 68 insertions(+), 95 deletions(-) rename src/main/java/de/bixilon/minosoft/util/{Pair.java => Pair.kt} (53%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f419b6ae1..4e9c16619 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository" - MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" + MAVEN_CLI_OPTS: "--errors --fail-at-end --show-version" image: maven:3-openjdk-15 diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 645f4a069..c4b1ab3b7 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,22 +1,19 @@ + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml index a55e7a179..6e6eec114 100644 --- a/.idea/codeStyles/codeStyleConfig.xml +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -1,5 +1,6 @@ + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 54a3846d7..84adf563e 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ - 1.8 + 14 diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/EntityParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/EntityParser.java index cf2a4efbf..003af46c2 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/EntityParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/EntityParser.java @@ -63,25 +63,25 @@ public class EntityParser extends CommandParser { @Override public void isParsable(Connection connection, ParserProperties properties, ImprovedStringReader stringReader) throws CommandParseException { EntityParserProperties entityParserProperties = (EntityParserProperties) properties; - if (stringReader.getNextChar().equals("@")) { + if (stringReader.getNextChar() == '@') { // selector if (entityParserProperties.isOnlySingleEntity()) { - throw new SingleEntityOnlyEntityCommandParseException(stringReader, stringReader.getNextChar()); + throw new SingleEntityOnlyEntityCommandParseException(stringReader, String.valueOf(stringReader.getNextChar())); } stringReader.skip(1); // skip @ - String selectorChar = stringReader.readChar(); - if (!selectorChar.equals("a") && !selectorChar.equals("e") && !selectorChar.equals("p") && !selectorChar.equals("r") && !selectorChar.equals("s")) { + char selectorChar = stringReader.readChar(); + if (selectorChar != 'a' && selectorChar != 'e' && selectorChar != 'p' && selectorChar != 'r' && selectorChar != 's') { // only @a, @e, @p, @r and @s possible throw new UnknownMassSelectorEntityCommandParseException(stringReader, stringReader.getNextChar()); } - if (selectorChar.equals("e") && entityParserProperties.isOnlyPlayers()) { - throw new PlayerOnlyEntityCommandParseException(stringReader, selectorChar); + if (selectorChar == 'e' && entityParserProperties.isOnlyPlayers()) { + throw new PlayerOnlyEntityCommandParseException(stringReader, String.valueOf(selectorChar)); } // parse entity selector // example: /msg @a[ name = "Bixilon" ] asd - if (!stringReader.getNextChar().equals("[")) { + if (stringReader.getNextChar() != '[') { // no meta data given, valid return; } @@ -91,7 +91,7 @@ public class EntityParser extends CommandParser { HashSet parameters = new HashSet<>(); while (true) { stringReader.skipSpaces(); - String parameterName = stringReader.readUntil("=").key.replaceAll("\\s", ""); // ToDo: only remove prefix and suffix spaces! + String parameterName = stringReader.readUntil("=").getKey().replaceAll("\\s", ""); // ToDo: only remove prefix and suffix spaces! if (parameters.contains(parameterName)) { throw new DuplicatedParameterEntityCommandParseException(stringReader, parameterName); } @@ -106,12 +106,12 @@ public class EntityParser extends CommandParser { stringReader.skipSpaces(); parameters.add(parameterName); - String nextChar = stringReader.getNextChar(); - if (nextChar.equals("]")) { + char nextChar = stringReader.getNextChar(); + if (nextChar == ']') { stringReader.skip(1); break; } - if (nextChar.equals(",")) { + if (nextChar == ',') { stringReader.skip(1); } } diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/ItemStackParser.kt b/src/main/java/de/bixilon/minosoft/data/commands/parser/ItemStackParser.kt index 20fe85f49..8dce9c86f 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/ItemStackParser.kt +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/ItemStackParser.kt @@ -27,7 +27,7 @@ class ItemStackParser : CommandParser() { if (!connection.mapping.doesItemExist(ModIdentifier(argument.key))) { throw ItemNotFoundCommandParseException(stringReader, argument.key) } - if (argument.value == "{" || stringReader.nextChar == "{") { + if (argument.value == "{" || stringReader.nextChar == '{') { throw TODO("NBT Data needs to be implemented") } } 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 4ee8de549..84cc876fd 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 @@ -38,7 +38,7 @@ public class StringParser extends CommandParser { if (stringReader.get(1).equals("\"")) { stringReader.skip(1); StringBuilder builder = new StringBuilder(); - builder.append(stringReader.readUntil("\"").key); + builder.append(stringReader.readUntil("\"").getKey()); String currentString = builder.toString(); while (currentString.endsWith("\\") && !currentString.endsWith("\\\\")) { // quotes are escaped, continue diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/DoubleSelectorArgumentParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/DoubleSelectorArgumentParser.java index 2a4da28ad..085626ef3 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/DoubleSelectorArgumentParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/DoubleSelectorArgumentParser.java @@ -26,9 +26,9 @@ public class DoubleSelectorArgumentParser extends EntitySelectorArgumentParser { public void isParsable(Connection connection, ImprovedStringReader stringReader) throws CommandParseException { Pair match = readNextArgument(stringReader); try { - Double.parseDouble(match.key); + Double.parseDouble(match.getKey()); } catch (Exception e) { - throw new DoubleCommandParseException(stringReader, match.key, e); + throw new DoubleCommandParseException(stringReader, match.getKey(), e); } } } diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/EntitySelectorArgumentParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/EntitySelectorArgumentParser.java index 7599d5eaf..db0b255c9 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/EntitySelectorArgumentParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/EntitySelectorArgumentParser.java @@ -25,7 +25,7 @@ public abstract class EntitySelectorArgumentParser { protected Pair readNextArgument(ImprovedStringReader stringReader) { Pair match = stringReader.readUntil(ENTITY_VALUE_TERMINATORS); - if (!match.value.equals(" ")) { + if (!match.getValue().equals(" ")) { // set pointer to -- stringReader.skip(-1); } diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IdentifierSelectorArgumentParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IdentifierSelectorArgumentParser.java index 187f03e15..cd1c033c4 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IdentifierSelectorArgumentParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IdentifierSelectorArgumentParser.java @@ -28,14 +28,14 @@ public class IdentifierSelectorArgumentParser extends EntitySelectorArgumentPars @Override public void isParsable(Connection connection, ImprovedStringReader stringReader) throws CommandParseException { Pair match = readNextArgument(stringReader); - String value = match.key; - if (match.key.startsWith("!")) { + String value = match.getKey(); + if (match.getKey().startsWith("!")) { value = value.substring(1); } ModIdentifier identifier = new ModIdentifier(value); if (this == ENTITY_TYPE_IDENTIFIER_SELECTOR_ARGUMENT_PARSER) { if (EntityClassMappings.INSTANCE.getByIdentifier(identifier) == null) { - throw new UnknownEntityCommandParseException(stringReader, match.key); + throw new UnknownEntityCommandParseException(stringReader, match.getKey()); } return; } diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IntegerSelectorArgumentParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IntegerSelectorArgumentParser.java index 4bf5271e7..98fef2c58 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IntegerSelectorArgumentParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/IntegerSelectorArgumentParser.java @@ -26,9 +26,9 @@ public class IntegerSelectorArgumentParser extends EntitySelectorArgumentParser public void isParsable(Connection connection, ImprovedStringReader stringReader) throws CommandParseException { Pair match = readNextArgument(stringReader); try { - Integer.parseInt(match.key); + Integer.parseInt(match.getKey()); } catch (Exception e) { - throw new IntegerCommandParseException(stringReader, match.key, e); + throw new IntegerCommandParseException(stringReader, match.getKey(), e); } } } diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/ListSelectorArgumentParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/ListSelectorArgumentParser.java index 69106db3a..d37397ca8 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/ListSelectorArgumentParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/ListSelectorArgumentParser.java @@ -47,12 +47,12 @@ public class ListSelectorArgumentParser extends EntitySelectorArgumentParser { @Override public void isParsable(Connection connection, ImprovedStringReader stringReader) throws CommandParseException { Pair match = readNextArgument(stringReader); - String value = match.key; - if (match.key.startsWith("!")) { + String value = match.getKey(); + if (match.getValue().startsWith("!")) { value = value.substring(1); } if (!this.values.contains(value)) { - throw new UnknownEnumValueCommandParseException(stringReader, match.key); + throw new UnknownEnumValueCommandParseException(stringReader, match.getKey()); } } } diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/RangeSelectorArgumentParser.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/RangeSelectorArgumentParser.java index 9de62a209..b62ae3dbe 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/RangeSelectorArgumentParser.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/entity/RangeSelectorArgumentParser.java @@ -50,35 +50,35 @@ public class RangeSelectorArgumentParser extends EntitySelectorArgumentParser { public void isParsable(Connection connection, ImprovedStringReader stringReader) throws CommandParseException { Pair match = readNextArgument(stringReader); - if (match.key.contains("..")) { + if (match.getKey().contains("..")) { // range - String[] split = match.key.split("\\.\\."); + String[] split = match.getKey().split("\\.\\."); if (split.length != 2) { - throw new RangeBadFormatCommandParseException(stringReader, match.key); + throw new RangeBadFormatCommandParseException(stringReader, match.getKey()); } double min; double max; if (split[0].isBlank()) { min = getMinValue(); } else { - min = parseValue(stringReader, match.key, split[0]); + min = parseValue(stringReader, match.getKey(), split[0]); } if (split[1].isBlank()) { max = getMaxValue(); } else { - max = parseValue(stringReader, match.key, split[1]); + max = parseValue(stringReader, match.getKey(), split[1]); } if (min < getMinValue() || max > getMaxValue()) { - throw new ValueOutOfRangeCommandParseException(stringReader, minValue, maxValue, match.key); + throw new ValueOutOfRangeCommandParseException(stringReader, minValue, maxValue, match.getKey()); } if (min > max) { - throw new MinimumBiggerAsMaximumCommandParseException(stringReader, match.key); + throw new MinimumBiggerAsMaximumCommandParseException(stringReader, match.getKey()); } return; } - parseValue(stringReader, match.key, match.key); + parseValue(stringReader, match.getKey(), match.getKey()); } private double parseValue(ImprovedStringReader stringReader, String match, String value) throws CommandParseException { diff --git a/src/main/java/de/bixilon/minosoft/data/commands/parser/exceptions/entity/UnknownMassSelectorEntityCommandParseException.java b/src/main/java/de/bixilon/minosoft/data/commands/parser/exceptions/entity/UnknownMassSelectorEntityCommandParseException.java index efa9fce2a..e61574120 100644 --- a/src/main/java/de/bixilon/minosoft/data/commands/parser/exceptions/entity/UnknownMassSelectorEntityCommandParseException.java +++ b/src/main/java/de/bixilon/minosoft/data/commands/parser/exceptions/entity/UnknownMassSelectorEntityCommandParseException.java @@ -20,8 +20,8 @@ public class UnknownMassSelectorEntityCommandParseException extends CommandParse private static final String ERROR_MESSAGE = "Unknown mass selector!"; - public UnknownMassSelectorEntityCommandParseException(ImprovedStringReader command, String currentArgument) { - super(ERROR_MESSAGE, command, currentArgument); + public UnknownMassSelectorEntityCommandParseException(ImprovedStringReader command, char currentArgument) { + super(ERROR_MESSAGE, command, String.valueOf(currentArgument)); } public UnknownMassSelectorEntityCommandParseException(ImprovedStringReader command, String currentArgument, Throwable cause) { diff --git a/src/main/java/de/bixilon/minosoft/util/Pair.java b/src/main/java/de/bixilon/minosoft/util/Pair.kt similarity index 53% rename from src/main/java/de/bixilon/minosoft/util/Pair.java rename to src/main/java/de/bixilon/minosoft/util/Pair.kt index 4287beced..bb97ac448 100644 --- a/src/main/java/de/bixilon/minosoft/util/Pair.java +++ b/src/main/java/de/bixilon/minosoft/util/Pair.kt @@ -10,35 +10,13 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ +package de.bixilon.minosoft.util -package de.bixilon.minosoft.util; - -import java.util.Objects; - -public class Pair { - - public final K key; - public final V value; - - public Pair(K key, V value) { - this.key = key; - this.value = value; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Pair pair = (Pair) o; - return Objects.equals(key, pair.key) && Objects.equals(value, pair.value); - } - - @Override - public int hashCode() { - return Objects.hash(key, value); - } - - public String toString() { - return String.format("%s=%s", key, value); +data class Pair( + val key: K, + val value: V +) { + override fun toString(): String { + return String.format("%s=%s", key, value) } } diff --git a/src/main/java/de/bixilon/minosoft/util/buffers/ImprovedStringReader.java b/src/main/java/de/bixilon/minosoft/util/buffers/ImprovedStringReader.java index 8ec016cbc..1c16c2b38 100644 --- a/src/main/java/de/bixilon/minosoft/util/buffers/ImprovedStringReader.java +++ b/src/main/java/de/bixilon/minosoft/util/buffers/ImprovedStringReader.java @@ -16,8 +16,6 @@ package de.bixilon.minosoft.util.buffers; import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition; import de.bixilon.minosoft.util.Pair; -import javax.annotation.Nullable; - public class ImprovedStringReader { private final String string; private int position; @@ -28,7 +26,7 @@ public class ImprovedStringReader { public Pair readUntil(String... search) { Pair ret = getUntil(search); - position += ret.key.length() + ret.value.length(); + position += ret.getKey().length() + ret.getValue().length(); return ret; } @@ -57,11 +55,11 @@ public class ImprovedStringReader { } public String readUntilNextCommandArgument() { - return readUntil(ProtocolDefinition.COMMAND_SEPARATOR).key; + return readUntil(ProtocolDefinition.COMMAND_SEPARATOR).getKey(); } public String getUntilNextCommandArgument() { - return getUntil(ProtocolDefinition.COMMAND_SEPARATOR).key; + return getUntil(ProtocolDefinition.COMMAND_SEPARATOR).getKey(); } public String getString() { @@ -80,19 +78,18 @@ public class ImprovedStringReader { return string.length() - position; } - public String readChar() { + public char readChar() { if (getRemainingChars() == 0) { - return null; + return 0; } - return String.valueOf(string.charAt(position++)); + return string.charAt(position++); } - @Nullable - public String getNextChar() { + public char getNextChar() { if (getRemainingChars() == 0) { - return null; + return 0; } - return String.valueOf(string.charAt(position)); + return string.charAt(position); } public String getRest() { @@ -128,8 +125,8 @@ public class ImprovedStringReader { public int skipSpaces() { int skipped = 0; - String nextChar = getNextChar(); - while (nextChar != null && getNextChar().equals(" ")) { + char nextChar = getNextChar(); + while (getNextChar() == ' ') { skip(1); skipped++; }