diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 294d8768f0..68c06bcb3e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -57,6 +57,10 @@ shadow = "9.5.1" paperweight = "2.0.0-SNAPSHOT" codecov = "0.3.0" jqwik = "1.10.1" +errorproneGradlePlugin = "5.1.0" + +# Error Prone +errorprone = "2.50.0" # Minimum versions we apply to make dependencies support newer Java minimumAsm = "9.7" @@ -66,6 +70,7 @@ minimumJdependency = "2.10" # Gradle plugins shadow = { group = "com.gradleup.shadow", name = "shadow-gradle-plugin", version.ref = "shadow" } paperweight = { group = "io.papermc.paperweight.userdev", name = "io.papermc.paperweight.userdev.gradle.plugin", version.ref = "paperweight" } +errorproneGradlePlugin = { group = "net.ltgt.gradle", name = "gradle-errorprone-plugin", version.ref = "errorproneGradlePlugin" } # Minecraft expectations paperApi = { group = "io.papermc.paper", name = "paper-api", version.ref = "paperApi" } @@ -143,6 +148,9 @@ mockito-junit-jupiter = { group = "org.mockito", name = "mockito-core" } log4j-core = { group = "org.apache.logging.log4j", name = "log4j-core", version.ref = "log4j" } +errorprone-core = { group = "com.google.errorprone", name = "error_prone_core", version.ref = "errorprone" } +errorprone-annotations = { group = "com.google.errorprone", name = "error_prone_annotations", version.ref = "errorprone" } + ## Piston [libraries.piston-core] module = "org.enginehub.piston:core" diff --git a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/regions/plotsquared/FaweDelegateSchematicHandler.java b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/regions/plotsquared/FaweDelegateSchematicHandler.java index 5c6f97d212..333317728d 100644 --- a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/regions/plotsquared/FaweDelegateSchematicHandler.java +++ b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/regions/plotsquared/FaweDelegateSchematicHandler.java @@ -177,8 +177,7 @@ public boolean save(CompoundTag tag, String path) { try { File tmp = FileUtils.getFile(PlotSquared.platform().getDirectory(), path); tmp.getParentFile().mkdirs(); - if (tag instanceof CompressedCompoundTag) { - CompressedCompoundTag cTag = (CompressedCompoundTag) tag; + if (tag instanceof CompressedCompoundTag cTag) { if (cTag instanceof CompressedSchematicTag) { Clipboard clipboard = (Clipboard) cTag.getSource(); try (OutputStream stream = new FileOutputStream(tmp); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/wepif/DinnerPermsResolver.java b/worldedit-bukkit/src/main/java/com/sk89q/wepif/DinnerPermsResolver.java index 1cc082d9c9..83cdb9424e 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/wepif/DinnerPermsResolver.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/wepif/DinnerPermsResolver.java @@ -78,22 +78,26 @@ public boolean hasPermission(OfflinePlayer player, String permission) { return false; // Permissions are only registered for objects with a Permissible } switch (internalHasPermission(perms, permission)) { - case -1: + case -1 -> { return false; - case 1: + } + case 1 -> { return true; - default: - break; + } + default -> { + } } int dotPos = permission.lastIndexOf("."); while (dotPos > -1) { switch (internalHasPermission(perms, permission.substring(0, dotPos + 1) + "*")) { - case -1: + case -1 -> { return false; - case 1: + } + case 1 -> { return true; - default: - break; + } + default -> { + } } dotPos = permission.lastIndexOf(".", dotPos - 1); } diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java index 0331400e10..c2ea280fda 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java @@ -153,12 +153,11 @@ public static BukkitPlayer adapt(Player player) { * @return The Bukkit command sender */ public static CommandSender adapt(Actor actor) { - if (actor instanceof com.sk89q.worldedit.entity.Player) { - return adapt((com.sk89q.worldedit.entity.Player) actor); - } else if (actor instanceof BukkitBlockCommandSender) { - return ((BukkitBlockCommandSender) actor).getSender(); - } - return ((BukkitCommandSender) actor).getSender(); + return switch (actor) { + case com.sk89q.worldedit.entity.Player player -> adapt(player); + case BukkitBlockCommandSender bukkitBlockCommandSender -> bukkitBlockCommandSender.getSender(); + case null, default -> ((BukkitCommandSender) actor).getSender(); + }; } /** @@ -181,24 +180,15 @@ public static Player adapt(com.sk89q.worldedit.entity.Player player) { * @return a WorldEdit direction */ public static Direction adapt(@Nullable BlockFace face) { - if (face == null) { - return null; - } - switch (face) { - case NORTH: - return Direction.NORTH; - case SOUTH: - return Direction.SOUTH; - case WEST: - return Direction.WEST; - case EAST: - return Direction.EAST; - case DOWN: - return Direction.DOWN; - case UP: - default: - return Direction.UP; - } + return switch (face) { + case null -> null; + case NORTH -> Direction.NORTH; + case SOUTH -> Direction.SOUTH; + case WEST -> Direction.WEST; + case EAST -> Direction.EAST; + case DOWN -> Direction.DOWN; + default -> Direction.UP; + }; } /** diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java index 42b602e743..704b2568c3 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java @@ -117,14 +117,10 @@ public BukkitBlockMaterial(@Nullable BlockMaterial material, Material bukkitMate @Override public boolean isAir() { - switch (material) { - case AIR: - case CAVE_AIR: - case VOID_AIR: - return true; - default: - return false; - } + return switch (material) { + case AIR, CAVE_AIR, VOID_AIR -> true; + default -> false; + }; } @Override diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitCommandSender.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitCommandSender.java index 17170d9a64..9dcffd9160 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitCommandSender.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitCommandSender.java @@ -144,8 +144,7 @@ public String getName() { @Override public boolean isActive() { //FAWE start - check if sender instanceof Entity, before returning true - if (sender instanceof Entity) { - Entity entity = (Entity) sender; + if (sender instanceof Entity entity) { return entity.isValid() && !entity.isDead(); } //FAWE end diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitEntityProperties.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitEntityProperties.java index 28ef9274a1..f0c3e56114 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitEntityProperties.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitEntityProperties.java @@ -148,7 +148,7 @@ public boolean isGolem() { @Override public boolean isTamed() { - return entity instanceof Tameable && ((Tameable) entity).isTamed(); + return entity instanceof Tameable tameable && tameable.isTamed(); } @Override diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java index 13a904a063..22c3efd337 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java @@ -234,8 +234,7 @@ public void print(Component component) { public boolean trySetPosition(Vector3 pos, float pitch, float yaw) { //FAWE start org.bukkit.World world = player.getWorld(); - if (pos instanceof com.sk89q.worldedit.util.Location) { - com.sk89q.worldedit.util.Location loc = (com.sk89q.worldedit.util.Location) pos; + if (pos instanceof com.sk89q.worldedit.util.Location loc) { Extent extent = loc.getExtent(); if (extent instanceof World) { world = Bukkit.getWorld(((World) extent).getName()); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayerBlockBag.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayerBlockBag.java index 2ad20fb6f1..8130e24771 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayerBlockBag.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayerBlockBag.java @@ -201,7 +201,7 @@ public BaseItem getItem(int slot) { @Override public void setItem(int slot, BaseItem block) { loadInventory(); - BaseItemStack stack = block instanceof BaseItemStack ? (BaseItemStack) block : new BaseItemStack( + BaseItemStack stack = block instanceof BaseItemStack baseItemStack ? baseItemStack : new BaseItemStack( block.getType(), block.getNbtData(), 1 diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java index 6a6419ef28..926f3fede7 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java @@ -304,8 +304,8 @@ public boolean clearContainerBlockContents(BlockVector3 pt) { TaskManager.taskManager().sync(() -> { Inventory inven = chest.getInventory(); - if (chest instanceof Chest) { - inven = ((Chest) chest).getBlockInventory(); + if (chest instanceof Chest chest1) { + inven = chest1.getBlockInventory(); } inven.clear(); return null; @@ -416,11 +416,11 @@ public boolean equals(Object other) { return false; } else if (other == null) { return false; - } else if ((other instanceof BukkitWorld)) { - World otherWorld = ((BukkitWorld) other).worldRef.get(); + } else if (other instanceof BukkitWorld bukkitWorld) { + World otherWorld = bukkitWorld.worldRef.get(); return ref.equals(otherWorld); - } else if (other instanceof com.sk89q.worldedit.world.World) { - return ((com.sk89q.worldedit.world.World) other).getName().equals(ref.getName()); + } else if (other instanceof com.sk89q.worldedit.world.World world) { + return world.getName().equals(ref.getName()); } else { return false; } @@ -610,10 +610,10 @@ public > boolean setBlock(BlockVector3 position, B try { return worldNativeAccess.setBlock(position, block, sideEffects); } catch (Exception e) { - if (block instanceof BaseBlock && ((BaseBlock) block).getNbt() != null) { + if (block instanceof BaseBlock baseBlock && baseBlock.getNbt() != null) { LOGGER.warn( "Tried to set a corrupt tile entity at " + position.toString() - + ": " + ((BaseBlock) block).getNbt(), e + + ": " + baseBlock.getNbt(), e ); } else { LOGGER.warn("Failed to set block via adapter, falling back to generic", e); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java index 987969870a..b15cae48a6 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java @@ -159,23 +159,13 @@ public void onPlayerInteract(PlayerInteractEvent event) { final Block clickedBlock = event.getClickedBlock(); final Location pos = clickedBlock == null ? null : new Location(world, clickedBlock.getX(), clickedBlock.getY(), clickedBlock.getZ()); - boolean result = false; - switch (event.getAction()) { - case LEFT_CLICK_BLOCK: - result = we.handleBlockLeftClick(player, pos, direction) || we.handleArmSwing(player); - break; - case LEFT_CLICK_AIR: - result = we.handleArmSwing(player); - break; - case RIGHT_CLICK_BLOCK: - result = we.handleBlockRightClick(player, pos, direction) || we.handleRightClick(player); - break; - case RIGHT_CLICK_AIR: - result = we.handleRightClick(player); - break; - default: - break; - } + boolean result = switch (event.getAction()) { + case LEFT_CLICK_BLOCK -> we.handleBlockLeftClick(player, pos, direction) || we.handleArmSwing(player); + case LEFT_CLICK_AIR -> we.handleArmSwing(player); + case RIGHT_CLICK_BLOCK -> we.handleBlockRightClick(player, pos, direction) || we.handleRightClick(player); + case RIGHT_CLICK_AIR -> we.handleRightClick(player); + default -> false; + }; debouncer.setLastInteraction(player, result); if (result) { event.setCancelled(true); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index 78e909744c..6df4cdd944 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -644,10 +644,10 @@ BukkitPlayer reCachePlayer(Player player) { //FAWE end public Actor wrapCommandSender(CommandSender sender) { - if (sender instanceof Player) { - return wrapPlayer((Player) sender); - } else if (config.commandBlockSupport && sender instanceof BlockCommandSender) { - return new BukkitBlockCommandSender(this, (BlockCommandSender) sender); + if (sender instanceof Player player) { + return wrapPlayer(player); + } else if (config.commandBlockSupport && sender instanceof BlockCommandSender blockCommandSender) { + return new BukkitBlockCommandSender(this, blockCommandSender); } return bukkitConsoleCommandSender; diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/BukkitImplLoader.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/BukkitImplLoader.java index f55029ac4d..d27872e332 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/BukkitImplLoader.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/BukkitImplLoader.java @@ -50,15 +50,19 @@ public class BukkitImplLoader { private static final String CLASS_SUFFIX = ".class"; private static final String LOAD_ERROR_MESSAGE = - //FAWE start - exchange WorldEdit to FAWE & suggest to update Fawe & the server software - "\n**********************************************\n" - + "** This FastAsyncWorldEdit version does not fully support your version of Bukkit.\n" - + "** You can fix this by:\n" - + "** - Updating your server version (Check /version to see how many versions you are behind)\n** - Updating FAWE\n" - + "**\n" + "** When working with blocks or undoing, chests will be empty, signs\n" - + "** will be blank, and so on. There will be no support for entity\n" - + "** and block property-related functions.\n" - + "**********************************************\n"; + //FAWE start - exchange WorldEdit to FAWE & suggest to update FAWE & the server software + """ + ********************************************** + ** This FastAsyncWorldEdit version does not fully support your version of Bukkit. + ** You can fix this by: + ** - Updating your server version (Check /version to see how many versions you are behind) + ** - Updating FAWE + ** + ** When working with blocks or undoing, chests will be empty, signs + ** will be blank, and so on. There will be no support for entity + ** and block property-related functions. + ********************************************** + """; //FAWE end /** @@ -89,9 +93,8 @@ private void addDefaults() { * @throws IOException thrown on I/O error */ public void addFromJar(File file) throws IOException { - Closer closer = Closer.create(); + try (Closer closer = Closer.create()) { JarFile jar = closer.register(new JarFile(file)); - try { Enumeration entries = jar.entries(); while (entries.hasMoreElements()) { JarEntry jarEntry = entries.nextElement(); @@ -111,8 +114,6 @@ public void addFromJar(File file) throws IOException { adapterCandidates.add(className); } } - } finally { - closer.close(); } } diff --git a/worldedit-cli/src/main/java/com/sk89q/worldedit/cli/CLIBlockRegistry.java b/worldedit-cli/src/main/java/com/sk89q/worldedit/cli/CLIBlockRegistry.java index 01ad15c1ea..171d61dc00 100644 --- a/worldedit-cli/src/main/java/com/sk89q/worldedit/cli/CLIBlockRegistry.java +++ b/worldedit-cli/src/main/java/com/sk89q/worldedit/cli/CLIBlockRegistry.java @@ -39,29 +39,26 @@ public class CLIBlockRegistry extends BundledBlockRegistry { private Property createProperty(String type, String key, List values) { - switch (type) { - case "int": { + return switch (type) { + case "int" -> { List fixedValues = values.stream().map(Integer::parseInt).collect(Collectors.toList()); - return new IntegerProperty(key, fixedValues); + yield new IntegerProperty(key, fixedValues); } - case "bool": { + case "bool" -> { List fixedValues = values.stream().map(Boolean::parseBoolean).collect(Collectors.toList()); - return new BooleanProperty(key, fixedValues); + yield new BooleanProperty(key, fixedValues); } - case "enum": { - return new EnumProperty(key, values); - } - case "direction": { + case "enum" -> new EnumProperty(key, values); + case "direction" -> { List fixedValues = values .stream() .map(String::toUpperCase) .map(Direction::valueOf) .collect(Collectors.toList()); - return new DirectionalProperty(key, fixedValues); + yield new DirectionalProperty(key, fixedValues); } - default: - throw new RuntimeException("Failed to create property"); - } + default -> throw new RuntimeException("Failed to create property"); + }; } @Nullable diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/FaweCache.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/FaweCache.java index 1721b6169b..a3a0a27854 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/FaweCache.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/FaweCache.java @@ -36,6 +36,8 @@ import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.world.block.BlockTypesCache; import org.apache.logging.log4j.Logger; +import org.enginehub.linbus.tree.LinCompoundTag; +import org.enginehub.linbus.tree.LinTag; import javax.annotation.Nonnull; import java.util.ArrayList; @@ -664,9 +666,8 @@ public ThreadPoolExecutor newBlockingExecutor(String name, Logger logger) { protected synchronized void afterExecute(Runnable runnable, Throwable throwable) { super.afterExecute(runnable, throwable); - if (throwable == null && runnable instanceof Future) { + if (throwable == null && runnable instanceof final Future future) { try { - Future future = (Future) runnable; if (future.isDone()) { future.get(); } diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/CopyPastaBrush.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/CopyPastaBrush.java index 1b60124cba..9710db973e 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/CopyPastaBrush.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/CopyPastaBrush.java @@ -54,10 +54,9 @@ public boolean reset() { public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException { Actor actor = editSession.getActor(); - if (!(actor instanceof Player)) { + if (!(actor instanceof final Player player)) { throw FaweCache.PLAYER_ONLY; } - Player player = (Player) actor; ClipboardHolder clipboard = session.getExistingClipboard(); if (clipboard == null) { Mask mask = editSession.getMask(); diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/ImageBrush.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/ImageBrush.java index acd9216e03..f12890ae34 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/ImageBrush.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/brush/ImageBrush.java @@ -51,12 +51,10 @@ public ImageBrush(BufferedImage image, LocalSession session, boolean alpha /*, b colorFunction = (x1, z1, x2, z2, extent, pos) -> { int color = table.averageRGBA(x1, z1, x2, z2); int alpha1 = (color >> 24) & 0xFF; - switch (alpha1) { - case 0: - return 0; - case 255: - return color; - default: + return switch (alpha1) { + case 0 -> 0; + case 255 -> color; + default -> { BlockState block = extent.getBlock(pos); TextureUtil tu = session.getTextureUtil(); BlockType type = block.getBlockType(); @@ -66,9 +64,9 @@ public ImageBrush(BufferedImage image, LocalSession session, boolean alpha /*, b } else { existingColor = tu.getColor(type); } - return TextureUtil.combineTransparency(color, existingColor); - - } + yield TextureUtil.combineTransparency(color, existingColor); + } + }; }; } else { colorFunction = (x1, z1, x2, z2, extent, pos) -> table.averageRGB(x1, z1, x2, z2); diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/Scroll.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/Scroll.java index 8e34d3996c..94059d648e 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/Scroll.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/Scroll.java @@ -53,7 +53,7 @@ public static Scroll fromArguments( parserContext.setSession(session); parserContext.setTryLegacy(player.getLimit().ALLOW_LEGACY); switch (mode) { - case CLIPBOARD: + case CLIPBOARD -> { if (arguments.size() != 2) { if (message) { player.print(Caption.of("fawe.error.command.syntax", "clipboard [file]")); @@ -70,7 +70,8 @@ public static Scroll fromArguments( } catch (IOException e) { throw new RuntimeException(e); } - case MASK: + } + case MASK -> { if (arguments.size() < 2) { if (message) { player.print(Caption.of("fawe.error.command.syntax", "mask [mask 1] [mask 2] [mask 3]...")); @@ -83,7 +84,8 @@ public static Scroll fromArguments( masks[i - 1] = WorldEdit.getInstance().getMaskFactory().parseFromInput(arg, parserContext); } return (new ScrollMask(tool, masks)); - case PATTERN: + } + case PATTERN -> { if (arguments.size() < 2) { if (message) { player.print(Caption.of("fawe.error.command.syntax", "pattern [pattern 1] [pattern 2] [pattern 3]...")); @@ -96,17 +98,22 @@ public static Scroll fromArguments( patterns[i - 1] = WorldEdit.getInstance().getPatternFactory().parseFromInput(arg, parserContext); } return (new ScrollPattern(tool, patterns)); - case TARGET_OFFSET: + } + case TARGET_OFFSET -> { return (new ScrollTargetOffset(tool)); - case RANGE: + } + case RANGE -> { return (new ScrollRange(tool)); - case SIZE: + } + case SIZE -> { return (new ScrollSize(tool)); - case TARGET: + } + case TARGET -> { return (new ScrollTarget(tool)); - default: + } + default -> { return null; - + } } } diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/ScrollSize.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/ScrollSize.java index ac34226f23..814c484eed 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/ScrollSize.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/command/tool/scroll/ScrollSize.java @@ -13,7 +13,7 @@ public ScrollSize(BrushTool tool) { @Override public boolean increment(Player player, int amount) { int max = player.getLimit().MAX_RADIUS; - double newSize = Math.max(0, Math.min(max == -1 ? 4095 : max, getTool().getSize() + amount)); + double newSize = Math.clamp(getTool().getSize() + amount, 0, max == -1 ? 4095 : max); getTool().setSize(newSize); return true; } diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/TransformFactory.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/TransformFactory.java index 5cd2743cac..7e25ee8eca 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/TransformFactory.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/TransformFactory.java @@ -47,18 +47,17 @@ public TransformFactory(WorldEdit worldEdit) { @Override protected ResettableExtent getParsed(final String input, final List transforms) { - switch (transforms.size()) { - case 0: - throw new NoMatchException(Caption.of("worldedit.error.no-match", TextComponent.of(input))); - case 1: - return transforms.get(0); - default: + return switch (transforms.size()) { + case 0 -> throw new NoMatchException(Caption.of("worldedit.error.no-match", TextComponent.of(input))); + case 1 -> transforms.getFirst(); + default -> { RandomTransform randomTransform = new RandomTransform(new TrueRandom()); for (ResettableExtent transform : transforms) { randomTransform.add(transform, 1d); } - return randomTransform; - } + yield randomTransform; + } + }; } // TODO is there a better default? diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/LinearPatternParser.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/LinearPatternParser.java index e0d5d31056..8fcdb6c84e 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/LinearPatternParser.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/LinearPatternParser.java @@ -48,8 +48,8 @@ protected Pattern parseFromInput(@Nonnull String[] arguments, ParserContext cont if (inner instanceof BlockStateHolder) { return inner; } - if (inner instanceof RandomPattern) { - Set patterns = ((RandomPattern) inner).getPatterns(); + if (inner instanceof RandomPattern randomPattern) { + Set patterns = randomPattern.getPatterns(); return new LinearBlockPattern(patterns.toArray(new Pattern[0])); } throw new InputParseException(TextComponent.of("Pattern " + inner.getClass().getSimpleName() diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/RandomFullClipboardPatternParser.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/RandomFullClipboardPatternParser.java index 587d8d81f9..26e76d384c 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/RandomFullClipboardPatternParser.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extension/factory/parser/pattern/RandomFullClipboardPatternParser.java @@ -36,7 +36,7 @@ public RandomFullClipboardPatternParser(WorldEdit worldEdit) { @Override protected Stream getSuggestions(String argumentInput, int index, ParserContext context) { switch (index) { - case 0: + case 0 -> { if (argumentInput.equals("#") || argumentInput.equals("#c")) { return Stream.of("#copy", "#clipboard"); } else if ("#copy".startsWith(argumentInput.toLowerCase(Locale.ROOT))) { @@ -46,11 +46,13 @@ protected Stream getSuggestions(String argumentInput, int index, ParserC } else { return Stream.empty(); } - case 1: - case 2: + } + case 1, 2 -> { return SuggestionHelper.suggestBoolean(argumentInput); - default: + } + default -> { return Stream.empty(); + } } } diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/clipboard/MultiClipboardHolder.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/clipboard/MultiClipboardHolder.java index 23b21baf8d..e693e8d205 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/clipboard/MultiClipboardHolder.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/clipboard/MultiClipboardHolder.java @@ -153,10 +153,12 @@ public Clipboard getClipboard() { cached = available = getClipboards().toArray(new Clipboard[0]); } switch (available.length) { - case 0: + case 0 -> { return EmptyClipboard.getInstance(); - case 1: + } + case 1 -> { return available[0]; + } } int index = ThreadLocalRandom.current().nextInt(available.length); diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/function/mask/BlockMaskBuilder.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/function/mask/BlockMaskBuilder.java index 7ca60bdd17..e5b023609f 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/function/mask/BlockMaskBuilder.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/function/mask/BlockMaskBuilder.java @@ -320,8 +320,8 @@ public BlockMaskBuilder addRegex(final String input) throws InputParseException try { fut.get(5L, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { - if (e.getCause() instanceof InputParseException) { - throw (InputParseException) e.getCause(); + if (e.getCause() instanceof InputParseException inputException) { + throw inputException; } } catch (InterruptedException | TimeoutException ignored) { } finally { diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/MainUtil.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/MainUtil.java index c459769120..aa10b1f667 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/MainUtil.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/MainUtil.java @@ -87,6 +87,7 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.Deflater; import java.util.zip.GZIPInputStream; @@ -866,83 +867,53 @@ public static Object copyNd(Object arr) { } } + private static final long[] TIME_UNIT_SECONDS = {33868800L, 604800L, 86400L, 3600L, 60L}; + private static final String[] TIME_UNIT_SUFFIXES = {"y", "w", "d", "h", "m"}; + public static String secToTime(long time) { - StringBuilder toreturn = new StringBuilder(); - if (time >= 33868800) { - int years = (int) (time / 33868800); - int time1 = years * 33868800; - time -= time1; - toreturn.append(years).append("y "); - } - if (time >= 604800) { - int weeks = (int) (time / 604800); - time -= weeks * 604800L; - toreturn.append(weeks).append("w "); - } - if (time >= 86400) { - int days = (int) (time / 86400); - time -= days * 86400L; - toreturn.append(days).append("d "); - } - if (time >= 3600) { - int hours = (int) (time / 3600); - time -= hours * 3600L; - toreturn.append(hours).append("h "); - } - if (time >= 60) { - int minutes = (int) (time / 60); - time -= minutes * 60L; - toreturn.append(minutes).append("m "); + StringBuilder result = new StringBuilder(); + for (int i = 0; i < TIME_UNIT_SECONDS.length; i++) { + long unitSeconds = TIME_UNIT_SECONDS[i]; + if (time >= unitSeconds) { + long amount = time / unitSeconds; + time -= amount * unitSeconds; + result.append(amount).append(TIME_UNIT_SUFFIXES[i]).append(' '); + } } - if (toreturn.equals("") || time > 0) { - toreturn.append(time).append("s "); + if (result.isEmpty() || time > 0) { + result.append(time).append("s "); } - return toreturn.toString().trim(); + return result.toString().trim(); } + private static final Pattern TIME_COMPONENT = Pattern.compile("(\\d+)([a-z]*)"); + public static long timeToSec(String string) { if (MathMan.isInteger(string)) { return Long.parseLong(string); } - string = string.toLowerCase(Locale.ROOT).trim().toLowerCase(Locale.ROOT); - if (string.equalsIgnoreCase("false")) { + string = string.strip().toLowerCase(Locale.ROOT); + if (string.equals("false")) { return 0; } - String[] split = string.split(" "); long time = 0; - for (String value : split) { - int nums = Integer.parseInt(value.replaceAll("[^\\d]", "")); - String letters = value.replaceAll("[^a-z]", ""); - switch (letters) { - case "week": - case "weeks": - case "wks": - case "w": - - time += 604800L * nums; - case "days": - case "day": - case "d": - time += 86400L * nums; - case "hour": - case "hr": - case "hrs": - case "hours": - case "h": - time += 3600L * nums; - case "minutes": - case "minute": - case "mins": - case "min": - case "m": - time += 60L * nums; - case "seconds": - case "second": - case "secs": - case "sec": - case "s": - time += nums; + for (String component : string.split(" ")) { + if (component.isEmpty()) { + continue; } + Matcher matcher = TIME_COMPONENT.matcher(component); + if (!matcher.matches()) { + throw new IllegalArgumentException("Invalid time component: " + component); + } + long amount = Long.parseLong(matcher.group(1)); + time += switch (matcher.group(2)) { + case "week", "weeks", "wks", "w" -> 604800L * amount; + case "day", "days", "d" -> 86400L * amount; + case "hour", "hours", "hr", "hrs", "h" -> 3600L * amount; + case "minute", "minutes", "min", "mins", "m" -> 60L * amount; + case "second", "seconds", "sec", "secs", "s", "" -> amount; + default -> throw new IllegalArgumentException("Unknown time unit: " + matcher.group(2)); + }; } return time; } diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/StringMan.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/StringMan.java index 6e0f62ba08..422b2810c3 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/StringMan.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/StringMan.java @@ -382,12 +382,13 @@ public static int blockStateStringDistance(String input, String item) { if (bj != ai) { distance++; switch (bj) { - case ':': - case '_': + case ':', '_' -> { continue; - default: + } + default -> { sequentail = true; continue; + } } } break; @@ -450,12 +451,10 @@ public static String join(Collection arr, String delimiter, Function ""; + case 1 -> array[0].toString(); + default -> { final StringBuilder result = new StringBuilder(); for (int i = 0, j = array.length; i < j; i++) { if (i > 0) { @@ -463,8 +462,9 @@ public static String join(Object[] array, String delimiter) { } result.append(array[i]); } - return result.toString(); - } + yield result.toString(); + } + }; } public static Integer toInteger(String string, int start, int end) { @@ -480,20 +480,10 @@ public static Integer toInteger(String string, int start, int end) { for (int i = start; i < end; i++) { char c = string.charAt(i); switch (c) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - value = value * 10 + c - '0'; - break; - default: + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' -> value = value * 10 + c - '0'; + default -> { return null; + } } } return negative ? -value : value; diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/collection/AdaptedMap.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/collection/AdaptedMap.java index e74e4dac61..2329652d6a 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/collection/AdaptedMap.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/collection/AdaptedMap.java @@ -118,8 +118,8 @@ public V setValue(V value) { @Override public boolean equals(Object o) { - if (o instanceof Entry) { - return Objects.equals(((Entry) o).getKey(), getKey()) && Objects.equals(((Entry) o).getValue(), getValue()); + if (o instanceof Entry entry) { + return Objects.equals(entry.getKey(), getKey()) && Objects.equals(entry.getValue(), getValue()); } return false; } diff --git a/worldedit-core/src/main/java/com/sk89q/jnbt/NBTInputStream.java b/worldedit-core/src/main/java/com/sk89q/jnbt/NBTInputStream.java index 208e32383c..5df899577b 100644 --- a/worldedit-core/src/main/java/com/sk89q/jnbt/NBTInputStream.java +++ b/worldedit-core/src/main/java/com/sk89q/jnbt/NBTInputStream.java @@ -197,9 +197,9 @@ public void readTagPayloadLazy(int type, int depth) throws IOException { public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws IOException { switch (type) { - case NBTConstants.TYPE_END: - return; - case NBTConstants.TYPE_BYTE: { + case NBTConstants.TYPE_END -> { + } + case NBTConstants.TYPE_BYTE -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -209,9 +209,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(1); } - return; } - case NBTConstants.TYPE_SHORT: { + case NBTConstants.TYPE_SHORT -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -221,9 +220,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(2); } - return; } - case NBTConstants.TYPE_INT: { + case NBTConstants.TYPE_INT -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -233,9 +231,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(4); } - return; } - case NBTConstants.TYPE_LONG: { + case NBTConstants.TYPE_LONG -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -245,9 +242,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(8); } - return; } - case NBTConstants.TYPE_FLOAT: { + case NBTConstants.TYPE_FLOAT -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -257,9 +253,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(4); } - return; } - case NBTConstants.TYPE_DOUBLE: { + case NBTConstants.TYPE_DOUBLE -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -269,9 +264,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(8); } - return; } - case NBTConstants.TYPE_STRING: { + case NBTConstants.TYPE_STRING -> { ValueReader value = scope.getValueReader(); if (value == null) { value = scope.getElemReader(); @@ -284,9 +278,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } else { is.skipBytes(length); } - return; } - case NBTConstants.TYPE_LIST: { + case NBTConstants.TYPE_LIST -> { int childType = is.readByte(); int length = is.readInt(); StreamDelegate child; @@ -314,9 +307,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws readTagPayloadLazy(childType, depth + 1, child); } } - return; } - case NBTConstants.TYPE_COMPOUND: { + case NBTConstants.TYPE_COMPOUND -> { // readDataPayload scope.acceptInfo(-1, NBTConstants.TYPE_BYTE); ValueReader valueReader = scope.getValueReader(); @@ -350,7 +342,7 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws } } } - case NBTConstants.TYPE_BYTE_ARRAY: { + case NBTConstants.TYPE_BYTE_ARRAY -> { int length = is.readInt(); scope.acceptInfo(length, NBTConstants.TYPE_BYTE); if (scope.acceptLazy(length, this)) { @@ -385,9 +377,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws return; } is.skipBytes(length); - return; } - case NBTConstants.TYPE_INT_ARRAY: { + case NBTConstants.TYPE_INT_ARRAY -> { int length = is.readInt(); scope.acceptInfo(length, NBTConstants.TYPE_INT); if (scope.acceptLazy(length, this)) { @@ -406,9 +397,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws return; } is.skipBytes(length << 2); - return; } - case NBTConstants.TYPE_LONG_ARRAY: { + case NBTConstants.TYPE_LONG_ARRAY -> { int length = is.readInt(); scope.acceptInfo(length, NBTConstants.TYPE_LONG); if (scope.acceptLazy(length, this)) { @@ -427,11 +417,8 @@ public void readTagPayloadLazy(int type, int depth, StreamDelegate scope) throws return; } is.skipBytes(length << 3); - return; } - - default: - throw new IOException("Invalid tag type: " + type + "."); + default -> throw new IOException("Invalid tag type: " + type + "."); } } @@ -448,26 +435,13 @@ private List readListRaw(int depth, int childType, int length) throws IO } public static int getSize(int type) { - switch (type) { - default: - case NBTConstants.TYPE_END: - case NBTConstants.TYPE_BYTE: - return 1; - case NBTConstants.TYPE_BYTE_ARRAY: - case NBTConstants.TYPE_STRING: - case NBTConstants.TYPE_LIST: - case NBTConstants.TYPE_COMPOUND: - case NBTConstants.TYPE_INT_ARRAY: - case NBTConstants.TYPE_LONG_ARRAY: - case NBTConstants.TYPE_SHORT: - return 2; - case NBTConstants.TYPE_FLOAT: - case NBTConstants.TYPE_INT: - return 4; - case NBTConstants.TYPE_DOUBLE: - case NBTConstants.TYPE_LONG: - return 8; - } + return switch (type) { + case NBTConstants.TYPE_BYTE_ARRAY, NBTConstants.TYPE_STRING, NBTConstants.TYPE_LIST, NBTConstants.TYPE_COMPOUND, + NBTConstants.TYPE_INT_ARRAY, NBTConstants.TYPE_LONG_ARRAY, NBTConstants.TYPE_SHORT -> 2; + case NBTConstants.TYPE_FLOAT, NBTConstants.TYPE_INT -> 4; + case NBTConstants.TYPE_DOUBLE, NBTConstants.TYPE_LONG -> 8; + default -> 1; + }; } public Object readTagPayloadRaw(int type, int depth) throws IOException { diff --git a/worldedit-core/src/main/java/com/sk89q/jnbt/NBTOutputStream.java b/worldedit-core/src/main/java/com/sk89q/jnbt/NBTOutputStream.java index 9ab599f658..65289085a2 100644 --- a/worldedit-core/src/main/java/com/sk89q/jnbt/NBTOutputStream.java +++ b/worldedit-core/src/main/java/com/sk89q/jnbt/NBTOutputStream.java @@ -216,47 +216,20 @@ public void writeEndTag() throws IOException { public void writeTagPayload(Tag tag) throws IOException { int type = tag.getTypeCode(); switch (type) { - case NBTConstants.TYPE_END: - writeEndTagPayload((EndTag) tag); - break; - case NBTConstants.TYPE_BYTE: - writeByteTagPayload((ByteTag) tag); - break; - case NBTConstants.TYPE_SHORT: - writeShortTagPayload((ShortTag) tag); - break; - case NBTConstants.TYPE_INT: - writeIntTagPayload((IntTag) tag); - break; - case NBTConstants.TYPE_LONG: - writeLongTagPayload((LongTag) tag); - break; - case NBTConstants.TYPE_FLOAT: - writeFloatTagPayload((FloatTag) tag); - break; - case NBTConstants.TYPE_DOUBLE: - writeDoubleTagPayload((DoubleTag) tag); - break; - case NBTConstants.TYPE_BYTE_ARRAY: - writeByteArrayTagPayload((ByteArrayTag) tag); - break; - case NBTConstants.TYPE_STRING: - writeStringTagPayload((StringTag) tag); - break; - case NBTConstants.TYPE_LIST: - writeListTagPayload((ListTag) tag); - break; - case NBTConstants.TYPE_COMPOUND: - writeCompoundTagPayload((CompoundTag) tag); - break; - case NBTConstants.TYPE_INT_ARRAY: - writeIntArrayTagPayload((IntArrayTag) tag); - break; - case NBTConstants.TYPE_LONG_ARRAY: - writeLongArrayTagPayload((LongArrayTag) tag); - break; - default: - throw new IOException("Invalid tag type: " + type + "."); + case NBTConstants.TYPE_END -> writeEndTagPayload((EndTag) tag); + case NBTConstants.TYPE_BYTE -> writeByteTagPayload((ByteTag) tag); + case NBTConstants.TYPE_SHORT -> writeShortTagPayload((ShortTag) tag); + case NBTConstants.TYPE_INT -> writeIntTagPayload((IntTag) tag); + case NBTConstants.TYPE_LONG -> writeLongTagPayload((LongTag) tag); + case NBTConstants.TYPE_FLOAT -> writeFloatTagPayload((FloatTag) tag); + case NBTConstants.TYPE_DOUBLE -> writeDoubleTagPayload((DoubleTag) tag); + case NBTConstants.TYPE_BYTE_ARRAY -> writeByteArrayTagPayload((ByteArrayTag) tag); + case NBTConstants.TYPE_STRING -> writeStringTagPayload((StringTag) tag); + case NBTConstants.TYPE_LIST -> writeListTagPayload((ListTag) tag); + case NBTConstants.TYPE_COMPOUND -> writeCompoundTagPayload((CompoundTag) tag); + case NBTConstants.TYPE_INT_ARRAY -> writeIntArrayTagPayload((IntArrayTag) tag); + case NBTConstants.TYPE_LONG_ARRAY -> writeLongArrayTagPayload((LongArrayTag) tag); + default -> throw new IOException("Invalid tag type: " + type + "."); } } diff --git a/worldedit-core/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java b/worldedit-core/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java index 2c5c578e42..1a054c2c00 100644 --- a/worldedit-core/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java +++ b/worldedit-core/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java @@ -124,8 +124,7 @@ public CommandContext( argIndexList.add(i); switch (arg.charAt(0)) { - case '\'': - case '"': + case '\'', '"' -> { final StringBuilder build = new StringBuilder(); final char quotedChar = arg.charAt(0); @@ -155,6 +154,7 @@ public CommandContext( continue; } // else raise exception about hanging quotes? + } } argList.add(arg); } diff --git a/worldedit-core/src/main/java/com/sk89q/util/yaml/YAMLNode.java b/worldedit-core/src/main/java/com/sk89q/util/yaml/YAMLNode.java index a894cbe148..4e6cb85baa 100644 --- a/worldedit-core/src/main/java/com/sk89q/util/yaml/YAMLNode.java +++ b/worldedit-core/src/main/java/com/sk89q/util/yaml/YAMLNode.java @@ -53,8 +53,8 @@ public YAMLNode(Map root, boolean writeDefaults) { private static Integer castInt(Object o) { if (o == null) { return null; - } else if (o instanceof Number) { - return ((Number) o).intValue(); + } else if (o instanceof Number number) { + return number.intValue(); } else { return null; } @@ -70,8 +70,8 @@ private static Integer castInt(Object o) { private static Double castDouble(Object o) { if (o == null) { return null; - } else if (o instanceof Number) { - return ((Number) o).doubleValue(); + } else if (o instanceof Number number) { + return number.doubleValue(); } else { return null; } @@ -87,8 +87,8 @@ private static Double castDouble(Object o) { private static Boolean castBoolean(Object o) { if (o == null) { return null; - } else if (o instanceof Boolean) { - return (Boolean) o; + } else if (o instanceof Boolean bool) { + return bool; } else { return null; } @@ -158,35 +158,35 @@ public Object getProperty(String path) { * @return the new object */ private Object prepareSerialization(Object value) { - if (value instanceof Vector3) { - Map out = new LinkedHashMap<>(); - Vector3 vec = (Vector3) value; - out.put("x", vec.x()); - out.put("y", vec.y()); - out.put("z", vec.z()); - return out; - } else if (value instanceof BlockVector3) { - Map out = new LinkedHashMap<>(); - BlockVector3 vec = (BlockVector3) value; - out.put("x", vec.x()); - out.put("y", vec.y()); - out.put("z", vec.z()); - return out; - } else if (value instanceof Vector2) { - Map out = new LinkedHashMap<>(); - Vector2 vec = (Vector2) value; - out.put("x", vec.x()); - out.put("z", vec.z()); - return out; - } else if (value instanceof BlockVector2) { - Map out = new LinkedHashMap<>(); - BlockVector2 vec = (BlockVector2) value; - out.put("x", vec.x()); - out.put("z", vec.z()); - return out; - } - - return value; + return switch (value) { + case Vector3(double x, double y, double z) -> { + Map out = new LinkedHashMap<>(); + out.put("x", x); + out.put("y", y); + out.put("z", z); + yield out; + } + case BlockVector3(int x, int y, int z) -> { + Map out = new LinkedHashMap<>(); + out.put("x", x); + out.put("y", y); + out.put("z", z); + yield out; + } + case Vector2(double x, double z) -> { + Map out = new LinkedHashMap<>(); + out.put("x", x); + out.put("z", z); + yield out; + } + case BlockVector2(int x, int z) -> { + Map out = new LinkedHashMap<>(); + out.put("x", x); + out.put("z", z); + yield out; + } + case null, default -> value; + }; } /** @@ -773,15 +773,15 @@ public Map getNodes(String path) { Object o = getProperty(path); if (o == null) { return null; - } else if (o instanceof Map) { + } else if (o instanceof Map map) { Map nodes = new LinkedHashMap<>(); - for (Map.Entry entry : ((Map) o).entrySet()) { - if (entry.getValue() instanceof Map) { + for (Map.Entry entry : ((Map) map).entrySet()) { + if (entry.getValue() instanceof Map valueMap) { nodes.put( entry.getKey(), - new YAMLNode((Map) entry.getValue(), writeDefaults) + new YAMLNode((Map) valueMap, writeDefaults) ); } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java index 75b79c3de9..6f8cb71e23 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java @@ -405,15 +405,10 @@ public void enableStandardMode() { public void setReorderMode(ReorderMode reorderMode) { //FAWE start - we don't do physics so we don't need this switch (reorderMode) { - case MULTI_STAGE: - enableQueue(); - break; - case NONE: // Functionally the same, since FAWE doesn't perform physics - case FAST: - disableQueue(); - break; - default: - throw new UnsupportedOperationException("Not implemented: " + reorderMode); + case MULTI_STAGE -> enableQueue(); + // Functionally the same, since FAWE doesn't perform physics + case NONE, FAST -> disableQueue(); + default -> throw new UnsupportedOperationException("Not implemented: " + reorderMode); } //FAWE end } @@ -588,8 +583,8 @@ public void setSourceMask(Mask mask) { ExtentTraverser maskingExtent = new ExtentTraverser<>(getExtent()).find(SourceMaskExtent.class); if (maskingExtent != null && maskingExtent.get() != null) { Mask oldMask = maskingExtent.get().getMask(); - if (oldMask instanceof ResettableMask) { - ((ResettableMask) oldMask).reset(); + if (oldMask instanceof ResettableMask resettableMask) { + resettableMask.reset(); } maskingExtent.get().setMask(mask); } else if (mask != Masks.alwaysTrue()) { @@ -602,8 +597,8 @@ public void addSourceMask(Mask mask) { checkNotNull(mask); Mask existing = getSourceMask(); if (existing != null) { - if (existing instanceof MaskIntersection) { - Collection masks = new HashSet<>(((MaskIntersection) existing).getMasks()); + if (existing instanceof MaskIntersection maskIntersection) { + Collection masks = new HashSet<>(maskIntersection.getMasks()); masks.add(mask); mask = new MaskIntersection(masks); } else { @@ -639,8 +634,8 @@ public void setMask(@Nullable Mask mask) { } if (maskingExtent != null) { Mask oldMask = maskingExtent.getMask(); - if (oldMask instanceof ResettableMask) { - ((ResettableMask) oldMask).reset(); + if (oldMask instanceof ResettableMask resettableMask) { + resettableMask.reset(); } maskingExtent.setMask(mask); } else if (mask != Masks.alwaysTrue()) { @@ -788,8 +783,8 @@ public Map popMissingBlocks() { ChangeSet changeSet = getChangeSet(); - if (changeSet instanceof BlockBagChangeSet) { - missingBlocks = ((BlockBagChangeSet) changeSet).popMissing(); + if (changeSet instanceof BlockBagChangeSet blockBagChangeSet) { + missingBlocks = blockBagChangeSet.popMissing(); } else { ExtentTraverser find = new ExtentTraverser<>(getExtent()).find(BlockBagExtent.class); if (find != null && find.get() != null) { @@ -997,17 +992,13 @@ public > boolean setBlock(BlockVector3 position, B } this.changes++; - switch (stage) { - case BEFORE_HISTORY: - return this.getExtent().setBlock(position, block); - case BEFORE_CHANGE: - return bypassHistory.setBlock(position, block); - case BEFORE_REORDER: - return bypassAll.setBlock(position, block); - } + return switch (stage) { + case BEFORE_HISTORY -> this.getExtent().setBlock(position, block); + case BEFORE_CHANGE -> bypassHistory.setBlock(position, block); + case BEFORE_REORDER -> bypassAll.setBlock(position, block); + }; //FAWE end - throw new RuntimeException("New enum entry added that is unhandled here"); } //FAWE start - see former comment @@ -2805,7 +2796,7 @@ public int thaw(BlockVector3 position, double radius, int height) BlockState air = BlockTypes.AIR.getDefaultState(); BlockState water = BlockTypes.WATER.getDefaultState(); - int centerY = Math.max(minY, Math.min(maxY, oy)); + int centerY = Math.clamp(oy, minY, maxY); int minY = Math.max(this.minY, centerY - height); int maxY = Math.min(this.maxY, centerY + height); @@ -2949,7 +2940,7 @@ public int green(BlockVector3 position, double radius, int height, boolean onlyN final BlockState grass = BlockTypes.GRASS_BLOCK.getDefaultState(); - final int centerY = Math.max(minY, Math.min(maxY, oy)); + final int centerY = Math.clamp(oy, minY, maxY); final int minY = Math.max(this.minY, centerY - height); final int maxY = Math.min(this.maxY, centerY + height); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java b/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java index 51228a02ac..bdebca0811 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java @@ -113,8 +113,8 @@ */ public class LocalSession implements TextureHolder { - public static int MAX_HISTORY_SIZE = 15; private static final int CUI_VERSION_UNINITIALIZED = -1; + public static int MAX_HISTORY_SIZE = 15; // Non-session related fields private transient LocalConfiguration config; @@ -304,7 +304,7 @@ private void loadHistoryNegativeIndex(UUID uuid, World world) { ); if (file.exists()) { try (FaweInputStream is = new FaweInputStream(new FileInputStream(file))) { - historyNegativeIndex = Math.min(Math.max(0, is.readInt()), history.size()); + historyNegativeIndex = Math.clamp(is.readInt(), 0, history.size()); } catch (IOException e) { e.printStackTrace(); } @@ -469,8 +469,7 @@ public void remember(EditSession editSession) { } private ChangeSet getChangeSet(Object o) { - if (o instanceof ChangeSet) { - ChangeSet cs = (ChangeSet) o; + if (o instanceof ChangeSet cs) { try { cs.close(); } catch (IOException e) { @@ -479,17 +478,17 @@ private ChangeSet getChangeSet(Object o) { } return cs; } - if (o instanceof Integer) { + if (o instanceof Integer integer) { File folder = MainUtil.getFile( Fawe.platform().getDirectory(), Settings.settings().PATHS.HISTORY + File.separator + currentWorld.getName() + File.separator + uuid ); - File specific = new File(folder, o.toString()); + File specific = new File(folder, integer.toString()); if (specific.isDirectory()) { // TODO NOT IMPLEMENTED // return new AnvilHistory(currentWorld.getName(), specific); } else { - return new DiskStorageHistory(currentWorld, this.uuid, (Integer) o); + return new DiskStorageHistory(currentWorld, this.uuid, integer); } } return null; @@ -513,8 +512,8 @@ public void remember(Identifiable player, World world, ChangeSet changeSet, Fawe Object item = iter.next(); if (++i > cutoffIndex) { ChangeSet oldChangeSet; - if (item instanceof ChangeSet) { - oldChangeSet = (ChangeSet) item; + if (item instanceof ChangeSet set) { + oldChangeSet = set; } else { oldChangeSet = getChangeSet(item); } @@ -574,8 +573,8 @@ public void remember(EditSession editSession, boolean append, int limitMb) { Object item = iter.next(); if (++i > cutoffIndex) { ChangeSet oldChangeSet; - if (item instanceof ChangeSet) { - oldChangeSet = (ChangeSet) item; + if (item instanceof ChangeSet set) { + oldChangeSet = set; } else { oldChangeSet = getChangeSet(item); } @@ -658,7 +657,7 @@ public EditSession undo(@Nullable BlockBag newBlockBag, Actor actor) { } /** - * Performs a redo + * Performs a redo. * * @param newBlockBag a new block bag * @param actor the actor @@ -1581,8 +1580,7 @@ public void dispatchCUISelection(Actor actor) { return; } - if (selector instanceof CUIRegion) { - CUIRegion tempSel = (CUIRegion) selector; + if (selector instanceof CUIRegion tempSel) { if (tempSel.getProtocolVersion() > cuiVersion) { actor.dispatchCUIEvent(new SelectionShapeEvent(tempSel.getLegacyTypeID())); @@ -1611,8 +1609,7 @@ public void describeCUI(Actor actor) { return; } - if (selector instanceof CUIRegion) { - CUIRegion tempSel = (CUIRegion) selector; + if (selector instanceof CUIRegion tempSel) { if (tempSel.getProtocolVersion() > cuiVersion) { tempSel.describeLegacyCUI(this, actor); @@ -1930,7 +1927,7 @@ public String getNavWandItem() { //FAWE start /** - * Get the preferred wand item for this user, or {@code null} to use the default + * Get if the preferred wand item for this user, or {@code null} to use the default * * @return item id of wand item, or {@code null} * @since 2.11.0 diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEdit.java b/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEdit.java index 0347bdd1ca..9e46a6361b 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEdit.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEdit.java @@ -659,33 +659,20 @@ private Direction getPlayerDirection(@Nullable Player player, String dirStr) thr if (byName != null) { return byName; } - switch (dirStr) { - case "m": - case "me": - case "f": - case "forward": - return getDirectionRelative(player, 0); - - case "b": - case "back": + return switch (dirStr) { + case "m", "me", "f", "forward" -> getDirectionRelative(player, 0); + case "b", "back" -> { Direction dir = getDirectionRelative(player, 180); if (dir.isUpright()) { // If this is an upright direction, flip it. dir = dir == Direction.UP ? Direction.DOWN : Direction.UP; } - return dir; - - case "l": - case "left": - return getDirectionRelative(player, -90); - - case "r": - case "right": - return getDirectionRelative(player, 90); - - default: - throw new UnknownDirectionException(dirStr); - } + yield dir; + } + case "l", "left" -> getDirectionRelative(player, -90); + case "r", "right" -> getDirectionRelative(player, 90); + default -> throw new UnknownDirectionException(dirStr); + }; } private Direction getDirectionRelative(Player player, int yawOffset) throws UnknownDirectionException { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java index 56c4a4e040..257e2fa836 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java @@ -129,8 +129,8 @@ public void biomeInfo( String messageKey; if (useLineOfSight) { - if (actor instanceof Player) { - Location blockPosition = ((Player) actor).getBlockTrace(300); + if (actor instanceof Player player) { + Location blockPosition = player.getBlockTrace(300); if (blockPosition == null) { actor.print(Caption.of("worldedit.raytrace.noblock")); return; @@ -146,8 +146,8 @@ public void biomeInfo( } } else if (usePosition) { - if (actor instanceof Locatable) { - BiomeType biome = world.getBiome(((Locatable) actor).getLocation().toVector().toBlockPoint()); + if (actor instanceof Locatable locatable) { + BiomeType biome = world.getBiome(locatable.getLocation().toVector().toBlockPoint()); biomes.add(biome); messageKey = "worldedit.biomeinfo.position"; @@ -193,8 +193,8 @@ public void setBiome( Mask mask = editSession.getMask(); if (atPosition) { - if (actor instanceof Locatable) { - final BlockVector3 pos = ((Locatable) actor).getLocation().toVector().toBlockPoint(); + if (actor instanceof Locatable locatable) { + final BlockVector3 pos = locatable.getLocation().toVector().toBlockPoint(); region = new CuboidRegion(pos, pos); } else { actor.print(Caption.of("worldedit.setbiome.not-locatable")); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java index fd5a95b0ed..dbed0ec66b 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java @@ -320,10 +320,11 @@ private void createCopy( Operations.completeLegacy(copy); } catch (Exception e) { DiskOptimizedClipboard doc; - if (clipboard instanceof DiskOptimizedClipboard) { - doc = (DiskOptimizedClipboard) clipboard; - } else if (clipboard instanceof BlockArrayClipboard && ((BlockArrayClipboard) clipboard).getParent() instanceof DiskOptimizedClipboard) { - doc = (DiskOptimizedClipboard) ((BlockArrayClipboard) clipboard).getParent(); + if (clipboard instanceof final DiskOptimizedClipboard diskOptimizedClipboard) { + doc = diskOptimizedClipboard; + } else if (clipboard instanceof BlockArrayClipboard blockArrayClipboard + && blockArrayClipboard.getParent() instanceof DiskOptimizedClipboard parentDoc) { + doc = parentDoc; } else { throw e; } @@ -360,13 +361,11 @@ public void download( ClipboardHolder holder = session.getClipboard(); URL url; - if (holder instanceof MultiClipboardHolder) { - MultiClipboardHolder multi = (MultiClipboardHolder) holder; + if (holder instanceof MultiClipboardHolder multi) { Set files = new HashSet<>(); Set invalid = new HashSet<>(); for (ClipboardHolder cur : multi.getHolders()) { - if (cur instanceof URIClipboardHolder) { - URIClipboardHolder uriHolder = (URIClipboardHolder) cur; + if (cur instanceof URIClipboardHolder uriHolder) { URI uri = uriHolder.getUri(); File file = new File(uri.getPath()); if (file.exists() && file.isFile()) { @@ -599,8 +598,8 @@ public void paste( //FAWE start private void checkPaste(Actor player, EditSession editSession, BlockVector3 to, ClipboardHolder holder, Clipboard clipboard) { URI uri = null; - if (holder instanceof URIClipboardHolder) { - uri = ((URIClipboardHolder) holder).getURI(clipboard); + if (holder instanceof URIClipboardHolder uriHolder) { + uri = uriHolder.getURI(clipboard); } PasteEvent event = new PasteEvent(player, clipboard, uri, editSession, to); WorldEdit.getInstance().getEventBus().post(event); @@ -669,10 +668,11 @@ public void clearClipboard(Actor actor, LocalSession session) throws WorldEditEx } for (Clipboard clipboard : holder.getClipboards()) { DiskOptimizedClipboard doc; - if (clipboard instanceof DiskOptimizedClipboard) { - doc = (DiskOptimizedClipboard) clipboard; - } else if (clipboard instanceof BlockArrayClipboard && ((BlockArrayClipboard) clipboard).getParent() instanceof DiskOptimizedClipboard) { - doc = (DiskOptimizedClipboard) ((BlockArrayClipboard) clipboard).getParent(); + if (clipboard instanceof DiskOptimizedClipboard diskOptimizedClipboard) { + doc = diskOptimizedClipboard; + } else if (clipboard instanceof BlockArrayClipboard blockArrayClipboard + && blockArrayClipboard.getParent() instanceof DiskOptimizedClipboard parentDoc) { + doc = parentDoc; } else { continue; } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java index d949859837..2d119899f4 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java @@ -189,8 +189,8 @@ public int cyl( BlockVector3 pos = session.getPlacementPosition(actor); int affected = editSession.makeCylinder(pos, pattern, radiusX, radiusZ, height, !hollow); - if (actor instanceof Player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { - ((Player) actor).findFreePosition(); + if (actor instanceof Player player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { + player.findFreePosition(); } actor.print(Caption.of("worldedit.cyl.created", TextComponent.of(affected))); return affected; @@ -236,8 +236,8 @@ public int cone(Actor actor, LocalSession session, EditSession editSession, BlockVector3 pos = session.getPlacementPosition(actor); int affected = editSession.makeCone(pos, pattern, radiusX, radiusZ, height, !hollow, thickness); - if (actor instanceof Player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { - ((Player) actor).findFreePosition(); + if (actor instanceof Player player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { + player.findFreePosition(); } actor.printInfo(Caption.of("worldedit.cone.created", TextComponent.of(affected))); return affected; @@ -307,8 +307,8 @@ public int sphere( } int affected = editSession.makeSphere(pos, pattern, radiusX, radiusY, radiusZ, !hollow); - if (actor instanceof Player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { - ((Player) actor).findFreePosition(); + if (actor instanceof Player player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { + player.findFreePosition(); } actor.print(Caption.of("worldedit.sphere.created", TextComponent.of(affected))); return affected; @@ -444,8 +444,8 @@ public int pyramid( worldEdit.checkMaxRadius(size, actor); BlockVector3 pos = session.getPlacementPosition(actor); int affected = editSession.makePyramid(pos, pattern, size, !hollow); - if (actor instanceof Player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { - ((Player) actor).findFreePosition(); + if (actor instanceof Player player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { + player.findFreePosition(); } actor.print(Caption.of("worldedit.pyramid.created", TextComponent.of(affected))); return affected; @@ -523,8 +523,8 @@ public int generate( hollow, session.getTimeout() ); - if (actor instanceof Player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { - ((Player) actor).findFreePosition(); + if (actor instanceof Player player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { + player.findFreePosition(); } actor.print(Caption.of("worldedit.generate.created", TextComponent.of(affected))); return affected; @@ -815,8 +815,8 @@ public int blob( radius.divide(max), sphericity / 100 ); - if (actor instanceof Player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { - ((Player) actor).findFreePosition(); + if (actor instanceof Player player && Settings.settings().GENERAL.UNSTUCK_ON_GENERATE) { + player.findFreePosition(); } actor.print(Caption.of("worldedit.blob.created", TextComponent.of(affected))); return affected; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java index 8dba6fe0ce..49c42cd59e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java @@ -791,15 +791,15 @@ public void select( final RegionSelector newSelector; switch (selector) { - case CUBOID: + case CUBOID -> { newSelector = new CuboidRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.cuboid.message")); - break; - case EXTEND: + } + case EXTEND -> { newSelector = new ExtendingCuboidRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.extend.message")); - break; - case POLY: { + } + case POLY -> { newSelector = new Polygonal2DRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.poly.message")); Optional limit = ActorSelectorLimits.forActor(actor).getPolygonVertexLimit(); @@ -807,23 +807,20 @@ public void select( "worldedit.select.poly.limit-message", TextComponent.of(integer) ))); - break; } - case ELLIPSOID: + case ELLIPSOID -> { newSelector = new EllipsoidRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.ellipsoid.message")); - break; - case SPHERE: + } + case SPHERE -> { newSelector = new SphereRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.sphere.message")); - break; - case CYL: + } + case CYL -> { newSelector = new CylinderRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.cyl.message")); - break; - case CONVEX: - case HULL: - case POLYHEDRON: { + } + case CONVEX, HULL, POLYHEDRON -> { newSelector = new ConvexPolyhedralRegionSelector(oldSelector); actor.print(Caption.of("worldedit.select.convex.message")); Optional limit = ActorSelectorLimits.forActor(actor).getPolyhedronVertexLimit(); @@ -831,26 +828,24 @@ public void select( "worldedit.select.convex.limit-message", TextComponent.of(integer) ))); - break; } + //FAWE start - case POLYHEDRAL: + case POLYHEDRAL -> { newSelector = new PolyhedralRegionSelector(world); actor.print(Caption.of("fawe.selection.sel.convex.polyhedral")); Optional limit = ActorSelectorLimits.forActor(actor).getPolyhedronVertexLimit(); limit.ifPresent(integer -> actor.print(Caption.of("fawe.selection.sel.max", integer))); actor.print(Caption.of("fawe.selection.sel.list")); - break; - case FUZZY: - case MAGIC: + } + case FUZZY, MAGIC -> { Mask maskOpt = new IdMask(world); newSelector = new FuzzyRegionSelector(actor, world, maskOpt); actor.print(Caption.of("fawe.selection.sel.fuzzy")); actor.print(Caption.of("fawe.selection.sel.list")); - break; + } //FAWE end - case LIST: - default: + default -> { CommandListBox box = new CommandListBox("Selection modes", null, null); box.setHidingHelp(true); TextComponentProducer contents = box.getContents(); @@ -872,6 +867,7 @@ public void select( actor.print(box.create(1)); return; + } } if (setDefaultSelector) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java index fff5832cc8..5ff360da31 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java @@ -48,16 +48,10 @@ public static void register(CommandManager commandManager) { new Chunk3dVectorConverter<>( intConverter, Range.closed(2, 3), - cmps -> { - switch (cmps.size()) { - case 2: - return BlockVector3.at(cmps.get(0), 0, cmps.get(1)); - case 3: - return BlockVector3.at(cmps.get(0), cmps.get(1), cmps.get(2)); - default: - break; - } - throw new AssertionError("Expected 2 or 3 components"); + cmps -> switch (cmps.size()) { + case 2 -> BlockVector3.at(cmps.get(0), 0, cmps.get(1)); + case 3 -> BlockVector3.at(cmps.get(0), cmps.get(1), cmps.get(2)); + default -> throw new AssertionError("Expected 2 or 3 components"); }, "block vector in the form x,z or x,y,z" ) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/FactoryConverter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/FactoryConverter.java index 3f15cdc757..962ac6b444 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/FactoryConverter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/FactoryConverter.java @@ -121,12 +121,12 @@ private ParserContext createContext(InjectedValueAccess context) { ParserContext parserContext = new ParserContext(); parserContext.setActor(actor); - if (actor instanceof Locatable) { - Extent extent = ((Locatable) actor).getExtent(); - if (extent instanceof World) { - parserContext.setWorld((World) extent); + if (actor instanceof Locatable locatable) { + Extent extent = locatable.getExtent(); + if (extent instanceof World world) { + parserContext.setWorld(world); } - parserContext.setExtent(new SupplyingExtent(((Locatable) actor)::getExtent)); + parserContext.setExtent(new SupplyingExtent(locatable::getExtent)); } else if (session.hasWorldOverride()) { parserContext.setWorld(session.getWorldOverride()); parserContext.setExtent(new SupplyingExtent(session::getWorldOverride)); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/BrushTool.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/BrushTool.java index 6021102a24..47e9569595 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/BrushTool.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/BrushTool.java @@ -210,8 +210,8 @@ public Mask getSourceMask() { @Override public boolean reset() { Brush br = getBrush(); - if (br instanceof ResettableTool) { - return ((ResettableTool) br).reset(); + if (br instanceof ResettableTool resettableTool) { + return resettableTool.reset(); } return false; } @@ -372,18 +372,18 @@ public boolean actPrimary( public BlockVector3 getPosition(EditSession editSession, Player player) { Location loc = player.getLocation(); switch (targetMode) { - case TARGET_BLOCK_RANGE: + case TARGET_BLOCK_RANGE, TARGET_FACE_RANGE -> { return offset(trace(editSession, player, getRange(), true), loc).toBlockPoint(); - case FORWARD_POINT_PITCH: { - int d = 0; + } + case FORWARD_POINT_PITCH -> { float pitch = loc.getPitch(); pitch = 23 - (pitch / 4); - d += (int) (Math.sin(Math.toRadians(pitch)) * 50); + int d = (int) (Math.sin(Math.toRadians(pitch)) * 50); final Vector3 vector = loc.getDirection().withY(0).normalize().multiply(d) .add(loc.x(), loc.y(), loc.z()); return offset(vector, loc).toBlockPoint(); } - case TARGET_POINT_HEIGHT: { + case TARGET_POINT_HEIGHT -> { final int height = loc.getBlockY(); final int x = loc.getBlockX(); final int z = loc.getBlockZ(); @@ -397,10 +397,9 @@ public BlockVector3 getPosition(EditSession editSession, Player player) { final int distance = (height - y) + 8; return offset(trace(editSession, player, distance, true), loc).toBlockPoint(); } - case TARGET_FACE_RANGE: - return offset(trace(editSession, player, getRange(), true), loc).toBlockPoint(); - default: + default -> { return null; + } } } @@ -420,14 +419,9 @@ private Vector3 trace(EditSession editSession, Player player, int range, boolean public boolean act(BrushAction action, Player player, LocalSession session) { switch (action) { - case PRIMARY: - setContext(primary); - break; - case SECONDARY: - setContext(secondary); - break; - default: - throw new IllegalStateException("Unexpected value: " + action); + case PRIMARY -> setContext(primary); + case SECONDARY -> setContext(secondary); + default -> throw new IllegalStateException("Unexpected value: " + action); } BrushSettings current = getContext(); Brush brush = current.getBrush(); @@ -457,8 +451,8 @@ public boolean act(BrushAction action, Player player, LocalSession session) { if (existingMask == null) { editSession.setMask(mask); - } else if (existingMask instanceof MaskIntersection) { - ((MaskIntersection) existingMask).add(mask); + } else if (existingMask instanceof MaskIntersection maskIntersection) { + maskIntersection.add(mask); } else { MaskIntersection newMask = new MaskIntersection(existingMask); newMask.add(mask); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/SuggestionHelper.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/SuggestionHelper.java index fc24bba709..94d109a274 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/SuggestionHelper.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/SuggestionHelper.java @@ -95,17 +95,15 @@ public static Stream getBlockPropertySuggestions(String blockTypeString, final List> matchingProps = propertyMap.entrySet().stream() .filter(p -> !matchedProperties.contains(p.getKey()) && p.getKey().startsWith(matchProp)) .map(Map.Entry::getValue).collect(Collectors.toList()); - switch (matchingProps.size()) { - case 0: - return propertyMap.keySet().stream().filter(p -> !matchedProperties.contains(p)).map(prop -> - lastValidInput + prop + "="); - case 1: - return matchingProps.get(0).getValues().stream().map(val -> - lastValidInput + matchingProps.get(0).getName() + "=" - + val.toString().toLowerCase(Locale.ROOT)); - default: - return matchingProps.stream().map(p -> lastValidInput + p.getName() + "="); - } + return switch (matchingProps.size()) { + case 0 -> propertyMap.keySet().stream().filter(p -> !matchedProperties.contains(p)).map(prop -> + lastValidInput + prop + "="); + case 1 -> matchingProps.getFirst().getValues().stream().map(val -> + lastValidInput + matchingProps.getFirst().getName() + "=" + + val.toString().toLowerCase(Locale.ROOT) + ); + default -> matchingProps.stream().map(p -> lastValidInput + p.getName() + "="); + }; } else { Property prop = propertyMap.get(matchProp); if (prop == null) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/MaskFactory.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/MaskFactory.java index dce3e1c4f6..a194a35a50 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/MaskFactory.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/MaskFactory.java @@ -142,7 +142,7 @@ public Mask parseFromInput(String input, ParserContext context) throws InputPars protected Mask getParsed(final String input, final List masks) { return switch (masks.size()) { case 0 -> throw new NoMatchException(Caption.of("worldedit.error.no-match", TextComponent.of(input))); - case 1 -> masks.get(0).optimize(); + case 1 -> masks.getFirst().optimize(); default -> new MaskIntersection(masks).optimize(); }; } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/PatternFactory.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/PatternFactory.java index 242d1d7bce..bc3ecd9dca 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/PatternFactory.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/PatternFactory.java @@ -142,16 +142,17 @@ public Pattern parseFromInput(String input, ParserContext context) throws InputP @Override protected Pattern getParsed(final String input, final List patterns) { switch (patterns.size()) { - case 0: - throw new NoMatchException(Caption.of("worldedit.error.no-match", TextComponent.of(input))); - case 1: - return patterns.get(0); - default: + case 0 -> throw new NoMatchException(Caption.of("worldedit.error.no-match", TextComponent.of(input))); + case 1 -> { + return patterns.getFirst(); + } + default -> { RandomPattern randomPattern = new RandomPattern(new TrueRandom()); for (Pattern pattern : patterns) { randomPattern.add(pattern, 1d); } return randomPattern; + } } } //FAWE end diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/DefaultBlockParser.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/DefaultBlockParser.java index f44dca54ff..4d7aad34e4 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/DefaultBlockParser.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/DefaultBlockParser.java @@ -84,9 +84,9 @@ public DefaultBlockParser(WorldEdit worldEdit) { } private static BaseBlock getBlockInHand(Actor actor, HandSide handSide) throws InputParseException { - if (actor instanceof Player) { + if (actor instanceof Player player) { try { - return ((Player) actor).getBlockInHand(handSide); + return player.getBlockInHand(handSide); } catch (NotABlockException e) { throw new InputParseException(e.getRichMessage()); } catch (WorldEditException e) { @@ -134,47 +134,25 @@ public BaseBlock parseFromInput(String input, ParserContext context) */ @SuppressWarnings("ConstantConditions") private String woolMapper(String string) { - switch (string.toLowerCase(Locale.ROOT)) { - case "white": - return BlockTypes.WHITE_WOOL.id(); - case "black": - return BlockTypes.BLACK_WOOL.id(); - case "blue": - return BlockTypes.BLUE_WOOL.id(); - case "brown": - return BlockTypes.BROWN_WOOL.id(); - case "cyan": - return BlockTypes.CYAN_WOOL.id(); - case "gray": - case "grey": - return BlockTypes.GRAY_WOOL.id(); - case "green": - return BlockTypes.GREEN_WOOL.id(); - case "light_blue": - case "lightblue": - return BlockTypes.LIGHT_BLUE_WOOL.id(); - case "light_gray": - case "light_grey": - case "lightgray": - case "lightgrey": - return BlockTypes.LIGHT_GRAY_WOOL.id(); - case "lime": - return BlockTypes.LIME_WOOL.id(); - case "magenta": - return BlockTypes.MAGENTA_WOOL.id(); - case "orange": - return BlockTypes.ORANGE_WOOL.id(); - case "pink": - return BlockTypes.PINK_WOOL.id(); - case "purple": - return BlockTypes.PURPLE_WOOL.id(); - case "yellow": - return BlockTypes.YELLOW_WOOL.id(); - case "red": - return BlockTypes.RED_WOOL.id(); - default: - return string; - } + return switch (string.toLowerCase(Locale.ROOT)) { + case "white" -> BlockTypes.WHITE_WOOL.id(); + case "black" -> BlockTypes.BLACK_WOOL.id(); + case "blue" -> BlockTypes.BLUE_WOOL.id(); + case "brown" -> BlockTypes.BROWN_WOOL.id(); + case "cyan" -> BlockTypes.CYAN_WOOL.id(); + case "gray", "grey" -> BlockTypes.GRAY_WOOL.id(); + case "green" -> BlockTypes.GREEN_WOOL.id(); + case "light_blue", "lightblue" -> BlockTypes.LIGHT_BLUE_WOOL.id(); + case "light_gray", "light_grey", "lightgray", "lightgrey" -> BlockTypes.LIGHT_GRAY_WOOL.id(); + case "lime" -> BlockTypes.LIME_WOOL.id(); + case "magenta" -> BlockTypes.MAGENTA_WOOL.id(); + case "orange" -> BlockTypes.ORANGE_WOOL.id(); + case "pink" -> BlockTypes.PINK_WOOL.id(); + case "purple" -> BlockTypes.PURPLE_WOOL.id(); + case "yellow" -> BlockTypes.YELLOW_WOOL.id(); + case "red" -> BlockTypes.RED_WOOL.id(); + default -> string; + }; } //FAWE start - make public @@ -470,15 +448,13 @@ private BaseBlock parseLogic(String input, ParserContext context) throws InputPa } else if (typeString.matches("slot[0-9]+")) { int slot = Integer.parseInt(typeString.substring(4)) - 1; Actor actor = context.requireActor(); - if (!(actor instanceof Player)) { + if (!(actor instanceof final Player player)) { throw new InputParseException(Caption.of("worldedit.command.player-only")); } - Player player = (Player) actor; BlockBag bag = player.getInventoryBlockBag(); - if (!(bag instanceof SlottableBlockBag)) { + if (!(bag instanceof final SlottableBlockBag slottable)) { throw new InputParseException(Caption.of("fawe.error.unsupported")); } - SlottableBlockBag slottable = (SlottableBlockBag) bag; BaseItem item = slottable.getItem(slot); if (!item.getType().hasBlockType()) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java index 377e32e35f..820e1d729a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java @@ -446,9 +446,9 @@ public void handleBlockInteract(BlockInteractEvent event) { } Tool tool = session.getTool(player); - if (tool instanceof DoubleActionBlockTool && tool.canUse(player)) { + if (tool instanceof DoubleActionBlockTool doubleActionBlockTool && tool.canUse(player)) { //FAWE start - run async - player.runAction(() -> reset((DoubleActionBlockTool) tool) + player.runAction(() -> reset(doubleActionBlockTool) .actSecondary(queryCapability(Capability.WORLD_EDITING), getConfiguration(), player, session, location, event.getFace() ), false, true); @@ -505,12 +505,13 @@ public void handlePlayerInput(PlayerInputEvent event) { try { switch (event.getInputType()) { - case PRIMARY: { + case PRIMARY -> { Tool tool = session.getTool(player); - if (tool instanceof DoubleActionTraceTool && tool.canUse(player)) { + if (tool instanceof DoubleActionTraceTool doubleActionTraceTool && tool.canUse(player)) { //FAWE start - run async - player.runAsyncIfFree(() -> reset((DoubleActionTraceTool) tool) - .actSecondary(queryCapability(Capability.WORLD_EDITING), + player.runAsyncIfFree(() -> reset(doubleActionTraceTool) + .actSecondary( + queryCapability(Capability.WORLD_EDITING), getConfiguration(), player, session )); //FAWE end @@ -518,23 +519,23 @@ public void handlePlayerInput(PlayerInputEvent event) { return; } - break; } - - case SECONDARY: { + case SECONDARY -> { Tool tool = session.getTool(player); - if (tool instanceof TraceTool && tool.canUse(player)) { + if (tool instanceof TraceTool traceTool && tool.canUse(player)) { //FAWE start - run async //todo this needs to be fixed so the event is canceled after actPrimary is used and returns true - player.runAction(() -> reset((TraceTool) tool).actPrimary(queryCapability(Capability.WORLD_EDITING), - getConfiguration(), player, session - ), false, true); + player.runAction( + () -> reset(traceTool).actPrimary( + queryCapability(Capability.WORLD_EDITING), + getConfiguration(), player, session + ), false, true + ); //FAWE end event.setCancelled(true); return; } - break; } } //FAWE start - add own message diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/AbstractDelegateExtent.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/AbstractDelegateExtent.java index 89c450a108..81d4ca6ada 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/AbstractDelegateExtent.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/AbstractDelegateExtent.java @@ -219,8 +219,8 @@ public void disableQueue() { } } catch (FaweException ignored) { } - if (extent instanceof AbstractDelegateExtent) { - Extent next = ((AbstractDelegateExtent) extent).getExtent(); + if (extent instanceof AbstractDelegateExtent delegateExtent) { + Extent next = delegateExtent.getExtent(); new ExtentTraverser(this).setNext(next); } else { LOGGER.error("Cannot disable queue"); @@ -395,15 +395,14 @@ public int getBrightness(int x, int y, int z) { } public void setChangeSet(AbstractChangeSet changeSet) { - if (extent instanceof HistoryExtent) { - HistoryExtent history = ((HistoryExtent) extent); + if (extent instanceof HistoryExtent history) { if (changeSet == null) { new ExtentTraverser(this).setNext(history.getExtent()); } else { history.setChangeSet(changeSet); } - } else if (extent instanceof AbstractDelegateExtent) { - ((AbstractDelegateExtent) extent).setChangeSet(changeSet); + } else if (extent instanceof AbstractDelegateExtent delegateExtent) { + delegateExtent.setChangeSet(changeSet); } else if (changeSet != null) { new ExtentTraverser<>(this).setNext(new HistoryExtent(extent, changeSet)); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/Extent.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/Extent.java index 6f1bb89794..fecb56584e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/Extent.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/Extent.java @@ -361,7 +361,7 @@ default int getNearestSurfaceTerrainBlock(int x, int z, int y, int minY, int max maxY = Math.min(maxY, getMaxY()); minY = Math.max(getMinY(), minY); - y = Math.max(minY, Math.min(maxY, y)); + y = Math.clamp(y, minY, maxY); int clearanceAbove = maxY - y; int clearanceBelow = y - minY; int clearance = Math.min(clearanceAbove, clearanceBelow); @@ -471,7 +471,7 @@ default int getNearestSurfaceTerrainBlock( maxY = Math.min(maxY, getMaxY()); minY = Math.max(getMinY(), minY); - y = Math.max(minY, Math.min(maxY, y)); + y = Math.clamp(y, minY, maxY); int clearanceAbove = maxY - y; int clearanceBelow = y - minY; int clearance = Math.min(clearanceAbove, clearanceBelow); @@ -1049,11 +1049,11 @@ default > int setBlocks(Region region, B block) th default int setBlocks(Region region, Pattern pattern) throws MaxChangedBlocksException { checkNotNull(region); checkNotNull(pattern); - if (pattern instanceof BlockPattern) { - return setBlocks(region, ((BlockPattern) pattern).getBlock()); + if (pattern instanceof BlockPattern blockPattern) { + return setBlocks(region, blockPattern.getBlock()); } - if (pattern instanceof BlockStateHolder) { - return setBlocks(region, (BlockStateHolder) pattern); + if (pattern instanceof BlockStateHolder blockStateHolder) { + return setBlocks(region, blockStateHolder); } int count = 0; for (BlockVector3 pos : region) { @@ -1135,7 +1135,7 @@ default int center(Region region, Pattern pattern) throws MaxChangedBlocksExcept Vector3 center = region.getCenter(); Region centerRegion = new CuboidRegion( - this instanceof World ? (World) this : null, // Causes clamping of Y range + this instanceof World world ? world : null, // Causes clamping of Y range BlockVector3.at(((int) center.x()), ((int) center.y()), ((int) center.z())), BlockVector3.at(MathUtils.roundHalfUp(center.x()), center.y(), MathUtils.roundHalfUp(center.z()) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java index 9ff666f799..0a559c3cd9 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java @@ -260,8 +260,7 @@ public List getEntities(Region region) { region.shift(BlockVector3.ZERO.subtract(offset)); return getParent().getEntities(region).stream().map(e -> { - if (e instanceof ClipboardEntity) { - ClipboardEntity ce = (ClipboardEntity) e; + if (e instanceof ClipboardEntity ce) { Location oldloc = ce.getLocation(); Location loc = new Location(oldloc.getExtent(), oldloc.x() + offset.x(), @@ -279,8 +278,7 @@ public List getEntities(Region region) { public List getEntities() { return getParent().getEntities().stream().map(e -> { - if (e instanceof ClipboardEntity) { - ClipboardEntity ce = (ClipboardEntity) e; + if (e instanceof ClipboardEntity ce) { Location oldloc = ce.getLocation(); Location loc = new Location(oldloc.getExtent(), oldloc.x() + offset.x(), diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/Clipboard.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/Clipboard.java index be702ae4d4..3e814f75af 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/Clipboard.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/Clipboard.java @@ -287,8 +287,8 @@ default EditSession paste( checkNotNull(world); checkNotNull(to); EditSession editSession; - if (world instanceof EditSession) { - editSession = (EditSession) world; + if (world instanceof EditSession session) { + editSession = session; } else { EditSessionBuilder builder = WorldEdit .getInstance() @@ -339,11 +339,11 @@ default void paste( Extent extent, BlockVector3 to, boolean pasteAir, @Nullable Transform transform ) { - if (extent instanceof World) { + if (extent instanceof World world) { EditSessionBuilder builder = WorldEdit .getInstance() .newEditSessionBuilder() - .world((World) extent) + .world(world) .checkMemory(false) .allowedRegionsEverywhere() .limitUnlimited() @@ -382,12 +382,12 @@ default void paste(Extent extent, BlockVector3 to, boolean pasteAir) { default void paste(Extent extent, BlockVector3 to, boolean pasteAir, boolean pasteEntities, boolean pasteBiomes) { boolean close = false; - if (extent instanceof World) { + if (extent instanceof World world) { close = true; EditSessionBuilder builder = WorldEdit .getInstance() .newEditSessionBuilder() - .world((World) extent) + .world(world) .checkMemory(false) .allowedRegionsEverywhere() .limitUnlimited() diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/io/MCEditSchematicReader.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/io/MCEditSchematicReader.java index 8e54249cdd..8efe960fc5 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/io/MCEditSchematicReader.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/io/MCEditSchematicReader.java @@ -275,155 +275,81 @@ public Clipboard read() throws IOException { } private String convertEntityId(String id) { - switch (id) { - case "AreaEffectCloud": - return "area_effect_cloud"; - case "ArmorStand": - return "armor_stand"; - case "CaveSpider": - return "cave_spider"; - case "MinecartChest": - return "chest_minecart"; - case "DragonFireball": - return "dragon_fireball"; - case "ThrownEgg": - return "egg"; - case "EnderDragon": - return "ender_dragon"; - case "ThrownEnderpearl": - return "ender_pearl"; - case "FallingSand": - return "falling_block"; - case "FireworksRocketEntity": - return "fireworks_rocket"; - case "MinecartFurnace": - return "furnace_minecart"; - case "MinecartHopper": - return "hopper_minecart"; - case "EntityHorse": - return "horse"; - case "ItemFrame": - return "item_frame"; - case "LeashKnot": - return "leash_knot"; - case "LightningBolt": - return "lightning_bolt"; - case "LavaSlime": - return "magma_cube"; - case "MinecartRideable": - return "minecart"; - case "MushroomCow": - return "mooshroom"; - case "Ozelot": - return "ocelot"; - case "PolarBear": - return "polar_bear"; - case "ThrownPotion": - return "potion"; - case "ShulkerBullet": - return "shulker_bullet"; - case "SmallFireball": - return "small_fireball"; - case "MinecartSpawner": - return "spawner_minecart"; - case "SpectralArrow": - return "spectral_arrow"; - case "PrimedTnt": - return "tnt"; - case "MinecartTNT": - return "tnt_minecart"; - case "VillagerGolem": - return "villager_golem"; - case "WitherBoss": - return "wither"; - case "WitherSkull": - return "wither_skull"; - case "PigZombie": - return "zombie_pigman"; - case "XPOrb": - case "xp_orb": - return "experience_orb"; - case "ThrownExpBottle": - case "xp_bottle": - return "experience_bottle"; - case "EyeOfEnderSignal": - case "eye_of_ender_signal": - return "eye_of_ender"; - case "EnderCrystal": - case "ender_crystal": - return "end_crystal"; - case "fireworks_rocket": - return "firework_rocket"; - case "MinecartCommandBlock": - case "commandblock_minecart": - return "command_block_minecart"; - case "snowman": - return "snow_golem"; - case "villager_golem": - return "iron_golem"; - case "evocation_fangs": - return "evoker_fangs"; - case "evocation_illager": - return "evoker"; - case "vindication_illager": - return "vindicator"; - case "illusion_illager": - return "illusioner"; - default: - return id; - } + return switch (id) { + case "AreaEffectCloud" -> "area_effect_cloud"; + case "ArmorStand" -> "armor_stand"; + case "CaveSpider" -> "cave_spider"; + case "MinecartChest" -> "chest_minecart"; + case "DragonFireball" -> "dragon_fireball"; + case "ThrownEgg" -> "egg"; + case "EnderDragon" -> "ender_dragon"; + case "ThrownEnderpearl" -> "ender_pearl"; + case "FallingSand" -> "falling_block"; + case "FireworksRocketEntity" -> "fireworks_rocket"; + case "MinecartFurnace" -> "furnace_minecart"; + case "MinecartHopper" -> "hopper_minecart"; + case "EntityHorse" -> "horse"; + case "ItemFrame" -> "item_frame"; + case "LeashKnot" -> "leash_knot"; + case "LightningBolt" -> "lightning_bolt"; + case "LavaSlime" -> "magma_cube"; + case "MinecartRideable" -> "minecart"; + case "MushroomCow" -> "mooshroom"; + case "Ozelot" -> "ocelot"; + case "PolarBear" -> "polar_bear"; + case "ThrownPotion" -> "potion"; + case "ShulkerBullet" -> "shulker_bullet"; + case "SmallFireball" -> "small_fireball"; + case "MinecartSpawner" -> "spawner_minecart"; + case "SpectralArrow" -> "spectral_arrow"; + case "PrimedTnt" -> "tnt"; + case "MinecartTNT" -> "tnt_minecart"; + case "VillagerGolem" -> "villager_golem"; + case "WitherBoss" -> "wither"; + case "WitherSkull" -> "wither_skull"; + case "PigZombie" -> "zombie_pigman"; + case "XPOrb", "xp_orb" -> "experience_orb"; + case "ThrownExpBottle", "xp_bottle" -> "experience_bottle"; + case "EyeOfEnderSignal", "eye_of_ender_signal" -> "eye_of_ender"; + case "EnderCrystal", "ender_crystal" -> "end_crystal"; + case "fireworks_rocket" -> "firework_rocket"; + case "MinecartCommandBlock", "commandblock_minecart" -> "command_block_minecart"; + case "snowman" -> "snow_golem"; + case "villager_golem" -> "iron_golem"; + case "evocation_fangs" -> "evoker_fangs"; + case "evocation_illager" -> "evoker"; + case "vindication_illager" -> "vindicator"; + case "illusion_illager" -> "illusioner"; + default -> id; + }; } private String convertBlockEntityId(String id) { - switch (id) { - case "Cauldron": - return "brewing_stand"; - case "Control": - return "command_block"; - case "DLDetector": - return "daylight_detector"; - case "Trap": - return "dispenser"; - case "EnchantTable": - return "enchanting_table"; - case "EndGateway": - return "end_gateway"; - case "AirPortal": - return "end_portal"; - case "EnderChest": - return "ender_chest"; - case "FlowerPot": - return "flower_pot"; - case "RecordPlayer": - return "jukebox"; - case "MobSpawner": - return "mob_spawner"; - case "Music": - case "noteblock": - return "note_block"; - case "Structure": - return "structure_block"; - case "Chest": - return "chest"; - case "Sign": - return "sign"; - case "Banner": - return "banner"; - case "Beacon": - return "beacon"; - case "Comparator": - return "comparator"; - case "Dropper": - return "dropper"; - case "Furnace": - return "furnace"; - case "Hopper": - return "hopper"; - case "Skull": - return "skull"; - default: - return id; - } + return switch (id) { + case "Cauldron" -> "brewing_stand"; + case "Control" -> "command_block"; + case "DLDetector" -> "daylight_detector"; + case "Trap" -> "dispenser"; + case "EnchantTable" -> "enchanting_table"; + case "EndGateway" -> "end_gateway"; + case "AirPortal" -> "end_portal"; + case "EnderChest" -> "ender_chest"; + case "FlowerPot" -> "flower_pot"; + case "RecordPlayer" -> "jukebox"; + case "MobSpawner" -> "mob_spawner"; + case "Music", "noteblock" -> "note_block"; + case "Structure" -> "structure_block"; + case "Chest" -> "chest"; + case "Sign" -> "sign"; + case "Banner" -> "banner"; + case "Beacon" -> "beacon"; + case "Comparator" -> "comparator"; + case "Dropper" -> "dropper"; + case "Furnace" -> "furnace"; + case "Hopper" -> "hopper"; + case "Skull" -> "skull"; + default -> id; + }; } private BlockState getBlockState(int id, int data) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java index 8cde97c6b6..9c34d2f9a1 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java @@ -245,17 +245,11 @@ public > boolean setBlock(BlockVector3 location, B : BlockTypes.AIR.getDefaultState()).toBaseBlock(); switch (srcPriority) { - case FINAL: - stages.get(PlacementPriority.CLEAR_FINAL).put(location, replacement); - break; - case LATE: - stages.get(PlacementPriority.CLEAR_LATE).put(location, replacement); - break; - case LAST: - stages.get(PlacementPriority.CLEAR_LAST).put(location, replacement); - break; - default: - break; + case FINAL -> stages.get(PlacementPriority.CLEAR_FINAL).put(location, replacement); + case LATE -> stages.get(PlacementPriority.CLEAR_LATE).put(location, replacement); + case LAST -> stages.get(PlacementPriority.CLEAR_LAST).put(location, replacement); + default -> { + } } if (block.getBlockType().getMaterial().isAir()) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/transform/BlockTransformExtent.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/transform/BlockTransformExtent.java index 8c96a36cf8..66763f0be8 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/transform/BlockTransformExtent.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/transform/BlockTransformExtent.java @@ -169,20 +169,20 @@ private static long[] getDirections(AbstractProperty property) { List values = property.getValues(); PropertyKey key = property.getKey(); switch (key.getName().toLowerCase()) { - case "half": { + case "half" -> { return adapt(UP, DOWN); } - case "type": { + case "type" -> { return adapt(combine(UP), combine(DOWN), 0L); } - case "rotation": { + case "rotation" -> { List directions = new ArrayList<>(); for (Object value : values) { directions.add(Direction.fromRotationIndex((Integer) value).orElseThrow()); } return adapt(directions.toArray(new Direction[0])); } - case "axis": { + case "axis" -> { return switch (property.getValues().size()) { case 3 -> adapt(combine(EAST, WEST), combine(UP, DOWN), combine(SOUTH, NORTH)); case 2 -> adapt(combine(EAST, WEST), combine(SOUTH, NORTH)); @@ -192,26 +192,26 @@ private static long[] getDirections(AbstractProperty property) { } }; } - case "facing": { + case "facing" -> { List directions = new ArrayList<>(); for (Object value : values) { directions.add(Direction.valueOf(value.toString().toUpperCase(Locale.ROOT))); } return adapt(directions.toArray(new Direction[0])); } - case "face": { + case "face" -> { if (values.size() == 3) { return adapt(combine(UP), combine(NORTH, EAST, SOUTH, WEST), combine(DOWN)); } return null; } - case "hinge": { + case "hinge" -> { return adapt( combine(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST), combine(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) ); } - case "shape": { + case "shape" -> { if (values.contains("left")) { return adapt(combine(EAST, WEST), combine(NORTH, SOUTH)); } @@ -247,72 +247,37 @@ private static long[] getDirections(AbstractProperty property) { List directions = new ArrayList<>(); for (Object value : values) { switch (value.toString()) { - case "north_south": - directions.add(combine(NORTH, SOUTH)); - break; - case "east_west": - directions.add(combine(EAST, WEST)); - break; - case "ascending_east": - directions.add(combine(ASCENDING_EAST)); - break; - case "ascending_west": - directions.add(combine(ASCENDING_WEST)); - break; - case "ascending_north": - directions.add(combine(ASCENDING_NORTH)); - break; - case "ascending_south": - directions.add(combine(ASCENDING_SOUTH)); - break; - case "south_east": - directions.add(combine(SOUTHEAST)); - break; - case "south_west": - directions.add(combine(SOUTHWEST)); - break; - case "north_west": - directions.add(combine(NORTHWEST)); - break; - case "north_east": - directions.add(combine(NORTHEAST)); - break; - default: + case "north_south" -> directions.add(combine(NORTH, SOUTH)); + case "east_west" -> directions.add(combine(EAST, WEST)); + case "ascending_east" -> directions.add(combine(ASCENDING_EAST)); + case "ascending_west" -> directions.add(combine(ASCENDING_WEST)); + case "ascending_north" -> directions.add(combine(ASCENDING_NORTH)); + case "ascending_south" -> directions.add(combine(ASCENDING_SOUTH)); + case "south_east" -> directions.add(combine(SOUTHEAST)); + case "south_west" -> directions.add(combine(SOUTHWEST)); + case "north_west" -> directions.add(combine(NORTHWEST)); + case "north_east" -> directions.add(combine(NORTHEAST)); + default -> { LOGGER.warn("Unknown direction {}", value); directions.add(0L); + } } } return adapt(directions.toArray(new Long[0])); } } - case "orientiation": { + case "orientation" -> { List directions = new ArrayList<>(); for (Object value : values) { switch (value.toString()) { - case "ascending_east": - directions.add(combine(ASCENDING_EAST)); - break; - case "ascending_west": - directions.add(combine(ASCENDING_WEST)); - break; - case "ascending_north": - directions.add(combine(ASCENDING_NORTH)); - break; - case "ascending_south": - directions.add(combine(ASCENDING_SOUTH)); - break; - case "descending_east": - directions.add(combine(DESCENDING_EAST)); - break; - case "descending_west": - directions.add(combine(DESCENDING_WEST)); - break; - case "descending_north": - directions.add(combine(DESCENDING_NORTH)); - break; - case "descending_south": - directions.add(combine(DESCENDING_SOUTH)); - break; + case "ascending_east" -> directions.add(combine(ASCENDING_EAST)); + case "ascending_west" -> directions.add(combine(ASCENDING_WEST)); + case "ascending_north" -> directions.add(combine(ASCENDING_NORTH)); + case "ascending_south" -> directions.add(combine(ASCENDING_SOUTH)); + case "descending_east" -> directions.add(combine(DESCENDING_EAST)); + case "descending_west" -> directions.add(combine(DESCENDING_WEST)); + case "descending_north" -> directions.add(combine(DESCENDING_NORTH)); + case "descending_south" -> directions.add(combine(DESCENDING_SOUTH)); } } return adapt(directions.toArray(new Long[0])); @@ -353,8 +318,8 @@ private static Integer getNewStateIndex(Transform transform, long[] directions, Vector3 newVector = transform.apply(oldVector).subtract(transform.apply(Vector3.ZERO)).normalize(); boolean flip = false; - if (transform instanceof AffineTransform) { - flip = ((AffineTransform) transform).isScaled(oldVector); + if (transform instanceof AffineTransform affineTransform) { + flip = affineTransform.isScaled(oldVector); } // If we're flipping, it is possible for the old and new vectors to be equal diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/block/Naturalizer.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/block/Naturalizer.java index 7b990dc296..05860551bf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/block/Naturalizer.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/block/Naturalizer.java @@ -67,16 +67,11 @@ public boolean isGround(BlockVector3 position) { } private BlockState getTargetBlock(int depth) { - switch (depth) { - case 0: - return BlockTypes.GRASS_BLOCK.getDefaultState(); - case 1: - case 2: - case 3: - return BlockTypes.DIRT.getDefaultState(); - default: - return BlockTypes.STONE.getDefaultState(); - } + return switch (depth) { + case 0 -> BlockTypes.GRASS_BLOCK.getDefaultState(); + case 1, 2, 3 -> BlockTypes.DIRT.getDefaultState(); + default -> BlockTypes.STONE.getDefaultState(); + }; } private boolean naturalize(BlockVector3 position, int depth) throws WorldEditException { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/factory/Deform.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/factory/Deform.java index 6dea78892c..76df5d78e0 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/factory/Deform.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/factory/Deform.java @@ -134,7 +134,7 @@ public Operation createFromContext(final EditContext context) { Region region = firstNonNull(context.getRegion(), this.region); switch (mode) { - case UNIT_CUBE: + case UNIT_CUBE -> { final Vector3 min = region.getMinimumPoint().toVector3(); final Vector3 max = region.getMaximumPoint().toVector3(); @@ -150,15 +150,15 @@ public Operation createFromContext(final EditContext context) { if (unit.z() == 0) { unit = unit.withZ(1.0); } - break; - case RAW_COORD: + } + case RAW_COORD -> { zero = Vector3.ZERO; unit = Vector3.ONE; - break; - case OFFSET: - default: + } + default -> { zero = offset; unit = Vector3.ONE; + } } LocalSession session = context.getSession(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/generator/GardenPatchGenerator.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/generator/GardenPatchGenerator.java index e72e2e5fe5..018b09facf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/generator/GardenPatchGenerator.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/generator/GardenPatchGenerator.java @@ -111,7 +111,7 @@ private void placeVine(BlockVector3 basePos, BlockVector3 pos) throws MaxChanged BlockState log = BlockTypes.OAK_LOG.getDefaultState(); switch (t) { - case 0: + case 0 -> { if (random.nextBoolean()) { placeVine(basePos, pos.add(1, 0, 0)); } @@ -121,9 +121,8 @@ private void placeVine(BlockVector3 basePos, BlockVector3 pos) throws MaxChanged } setBlockIfAir(editSession, p = pos.add(0, 0, -1), plant.applyBlock(p)); affected++; - break; - - case 1: + } + case 1 -> { if (random.nextBoolean()) { placeVine(basePos, pos.add(0, 0, 1)); } @@ -133,9 +132,8 @@ private void placeVine(BlockVector3 basePos, BlockVector3 pos) throws MaxChanged } setBlockIfAir(editSession, p = pos.add(1, 0, 1), plant.applyBlock(p)); affected++; - break; - - case 2: + } + case 2 -> { if (random.nextBoolean()) { placeVine(basePos, pos.add(0, 0, -1)); } @@ -145,9 +143,8 @@ private void placeVine(BlockVector3 basePos, BlockVector3 pos) throws MaxChanged } setBlockIfAir(editSession, p = pos.add(-1, 0, 1), plant.applyBlock(p)); affected++; - break; - - case 3: + } + case 3 -> { if (random.nextBoolean()) { placeVine(basePos, pos.add(-1, 0, 0)); } @@ -157,9 +154,8 @@ private void placeVine(BlockVector3 basePos, BlockVector3 pos) throws MaxChanged } setBlockIfAir(editSession, p = pos.add(-1, 0, -1), plant.applyBlock(p)); affected++; - break; - default: - break; + } + default -> throw new AssertionError("randInt(4) should always be 0-3, got " + t); } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java index 4b9b34594d..dba0d830ab 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java @@ -83,14 +83,11 @@ public static Mask of(Mask... masks) { } } } - switch (set.size()) { - case 0: - return Masks.alwaysTrue(); - case 1: - return set.iterator().next(); - default: - return new MaskIntersection(set).optimize(); - } + return switch (set.size()) { + case 0 -> Masks.alwaysTrue(); + case 1 -> set.iterator().next(); + default -> new MaskIntersection(set).optimize(); + }; } //FAWE end diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/ArrayListHistory.java b/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/ArrayListHistory.java index 1bad79fb90..e5f2f0ea15 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/ArrayListHistory.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/ArrayListHistory.java @@ -80,8 +80,7 @@ public int size() { public ChangeSetSummary summarize(Region region, boolean shallow) { SimpleChangeSetSummary summary = new SimpleChangeSetSummary(); for (Change change : changes) { - if (change instanceof BlockChange) { - BlockChange blockChange = (BlockChange) change; + if (change instanceof BlockChange blockChange) { BlockVector3 pos = blockChange.getPosition(); summary.add(pos.x(), pos.z(), blockChange.getCurrent().getOrdinal()); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/BlockOptimizedHistory.java b/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/BlockOptimizedHistory.java index f358ebfae8..c4f30c1368 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/BlockOptimizedHistory.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/history/changeset/BlockOptimizedHistory.java @@ -52,8 +52,7 @@ private static Change createChange(LocatedBlock block) { public void add(Change change) { checkNotNull(change); - if (change instanceof BlockChange) { - BlockChange blockChange = (BlockChange) change; + if (change instanceof BlockChange blockChange) { BlockVector3 position = blockChange.getPosition(); if (!previous.containsLocation(position)) { previous.add(position, blockChange.previous()); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/anvil/ChunkDeleter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/anvil/ChunkDeleter.java index 1c88a1f2d0..8512ad589b 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/anvil/ChunkDeleter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/anvil/ChunkDeleter.java @@ -225,26 +225,23 @@ private BiPredicate createPredicate(ChunkDeletionInf } catch (NumberFormatException e) { throw new IllegalStateException("Modification time predicate specified invalid time: " + deletionPredicate.value); } - switch (deletionPredicate.comparison) { - case "<": - return (r, p) -> { - try { - return r.getModificationTime(p) < time; - } catch (IOException e) { - return false; - } - }; - case ">": - return (r, p) -> { - try { - return r.getModificationTime(p) > time; - } catch (IOException e) { - return false; - } - }; - default: - throw new IllegalStateException("Unexpected comparison value: " + deletionPredicate.comparison); - } + return switch (deletionPredicate.comparison) { + case "<" -> (r, p) -> { + try { + return r.getModificationTime(p) < time; + } catch (IOException e) { + return false; + } + }; + case ">" -> (r, p) -> { + try { + return r.getModificationTime(p) > time; + } catch (IOException e) { + return false; + } + }; + default -> throw new IllegalStateException("Unexpected comparison value: " + deletionPredicate.comparison); + }; } throw new IllegalStateException("Unexpected property value: " + deletionPredicate.property); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandArgParser.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandArgParser.java index 2e85af059f..24163b3291 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandArgParser.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandArgParser.java @@ -64,17 +64,13 @@ public Stream parseArgs() { for (; index < input.size(); index++) { Substring nextPart = input.get(index); switch (state) { - case NORMAL: - handleNormal(nextPart); - break; - case QUOTE: - handleQuote(nextPart); - break; - default: - break; + case NORMAL -> handleNormal(nextPart); + case QUOTE -> handleQuote(nextPart); + default -> { + } } } - if (currentArg.size() > 0) { + if (!currentArg.isEmpty()) { finishArg(); // force finish "hanging" args } return args.build(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandLoggingHandler.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandLoggingHandler.java index 44766b76f7..0c428d2186 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandLoggingHandler.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/CommandLoggingHandler.java @@ -103,8 +103,7 @@ public void beforeCall(Method method, CommandParameters parameters) { parameters.getMetadata().getArguments().stream() ).collect(Collectors.joining(" "))); - if (logMode != null && actor instanceof Player) { - Player player = (Player) actor; + if (logMode != null && actor instanceof Player player) { Vector3 position = player.getLocation().toVector(); LocalSession session = worldEdit.getSessionManager().get(actor); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/cui/ServerCUIHandler.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/cui/ServerCUIHandler.java index cf05125496..e867dca6dc 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/cui/ServerCUIHandler.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/cui/ServerCUIHandler.java @@ -126,9 +126,9 @@ public static BaseBlock createStructureBlock(Player player) { double xz = Math.cos(Math.toRadians(rotY)); int x = (int) (location.x() - (-xz * Math.sin(Math.toRadians(rotX))) * 12); int z = (int) (location.z() - (xz * Math.cos(Math.toRadians(rotX))) * 12); - int y = Math.max( - player.getWorld().getMinY(), - Math.min(Math.min(player.getWorld().getMaxY(), posY + MAX_DISTANCE), posY + 3) + int y = Math.clamp( + posY + 3, + player.getWorld().getMinY(), Math.min(player.getWorld().getMaxY(), posY + MAX_DISTANCE) ); posX -= x; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/Functions.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/Functions.java index fa42c40a72..82591a6c7d 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/Functions.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/Functions.java @@ -56,8 +56,7 @@ static Functions create() { MethodHandles.Lookup lookup = MethodHandles.lookup(); try { DOUBLE_VALUE = lookup.findVirtual(Number.class, "doubleValue", - methodType(double.class) - ); + methodType(double.class)); } catch (NoSuchMethodException | IllegalAccessException e) { throw new IllegalStateException(e); } @@ -69,10 +68,8 @@ private static MethodHandle clean(MethodHandle handle) { handle = handle.asType(handle.type().wrap()); if (handle.type().returnType() != Double.class) { // Ensure that the handle returns a Double, even if originally a Number - checkState( - Number.class.isAssignableFrom(handle.type().returnType()), - "Function does not return a number" - ); + checkState(Number.class.isAssignableFrom(handle.type().returnType()), + "Function does not return a number"); handle = handle.asType(handle.type().changeReturnType(Number.class)); handle = filterReturnValue(handle, DOUBLE_VALUE); handle = handle.asType(handle.type().wrap()); @@ -80,47 +77,41 @@ private static MethodHandle clean(MethodHandle handle) { // return vararg-ity if (wasVarargs) { handle = handle.asVarargsCollector( - handle.type().parameterType(handle.type().parameterCount() - 1) + handle.type().parameterType(handle.type().parameterCount() - 1) ); } return handle; } private static void addMathHandles( - SetMultimap map, - MethodHandles.Lookup lookup + SetMultimap map, + MethodHandles.Lookup lookup ) throws NoSuchMethodException, IllegalAccessException { // double (double) functions for (String name : ImmutableList.of( - "sin", "cos", "tan", "asin", "acos", "atan", - "sinh", "cosh", "tanh", "sqrt", "cbrt", "abs", - "ceil", "floor", "rint", "exp", "log", "log10" + "sin", "cos", "tan", "asin", "acos", "atan", + "sinh", "cosh", "tanh", "sqrt", "cbrt", "abs", + "ceil", "floor", "rint", "exp", "log", "log10" )) { map.put(name, lookup.findStatic(Math.class, name, - methodType(double.class, double.class) - )); + methodType(double.class, double.class))); } // Alias ln -> log map.put("ln", lookup.findStatic(Math.class, "log", - methodType(double.class, double.class) - )); + methodType(double.class, double.class))); map.put("round", lookup.findStatic(Math.class, "round", - methodType(long.class, double.class) - )); + methodType(long.class, double.class))); map.put("atan2", lookup.findStatic(Math.class, "atan2", - methodType(double.class, double.class, double.class) - )); + methodType(double.class, double.class, double.class))); // Special cases: we accept varargs for these map.put("min", lookup.findStatic(Doubles.class, "min", - methodType(double.class, double[].class) - ) - .asVarargsCollector(double[].class)); + methodType(double.class, double[].class)) + .asVarargsCollector(double[].class)); map.put("max", lookup.findStatic(Doubles.class, "max", - methodType(double.class, double[].class) - ) - .asVarargsCollector(double[].class)); + methodType(double.class, double[].class)) + .asVarargsCollector(double[].class)); } private static void addStaticFunctionHandles( @@ -247,7 +238,7 @@ private Functions() { throw new IllegalStateException(e); } this.map = ImmutableSetMultimap.copyOf( - Multimaps.transformValues(map, Functions::clean) + Multimaps.transformValues(map, Functions::clean) ); } @@ -298,13 +289,13 @@ private double megabuf(double index, double value) { private double closest(double x, double y, double z, double index, double count, double stride) { return findClosest( - megaBuffer, x, y, z, (int) index, (int) count, (int) stride + megaBuffer, x, y, z, (int) index, (int) count, (int) stride ); } private static double gclosest(double x, double y, double z, double index, double count, double stride) { return findClosest( - globalMegaBuffer, x, y, z, (int) index, (int) count, (int) stride + globalMegaBuffer, x, y, z, (int) index, (int) count, (int) stride ); } @@ -348,10 +339,8 @@ private static double randint(double max) { private static final ThreadLocal localPerlin = ThreadLocal.withInitial(PerlinNoise::new); - private static double perlin( - double seed, double x, double y, double z, - double frequency, double octaves, double persistence - ) { + private static double perlin(double seed, double x, double y, double z, + double frequency, double octaves, double persistence) { PerlinNoise perlin = localPerlin.get(); try { perlin.setSeed((int) seed); @@ -379,10 +368,8 @@ private static double voronoi(double seed, double x, double y, double z, double private static final ThreadLocal localRidgedMulti = ThreadLocal.withInitial(RidgedMultiFractalNoise::new); - private static double ridgedmulti( - double seed, double x, double y, double z, - double frequency, double octaves - ) { + private static double ridgedmulti(double seed, double x, double y, double z, + double frequency, double octaves) { RidgedMultiFractalNoise ridgedMulti = localRidgedMulti.get(); try { ridgedMulti.setSeed((int) seed); @@ -398,13 +385,13 @@ private static double queryInternal(LocalSlot type, LocalSlot data, double typeI // Compare to input values and determine return value // -1 is a wildcard, always true double ret = ((type.value() == -1 || typeId == type.value()) - && (data.value() == -1 || dataValue == data.value())) ? 1.0 : 0.0; + && (data.value() == -1 || dataValue == data.value())) ? 1.0 : 0.0; - if (type instanceof Variable) { - ((Variable) type).setValue(typeId); + if (type instanceof Variable typeVar) { + typeVar.setValue(typeId); } - if (data instanceof Variable) { - ((Variable) data).setValue(dataValue); + if (data instanceof Variable dataVar) { + dataVar.setValue(dataValue); } return ret; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/invoke/CompilingVisitor.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/invoke/CompilingVisitor.java index 0c6e87810b..d4094ca2fc 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/invoke/CompilingVisitor.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/invoke/CompilingVisitor.java @@ -96,9 +96,9 @@ private Token extractToken(ParserRuleContext ctx) { List children = ctx.children.stream() .filter(TerminalNode.class::isInstance) .map(TerminalNode.class::cast) - .collect(Collectors.toList()); + .toList(); ExpressionHelper.check(children.size() == 1, ctx, "Expected exactly one token, got " + children.size()); - return children.get(0).getSymbol(); + return children.getFirst().getSymbol(); } private ExecNode evaluate(ParserRuleContext ctx) { @@ -247,8 +247,7 @@ public MethodHandle visitSwitchStatement(ExpressionParser.SwitchStatementContext ExpressionParser.SwitchLabelContext label = ctx.labels.get(i); ExpressionParser.StatementsContext body = ctx.bodies.get(i); ExecNode node = evaluate(body); - if (label instanceof ExpressionParser.CaseContext) { - ExpressionParser.CaseContext caseContext = (ExpressionParser.CaseContext) label; + if (label instanceof ExpressionParser.CaseContext caseContext) { double key = (double) ExpressionHandles.constantInvoke(evaluateForValue(caseContext.constant)); ExpressionHelper.check(!cases.containsKey(key), body, "Duplicate cases detected."); cases.put(key, node); @@ -303,15 +302,15 @@ public MethodHandle visitPreCrementExpr(ExpressionParser.PreCrementExprContext c @Override public MethodHandle visitPlusMinusExpr(ExpressionParser.PlusMinusExprContext ctx) { MethodHandle value = evaluateForValue(ctx.expr); - switch (ctx.op.getType()) { - case PLUS: - return value; - case MINUS: - return ExpressionHandles.call(data -> - -(double) ExpressionHandles.standardInvoke(value, data) - ); - } - throw ExpressionHelper.evalException(ctx, "Invalid text for plus/minus expr: " + ctx.op.getText()); + return switch (ctx.op.getType()) { + case PLUS -> value; + case MINUS -> ExpressionHandles.call(data -> + -(double) ExpressionHandles.standardInvoke(value, data) + ); + default -> throw ExpressionHelper.evalException( + ctx, "Invalid text for plus/minus expr: " + ctx.op.getText() + ); + }; } @Override @@ -403,74 +402,58 @@ public MethodHandle visitPowerExpr(ExpressionParser.PowerExprContext ctx) { @Override public MethodHandle visitMultiplicativeExpr(ExpressionParser.MultiplicativeExprContext ctx) { - return evaluateBinary(ctx.left, ctx.right, () -> { - switch (ctx.op.getType()) { - case TIMES: - return (l, r) -> l * r; - case DIVIDE: - return (l, r) -> l / r; - case MODULO: - return (l, r) -> l % r; - } - throw ExpressionHelper.evalException(ctx, "Invalid text for multiplicative expr: " + ctx.op.getText()); + return evaluateBinary(ctx.left, ctx.right, () -> switch (ctx.op.getType()) { + case TIMES -> (l, r) -> l * r; + case DIVIDE -> (l, r) -> l / r; + case MODULO -> (l, r) -> l % r; + default -> throw ExpressionHelper.evalException( + ctx, "Invalid text for multiplicative expr: " + ctx.op.getText() + ); }); } @Override public MethodHandle visitAddExpr(ExpressionParser.AddExprContext ctx) { - return evaluateBinary(ctx.left, ctx.right, () -> { - switch (ctx.op.getType()) { - case PLUS: - return Double::sum; - case MINUS: - return (l, r) -> l - r; - } - throw ExpressionHelper.evalException(ctx, "Invalid text for additive expr: " + ctx.op.getText()); + return evaluateBinary(ctx.left, ctx.right, () -> switch (ctx.op.getType()) { + case PLUS -> Double::sum; + case MINUS -> (l, r) -> l - r; + default -> throw ExpressionHelper.evalException( + ctx, "Invalid text for additive expr: " + ctx.op.getText() + ); }); } @Override public MethodHandle visitShiftExpr(ExpressionParser.ShiftExprContext ctx) { - return evaluateBinary(ctx.left, ctx.right, () -> { - switch (ctx.op.getType()) { - case LEFT_SHIFT: - return (l, r) -> (double) ((long) l << (long) r); - case RIGHT_SHIFT: - return (l, r) -> (double) ((long) l >> (long) r); - } - throw ExpressionHelper.evalException(ctx, "Invalid text for shift expr: " + ctx.op.getText()); + return evaluateBinary(ctx.left, ctx.right, () -> switch (ctx.op.getType()) { + case LEFT_SHIFT -> (l, r) -> (double) ((long) l << (long) r); + case RIGHT_SHIFT -> (l, r) -> (double) ((long) l >> (long) r); + default -> throw ExpressionHelper.evalException(ctx, "Invalid text for shift expr: " + ctx.op.getText()); }); } @Override public MethodHandle visitRelationalExpr(ExpressionParser.RelationalExprContext ctx) { - return evaluateBinary(ctx.left, ctx.right, () -> { - switch (ctx.op.getType()) { - case LESS_THAN: - return (l, r) -> ExpressionHandles.boolToDouble(l < r); - case LESS_THAN_OR_EQUAL: - return (l, r) -> ExpressionHandles.boolToDouble(l <= r); - case GREATER_THAN: - return (l, r) -> ExpressionHandles.boolToDouble(l > r); - case GREATER_THAN_OR_EQUAL: - return (l, r) -> ExpressionHandles.boolToDouble(l >= r); - } - throw ExpressionHelper.evalException(ctx, "Invalid text for relational expr: " + ctx.op.getText()); + return evaluateBinary(ctx.left, ctx.right, () -> switch (ctx.op.getType()) { + case LESS_THAN -> (l, r) -> ExpressionHandles.boolToDouble(l < r); + case LESS_THAN_OR_EQUAL -> (l, r) -> ExpressionHandles.boolToDouble(l <= r); + case GREATER_THAN -> (l, r) -> ExpressionHandles.boolToDouble(l > r); + case GREATER_THAN_OR_EQUAL -> (l, r) -> ExpressionHandles.boolToDouble(l >= r); + default -> throw ExpressionHelper.evalException( + ctx, "Invalid text for relational expr: " + ctx.op.getText() + ); }); } @Override public MethodHandle visitEqualityExpr(ExpressionParser.EqualityExprContext ctx) { - return evaluateBinary(ctx.left, ctx.right, () -> { - switch (ctx.op.getType()) { - case EQUAL: - return (l, r) -> ExpressionHandles.boolToDouble(l == r); - case NOT_EQUAL: - return (l, r) -> ExpressionHandles.boolToDouble(l != r); - case NEAR: - return (l, r) -> ExpressionHandles.boolToDouble(almostEqual2sComplement(l, r)); - } - throw ExpressionHelper.evalException(ctx, "Invalid text for equality expr: " + ctx.op.getText()); + return evaluateBinary(ctx.left, ctx.right, () -> switch (ctx.op.getType()) { + case EQUAL -> (l, r) -> ExpressionHandles.boolToDouble(l == r); + case NOT_EQUAL -> (l, r) -> ExpressionHandles.boolToDouble(l != r); + case NEAR -> (l, r) -> ExpressionHandles.boolToDouble(almostEqual2sComplement(l, r)); + default -> throw ExpressionHelper.evalException( + ctx, "Invalid text for equality expr: " + ctx.op.getText() + ); }); } @@ -504,10 +487,8 @@ public MethodHandle visitPostfixExpr(ExpressionParser.PostfixExprContext ctx) { factorial((double) ExpressionHandles.standardInvoke(value, data)) ); } - throw ExpressionHelper.evalException( - ctx, - "Invalid text for post-unary expr: " + ctx.op.getText() - ); + throw ExpressionHelper.evalException(ctx, + "Invalid text for post-unary expr: " + ctx.op.getText()); } private static final double[] factorials = new double[171]; @@ -547,30 +528,17 @@ public MethodHandle visitAssignment(ExpressionParser.AssignmentContext ctx) { value = arg; } else { variable = ExpressionHandles.getVariable(data, target); - value = variable.value(); - switch (type) { - case POWER_ASSIGN: - value = Math.pow(value, arg); - break; - case TIMES_ASSIGN: - value *= arg; - break; - case DIVIDE_ASSIGN: - value /= arg; - break; - case MODULO_ASSIGN: - value %= arg; - break; - case PLUS_ASSIGN: - value += arg; - break; - case MINUS_ASSIGN: - value -= arg; - break; - default: - throw ExpressionHelper.evalException(ctx, "Invalid text for assign expr: " - + ctx.assignmentOperator().getText()); - } + value = switch (type) { + case POWER_ASSIGN -> Math.pow(variable.value(), arg); + case TIMES_ASSIGN -> variable.value() * arg; + case DIVIDE_ASSIGN -> variable.value() / arg; + case MODULO_ASSIGN -> variable.value() % arg; + case PLUS_ASSIGN -> variable.value() + arg; + case MINUS_ASSIGN -> variable.value() - arg; + default -> throw ExpressionHelper.evalException( + ctx, "Invalid text for assign expr: " + ctx.assignmentOperator().getText() + ); + }; } variable.setValue(value); return value; @@ -653,13 +621,13 @@ public MethodHandle visitChildren(RuleNode node) { int n = node.getChildCount(); for (int i = 0; i < n; i++) { ParseTree c = node.getChild(i); - if (c instanceof TerminalNode && ((TerminalNode) c).getSymbol().getType() == Token.EOF) { + if (c instanceof TerminalNode terminalNode && terminalNode.getSymbol().getType() == Token.EOF) { break; } MethodHandle childResult = c.accept(this); - if (c instanceof ParserRuleContext) { - checkHandle(childResult, (ParserRuleContext) c); + if (c instanceof ParserRuleContext parserRuleContext) { + checkHandle(childResult, parserRuleContext); } result = aggregateHandleResult(result, childResult); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/helper/MCDirections.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/helper/MCDirections.java index 140583edb9..90a5745a7e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/helper/MCDirections.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/helper/MCDirections.java @@ -30,41 +30,27 @@ private MCDirections() { } public static Direction fromHanging(int i) { - switch (i) { - case 0: - return Direction.DOWN; - case 1: - return Direction.UP; - case 2: - return Direction.NORTH; - case 3: - return Direction.SOUTH; - case 4: - return Direction.WEST; - case 5: - return Direction.EAST; - default: - return Direction.DOWN; - } + return switch (i) { + case 0 -> Direction.DOWN; + case 1 -> Direction.UP; + case 2 -> Direction.NORTH; + case 3 -> Direction.SOUTH; + case 4 -> Direction.WEST; + case 5 -> Direction.EAST; + default -> Direction.DOWN; + }; } public static int toHanging(Direction direction) { - switch (direction) { - case DOWN: - return 0; - case UP: - return 1; - case NORTH: - return 2; - case SOUTH: - return 3; - case WEST: - return 4; - case EAST: - return 5; - default: - return 0; - } + return switch (direction) { + case DOWN -> 0; + case UP -> 1; + case NORTH -> 2; + case SOUTH -> 3; + case WEST -> 4; + case EAST -> 5; + default -> 0; + }; } public static Direction fromPre13Hanging(int i) { @@ -72,124 +58,76 @@ public static Direction fromPre13Hanging(int i) { } public static Direction fromHorizontalHanging(int i) { - switch (i) { - case 0: - return Direction.SOUTH; - case 1: - return Direction.WEST; - case 2: - return Direction.NORTH; - case 3: - return Direction.EAST; - default: - return Direction.NORTH; - } + return switch (i) { + case 0 -> Direction.SOUTH; + case 1 -> Direction.WEST; + case 2 -> Direction.NORTH; + case 3 -> Direction.EAST; + default -> Direction.NORTH; + }; } public static int toHorizontalHanging(Direction direction) { - switch (direction) { - case SOUTH: - return 0; - case WEST: - return 1; - case NORTH: - return 2; - case EAST: - return 3; - default: - return 0; - } + return switch (direction) { + case SOUTH -> 0; + case WEST -> 1; + case NORTH -> 2; + case EAST -> 3; + default -> 0; + }; } public static int fromLegacyHanging(byte i) { - switch (i) { - case 0: - return 2; - case 1: - return 1; - case 2: - return 0; - default: - return 3; - } + return switch (i) { + case 0 -> 2; + case 1 -> 1; + case 2 -> 0; + default -> 3; + }; } public static Direction fromRotation(int i) { - switch (i) { - case 0: - return Direction.SOUTH; - case 1: - return Direction.SOUTH_SOUTHWEST; - case 2: - return Direction.SOUTHWEST; - case 3: - return Direction.WEST_SOUTHWEST; - case 4: - return Direction.WEST; - case 5: - return Direction.WEST_NORTHWEST; - case 6: - return Direction.NORTHWEST; - case 7: - return Direction.NORTH_NORTHWEST; - case 8: - return Direction.NORTH; - case 9: - return Direction.NORTH_NORTHEAST; - case 10: - return Direction.NORTHEAST; - case 11: - return Direction.EAST_NORTHEAST; - case 12: - return Direction.EAST; - case 13: - return Direction.EAST_SOUTHEAST; - case 14: - return Direction.SOUTHEAST; - case 15: - return Direction.SOUTH_SOUTHEAST; - default: - return Direction.NORTH; - } + return switch (i) { + case 0 -> Direction.SOUTH; + case 1 -> Direction.SOUTH_SOUTHWEST; + case 2 -> Direction.SOUTHWEST; + case 3 -> Direction.WEST_SOUTHWEST; + case 4 -> Direction.WEST; + case 5 -> Direction.WEST_NORTHWEST; + case 6 -> Direction.NORTHWEST; + case 7 -> Direction.NORTH_NORTHWEST; + case 8 -> Direction.NORTH; + case 9 -> Direction.NORTH_NORTHEAST; + case 10 -> Direction.NORTHEAST; + case 11 -> Direction.EAST_NORTHEAST; + case 12 -> Direction.EAST; + case 13 -> Direction.EAST_SOUTHEAST; + case 14 -> Direction.SOUTHEAST; + case 15 -> Direction.SOUTH_SOUTHEAST; + default -> Direction.NORTH; + }; } public static int toRotation(Direction direction) { - switch (direction) { - case SOUTH: - return 0; - case SOUTH_SOUTHWEST: - return 1; - case SOUTHWEST: - return 2; - case WEST_SOUTHWEST: - return 3; - case WEST: - return 4; - case WEST_NORTHWEST: - return 5; - case NORTHWEST: - return 6; - case NORTH_NORTHWEST: - return 7; - case NORTH: - return 8; - case NORTH_NORTHEAST: - return 9; - case NORTHEAST: - return 10; - case EAST_NORTHEAST: - return 11; - case EAST: - return 12; - case EAST_SOUTHEAST: - return 13; - case SOUTHEAST: - return 14; - case SOUTH_SOUTHEAST: - return 15; - default: - return 0; - } + return switch (direction) { + case SOUTH -> 0; + case SOUTH_SOUTHWEST -> 1; + case SOUTHWEST -> 2; + case WEST_SOUTHWEST -> 3; + case WEST -> 4; + case WEST_NORTHWEST -> 5; + case NORTHWEST -> 6; + case NORTH_NORTHWEST -> 7; + case NORTH -> 8; + case NORTH_NORTHEAST -> 9; + case NORTHEAST -> 10; + case EAST_NORTHEAST -> 11; + case EAST -> 12; + case EAST_SOUTHEAST -> 13; + case SOUTHEAST -> 14; + case SOUTH_SOUTHEAST -> 15; + default -> 0; + }; } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/MathUtils.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/MathUtils.java index d500129914..19c4b21e17 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/MathUtils.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/MathUtils.java @@ -63,16 +63,20 @@ public static double dCos(double degrees) { dInt += 360; } switch (dInt) { - case 0: + case 0 -> { return 1.0; - case 90: + } + case 90 -> { return 0.0; - case 180: + } + case 180 -> { return -1.0; - case 270: + } + case 270 -> { return 0.0; - default: - break; + } + default -> { + } } } return Math.cos(Math.toRadians(degrees)); @@ -94,16 +98,20 @@ public static double dSin(double degrees) { dInt += 360; } switch (dInt) { - case 0: + case 0 -> { return 0.0; - case 90: + } + case 90 -> { return 1.0; - case 180: + } + case 180 -> { return 0.0; - case 270: + } + case 270 -> { return -1.0; - default: - break; + } + default -> { + } } } return Math.sin(Math.toRadians(degrees)); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/Vector2.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/Vector2.java index 089ed62ca1..227b3c78bf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/Vector2.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/Vector2.java @@ -35,18 +35,18 @@ public record Vector2(double x, double z) { public static Vector2 at(double x, double z) { int xTrunc = (int) x; switch (xTrunc) { - case 0: + case 0 -> { if (x == 0 && z == 0) { return ZERO; } - break; - case 1: + } + case 1 -> { if (x == 1 && z == 1) { return ONE; } - break; - default: - break; + } + default -> { + } } return new Vector2(x, z); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/KochanekBartelsInterpolation.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/KochanekBartelsInterpolation.java index 0ecced12ea..863574c6ec 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/KochanekBartelsInterpolation.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/KochanekBartelsInterpolation.java @@ -222,19 +222,15 @@ public double arcLength(double positionA, double positionB) { * Assumes a < b. */ private double arcLengthRecursive(int indexLeft, double remainderLeft, int indexRight, double remainderRight) { - switch (indexRight - indexLeft) { - case 0: - return arcLengthRecursive(indexLeft, remainderLeft, remainderRight); - - case 1: + return switch (indexRight - indexLeft) { + case 0 -> arcLengthRecursive(indexLeft, remainderLeft, remainderRight); + case 1 -> // This case is merely a speed-up for a very common case - return arcLengthRecursive(indexLeft, remainderLeft, 1.0) - + arcLengthRecursive(indexRight, 0.0, remainderRight); - - default: - return arcLengthRecursive(indexLeft, remainderLeft, indexRight - 1, 1.0) - + arcLengthRecursive(indexRight, 0.0, remainderRight); - } + arcLengthRecursive(indexLeft, remainderLeft, 1.0) + + arcLengthRecursive(indexRight, 0.0, remainderRight); + default -> arcLengthRecursive(indexLeft, remainderLeft, indexRight - 1, 1.0) + + arcLengthRecursive(indexRight, 0.0, remainderRight); + }; } private double arcLengthRecursive(int index, double remainderLeft, double remainderRight) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/LinearInterpolation.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/LinearInterpolation.java index 597250add8..d657023d12 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/LinearInterpolation.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/interpolation/LinearInterpolation.java @@ -123,19 +123,15 @@ public double arcLength(double positionA, double positionB) { * Assumes a < b. */ private double arcLengthRecursive(int indexA, double remainderA, int indexB, double remainderB) { - switch (indexB - indexA) { - case 0: - return arcLengthRecursive(indexA, remainderA, remainderB); - - case 1: + return switch (indexB - indexA) { + case 0 -> arcLengthRecursive(indexA, remainderA, remainderB); + case 1 -> // This case is merely a speed-up for a very common case - return arcLengthRecursive(indexA, remainderA, 1.0) - + arcLengthRecursive(indexB, 0.0, remainderB); - - default: - return arcLengthRecursive(indexA, remainderA, indexB - 1, 1.0) - + arcLengthRecursive(indexB, 0.0, remainderB); - } + arcLengthRecursive(indexA, remainderA, 1.0) + + arcLengthRecursive(indexB, 0.0, remainderB); + default -> arcLengthRecursive(indexA, remainderA, indexB - 1, 1.0) + + arcLengthRecursive(indexB, 0.0, remainderB); + }; } private double arcLengthRecursive(int index, double remainderA, double remainderB) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/noise/JLibNoiseGenerator.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/noise/JLibNoiseGenerator.java index c541d2d3da..eefad264da 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/noise/JLibNoiseGenerator.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/noise/JLibNoiseGenerator.java @@ -56,7 +56,7 @@ public float noise(Vector3 position) { } private float forceRange(double value) { - return (float) Math.max(0, Math.min(1, value / 2.0 + 0.5)); + return (float) Math.clamp(value / 2.0 + 0.5, 0, 1); } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/CombinedTransform.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/CombinedTransform.java index 6124eecb16..ffd1616435 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/CombinedTransform.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/CombinedTransform.java @@ -86,8 +86,7 @@ public Transform inverse() { @Override public Transform combine(Transform other) { checkNotNull(other); - if (other instanceof CombinedTransform) { - CombinedTransform combinedOther = (CombinedTransform) other; + if (other instanceof CombinedTransform combinedOther) { Transform[] newTransforms = new Transform[transforms.length + combinedOther.transforms.length]; System.arraycopy(transforms, 0, newTransforms, 0, transforms.length); System.arraycopy(combinedOther.transforms, 0, newTransforms, transforms.length, combinedOther.transforms.length); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/ConvexPolyhedralRegion.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/ConvexPolyhedralRegion.java index 4aaa0d8c8a..fc27737f4c 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/ConvexPolyhedralRegion.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/ConvexPolyhedralRegion.java @@ -152,22 +152,21 @@ public boolean addVertex(BlockVector3 vertex) { switch (vertices.size()) { - case 0: - case 1: - case 2: + case 0, 1, 2 -> { // Incomplete, can't make a mesh yet return true; - - case 3: + // Incomplete, can't make a mesh yet + } + case 3 -> { // Generate minimal mesh to start from final BlockVector3[] v = vertices.toArray(new BlockVector3[0]); triangles.add((new Triangle(v[0].toVector3(), v[1].toVector3(), v[2].toVector3()))); triangles.add((new Triangle(v[0].toVector3(), v[2].toVector3(), v[1].toVector3()))); return true; - - default: - break; + } + default -> { + } } // Look for triangles that face the vertex and remove them diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java index 2c029ace72..cd5d3e187e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java @@ -469,8 +469,7 @@ public int size() { @Override public boolean contains(Object o) { - if (o instanceof BlockVector2) { - BlockVector2 cv = (BlockVector2) o; + if (o instanceof BlockVector2 cv) { return cv.x() >= minX && cv.x() <= maxX && cv.z() >= minZ && cv.z() <= maxZ; } return false; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java index b075037626..16f8d861ad 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java @@ -138,8 +138,8 @@ protected void recalculate() { minY = Math.min(oldMinY, oldMaxY); maxY = Math.max(oldMinY, oldMaxY); - minY = Math.min(Math.max(getWorldMinY(), minY), getWorldMaxY()); - maxY = Math.min(Math.max(getWorldMinY(), maxY), getWorldMaxY()); + minY = Math.clamp(minY, getWorldMinY(), getWorldMaxY()); + maxY = Math.clamp(maxY, getWorldMinY(), getWorldMaxY()); min = BlockVector2.at(minX, minZ); max = BlockVector2.at(maxX, maxZ); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/ConvexPolyhedralRegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/ConvexPolyhedralRegionSelector.java index ac3141c028..5ba821eb2a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/ConvexPolyhedralRegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/ConvexPolyhedralRegionSelector.java @@ -87,8 +87,7 @@ public ConvexPolyhedralRegionSelector(ConvexPolyhedralRegion region) { public ConvexPolyhedralRegionSelector(RegionSelector oldSelector) { checkNotNull(oldSelector); - if (oldSelector instanceof ConvexPolyhedralRegionSelector) { - final ConvexPolyhedralRegionSelector convexPolyhedralRegionSelector = (ConvexPolyhedralRegionSelector) oldSelector; + if (oldSelector instanceof ConvexPolyhedralRegionSelector convexPolyhedralRegionSelector) { pos1 = convexPolyhedralRegionSelector.pos1; region = new ConvexPolyhedralRegion(convexPolyhedralRegionSelector.region); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java index cf2bfaf26c..e95eed121f 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java @@ -77,8 +77,7 @@ public CuboidRegionSelector(@Nullable World world) { public CuboidRegionSelector(RegionSelector oldSelector) { this(checkNotNull(oldSelector).getIncompleteRegion().getWorld()); - if (oldSelector instanceof CuboidRegionSelector) { - final CuboidRegionSelector cuboidRegionSelector = (CuboidRegionSelector) oldSelector; + if (oldSelector instanceof CuboidRegionSelector cuboidRegionSelector) { position1 = cuboidRegionSelector.position1; position2 = cuboidRegionSelector.position2; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CylinderRegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CylinderRegionSelector.java index 5a9d3748b4..1fc8d45660 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CylinderRegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CylinderRegionSelector.java @@ -94,8 +94,7 @@ public CylinderRegionSelector(@Nullable World world) { public CylinderRegionSelector(RegionSelector oldSelector) { this(checkNotNull(oldSelector).getIncompleteRegion().getWorld()); - if (oldSelector instanceof CylinderRegionSelector) { - final CylinderRegionSelector cylSelector = (CylinderRegionSelector) oldSelector; + if (oldSelector instanceof CylinderRegionSelector cylSelector) { region = new CylinderRegion(cylSelector.region); selectedCenter = cylSelector.selectedCenter; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/EllipsoidRegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/EllipsoidRegionSelector.java index 1f7c8a4204..bbaf4a9dda 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/EllipsoidRegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/EllipsoidRegionSelector.java @@ -76,8 +76,7 @@ public EllipsoidRegionSelector(@Nullable World world) { */ public EllipsoidRegionSelector(RegionSelector oldSelector) { this(checkNotNull(oldSelector).getIncompleteRegion().getWorld()); - if (oldSelector instanceof EllipsoidRegionSelector) { - final EllipsoidRegionSelector ellipsoidRegionSelector = (EllipsoidRegionSelector) oldSelector; + if (oldSelector instanceof EllipsoidRegionSelector ellipsoidRegionSelector) { region = new EllipsoidRegion(ellipsoidRegionSelector.getIncompleteRegion()); started = ellipsoidRegionSelector.started; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/Polygonal2DRegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/Polygonal2DRegionSelector.java index be9134f151..64b89bc2f6 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/Polygonal2DRegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/Polygonal2DRegionSelector.java @@ -83,8 +83,7 @@ public Polygonal2DRegionSelector(Polygonal2DRegion region) { public Polygonal2DRegionSelector(RegionSelector oldSelector) { this(checkNotNull(oldSelector).getIncompleteRegion().getWorld()); - if (oldSelector instanceof Polygonal2DRegionSelector) { - final Polygonal2DRegionSelector polygonal2DRegionSelector = (Polygonal2DRegionSelector) oldSelector; + if (oldSelector instanceof Polygonal2DRegionSelector polygonal2DRegionSelector) { pos1 = polygonal2DRegionSelector.pos1; region = new Polygonal2DRegion(polygonal2DRegionSelector.region); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/shape/ArbitraryShape.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/shape/ArbitraryShape.java index dbb516b1b4..5955b532ee 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/shape/ArbitraryShape.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/shape/ArbitraryShape.java @@ -162,7 +162,7 @@ private boolean isInsideCached(int x, int y, int z, Pattern pattern) { final int index = (y - cacheOffsetY) + (z - cacheOffsetZ) * cacheSizeY + (x - cacheOffsetX) * cacheSizeY * cacheSizeZ; switch (cache[index]) { - case 0: + case 0 -> { BaseBlock mat = getMaterial(x, y, z, pattern.applyBlock(BlockVector3.at(x, y, z))); if (mat == null) { cache[index] = -1; @@ -170,14 +170,16 @@ private boolean isInsideCached(int x, int y, int z, Pattern pattern) { } cache[index] = 1; return true; - - case -1: + } + case -1 -> { // outside return false; - - default: + // outside + } + default -> { // inside return true; + } } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/registry/state/BooleanProperty.java b/worldedit-core/src/main/java/com/sk89q/worldedit/registry/state/BooleanProperty.java index b6ebd1f24e..1fd52f1f96 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/registry/state/BooleanProperty.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/registry/state/BooleanProperty.java @@ -48,14 +48,11 @@ public BooleanProperty withOffset(int bitOffset) { @Override public int getIndexFor(CharSequence string) throws IllegalArgumentException { - switch (string.charAt(0)) { - case 't': - return defaultIndex; - case 'f': - return 1 - defaultIndex; - default: - return -1; - } + return switch (string.charAt(0)) { + case 't' -> defaultIndex; + case 'f' -> 1 - defaultIndex; + default -> -1; + }; } //FAWE end diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/Direction.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/Direction.java index 55f527b5a2..8c093e34cc 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/Direction.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/Direction.java @@ -255,88 +255,54 @@ public static List valuesOf(int flags) { * Converts a rotation index into a Direction. * *

- * Rotation indexes are used in BlockStates, such as sign posts. + * Rotation indexes are used in BlockStates, such as sign posts. *

* * @param rotation The rotation index * @return The direction, if applicable */ public static Optional fromRotationIndex(int rotation) { - switch (rotation) { - case 0: - return Optional.of(SOUTH); - case 1: - return Optional.of(SOUTH_SOUTHWEST); - case 2: - return Optional.of(SOUTHWEST); - case 3: - return Optional.of(WEST_SOUTHWEST); - case 4: - return Optional.of(WEST); - case 5: - return Optional.of(WEST_NORTHWEST); - case 6: - return Optional.of(NORTHWEST); - case 7: - return Optional.of(NORTH_NORTHWEST); - case 8: - return Optional.of(NORTH); - case 9: - return Optional.of(NORTH_NORTHEAST); - case 10: - return Optional.of(NORTHEAST); - case 11: - return Optional.of(EAST_NORTHEAST); - case 12: - return Optional.of(EAST); - case 13: - return Optional.of(EAST_SOUTHEAST); - case 14: - return Optional.of(SOUTHEAST); - case 15: - return Optional.of(SOUTH_SOUTHEAST); - default: - return Optional.empty(); - } + return switch (rotation) { + case 0 -> Optional.of(SOUTH); + case 1 -> Optional.of(SOUTH_SOUTHWEST); + case 2 -> Optional.of(SOUTHWEST); + case 3 -> Optional.of(WEST_SOUTHWEST); + case 4 -> Optional.of(WEST); + case 5 -> Optional.of(WEST_NORTHWEST); + case 6 -> Optional.of(NORTHWEST); + case 7 -> Optional.of(NORTH_NORTHWEST); + case 8 -> Optional.of(NORTH); + case 9 -> Optional.of(NORTH_NORTHEAST); + case 10 -> Optional.of(NORTHEAST); + case 11 -> Optional.of(EAST_NORTHEAST); + case 12 -> Optional.of(EAST); + case 13 -> Optional.of(EAST_SOUTHEAST); + case 14 -> Optional.of(SOUTHEAST); + case 15 -> Optional.of(SOUTH_SOUTHEAST); + default -> Optional.empty(); + }; } public OptionalInt toRotationIndex() { - switch (this) { - case SOUTH: - return OptionalInt.of(0); - case SOUTH_SOUTHWEST: - return OptionalInt.of(1); - case SOUTHWEST: - return OptionalInt.of(2); - case WEST_SOUTHWEST: - return OptionalInt.of(3); - case WEST: - return OptionalInt.of(4); - case WEST_NORTHWEST: - return OptionalInt.of(5); - case NORTHWEST: - return OptionalInt.of(6); - case NORTH_NORTHWEST: - return OptionalInt.of(7); - case NORTH: - return OptionalInt.of(8); - case NORTH_NORTHEAST: - return OptionalInt.of(9); - case NORTHEAST: - return OptionalInt.of(10); - case EAST_NORTHEAST: - return OptionalInt.of(11); - case EAST: - return OptionalInt.of(12); - case EAST_SOUTHEAST: - return OptionalInt.of(13); - case SOUTHEAST: - return OptionalInt.of(14); - case SOUTH_SOUTHEAST: - return OptionalInt.of(15); - default: - return OptionalInt.empty(); - } + return switch (this) { + case SOUTH -> OptionalInt.of(0); + case SOUTH_SOUTHWEST -> OptionalInt.of(1); + case SOUTHWEST -> OptionalInt.of(2); + case WEST_SOUTHWEST -> OptionalInt.of(3); + case WEST -> OptionalInt.of(4); + case WEST_NORTHWEST -> OptionalInt.of(5); + case NORTHWEST -> OptionalInt.of(6); + case NORTH_NORTHWEST -> OptionalInt.of(7); + case NORTH -> OptionalInt.of(8); + case NORTH_NORTHEAST -> OptionalInt.of(9); + case NORTHEAST -> OptionalInt.of(10); + case EAST_NORTHEAST -> OptionalInt.of(11); + case EAST -> OptionalInt.of(12); + case EAST_SOUTHEAST -> OptionalInt.of(13); + case SOUTHEAST -> OptionalInt.of(14); + case SOUTH_SOUTHEAST -> OptionalInt.of(15); + default -> OptionalInt.empty(); + }; } /** diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/file/SafeFiles.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/file/SafeFiles.java index 1cb59f59e4..14bbfd1ff0 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/file/SafeFiles.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/file/SafeFiles.java @@ -184,14 +184,11 @@ private static IOException tryDelete(Path path) { * @return the owner-only file attributes */ public static FileAttribute[] getOwnerOnlyFileAttributes(AttributeTarget attributeTarget) { - switch (attributeTarget) { - case FILE: - return OWNER_ONLY_FILE_ATTRS; - case DIRECTORY: - return OWNER_ONLY_DIR_ATTRS; - default: - throw new IllegalStateException("Unknown attribute target " + attributeTarget); - } + return switch (attributeTarget) { + case FILE -> OWNER_ONLY_FILE_ATTRS; + case DIRECTORY -> OWNER_ONLY_DIR_ATTRS; + default -> throw new IllegalStateException("Unknown attribute target " + attributeTarget); + }; } private SafeFiles() { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeType.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeType.java index e187f57fbe..96419cb184 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeType.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeType.java @@ -99,7 +99,7 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj instanceof BiomeType && this.id.equals(((BiomeType) obj).id); + return obj instanceof BiomeType biomeType && this.id.equals(biomeType.id); } //FAWE end diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java index 54424c2ee8..a341ca4dba 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockState.java @@ -209,20 +209,21 @@ public static BlockState get(@Nullable BlockType type, String state, BlockState for (int i = last; i < length; i++) { char c = state.charAt(i); switch (c) { - case ']': - case ',': { + case ']', ',' -> { charSequence.setSubstring(last, i); if (property != null) { int index; try { index = property.getIndexFor(charSequence); } catch (Exception e) { - throw new InputParseException(Caption.of( - "fawe.error.invalid-block-state-property", - TextComponent.of(charSequence.toString()), - TextComponent.of(property.getName()), - TextComponent.of(state) - ), e); + throw new InputParseException( + Caption.of( + "fawe.error.invalid-block-state-property", + TextComponent.of(charSequence.toString()), + TextComponent.of(property.getName()), + TextComponent.of(state) + ), e + ); } if (index == -1) { throw SuggestInputParseException.of(charSequence.toString(), (List) property.getValues()); @@ -253,16 +254,15 @@ public static BlockState get(@Nullable BlockType type, String state, BlockState } property = null; last = i + 1; - break; } - case '=': { + case '=' -> { charSequence.setSubstring(last, i); property = (AbstractProperty) type.getPropertyMap().get(charSequence); last = i + 1; - break; } - default: + default -> { continue; + } } } return type.withPropertyId(stateId >> BlockTypesCache.BIT_OFFSET); @@ -515,11 +515,11 @@ public String toString() { @Override public boolean equals(Object obj) { - if (!(obj instanceof BlockState)) { + if (!(obj instanceof BlockState blockState)) { return false; } - return equalsFuzzy((BlockState) obj); + return equalsFuzzy(blockState); } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk18.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk18.java index af367c936e..51946acdef 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk18.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk18.java @@ -49,7 +49,7 @@ import java.util.function.Supplier; /** - * The chunk format for Minecraft 1.18 and newer + * The chunk format for Minecraft 1.18 and newer. */ public class AnvilChunk18 implements Chunk { @@ -79,11 +79,10 @@ public AnvilChunk18(CompoundTag tag, Supplier entityTag) throws blocks = new Int2ObjectOpenHashMap<>(sections.size()); for (Tag rawSectionTag : sections) { - if (!(rawSectionTag instanceof CompoundTag)) { + if (!(rawSectionTag instanceof CompoundTag sectionTag)) { continue; } - CompoundTag sectionTag = (CompoundTag) rawSectionTag; Object yValue = sectionTag.getValue().get("Y").getValue(); // sometimes a byte, sometimes an int if (!(yValue instanceof Number)) { throw new InvalidFormatException("Y is not numeric: " + yValue); @@ -91,11 +90,10 @@ public AnvilChunk18(CompoundTag tag, Supplier entityTag) throws int y = ((Number) yValue).intValue(); Tag rawBlockStatesTag = sectionTag.getValue().get("block_states"); // null for sections outside of the world limits - if (rawBlockStatesTag instanceof CompoundTag) { - CompoundTag blockStatesTag = (CompoundTag) rawBlockStatesTag; + if (rawBlockStatesTag instanceof CompoundTag blockStatesTag) { // parse palette - List paletteEntries = blockStatesTag.getList("palette", CompoundTag.class); + var paletteEntries = blockStatesTag.getList("palette", CompoundTag.class); int paletteSize = paletteEntries.size(); if (paletteSize == 0) { continue; @@ -167,12 +165,10 @@ private void populateTileEntities() throws DataException { "block_entities", ListTag.class).getValue(); for (Tag tag : tags) { - if (!(tag instanceof CompoundTag)) { + if (!(tag instanceof CompoundTag t)) { throw new InvalidFormatException("CompoundTag expected in block_entities"); } - CompoundTag t = (CompoundTag) tag; - Map> values = new HashMap<>(t.getValue()); int x = ((IntTag) values.get("x")).getValue(); int y = ((IntTag) values.get("y")).getValue(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java index 6a7685cb61..45a1a75660 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java @@ -377,183 +377,96 @@ private static String convertEntityId(String id) { if (id.startsWith("minecraft:")) { id = id.substring(10); } - switch (id) { - case "AreaEffectCloud": - return "area_effect_cloud"; - case "ArmorStand": - return "armor_stand"; - case "CaveSpider": - return "cave_spider"; - case "MinecartChest": - return "chest_minecart"; - case "DragonFireball": - return "dragon_fireball"; - case "ThrownEgg": - return "egg"; - case "EnderDragon": - return "ender_dragon"; - case "ThrownEnderpearl": - return "ender_pearl"; - case "FallingSand": - return "falling_block"; - case "FireworksRocketEntity": - return "fireworks_rocket"; - case "MinecartFurnace": - return "furnace_minecart"; - case "MinecartHopper": - return "hopper_minecart"; - case "EntityHorse": - return "horse"; - case "ItemFrame": - return "item_frame"; - case "LeashKnot": - return "leash_knot"; - case "LightningBolt": - return "lightning_bolt"; - case "LavaSlime": - return "magma_cube"; - case "MinecartRideable": - return "minecart"; - case "MushroomCow": - return "mooshroom"; - case "Ozelot": - return "ocelot"; - case "PolarBear": - return "polar_bear"; - case "ThrownPotion": - return "potion"; - case "ShulkerBullet": - return "shulker_bullet"; - case "SmallFireball": - return "small_fireball"; - case "MinecartSpawner": - return "spawner_minecart"; - case "SpectralArrow": - return "spectral_arrow"; - case "PrimedTnt": - return "tnt"; - case "MinecartTNT": - return "tnt_minecart"; - case "VillagerGolem": - return "villager_golem"; - case "WitherBoss": - return "wither"; - case "WitherSkull": - return "wither_skull"; - case "PigZombie": - return "zombie_pigman"; - case "XPOrb": - return "experience_orb"; - case "ThrownExpBottle": - return "experience_bottle"; - case "EyeOfEnderSignal": - return "eye_of_ender"; - case "EnderCrystal": - return "end_crystal"; - case "MinecartCommandBlock": - return "command_block_minecart"; - case "SnowMan": - return "snow_golem"; - case "areaeffectcloud": - return "area_effect_cloud"; - case "armorstand": - return "armor_stand"; - case "cavespider": - return "cave_spider"; - case "minecartchest": - return "chest_minecart"; - case "dragonfireball": - return "dragon_fireball"; - case "thrownegg": - return "egg"; - case "enderdragon": - return "ender_dragon"; - case "thrownenderpearl": - return "ender_pearl"; - case "fallingsand": - return "falling_block"; - case "fireworksrocketentity": - return "fireworks_rocket"; - case "minecartfurnace": - return "furnace_minecart"; - case "minecarthopper": - return "hopper_minecart"; - case "entityhorse": - return "horse"; - case "itemframe": - return "item_frame"; - case "leashknot": - return "leash_knot"; - case "lightningbolt": - return "lightning_bolt"; - case "lavaslime": - return "magma_cube"; - case "minecartrideable": - return "minecart"; - case "mushroomcow": - return "mooshroom"; - case "ozelot": - return "ocelot"; - case "polarbear": - return "polar_bear"; - case "thrownpotion": - return "potion"; - case "shulkerbullet": - return "shulker_bullet"; - case "smallfireball": - return "small_fireball"; - case "minecartspawner": - return "spawner_minecart"; - case "spectralarrow": - return "spectral_arrow"; - case "primedtnt": - return "tnt"; - case "minecarttnt": - return "tnt_minecart"; - case "villagergolem": - return "villager_golem"; - case "witherboss": - return "wither"; - case "witherskull": - return "wither_skull"; - case "pigzombie": - return "zombie_pigman"; - case "xporb": - case "xp_orb": - return "experience_orb"; - case "thrownexpbottle": - case "xp_bottle": - return "experience_bottle"; - case "eyeofendersignal": - case "eye_of_ender_signal": - return "eye_of_ender"; - case "endercrystal": - case "ender_crystal": - return "end_crystal"; - case "fireworks_rocket": - return "firework_rocket"; - case "minecartcommandblock": - case "commandblock_minecart": - return "command_block_minecart"; - case "snowman": - return "snow_golem"; - case "villager_golem": - return "iron_golem"; - case "evocation_fangs": - return "evoker_fangs"; - case "evocation_illager": - return "evoker"; - case "vindication_illager": - return "vindicator"; - case "illusion_illager": - return "illusioner"; - default: { + return switch (id) { + case "AreaEffectCloud" -> "area_effect_cloud"; + case "ArmorStand" -> "armor_stand"; + case "CaveSpider" -> "cave_spider"; + case "MinecartChest" -> "chest_minecart"; + case "DragonFireball" -> "dragon_fireball"; + case "ThrownEgg" -> "egg"; + case "EnderDragon" -> "ender_dragon"; + case "ThrownEnderpearl" -> "ender_pearl"; + case "FallingSand" -> "falling_block"; + case "FireworksRocketEntity" -> "fireworks_rocket"; + case "MinecartFurnace" -> "furnace_minecart"; + case "MinecartHopper" -> "hopper_minecart"; + case "EntityHorse" -> "horse"; + case "ItemFrame" -> "item_frame"; + case "LeashKnot" -> "leash_knot"; + case "LightningBolt" -> "lightning_bolt"; + case "LavaSlime" -> "magma_cube"; + case "MinecartRideable" -> "minecart"; + case "MushroomCow" -> "mooshroom"; + case "Ozelot" -> "ocelot"; + case "PolarBear" -> "polar_bear"; + case "ThrownPotion" -> "potion"; + case "ShulkerBullet" -> "shulker_bullet"; + case "SmallFireball" -> "small_fireball"; + case "MinecartSpawner" -> "spawner_minecart"; + case "SpectralArrow" -> "spectral_arrow"; + case "PrimedTnt" -> "tnt"; + case "MinecartTNT" -> "tnt_minecart"; + case "VillagerGolem" -> "villager_golem"; + case "WitherBoss" -> "wither"; + case "WitherSkull" -> "wither_skull"; + case "PigZombie" -> "zombie_pigman"; + case "XPOrb" -> "experience_orb"; + case "ThrownExpBottle" -> "experience_bottle"; + case "EyeOfEnderSignal" -> "eye_of_ender"; + case "EnderCrystal" -> "end_crystal"; + case "MinecartCommandBlock" -> "command_block_minecart"; + case "SnowMan" -> "snow_golem"; + case "areaeffectcloud" -> "area_effect_cloud"; + case "armorstand" -> "armor_stand"; + case "cavespider" -> "cave_spider"; + case "minecartchest" -> "chest_minecart"; + case "dragonfireball" -> "dragon_fireball"; + case "thrownegg" -> "egg"; + case "enderdragon" -> "ender_dragon"; + case "thrownenderpearl" -> "ender_pearl"; + case "fallingsand" -> "falling_block"; + case "fireworksrocketentity" -> "fireworks_rocket"; + case "minecartfurnace" -> "furnace_minecart"; + case "minecarthopper" -> "hopper_minecart"; + case "entityhorse" -> "horse"; + case "itemframe" -> "item_frame"; + case "leashknot" -> "leash_knot"; + case "lightningbolt" -> "lightning_bolt"; + case "lavaslime" -> "magma_cube"; + case "minecartrideable" -> "minecart"; + case "mushroomcow" -> "mooshroom"; + case "ozelot" -> "ocelot"; + case "polarbear" -> "polar_bear"; + case "thrownpotion" -> "potion"; + case "shulkerbullet" -> "shulker_bullet"; + case "smallfireball" -> "small_fireball"; + case "minecartspawner" -> "spawner_minecart"; + case "spectralarrow" -> "spectral_arrow"; + case "primedtnt" -> "tnt"; + case "minecarttnt" -> "tnt_minecart"; + case "villagergolem" -> "villager_golem"; + case "witherboss" -> "wither"; + case "witherskull" -> "wither_skull"; + case "pigzombie" -> "zombie_pigman"; + case "xporb", "xp_orb" -> "experience_orb"; + case "thrownexpbottle", "xp_bottle" -> "experience_bottle"; + case "eyeofendersignal", "eye_of_ender_signal" -> "eye_of_ender"; + case "endercrystal", "ender_crystal" -> "end_crystal"; + case "fireworks_rocket" -> "firework_rocket"; + case "minecartcommandblock", "commandblock_minecart" -> "command_block_minecart"; + case "snowman" -> "snow_golem"; + case "villager_golem" -> "iron_golem"; + case "evocation_fangs" -> "evoker_fangs"; + case "evocation_illager" -> "evoker"; + case "vindication_illager" -> "vindicator"; + case "illusion_illager" -> "illusioner"; + default -> { if (Character.isUpperCase(id.charAt(0))) { - return convertEntityId(id.toLowerCase(Locale.ROOT)); + yield convertEntityId(id.toLowerCase(Locale.ROOT)); } - return id; + yield id; } - } + }; } public static EntityType parse(String id) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/weather/WeatherTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/weather/WeatherTypes.java index 458f17f258..859322f1ca 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/weather/WeatherTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/weather/WeatherTypes.java @@ -42,5 +42,4 @@ public static WeatherType register(WeatherType weather) { public static WeatherType get(final String id) { return WeatherType.REGISTRY.get(id); } - }