Add more Checkstyle checks

This commit is contained in:
filoghost 2020-08-31 20:32:51 +02:00
parent 5877ec3a22
commit 7e7b5d5427
25 changed files with 338 additions and 111 deletions

View File

@ -6,6 +6,7 @@
<module name="Checker">
<property name="fileExtensions" value="java, xml"/>
<property name="charset" value="UTF-8"/>
<property name="severity" value="warning"/>
<module name="SuppressionFilter">
<property name="file" value="checkstyle/suppressions.xml"/>
@ -13,12 +14,187 @@
<!-- Check that Java source files have the correct header -->
<module name="Header">
<property name="severity" value="error"/>
<property name="fileExtensions" value="java"/>
<property name="headerFile" value="checkstyle/header.txt"/>
</module>
<!-- Check that files dont contain tabs -->
<!-- Check that files don't contain tabs -->
<module name="FileTabCharacter">
<property name="severity" value="error"/>
<property name="eachLine" value="true"/>
</module>
<!-- Trailing spaces -->
<module name="RegexpSingleline">
<property name="format" value="[^\s\*]\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="message" value="Line has trailing spaces."/>
</module>
<!-- Limit maximum lines in a single file -->
<module name="FileLength">
<property name="fileExtensions" value="java"/>
<property name="max" value="600"/>
</module>
<!-- Limit maximum line length for readability -->
<module name="LineLength">
<property name="fileExtensions" value="java"/>
<property name="max" value="160"/> <!-- TODO ideal limit is 120/140 -->
<property name="ignorePattern" value="^package.*|^import.*"/>
</module>
<module name="TreeWalker">
<!-- Blocks -->
<module name="AvoidNestedBlocks"/>
<module name="EmptyBlock"/>
<module name="EmptyCatchBlock">
<property name="exceptionVariableName" value="expected|ignore"/>
</module>
<module name="LeftCurly"/>
<module name="NeedBraces"/>
<module name="RightCurly"/>
<!-- Class design -->
<module name="InterfaceIsType"/>
<module name="MutableException"/>
<module name="OneTopLevelClass"/>
<module name="ThrowsCount"/>
<!-- Coding -->
<!-- <module name="AvoidDoubleBraceInitialization"/> Only since Checkstyle v8.30 -->
<module name="AvoidNoArgumentSuperConstructorCall"/>
<module name="CovariantEquals"/>
<module name="DeclarationOrder">
<property name="ignoreConstructors" value="true"/>
</module>
<module name="DefaultComesLast"/>
<module name="EmptyStatement"/>
<module name="EqualsAvoidNull"/>
<module name="EqualsHashCode"/>
<module name="FallThrough"/>
<module name="IllegalCatch"/>
<module name="IllegalThrows"/>
<module name="IllegalToken"/>
<module name="IllegalType"/>
<module name="InnerAssignment"/>
<module name="MissingSwitchDefault"/>
<module name="ModifiedControlVariable">
<property name="skipEnhancedForLoopVariable" value="true"/>
</module>
<module name="NestedForDepth">
<property name="max" value="3"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="3"/>
</module>
<module name="NestedTryDepth"/>
<module name="NoFinalizer"/>
<module name="OneStatementPerLine"/>
<module name="PackageDeclaration"/>
<module name="RequireThis"/>
<module name="SimplifyBooleanExpression"/>
<module name="StringLiteralEquality"/>
<module name="UnnecessaryParentheses">
<property name="tokens" value="EXPR, IDENT, NUM_DOUBLE, NUM_FLOAT, NUM_INT, NUM_LONG, STRING_LITERAL,
LITERAL_NULL, LITERAL_FALSE, LITERAL_TRUE, ASSIGN, BAND_ASSIGN, BOR_ASSIGN, BSR_ASSIGN,
BXOR_ASSIGN, DIV_ASSIGN, MINUS_ASSIGN, MOD_ASSIGN, PLUS_ASSIGN, SL_ASSIGN, SR_ASSIGN,
STAR_ASSIGN"/>
</module>
<!-- <module name="UnnecessarySemicolonAfterOuterTypeDeclaration"/> Only since Checkstyle v8.31 -->
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration"/>
<module name="UnnecessarySemicolonInTryWithResources"/>
<!-- Imports -->
<module name="AvoidStarImport"/>
<module name="AvoidStaticImport"/>
<module name="IllegalImport">
<property name="illegalPkgs" value="sun"/>
<property name="illegalClasses" value="
com.google.common.base.Optional,
com.google.common.base.Function,
com.google.common.base.Supplier"/>
</module>
<module name="RedundantImport"/>
<module name="UnusedImports"/>
<!-- Javadoc -->
<module name="AtclauseOrder"/>
<module name="InvalidJavadocPosition"/>
<module name="JavadocBlockTagLocation"/>
<module name="JavadocContentLocation"/>
<module name="JavadocMethod"/>
<!-- <module name="JavadocMissingWhitespaceAfterAsterisk"/> Only since Checkstyle v8.32 -->
<module name="JavadocStyle"/>
<module name="JavadocTagContinuationIndentation"/>
<module name="JavadocType"/>
<module name="NonEmptyAtclauseDescription"/>
<module name="SingleLineJavadoc"/>
<module name="SummaryJavadoc"/>
<!-- Miscellaneous -->
<module name="ArrayTypeStyle"/>
<module name="AvoidEscapedUnicodeCharacters"/>
<module name="CommentsIndentation"/>
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="4"/>
<property name="throwsIndent" value="8"/>
<property name="lineWrappingIndentation" value="8"/>
<property name="arrayInitIndent" value="4"/>
</module>
<module name="OuterTypeFilename"/>
<module name="UpperEll"/>
<!-- Modifiers -->
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<!-- Naming -->
<module name="ClassTypeParameterName"/>
<module name="InterfaceTypeParameterName"/>
<module name="MethodTypeParameterName"/>
<module name="LambdaParameterName"/>
<module name="LocalVariableName"/>
<module name="MemberName"/>
<module name="MethodName"/>
<module name="PackageName"/>
<module name="ParameterName"/>
<!-- Size -->
<module name="MethodCount"/>
<module name="OuterTypeNumber"/>
<module name="ParameterNumber"/>
<!-- Whitespace -->
<module name="EmptyForInitializerPad"/>
<module name="EmptyForIteratorPad"/>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
<property name="tokens" value="IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT,
INSTANCE_INIT, METHOD_DEF, CTOR_DEF"/>
</module>
<module name="GenericWhitespace"/>
<module name="MethodParamPad"/>
<module name="NoLineWrap"/>
<module name="NoWhitespaceAfter"/>
<module name="NoWhitespaceBefore"/>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="SingleSpaceSeparator"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
<property name="allowEmptyTypes" value="true"/>
<property name="allowEmptyLoops" value="true"/>
<property name="allowEmptyLambdas" value="true"/>
<property name="allowEmptyCatches" value="true"/>
<property name="ignoreEnhancedForColon" value="false"/>
</module>
</module>
</module>

View File

@ -4,5 +4,5 @@
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress checks="Header" files=".*[\\/]me[\\/]filoghost[\\/]chestcommands[\\/]util[\\/]nbt[\\/].+\.java"/>
<suppress checks="Header|EqualsHashCode" files="[\\/]me[\\/]filoghost[\\/]chestcommands[\\/]util[\\/]nbt[\\/].+\.java"/>
</suppressions>

View File

@ -25,7 +25,7 @@ public class DragonBarAction implements Action {
String[] split = Strings.trimmedSplit(serialiazedAction, "\\|", 2); // Max of 2 pieces
if (split.length > 1) {
try {
seconds = NumberParser.getStrictlyPositiveInteger(split[0]);
seconds = NumberParser.getStrictlyPositiveInteger(split[0]);
message = split[1];
} catch (ParseException e) {
throw new ParseException(Errors.Parsing.invalidBossBarTime(split[0]), e);

View File

@ -58,7 +58,8 @@ public class CommandHandler extends CommandFramework {
if (errorCollector.hasErrors()) {
errorCollector.logToConsole();
sender.sendMessage(ChestCommands.CHAT_PREFIX + ChatColor.RED + "Last time the plugin loaded, " + errorCollector.getErrorsCount() + " error(s) were found.");
sender.sendMessage(ChestCommands.CHAT_PREFIX + ChatColor.RED + "Last time the plugin loaded, "
+ errorCollector.getErrorsCount() + " error(s) were found.");
if (!(sender instanceof ConsoleCommandSender)) {
sender.sendMessage(ChestCommands.CHAT_PREFIX + ChatColor.RED + "Errors were printed on the console.");
}

View File

@ -52,8 +52,8 @@ public enum VaultEconomyHook implements PluginHook {
return balance >= minimum;
}
/**
* @return true if the operation was successful.
/*
* Returns true if the operation was successful.
*/
public static boolean takeMoney(Player player, double amount) {
INSTANCE.checkEnabledState();

View File

@ -5,11 +5,6 @@
*/
package me.filoghost.chestcommands.icon;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import me.filoghost.chestcommands.api.Icon;
import me.filoghost.chestcommands.placeholder.PlaceholderString;
import me.filoghost.chestcommands.placeholder.PlaceholderStringList;
@ -17,7 +12,6 @@ import me.filoghost.chestcommands.util.nbt.parser.MojangsonParseException;
import me.filoghost.chestcommands.util.nbt.parser.MojangsonParser;
import me.filoghost.fcommons.Preconditions;
import me.filoghost.fcommons.collection.CollectionUtils;
import me.filoghost.fcommons.logging.Log;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
@ -33,6 +27,12 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class BaseConfigurableIcon implements Icon {
private Material material;
@ -49,7 +49,7 @@ public abstract class BaseConfigurableIcon implements Icon {
private List<Pattern> bannerPatterns;
private boolean placeholdersEnabled;
protected ItemStack cachedRendering; // Cache the rendered item when possible and if state hasn't changed
private ItemStack cachedRendering; // Cache the rendered item when possible and if state hasn't changed
public BaseConfigurableIcon(Material material) {
this.material = material;
@ -266,13 +266,7 @@ public abstract class BaseConfigurableIcon implements Icon {
// First try to apply NBT data
if (nbtData != null) {
try {
// Note: this method should not throw any exception. It should log directly to the console
Bukkit.getUnsafe().modifyItemStack(itemStack, nbtData);
} catch (Throwable t) {
this.nbtData = null;
Log.warning("Could not apply NBT data to an item.", t);
}
Bukkit.getUnsafe().modifyItemStack(itemStack, nbtData);
}
// Then apply data from config nodes, overwriting NBT data if there are conflicting values

View File

@ -12,14 +12,14 @@ import me.filoghost.fcommons.Preconditions;
* There 3 rows and 9 columns. The number inside the cells is the index.
*
* <--- Column --->
*
*
* 0 1 2 3 4 5 6 7 8
* ^ +--------------------------------------------+
* | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
* |----+----+----+----+----+----+----+----+----|
* Row 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
* |----+----+----+----+----+----+----+----+----|
* | 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
* | 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
* v +--------------------------------------------+
*
*/

View File

@ -6,24 +6,26 @@
package me.filoghost.chestcommands.legacy;
import com.google.common.collect.ImmutableList;
import me.filoghost.chestcommands.config.ConfigManager;
import me.filoghost.chestcommands.legacy.upgrade.Upgrade;
import me.filoghost.chestcommands.legacy.upgrade.UpgradeTask;
import me.filoghost.chestcommands.legacy.upgrade.UpgradeTaskException;
import me.filoghost.chestcommands.legacy.v4_0.V4_0_LangUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.V4_0_MenuNodeRenameUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.V4_0_MenuReformatUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.V4_0_PlaceholdersUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.V4_0_SettingsUpgradeTask;
import me.filoghost.chestcommands.logging.Errors;
import me.filoghost.fcommons.collection.CollectionUtils;
import me.filoghost.fcommons.config.ConfigLoader;
import me.filoghost.fcommons.config.exception.ConfigException;
import me.filoghost.fcommons.logging.Log;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import me.filoghost.chestcommands.config.ConfigManager;
import me.filoghost.chestcommands.legacy.upgrade.Upgrade;
import me.filoghost.chestcommands.legacy.upgrade.UpgradeTask;
import me.filoghost.chestcommands.legacy.upgrade.UpgradeTaskException;
import me.filoghost.chestcommands.legacy.v4_0.v4_0_LangUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.v4_0_MenuNodeRenameUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.v4_0_MenuReformatUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.v4_0_PlaceholdersUpgradeTask;
import me.filoghost.chestcommands.legacy.v4_0.v4_0_SettingsUpgradeTask;
import me.filoghost.chestcommands.logging.Errors;
import me.filoghost.fcommons.collection.CollectionUtils;
import me.filoghost.fcommons.config.ConfigLoader;
import me.filoghost.fcommons.logging.Log;
public class UpgradeList {
@ -32,20 +34,20 @@ public class UpgradeList {
*/
private static final ImmutableList<Upgrade> orderedUpgrades = ImmutableList.of(
multiTaskUpgrade("v4.0-menus-rename", (configManager) -> {
return createMenuTasks(configManager, v4_0_MenuNodeRenameUpgradeTask::new);
return createMenuTasks(configManager, V4_0_MenuNodeRenameUpgradeTask::new);
}),
// Reformat after nodes have already been renamed
multiTaskUpgrade("v4.0-menus-reformat", (configManager) -> {
String legacyCommandSeparator = readLegacyCommandSeparator(configManager);
return createMenuTasks(configManager,
file -> new v4_0_MenuReformatUpgradeTask(configManager, file, legacyCommandSeparator));
file -> new V4_0_MenuReformatUpgradeTask(configManager, file, legacyCommandSeparator));
}),
// Upgrade config after reading the command separator for menus
singleTaskUpgrade("v4.0-config", v4_0_SettingsUpgradeTask::new),
singleTaskUpgrade("v4.0-placeholders", v4_0_PlaceholdersUpgradeTask::new),
singleTaskUpgrade("v4.0-lang", v4_0_LangUpgradeTask::new)
singleTaskUpgrade("v4.0-config", V4_0_SettingsUpgradeTask::new),
singleTaskUpgrade("v4.0-placeholders", V4_0_PlaceholdersUpgradeTask::new),
singleTaskUpgrade("v4.0-lang", V4_0_LangUpgradeTask::new)
);
private static Upgrade singleTaskUpgrade(String id, Upgrade.SingleTaskSupplier upgradeTaskSupplier) {
@ -80,7 +82,7 @@ public class UpgradeList {
try {
return settingsConfigLoader.load().getString("multiple-commands-separator");
} catch (Throwable t) {
} catch (ConfigException e) {
Log.warning("Failed to load \"" + settingsConfigLoader.getFile() + "\", assuming default command separator \";\".");
return null;
}

View File

@ -5,6 +5,8 @@
*/
package me.filoghost.chestcommands.legacy;
import me.filoghost.chestcommands.legacy.upgrade.Upgrade;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@ -13,7 +15,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
import me.filoghost.chestcommands.legacy.upgrade.Upgrade;
public class UpgradesDoneRegistry {
@ -21,7 +22,7 @@ public class UpgradesDoneRegistry {
private final Set<String> upgradesDone;
private boolean needSave;
public UpgradesDoneRegistry(Path saveFile) throws IOException {
public UpgradesDoneRegistry(Path saveFile) throws IOException {
this.saveFile = saveFile;
this.upgradesDone = new HashSet<>();

View File

@ -9,9 +9,9 @@ import me.filoghost.chestcommands.config.ConfigManager;
import me.filoghost.chestcommands.legacy.upgrade.YamlUpgradeTask;
import me.filoghost.fcommons.config.Config;
public class v4_0_LangUpgradeTask extends YamlUpgradeTask {
public class V4_0_LangUpgradeTask extends YamlUpgradeTask {
public v4_0_LangUpgradeTask(ConfigManager configManager) {
public V4_0_LangUpgradeTask(ConfigManager configManager) {
super(configManager.getConfigLoader("lang.yml"));
}

View File

@ -5,15 +5,17 @@
*/
package me.filoghost.chestcommands.legacy.v4_0;
import java.nio.file.Path;
import me.filoghost.chestcommands.legacy.upgrade.RegexUpgradeTask;
import me.filoghost.chestcommands.parsing.icon.AttributeType;
public class v4_0_MenuNodeRenameUpgradeTask extends RegexUpgradeTask {
import java.nio.file.Path;
public v4_0_MenuNodeRenameUpgradeTask(Path menuFile) {
public class V4_0_MenuNodeRenameUpgradeTask extends RegexUpgradeTask {
public V4_0_MenuNodeRenameUpgradeTask(Path menuFile) {
super(menuFile);
}
@Override
protected void computeRegexChanges() {
replaceSubNode("command", "commands");

View File

@ -5,11 +5,6 @@
*/
package me.filoghost.chestcommands.legacy.v4_0;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import me.filoghost.chestcommands.config.ConfigManager;
import me.filoghost.chestcommands.legacy.upgrade.YamlUpgradeTask;
import me.filoghost.chestcommands.parsing.icon.AttributeType;
@ -19,11 +14,17 @@ import me.filoghost.fcommons.config.Config;
import me.filoghost.fcommons.config.ConfigSection;
import me.filoghost.fcommons.config.ConfigValueType;
public class v4_0_MenuReformatUpgradeTask extends YamlUpgradeTask {
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
public class V4_0_MenuReformatUpgradeTask extends YamlUpgradeTask {
private final String legacyCommandSeparator;
public v4_0_MenuReformatUpgradeTask(ConfigManager configManager, Path menuFile, String legacyCommandSeparator) {
public V4_0_MenuReformatUpgradeTask(ConfigManager configManager, Path menuFile, String legacyCommandSeparator) {
super(configManager.getConfigLoader(menuFile));
this.legacyCommandSeparator = legacyCommandSeparator;
}
@ -78,7 +79,7 @@ public class v4_0_MenuReformatUpgradeTask extends YamlUpgradeTask {
setSaveRequired();
actions.set(i, newAction);
}
}
}
config.setStringList(node, actions);
}

View File

@ -5,10 +5,6 @@
*/
package me.filoghost.chestcommands.legacy.v4_0;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import me.filoghost.chestcommands.config.ConfigManager;
import me.filoghost.chestcommands.legacy.upgrade.UpgradeTask;
import me.filoghost.fcommons.Strings;
@ -19,13 +15,18 @@ import me.filoghost.fcommons.config.exception.ConfigLoadException;
import me.filoghost.fcommons.config.exception.ConfigSaveException;
import org.apache.commons.lang.StringEscapeUtils;
public class v4_0_PlaceholdersUpgradeTask extends UpgradeTask {
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
public class V4_0_PlaceholdersUpgradeTask extends UpgradeTask {
private final Path oldPlaceholdersFile;
private final ConfigLoader newPlaceholdersConfigLoader;
private Config updatedConfig;
public v4_0_PlaceholdersUpgradeTask(ConfigManager configManager) {
public V4_0_PlaceholdersUpgradeTask(ConfigManager configManager) {
this.oldPlaceholdersFile = configManager.getRootDataFolder().resolve("placeholders.yml");
this.newPlaceholdersConfigLoader = configManager.getConfigLoader("custom-placeholders.yml");
}

View File

@ -9,9 +9,9 @@ import me.filoghost.chestcommands.config.ConfigManager;
import me.filoghost.chestcommands.legacy.upgrade.YamlUpgradeTask;
import me.filoghost.fcommons.config.Config;
public class v4_0_SettingsUpgradeTask extends YamlUpgradeTask {
public class V4_0_SettingsUpgradeTask extends YamlUpgradeTask {
public v4_0_SettingsUpgradeTask(ConfigManager configManager) {
public V4_0_SettingsUpgradeTask(ConfigManager configManager) {
super(configManager.getConfigLoader("config.yml"));
}

View File

@ -14,7 +14,7 @@ class ErrorPrintInfo {
private final String details;
private final Throwable cause;
public ErrorPrintInfo(int index, List<String> message, String details, Throwable cause) {
protected ErrorPrintInfo(int index, List<String> message, String details, Throwable cause) {
this.index = index;
this.message = message;
this.details = details;

View File

@ -5,13 +5,14 @@
*/
package me.filoghost.chestcommands.logging;
import java.nio.file.Path;
import me.filoghost.chestcommands.ChestCommands;
import me.filoghost.chestcommands.parsing.icon.AttributeType;
import me.filoghost.chestcommands.parsing.icon.IconSettings;
import me.filoghost.fcommons.config.ConfigErrors;
import org.bukkit.ChatColor;
import java.nio.file.Path;
public class Errors {
public static class Config {
@ -41,7 +42,9 @@ public class Errors {
public static final String genericExecutorError = "error while running automatic configuration upgrades";
public static final String menuListIOException = "couldn't obtain a list of menu files";
public static final String failedSomeUpgrades = "note: one or more automatic upgrades may have not been applied, configuration files or menus may require manual changes";
public static final String failedSomeUpgrades =
"note: one or more automatic upgrades may have not been applied, "
+ "configuration files or menus may require manual changes";
public static final String failedToPrepareUpgradeTasks = "error while trying to prepare an automatic configuration upgrade";
public static String metadataReadError(Path metadataFile) {

View File

@ -18,8 +18,8 @@ import org.bukkit.entity.Player;
public abstract class BaseMenu implements Menu {
protected final String title;
protected final Grid<Icon> icons;
private final String title;
private final Grid<Icon> icons;
public BaseMenu(String title, int rows) {

View File

@ -19,7 +19,7 @@ public class ItemStackParser {
private short durability = 0;
private boolean hasExplicitDurability = false;
/**
/*
* Reads item in the format "material:durability, amount".
*/
public ItemStackParser(String input, boolean parseAmount) throws ParseException {

View File

@ -5,9 +5,10 @@
*/
package me.filoghost.chestcommands.placeholder.scanner;
import java.util.Objects;
import me.filoghost.fcommons.Strings;
import java.util.Objects;
public class PlaceholderMatch {
private final String pluginNamespace;
@ -32,7 +33,7 @@ public class PlaceholderMatch {
return argument;
}
/**
/*
* Valid formats:
* {pluginName/placeholder: argument}
* {placeholder: argument}
@ -70,9 +71,9 @@ public class PlaceholderMatch {
}
PlaceholderMatch other = (PlaceholderMatch) obj;
return Objects.equals(this.pluginNamespace, other.pluginNamespace) &&
Objects.equals(this.identifier, other.identifier) &&
Objects.equals(this.argument, other.argument);
return Objects.equals(this.pluginNamespace, other.pluginNamespace)
&& Objects.equals(this.identifier, other.identifier)
&& Objects.equals(this.argument, other.argument);
}
@Override

View File

@ -20,8 +20,9 @@ public final class NBTByteArray extends NBTTag {
public NBTByteArray(Number[] numbers) {
this.value = new byte[numbers.length];
for (int i = 0; i < numbers.length; i++)
for (int i = 0; i < numbers.length; i++) {
value[i] = numbers[i].byteValue();
}
}
/**

View File

@ -61,7 +61,9 @@ public final class NBTCompound extends NBTTag {
* @throws NoSuchElementException if there is no tag with given name
*/
public NBTTag getTag(String key) {
if (!hasKey(key)) throw new NoSuchElementException(key);
if (!hasKey(key)) {
throw new NoSuchElementException(key);
}
return value.get(key);
}
@ -74,7 +76,9 @@ public final class NBTCompound extends NBTTag {
*/
public byte getByte(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTByte)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTByte)) {
throw new NoSuchElementException(key);
}
return ((NBTByte) tag).getValue();
}
@ -87,7 +91,9 @@ public final class NBTCompound extends NBTTag {
*/
public short getShort(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTShort)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTShort)) {
throw new NoSuchElementException(key);
}
return ((NBTShort) tag).getValue();
}
@ -100,7 +106,9 @@ public final class NBTCompound extends NBTTag {
*/
public int getInt(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTInt)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTInt)) {
throw new NoSuchElementException(key);
}
return ((NBTInt) tag).getValue();
}
@ -113,7 +121,9 @@ public final class NBTCompound extends NBTTag {
*/
public long getLong(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTLong)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTLong)) {
throw new NoSuchElementException(key);
}
return ((NBTLong) tag).getValue();
}
@ -126,7 +136,9 @@ public final class NBTCompound extends NBTTag {
*/
public float getFloat(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTFloat)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTFloat)) {
throw new NoSuchElementException(key);
}
return ((NBTFloat) tag).getValue();
}
@ -139,7 +151,9 @@ public final class NBTCompound extends NBTTag {
*/
public double getDouble(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTDouble)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTDouble)) {
throw new NoSuchElementException(key);
}
return ((NBTDouble) tag).getValue();
}
@ -152,7 +166,9 @@ public final class NBTCompound extends NBTTag {
*/
public byte[] getByteArray(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTByteArray)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTByteArray)) {
throw new NoSuchElementException(key);
}
return ((NBTByteArray) tag).getValue();
}
@ -165,7 +181,9 @@ public final class NBTCompound extends NBTTag {
*/
public String getString(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTString)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTString)) {
throw new NoSuchElementException(key);
}
return ((NBTString) tag).getValue();
}
@ -189,7 +207,9 @@ public final class NBTCompound extends NBTTag {
*/
public NBTList getTagList(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTList)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTList)) {
throw new NoSuchElementException(key);
}
return (NBTList) tag;
}
@ -213,7 +233,9 @@ public final class NBTCompound extends NBTTag {
*/
public NBTCompound getCompoundTag(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTCompound)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTCompound)) {
throw new NoSuchElementException(key);
}
return (NBTCompound) tag;
}
@ -226,7 +248,9 @@ public final class NBTCompound extends NBTTag {
*/
public int[] getIntArray(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTIntArray)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTIntArray)) {
throw new NoSuchElementException(key);
}
return ((NBTIntArray) tag).getValue();
}
@ -239,7 +263,9 @@ public final class NBTCompound extends NBTTag {
*/
public long[] getLongArray(String key) {
NBTTag tag = value.get(key);
if (!(tag instanceof NBTLongArray)) throw new NoSuchElementException(key);
if (!(tag instanceof NBTLongArray)) {
throw new NoSuchElementException(key);
}
return ((NBTLongArray) tag).getValue();
}

View File

@ -26,8 +26,9 @@ public final class NBTIntArray extends NBTTag implements Cloneable {
public NBTIntArray(Number[] numbers) {
this.value = new int[numbers.length];
for (int i = 0; i < numbers.length; i++)
for (int i = 0; i < numbers.length; i++) {
value[i] = numbers[i].intValue();
}
}
/**

View File

@ -120,25 +120,29 @@ public final class NBTList extends NBTTag implements Iterable<NBTTag>, Cloneable
* @param value the tag
*/
public void add(NBTTag value) {
if (this.type == null)
if (this.type == null) {
this.type = value.getType();
else if (this.type != value.getType())
} else if (this.type != value.getType()) {
throw new IllegalArgumentException(value.getType() + " is not of expected type " + type);
}
list.add(value);
}
/**
* Add the given tag at the given index in the list.
*
* @param index the index in the list
* @param value the tag
*/
public void add(int index, NBTTag value) {
if (index < 0 || index >= list.size())
if (index < 0 || index >= list.size()) {
throw new IndexOutOfBoundsException(Integer.toString(index));
if (this.type == null)
}
if (this.type == null) {
this.type = value.getType();
else if (this.type != value.getType())
} else if (this.type != value.getType()) {
throw new IllegalArgumentException(value.getType() + " is not of expected type " + type);
}
list.add(index, value);
}
@ -177,8 +181,11 @@ public final class NBTList extends NBTTag implements Iterable<NBTTag>, Cloneable
boolean first = true;
while (iter.hasNext()) {
if (first) first = false;
else builder.append(',');
if (first) {
first = false;
} else {
builder.append(',');
}
builder.append(iter.next().toMSONString());
}

View File

@ -25,8 +25,9 @@ public final class NBTLongArray extends NBTTag {
public NBTLongArray(Number[] numbers) {
this.value = new long[numbers.length];
for (int i = 0; i < numbers.length; i++)
for (int i = 0; i < numbers.length; i++) {
value[i] = numbers[i].longValue();
}
}
/**

View File

@ -5,9 +5,6 @@
*/
package me.filoghost.chestcommands.util.nbt.parser;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import me.filoghost.chestcommands.util.nbt.NBTByte;
import me.filoghost.chestcommands.util.nbt.NBTByteArray;
import me.filoghost.chestcommands.util.nbt.NBTCompound;
@ -23,6 +20,10 @@ import me.filoghost.chestcommands.util.nbt.NBTString;
import me.filoghost.chestcommands.util.nbt.NBTTag;
import me.filoghost.chestcommands.util.nbt.NBTType;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
public final class MojangsonParser {
private static final Pattern
@ -65,11 +66,13 @@ public final class MojangsonParser {
private NBTTag parseStringOrLiteral() throws MojangsonParseException {
skipWhitespace();
if (currentChar() == '"')
if (currentChar() == '"') {
return new NBTString(parseQuotedString());
}
String str = parseSimpleString();
if (str.isEmpty())
if (str.isEmpty()) {
throw parseException("Expected value");
}
return parseLiteral(str);
}
@ -150,16 +153,18 @@ public final class MojangsonParser {
private NBTTag parseAnything() throws MojangsonParseException {
skipWhitespace();
if (!hasNext())
if (!hasNext()) {
throw parseException("Expected value");
}
int c = currentChar();
if (c == '{')
if (c == '{') {
return parseCompound();
else if (c == '[')
} else if (c == '[') {
return parseDetectedArray();
else
} else {
return parseStringOrLiteral();
}
}
private NBTTag parseDetectedArray() throws MojangsonParseException {
@ -237,12 +242,13 @@ public final class MojangsonParser {
if (!hasNext()) {
throw parseException("Expected value");
}
if (arrayType == 'B')
if (arrayType == 'B') {
return new NBTByteArray(parseNumArray(NBTType.BYTE_ARRAY, NBTType.BYTE));
else if (arrayType == 'L')
} else if (arrayType == 'L') {
return new NBTLongArray(parseNumArray(NBTType.LONG_ARRAY, NBTType.LONG));
else if (arrayType == 'I')
} else if (arrayType == 'I') {
return new NBTIntArray(parseNumArray(NBTType.INT_ARRAY, NBTType.INT));
}
throw parseException("Invalid array type '" + arrayType + "' found");
}
@ -346,7 +352,10 @@ public final class MojangsonParser {
this.index += 1;
return;
}
throw new MojangsonParseException("Expected '" + c + "' but got '" + (hasNext ? Character.valueOf(currentChar()) : "<End of string>") + "'", this.str, this.index + 1);
throw new MojangsonParseException(
"Expected '" + c + "' but got '" + (hasNext ? Character.valueOf(currentChar()) : "<End of string>") + "'",
this.str,
this.index + 1);
}
/**