diff --git a/plugin/src/main/java/net/thenextlvl/protect/ProtectPlugin.java b/plugin/src/main/java/net/thenextlvl/protect/ProtectPlugin.java index 4296080..1387603 100644 --- a/plugin/src/main/java/net/thenextlvl/protect/ProtectPlugin.java +++ b/plugin/src/main/java/net/thenextlvl/protect/ProtectPlugin.java @@ -22,7 +22,6 @@ import net.thenextlvl.protect.service.ProtectionService; import net.thenextlvl.protect.version.PluginVersionChecker; import org.bstats.bukkit.Metrics; -import org.bukkit.Bukkit; import org.bukkit.WeatherType; import org.bukkit.entity.Player; import org.bukkit.plugin.ServicePriority; @@ -59,14 +58,8 @@ public class ProtectPlugin extends JavaPlugin { @Override public void onLoad() { versionChecker().checkVersion(); - - Bukkit.getServicesManager().register(ProtectionService.class, protectionService(), this, ServicePriority.Highest); - Bukkit.getServicesManager().register(FlagRegistry.class, flagRegistry(), this, ServicePriority.Highest); - Bukkit.getServicesManager().register(AreaProvider.class, areaProvider(), this, ServicePriority.Highest); - Bukkit.getServicesManager().register(AreaService.class, areaService(), this, ServicePriority.Highest); - - areaService().registerAdapter(CraftGlobalArea.class, new GlobalAreaAdapter(this)); - areaService().registerAdapter(CraftCuboidArea.class, new CuboidAreaAdapter(this)); + registerServices(); + registerAdapter(); } @Override @@ -77,26 +70,34 @@ public void onEnable() { @Override public void onDisable() { - Bukkit.getWorlds().forEach(world -> { + getServer().getWorlds().forEach(world -> { areaProvider().saveAreas(world); areaProvider().unloadAreas(world); }); - metrics.shutdown(); + metrics().shutdown(); + } + + private void registerServices() { + getServer().getServicesManager().register(ProtectionService.class, protectionService(), this, ServicePriority.Highest); + getServer().getServicesManager().register(FlagRegistry.class, flagRegistry(), this, ServicePriority.Highest); + getServer().getServicesManager().register(AreaProvider.class, areaProvider(), this, ServicePriority.Highest); + getServer().getServicesManager().register(AreaService.class, areaService(), this, ServicePriority.Highest); + } + + private void registerAdapter() { + areaService().registerAdapter(CraftGlobalArea.class, new GlobalAreaAdapter(this)); + areaService().registerAdapter(CraftCuboidArea.class, new CuboidAreaAdapter(this)); } private void registerEvents() { - Bukkit.getPluginManager().registerEvents(new AreaListener(this), this); - Bukkit.getPluginManager().registerEvents(new EntityListener(this), this); - Bukkit.getPluginManager().registerEvents(new MovementListener(this), this); - Bukkit.getPluginManager().registerEvents(new WorldListener(this), this); + getServer().getPluginManager().registerEvents(new AreaListener(this), this); + getServer().getPluginManager().registerEvents(new EntityListener(this), this); + getServer().getPluginManager().registerEvents(new MovementListener(this), this); + getServer().getPluginManager().registerEvents(new WorldListener(this), this); } private void registerCommands() { - try { - new AreaCommand(this).register(); - } catch (Exception e) { - throw new RuntimeException(e); - } + new AreaCommand(this).register(); } public class Flags { diff --git a/plugin/src/main/java/net/thenextlvl/protect/adapter/BlockVectorAdapter.java b/plugin/src/main/java/net/thenextlvl/protect/adapter/BlockVectorAdapter.java index c25cff3..97e6997 100644 --- a/plugin/src/main/java/net/thenextlvl/protect/adapter/BlockVectorAdapter.java +++ b/plugin/src/main/java/net/thenextlvl/protect/adapter/BlockVectorAdapter.java @@ -18,6 +18,6 @@ public BlockVector3 deserialize(JsonElement element, Type type, JsonDeserializat @Override public JsonElement serialize(BlockVector3 vector, Type type, JsonSerializationContext context) { - return new JsonPrimitive(vector.getX() + ", " + vector.getY() + ", " + vector.getZ()); + return new JsonPrimitive(vector.x() + ", " + vector.y() + ", " + vector.z()); } } diff --git a/plugin/src/main/java/net/thenextlvl/protect/area/CraftGlobalArea.java b/plugin/src/main/java/net/thenextlvl/protect/area/CraftGlobalArea.java index 84f2e33..cd9402d 100644 --- a/plugin/src/main/java/net/thenextlvl/protect/area/CraftGlobalArea.java +++ b/plugin/src/main/java/net/thenextlvl/protect/area/CraftGlobalArea.java @@ -29,6 +29,7 @@ public CraftGlobalArea(World world, int priority) { @Override @NamePattern.Global + @SuppressWarnings("PatternValidation") public String getName() { return super.getName(); } diff --git a/plugin/src/main/java/net/thenextlvl/protect/area/CraftRegionizedArea.java b/plugin/src/main/java/net/thenextlvl/protect/area/CraftRegionizedArea.java index 46884f2..fd76fa3 100644 --- a/plugin/src/main/java/net/thenextlvl/protect/area/CraftRegionizedArea.java +++ b/plugin/src/main/java/net/thenextlvl/protect/area/CraftRegionizedArea.java @@ -105,7 +105,7 @@ public void saveSchematic() throws IOException, WorldEditException { file.getParentFile().mkdirs(); file.createNewFile(); try (var editSession = WorldEdit.getInstance().newEditSession(new BukkitWorld(getWorld())); - var writer = BuiltInClipboardFormat.FAST.getWriter(new FileOutputStream(getSchematic()))) { + var writer = BuiltInClipboardFormat.FAST_V3.getWriter(new FileOutputStream(getSchematic()))) { var clipboard = new BlockArrayClipboard(getRegion()); var extent = new ForwardExtentCopy(editSession, getRegion(), clipboard, getRegion().getMinimumPoint()); extent.setCopyingEntities(true); @@ -122,7 +122,7 @@ public boolean loadSchematic() throws IOException, WorldEditException { if (!event.callEvent()) return false; var world = new BukkitWorld(getWorld()); try (EditSession editSession = WorldEdit.getInstance().newEditSession(world)) { - var clipboard = BuiltInClipboardFormat.FAST.getReader(new FileInputStream(getSchematic())).read(); + var clipboard = BuiltInClipboardFormat.FAST_V3.getReader(new FileInputStream(getSchematic())).read(); world.getEntities(getRegion()).forEach(com.sk89q.worldedit.entity.Entity::remove); var operation = new ClipboardHolder(clipboard).createPaste(editSession).to(getRegion().getMinimumPoint()). copyBiomes(true).copyEntities(true).ignoreAirBlocks(false).build(); diff --git a/plugin/src/main/java/net/thenextlvl/protect/listener/MovementListener.java b/plugin/src/main/java/net/thenextlvl/protect/listener/MovementListener.java index c1c28ff..3ab9bc0 100644 --- a/plugin/src/main/java/net/thenextlvl/protect/listener/MovementListener.java +++ b/plugin/src/main/java/net/thenextlvl/protect/listener/MovementListener.java @@ -17,6 +17,7 @@ public class MovementListener implements Listener { private final ProtectPlugin plugin; + @SuppressWarnings("IsCancelled") @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerMove(PlayerMoveEvent event) { if (!event.hasChangedBlock()) return; diff --git a/plugin/src/main/java/net/thenextlvl/protect/util/BlockUtil.java b/plugin/src/main/java/net/thenextlvl/protect/util/BlockUtil.java index b04083a..757590e 100644 --- a/plugin/src/main/java/net/thenextlvl/protect/util/BlockUtil.java +++ b/plugin/src/main/java/net/thenextlvl/protect/util/BlockUtil.java @@ -3,6 +3,7 @@ import org.bukkit.Material; public class BlockUtil { + @SuppressWarnings("deprecation") public static boolean isInteractable(Material type, Material item) { return switch (item) { case BRUSH -> switch (type) { @@ -14,79 +15,6 @@ public static boolean isInteractable(Material type, Material item) { default -> false; }; default -> false; - } || isInteractable(type); - } - - @SuppressWarnings("UnstableApiUsage") - public static boolean isInteractable(Material type) { - return switch (type) { - case ACACIA_BUTTON, ACACIA_DOOR, ACACIA_FENCE, ACACIA_FENCE_GATE, ACACIA_HANGING_SIGN, ACACIA_SIGN, - ACACIA_TRAPDOOR, ACACIA_WALL_HANGING_SIGN, ACACIA_WALL_SIGN, ANVIL, BAMBOO_BUTTON, BAMBOO_DOOR, - BAMBOO_FENCE, BAMBOO_FENCE_GATE, BAMBOO_HANGING_SIGN, BAMBOO_SIGN, BAMBOO_TRAPDOOR, - BAMBOO_WALL_HANGING_SIGN, BAMBOO_WALL_SIGN, BARREL, BEACON, BELL, - BIRCH_BUTTON, - BIRCH_DOOR, BIRCH_FENCE, BIRCH_FENCE_GATE, BIRCH_HANGING_SIGN, BIRCH_SIGN, BIRCH_TRAPDOOR, - BIRCH_WALL_HANGING_SIGN, BIRCH_WALL_SIGN, BLACK_BED, BLACK_CANDLE, BLACK_CANDLE_CAKE, - BLACK_SHULKER_BOX, BLAST_FURNACE, BLUE_BED, BLUE_CANDLE, BLUE_CANDLE_CAKE, BLUE_SHULKER_BOX, - BREWING_STAND, BROWN_BED, BROWN_CANDLE, BROWN_CANDLE_CAKE, BROWN_SHULKER_BOX, CAKE, CAMPFIRE, - CANDLE, - CANDLE_CAKE, CARTOGRAPHY_TABLE, CAULDRON, CAVE_VINES, CAVE_VINES_PLANT, CHAIN_COMMAND_BLOCK, - CHERRY_BUTTON, CHERRY_DOOR, CHERRY_FENCE, CHERRY_FENCE_GATE, CHERRY_HANGING_SIGN, CHERRY_SIGN, - CHERRY_TRAPDOOR, CHERRY_WALL_HANGING_SIGN, CHERRY_WALL_SIGN, CHEST, CHIPPED_ANVIL, - CHISELED_BOOKSHELF, - COMMAND_BLOCK, COMPARATOR, COMPOSTER, COPPER_DOOR, COPPER_TRAPDOOR, CRAFTER, CRAFTING_TABLE, - CRIMSON_BUTTON, CRIMSON_DOOR, CRIMSON_FENCE, CRIMSON_FENCE_GATE, CRIMSON_HANGING_SIGN, - CRIMSON_SIGN, - CRIMSON_TRAPDOOR, CRIMSON_WALL_HANGING_SIGN, CRIMSON_WALL_SIGN, CYAN_BED, CYAN_CANDLE, - CYAN_CANDLE_CAKE, CYAN_SHULKER_BOX, DAMAGED_ANVIL, DARK_OAK_BUTTON, DARK_OAK_DOOR, - DARK_OAK_FENCE, - DARK_OAK_FENCE_GATE, DARK_OAK_HANGING_SIGN, DARK_OAK_SIGN, DARK_OAK_TRAPDOOR, - DARK_OAK_WALL_HANGING_SIGN, DARK_OAK_WALL_SIGN, DAYLIGHT_DETECTOR, DECORATED_POT, - DEEPSLATE_REDSTONE_ORE, DISPENSER, DRAGON_EGG, DROPPER, ENCHANTING_TABLE, ENDER_CHEST, - EXPOSED_COPPER_DOOR, EXPOSED_COPPER_TRAPDOOR, FLETCHING_TABLE, FLOWER_POT, FURNACE, GRAY_BED, - GRAY_CANDLE, GRAY_CANDLE_CAKE, GRAY_SHULKER_BOX, GREEN_BED, GREEN_CANDLE, GREEN_CANDLE_CAKE, - GREEN_SHULKER_BOX, GRINDSTONE, HOPPER, JIGSAW, JUKEBOX, JUNGLE_BUTTON, - JUNGLE_DOOR, JUNGLE_FENCE, JUNGLE_FENCE_GATE, JUNGLE_HANGING_SIGN, JUNGLE_SIGN, JUNGLE_TRAPDOOR, - JUNGLE_WALL_HANGING_SIGN, JUNGLE_WALL_SIGN, LAVA_CAULDRON, LECTERN, LEVER, LIGHT, - LIGHT_BLUE_BED, - LIGHT_BLUE_CANDLE, LIGHT_BLUE_CANDLE_CAKE, LIGHT_BLUE_SHULKER_BOX, LIGHT_GRAY_BED, - LIGHT_GRAY_CANDLE, - LIGHT_GRAY_CANDLE_CAKE, LIGHT_GRAY_SHULKER_BOX, LIME_BED, LIME_CANDLE, LIME_CANDLE_CAKE, - LIME_SHULKER_BOX, LOOM, MAGENTA_BED, MAGENTA_CANDLE, MAGENTA_CANDLE_CAKE, MAGENTA_SHULKER_BOX, - MANGROVE_BUTTON, MANGROVE_DOOR, MANGROVE_FENCE, MANGROVE_FENCE_GATE, MANGROVE_HANGING_SIGN, - MANGROVE_SIGN, MANGROVE_TRAPDOOR, MANGROVE_WALL_HANGING_SIGN, MANGROVE_WALL_SIGN, MOVING_PISTON, - NETHER_BRICK_FENCE, NOTE_BLOCK, OAK_BUTTON, OAK_DOOR, OAK_FENCE, OAK_FENCE_GATE, - OAK_HANGING_SIGN, - OAK_SIGN, OAK_TRAPDOOR, OAK_WALL_HANGING_SIGN, OAK_WALL_SIGN, ORANGE_BED, ORANGE_CANDLE, - ORANGE_CANDLE_CAKE, ORANGE_SHULKER_BOX, OXIDIZED_COPPER_DOOR, OXIDIZED_COPPER_TRAPDOOR, - PINK_BED, - PINK_CANDLE, PINK_CANDLE_CAKE, PINK_SHULKER_BOX, POLISHED_BLACKSTONE_BUTTON, - POTTED_ACACIA_SAPLING, - POTTED_ALLIUM, POTTED_AZALEA_BUSH, POTTED_AZURE_BLUET, POTTED_BAMBOO, POTTED_BIRCH_SAPLING, - POTTED_BLUE_ORCHID, POTTED_BROWN_MUSHROOM, POTTED_CACTUS, POTTED_CHERRY_SAPLING, - POTTED_CORNFLOWER, - POTTED_CRIMSON_FUNGUS, POTTED_CRIMSON_ROOTS, POTTED_DANDELION, POTTED_DARK_OAK_SAPLING, - POTTED_DEAD_BUSH, POTTED_FERN, POTTED_FLOWERING_AZALEA_BUSH, POTTED_JUNGLE_SAPLING, - POTTED_LILY_OF_THE_VALLEY, POTTED_MANGROVE_PROPAGULE, POTTED_OAK_SAPLING, POTTED_ORANGE_TULIP, - POTTED_OXEYE_DAISY, POTTED_PINK_TULIP, POTTED_POPPY, POTTED_RED_MUSHROOM, POTTED_RED_TULIP, - POTTED_SPRUCE_SAPLING, POTTED_TORCHFLOWER, POTTED_WARPED_FUNGUS, POTTED_WARPED_ROOTS, - POTTED_WHITE_TULIP, POTTED_WITHER_ROSE, POWDER_SNOW_CAULDRON, PUMPKIN, PURPLE_BED, - PURPLE_CANDLE, - PURPLE_CANDLE_CAKE, PURPLE_SHULKER_BOX, REDSTONE_ORE, REDSTONE_WIRE, RED_BED, RED_CANDLE, - RED_CANDLE_CAKE, RED_SHULKER_BOX, REPEATER, REPEATING_COMMAND_BLOCK, RESPAWN_ANCHOR, - SHULKER_BOX, - SMITHING_TABLE, SMOKER, SOUL_CAMPFIRE, SPRUCE_BUTTON, SPRUCE_DOOR, SPRUCE_FENCE, - SPRUCE_FENCE_GATE, - SPRUCE_HANGING_SIGN, SPRUCE_SIGN, SPRUCE_TRAPDOOR, SPRUCE_WALL_HANGING_SIGN, SPRUCE_WALL_SIGN, - STONECUTTER, STONE_BUTTON, STRUCTURE_BLOCK, SWEET_BERRY_BUSH, TNT, TRAPPED_CHEST, WARPED_BUTTON, - WARPED_DOOR, WARPED_FENCE, WARPED_FENCE_GATE, WARPED_HANGING_SIGN, WARPED_SIGN, WARPED_TRAPDOOR, - WARPED_WALL_HANGING_SIGN, WARPED_WALL_SIGN, WATER_CAULDRON, WAXED_COPPER_DOOR, - WAXED_COPPER_TRAPDOOR, - WAXED_EXPOSED_COPPER_DOOR, WAXED_EXPOSED_COPPER_TRAPDOOR, WAXED_OXIDIZED_COPPER_DOOR, - WAXED_OXIDIZED_COPPER_TRAPDOOR, WAXED_WEATHERED_COPPER_DOOR, WAXED_WEATHERED_COPPER_TRAPDOOR, - WEATHERED_COPPER_DOOR, WEATHERED_COPPER_TRAPDOOR, WHITE_BED, WHITE_CANDLE, WHITE_CANDLE_CAKE, - WHITE_SHULKER_BOX, YELLOW_BED, YELLOW_CANDLE, YELLOW_CANDLE_CAKE, YELLOW_SHULKER_BOX -> true; - default -> false; - }; + } || type.isInteractable(); } }