From 20e2081abdbe94fedcf2a6a65e9440d281da537f Mon Sep 17 00:00:00 2001 From: NotAlexNoyle Date: Mon, 9 Dec 2024 09:31:17 -0500 Subject: [PATCH] Initial release --- README.md | 33 +--- build.gradle | 25 +-- pom.xml | 168 ------------------ settings.gradle.kts | 1 + .../java/net/coreprotect/CoreProtect.java | 8 - .../net/coreprotect/bukkit/BukkitAdapter.java | 4 +- .../net/coreprotect/bukkit/Bukkit_v1_21.java | 59 ------ .../coreprotect/command/WorldEditHandler.java | 6 +- .../net/coreprotect/paper/PaperAdapter.java | 4 +- .../net/coreprotect/spigot/SpigotAdapter.java | 2 - .../java/net/coreprotect/utility/Util.java | 48 ++--- .../worldedit/CoreProtectLogger.java | 75 ++------ .../worldedit/WorldEditBlockState.java | 1 - src/main/resources/plugin.yml | 4 +- 14 files changed, 64 insertions(+), 374 deletions(-) delete mode 100755 pom.xml create mode 100644 settings.gradle.kts delete mode 100644 src/main/java/net/coreprotect/bukkit/Bukkit_v1_21.java mode change 100755 => 100644 src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java diff --git a/README.md b/README.md index 7e6a30c..997b221 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,22 @@ ![CoreProtect](https://userfolio.com/uploads/coreprotect-banner-v19.png) [![Artistic License 2.0](https://img.shields.io/github/license/PlayPro/CoreProtect?&logo=github)](LICENSE) -[![GitHub Workflows](https://github.com/PlayPro/CoreProtect/actions/workflows/build.yml/badge.svg)](https://github.com/PlayPro/CoreProtect/actions) -[![Netlify Status](https://img.shields.io/netlify/c1d26a0f-65c5-4e4b-95d7-e08af671ab67)](https://app.netlify.com/sites/coreprotect/deploys) -[![CodeFactor](https://www.codefactor.io/repository/github/playpro/coreprotect/badge)](https://www.codefactor.io/repository/github/playpro/coreprotect) -[![Join us on Discord](https://img.shields.io/discord/348680641560313868.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/b4DZ4jy) -CoreProtect +CoreProtect-OG =========== -CoreProtect is a blazing fast data logging and anti-griefing tool for Minecraft servers. +CoreProtect-OG is a soft fork of [CoreProtect](https://github.com/PlayPro/CoreProtect/) maintained for 1.19.4 by [TrueOG Network](https://true-og.net). CoreProtect is a blazing fast data logging and anti-griefing tool for Minecraft servers. For a detailed description of the plugin, please visit [coreprotect.net](https://coreprotect.net). -| Quick Links | | -| --- | --- | -| CoreProtect Discord: | [discord.gg/b4DZ4jy](https://discord.gg/b4DZ4jy) | -| CoreProtect Patreon: | [patreon.com/coreprotect](https://www.patreon.com/coreprotect) | -| CoreProtect Documentation: | [docs.coreprotect.net](https://docs.coreprotect.net) | -| Downloads for MC 1.14 - 1.20: | [coreprotect.net/latest](https://coreprotect.net/latest/) | -| Downloads for MC 1.8 - 1.12: | [coreprotect.net/legacy](https://coreprotect.net/legacy/) | -bStats ------- -[![bStats Graph Data](https://bstats.org/signatures/bukkit/CoreProtect.svg)](https://bstats.org/plugin/bukkit/CoreProtect) +# Changes from CoreProtect: +- Updated gradle to 8.8. +- Fixed build +- Replaced FAWE with standard WorldEdit +- Removed 1.21 code. +- Replaced deprecated function calls. + API ------ @@ -45,11 +38,3 @@ Maven provided ``` - -Contributing ------- -CoreProtect is an open source project, and gladly accepts community contributions. - -If you'd like to contribute, please read our contributing guidelines here: [CONTRIBUTING.md](CONTRIBUTING.md) - -[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](CONTRIBUTING.md#code-of-conduct) \ No newline at end of file diff --git a/build.gradle b/build.gradle index d22c2de..b740245 100644 --- a/build.gradle +++ b/build.gradle @@ -11,30 +11,22 @@ String projectVersion = '22.4' String projectBranch = '' version = projectVersion // `version` might be modified, we don't always want that (e.g. plugin.yml) description = 'Provides block protection for your server.' -sourceCompatibility = '21' - -if (System.getenv("BUILD_NUMBER") != null) { - // Being built in Jenkins, append Build ID - version += "-${System.getenv("BUILD_NUMBER")}" -} else if (!(version ==~ '^[^.]*\\.[^.]*\\.[^.]*$')) { // Thanks https://stackoverflow.com/a/9949200/1709894 - // Append the Git hash if 'version' has less than two periods - version += "-${gitVersion()}" -} +sourceCompatibility = '17' logger.info("Building version $version") repositories { - maven { url = 'https://hub.spigotmc.org/nexus/content/groups/public/' } - maven { url = 'https://repo.papermc.io/repository/maven-public/' } - maven { url = 'https://repo.codemc.org/repository/maven-public/' } + maven { url = 'https://hub.spigotmc.org/nexus/content/groups/public' } + maven { url = 'https://repo.papermc.io/repository/maven-public' } + maven { url = 'https://repo.codemc.org/repository/maven-public' } + maven { url = 'https://maven.enginehub.org/repo' } } dependencies { implementation(platform("com.intellectualsites.bom:bom-newest:1.45")) // Ref: https://github.com/IntellectualSites/bom - compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") - compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") - compileOnly 'io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT' - implementation 'org.bstats:bstats-bukkit-lite:1.8' + compileOnly 'io.papermc.paper:paper-api:1.19-R0.1-SNAPSHOT' + compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.3.0-SNAPSHOT' implementation 'com.zaxxer:HikariCP:5.0.1' + implementation("com.github.oshi:oshi-core:6.6.5") } jar { @@ -48,7 +40,6 @@ artifacts { shadowJar { dependencies { // #toString because #getGroup technically returns an Object - relocate('org.bstats', project.group.toString()) relocate('com.zaxxer', project.group.toString()) exclude(dependency('com.google.code.gson:.*')) exclude(dependency('org.intellij:.*')) diff --git a/pom.xml b/pom.xml deleted file mode 100755 index 13896ad..0000000 --- a/pom.xml +++ /dev/null @@ -1,168 +0,0 @@ - - 4.0.0 - net.coreprotect - CoreProtect - 22.4 - - - UTF-8 - - - - - src/main/java - - **/*.java - - - - src/main/resources - true - - - - - maven-compiler-plugin - 3.8.1 - - 11 - 11 - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - - mojang - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - package - - shade - - - - - *:*:*:* - - **/*.java - **/*.c - META-INF/maven/** - META-INF/services/** - - - - - - com.google.code.gson:* - org.intellij:* - org.jetbrains:* - org.slf4j:* - org.apache.logging.log4j:* - net.java.dev.jna:* - - - - - org.bstats - net.coreprotect - - - com.zaxxer - net.coreprotect - - - - - - - - - - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - paper-repo - https://repo.papermc.io/repository/maven-public/ - - - codemc-repo - https://repo.codemc.org/repository/maven-public/ - - - - - - com.intellectualsites.bom - bom-newest - 1.45 - import - pom - - - - - - - io.papermc.paper - paper-api - 1.21.1-R0.1-SNAPSHOT - provided - - - org.bstats - bstats-bukkit-lite - 1.8 - compile - - - com.fastasyncworldedit - FastAsyncWorldEdit-Core - provided - - - com.fastasyncworldedit - FastAsyncWorldEdit-Bukkit - provided - - - FastAsyncWorldEdit-Core - * - - - - - com.zaxxer - HikariCP - 5.0.1 - - - com.github.oshi - oshi-core - 6.6.2 - - - org.apache.logging.log4j - log4j-core - 2.23.1 - - - \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..7a32ad6 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "CoreProtect-OG" diff --git a/src/main/java/net/coreprotect/CoreProtect.java b/src/main/java/net/coreprotect/CoreProtect.java index 4e0b58d..97a2090 100755 --- a/src/main/java/net/coreprotect/CoreProtect.java +++ b/src/main/java/net/coreprotect/CoreProtect.java @@ -4,7 +4,6 @@ import java.io.File; import java.util.Iterator; import java.util.Map.Entry; -import org.bstats.bukkit.MetricsLite; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.block.data.BlockData; @@ -115,13 +114,6 @@ public final class CoreProtect extends JavaPlugin { Consumer.startConsumer(); - // Enabling bStats - try { - new MetricsLite(this, 2876); - } - catch (Exception e) { - // Failed to connect to bStats server or something else went wrong. - } } else { Chat.console(Phrase.build(Phrase.ENABLE_FAILED, ConfigHandler.EDITION_NAME)); diff --git a/src/main/java/net/coreprotect/bukkit/BukkitAdapter.java b/src/main/java/net/coreprotect/bukkit/BukkitAdapter.java index 33ffda1..1643e01 100644 --- a/src/main/java/net/coreprotect/bukkit/BukkitAdapter.java +++ b/src/main/java/net/coreprotect/bukkit/BukkitAdapter.java @@ -43,7 +43,6 @@ public class BukkitAdapter implements BukkitInterface { public static final int BUKKIT_V1_18 = 18; public static final int BUKKIT_V1_19 = 19; public static final int BUKKIT_V1_20 = 20; - public static final int BUKKIT_V1_21 = 21; public static void loadAdapter() { switch (ConfigHandler.SERVER_VERSION) { @@ -65,9 +64,8 @@ public class BukkitAdapter implements BukkitInterface { case BUKKIT_V1_20: BukkitAdapter.ADAPTER = new Bukkit_v1_20(); break; - case BUKKIT_V1_21: default: - BukkitAdapter.ADAPTER = new Bukkit_v1_21(); + BukkitAdapter.ADAPTER = new Bukkit_v1_19(); break; } } diff --git a/src/main/java/net/coreprotect/bukkit/Bukkit_v1_21.java b/src/main/java/net/coreprotect/bukkit/Bukkit_v1_21.java deleted file mode 100644 index 09f5cf0..0000000 --- a/src/main/java/net/coreprotect/bukkit/Bukkit_v1_21.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.coreprotect.bukkit; - -import java.util.Arrays; -import java.util.HashSet; - -import org.bukkit.Bukkit; -import org.bukkit.Keyed; -import org.bukkit.Material; -import org.bukkit.NamespacedKey; -import org.bukkit.Tag; -import org.bukkit.entity.EntityType; - -import net.coreprotect.model.BlockGroup; - -public class Bukkit_v1_21 extends Bukkit_v1_20 implements BukkitInterface { - - public Bukkit_v1_21() { - BlockGroup.CONTAINERS = new HashSet<>(Arrays.asList(Material.JUKEBOX, Material.DISPENSER, Material.CHEST, Material.FURNACE, Material.BREWING_STAND, Material.TRAPPED_CHEST, Material.HOPPER, Material.DROPPER, Material.ARMOR_STAND, Material.ITEM_FRAME, Material.SHULKER_BOX, Material.BLACK_SHULKER_BOX, Material.BLUE_SHULKER_BOX, Material.BROWN_SHULKER_BOX, Material.CYAN_SHULKER_BOX, Material.GRAY_SHULKER_BOX, Material.GREEN_SHULKER_BOX, Material.LIGHT_BLUE_SHULKER_BOX, Material.LIME_SHULKER_BOX, Material.MAGENTA_SHULKER_BOX, Material.ORANGE_SHULKER_BOX, Material.PINK_SHULKER_BOX, Material.PURPLE_SHULKER_BOX, Material.RED_SHULKER_BOX, Material.LIGHT_GRAY_SHULKER_BOX, Material.WHITE_SHULKER_BOX, Material.YELLOW_SHULKER_BOX, Material.BARREL, Material.BLAST_FURNACE, Material.SMOKER, Material.LECTERN, Material.CHISELED_BOOKSHELF, Material.DECORATED_POT, Material.CRAFTER)); - BlockGroup.INTERACT_BLOCKS = new HashSet<>(Arrays.asList(Material.SPRUCE_FENCE_GATE, Material.BIRCH_FENCE_GATE, Material.JUNGLE_FENCE_GATE, Material.DARK_OAK_FENCE_GATE, Material.MANGROVE_FENCE_GATE, Material.ACACIA_FENCE_GATE, Material.DISPENSER, Material.NOTE_BLOCK, Material.CHEST, Material.FURNACE, Material.LEVER, Material.REPEATER, Material.MANGROVE_TRAPDOOR, Material.ACACIA_TRAPDOOR, Material.BIRCH_TRAPDOOR, Material.DARK_OAK_TRAPDOOR, Material.JUNGLE_TRAPDOOR, Material.SPRUCE_TRAPDOOR, Material.OAK_TRAPDOOR, Material.OAK_FENCE_GATE, Material.BREWING_STAND, Material.ANVIL, Material.CHIPPED_ANVIL, Material.DAMAGED_ANVIL, Material.ENDER_CHEST, Material.TRAPPED_CHEST, Material.COMPARATOR, Material.HOPPER, Material.DROPPER, Material.SHULKER_BOX, Material.BLACK_SHULKER_BOX, Material.BLUE_SHULKER_BOX, Material.BROWN_SHULKER_BOX, Material.CYAN_SHULKER_BOX, Material.GRAY_SHULKER_BOX, Material.GREEN_SHULKER_BOX, Material.LIGHT_BLUE_SHULKER_BOX, Material.LIME_SHULKER_BOX, Material.MAGENTA_SHULKER_BOX, Material.ORANGE_SHULKER_BOX, Material.PINK_SHULKER_BOX, Material.PURPLE_SHULKER_BOX, Material.RED_SHULKER_BOX, Material.LIGHT_GRAY_SHULKER_BOX, Material.WHITE_SHULKER_BOX, Material.YELLOW_SHULKER_BOX, Material.BARREL, Material.BLAST_FURNACE, Material.GRINDSTONE, Material.LOOM, Material.SMOKER, Material.CRAFTING_TABLE, Material.CARTOGRAPHY_TABLE, Material.ENCHANTING_TABLE, Material.SMITHING_TABLE, Material.STONECUTTER, Material.CRIMSON_FENCE_GATE, Material.WARPED_FENCE_GATE, Material.CRIMSON_TRAPDOOR, Material.WARPED_TRAPDOOR, Material.CRAFTER)); - BlockGroup.UPDATE_STATE = new HashSet<>(Arrays.asList(Material.TORCH, Material.WALL_TORCH, Material.REDSTONE_WIRE, Material.RAIL, Material.POWERED_RAIL, Material.DETECTOR_RAIL, Material.FURNACE, Material.BLAST_FURNACE, Material.SMOKER, Material.LEVER, Material.REDSTONE_TORCH, Material.REDSTONE_WALL_TORCH, Material.GLOWSTONE, Material.JACK_O_LANTERN, Material.REPEATER, Material.REDSTONE_LAMP, Material.BEACON, Material.COMPARATOR, Material.DAYLIGHT_DETECTOR, Material.REDSTONE_BLOCK, Material.HOPPER, Material.CHEST, Material.TRAPPED_CHEST, Material.ACTIVATOR_RAIL, Material.SOUL_TORCH, Material.SOUL_WALL_TORCH, Material.SHROOMLIGHT, Material.RESPAWN_ANCHOR, Material.CRYING_OBSIDIAN, Material.TARGET, Material.SMALL_AMETHYST_BUD, Material.MEDIUM_AMETHYST_BUD, Material.LARGE_AMETHYST_BUD, Material.AMETHYST_CLUSTER, Material.CAVE_VINES, Material.CAVE_VINES_PLANT, Material.GLOW_LICHEN, Material.LIGHT, Material.LAVA_CAULDRON, Material.CHISELED_BOOKSHELF, Material.CRAFTER)); - - for (Material value : Tag.TRAPDOORS.getValues()) { - if (value == Material.IRON_TRAPDOOR) { - continue; - } - - if (!BlockGroup.INTERACT_BLOCKS.contains(value)) { - BlockGroup.INTERACT_BLOCKS.add(value); - } - if (!BlockGroup.SAFE_INTERACT_BLOCKS.contains(value)) { - BlockGroup.SAFE_INTERACT_BLOCKS.add(value); - } - } - } - - @Override - public EntityType getEntityType(Material material) { - switch (material) { - case END_CRYSTAL: - return EntityType.valueOf("END_CRYSTAL"); - default: - return EntityType.UNKNOWN; - } - } - - @Override - public Object getRegistryKey(Object value) { - return ((Keyed) value).getKey().toString(); - } - - @Override - public Object getRegistryValue(String key, Object tClass) { - NamespacedKey namespacedKey = NamespacedKey.fromString(key); - // return RegistryAccess.registryAccess().getRegistry(RegistryKey.CAT_VARIANT).get((NamespacedKey)value); - return Bukkit.getRegistry((Class) tClass).get(namespacedKey); - - } - -} diff --git a/src/main/java/net/coreprotect/command/WorldEditHandler.java b/src/main/java/net/coreprotect/command/WorldEditHandler.java index 7040e21..abb6563 100755 --- a/src/main/java/net/coreprotect/command/WorldEditHandler.java +++ b/src/main/java/net/coreprotect/command/WorldEditHandler.java @@ -24,9 +24,9 @@ public class WorldEditHandler { Region region = session.getSelection(world); if (region != null && world.getName().equals(((Player) user).getWorld().getName())) { BlockVector3 block = region.getMinimumPoint(); - int x = block.getBlockX(); - int y = block.getBlockY(); - int z = block.getBlockZ(); + int x = block.x(); + int y = block.y(); + int z = block.z(); int width = region.getWidth(); int height = region.getHeight(); int length = region.getLength(); diff --git a/src/main/java/net/coreprotect/paper/PaperAdapter.java b/src/main/java/net/coreprotect/paper/PaperAdapter.java index e9d0031..986edd6 100644 --- a/src/main/java/net/coreprotect/paper/PaperAdapter.java +++ b/src/main/java/net/coreprotect/paper/PaperAdapter.java @@ -26,7 +26,6 @@ public class PaperAdapter implements PaperInterface { public static final int PAPER_V1_18 = BukkitAdapter.BUKKIT_V1_18; public static final int PAPER_V1_19 = BukkitAdapter.BUKKIT_V1_19; public static final int PAPER_V1_20 = BukkitAdapter.BUKKIT_V1_20; - public static final int PAPER_V1_21 = BukkitAdapter.BUKKIT_V1_21; public static void loadAdapter() { int paperVersion = ConfigHandler.SERVER_VERSION; @@ -50,9 +49,8 @@ public class PaperAdapter implements PaperInterface { PaperAdapter.ADAPTER = new Paper_v1_17(); break; case PAPER_V1_20: - case PAPER_V1_21: default: - PaperAdapter.ADAPTER = new Paper_v1_20(); + PaperAdapter.ADAPTER = new Paper_v1_17(); break; } } diff --git a/src/main/java/net/coreprotect/spigot/SpigotAdapter.java b/src/main/java/net/coreprotect/spigot/SpigotAdapter.java index 669bc0b..a17b216 100644 --- a/src/main/java/net/coreprotect/spigot/SpigotAdapter.java +++ b/src/main/java/net/coreprotect/spigot/SpigotAdapter.java @@ -21,7 +21,6 @@ public class SpigotAdapter implements SpigotInterface { public static final int SPIGOT_V1_18 = BukkitAdapter.BUKKIT_V1_18; public static final int SPIGOT_V1_19 = BukkitAdapter.BUKKIT_V1_19; public static final int SPIGOT_V1_20 = BukkitAdapter.BUKKIT_V1_20; - public static final int SPIGOT_V1_21 = BukkitAdapter.BUKKIT_V1_21; public static void loadAdapter() { int spigotVersion = ConfigHandler.SERVER_VERSION; @@ -41,7 +40,6 @@ public class SpigotAdapter implements SpigotInterface { case SPIGOT_V1_18: case SPIGOT_V1_19: case SPIGOT_V1_20: - case SPIGOT_V1_21: default: SpigotAdapter.ADAPTER = new SpigotHandler(); break; diff --git a/src/main/java/net/coreprotect/utility/Util.java b/src/main/java/net/coreprotect/utility/Util.java index c6fdda6..e5f68cb 100755 --- a/src/main/java/net/coreprotect/utility/Util.java +++ b/src/main/java/net/coreprotect/utility/Util.java @@ -16,13 +16,13 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.core.config.Configurator; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -120,26 +120,32 @@ public class Util extends Queue { return name; } - public static CentralProcessor getProcessorInfo() { - CentralProcessor result = null; - try { - Class.forName("com.sun.jna.Platform"); - if (System.getProperty("os.name").startsWith("Windows") && !System.getProperty("sun.arch.data.model").equals("64")) { - Class.forName("com.sun.jna.platform.win32.Win32Exception"); - } - else if (System.getProperty("os.name").toLowerCase().contains("android") || System.getProperty("java.runtime.name").toLowerCase().contains("android")) { - return null; - } - Configurator.setLevel("oshi.hardware.common.AbstractCentralProcessor", Level.OFF); - SystemInfo systemInfo = new SystemInfo(); - result = systemInfo.getHardware().getProcessor(); - } - catch (Exception e) { - // unable to read processor information - } + public static CentralProcessor getProcessorInfo() { + CentralProcessor result = null; + try { + Class.forName("com.sun.jna.Platform"); + if (System.getProperty("os.name").startsWith("Windows") + && !System.getProperty("sun.arch.data.model").equals("64")) { + Class.forName("com.sun.jna.platform.win32.Win32Exception"); + } else if (System.getProperty("os.name").toLowerCase().contains("android") + || System.getProperty("java.runtime.name").toLowerCase().contains("android")) { + return null; + } + + // Disable logging for the OSHI class + Logger logger = Logger.getLogger("oshi.hardware.common.AbstractCentralProcessor"); + logger.setLevel(Level.OFF); + + // Retrieve processor information + SystemInfo systemInfo = new SystemInfo(); + result = systemInfo.getHardware().getProcessor(); + } catch (Exception e) { + // Unable to read processor information + } + + return result; + } - return result; - } public static int getBlockId(Material material) { if (material == null) { diff --git a/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java b/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java old mode 100755 new mode 100644 index d5dc87b..444e882 --- a/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java +++ b/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java @@ -4,16 +4,13 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extent.AbstractDelegateExtent; import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.function.mask.Mask; -import com.sk89q.worldedit.function.pattern.Pattern; import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; @@ -23,6 +20,7 @@ import net.coreprotect.config.Config; import net.coreprotect.utility.Util; public class CoreProtectLogger extends AbstractDelegateExtent { + private final Actor eventActor; private final World eventWorld; private final Extent eventExtent; @@ -36,79 +34,30 @@ public class CoreProtectLogger extends AbstractDelegateExtent { @Override public > boolean setBlock(BlockVector3 position, T block) throws WorldEditException { - org.bukkit.World world = BukkitAdapter.adapt(eventWorld); + if (!(eventWorld instanceof BukkitWorld)) { + return eventExtent.setBlock(position, block); + } + org.bukkit.World world = ((BukkitWorld) eventWorld).getWorld(); if (!Config.getConfig(world).WORLDEDIT) { - if (CoreProtectEditSessionEvent.isFAWE()) { - return eventExtent.setBlock(position.getX(), position.getY(), position.getZ(), block); - } - else { - return eventExtent.setBlock(position, block); - } + return eventExtent.setBlock(position, block); } BlockState oldBlock = eventExtent.getBlock(position); Material oldType = BukkitAdapter.adapt(oldBlock.getBlockType()); - Location location = new Location(world, position.getBlockX(), position.getBlockY(), position.getBlockZ()); + Location location = new Location(world, position.x(), position.y(), position.z()); BaseBlock baseBlock = WorldEditLogger.getBaseBlock(eventExtent, position, location, oldType, oldBlock); // No clear way to get container content data from within the WorldEdit API // Data may be available by converting oldBlock.toBaseBlock().getNbtData() // e.g. BaseBlock block = eventWorld.getBlock(position); - ItemStack[] containerData = CoreProtectEditSessionEvent.isFAWE() ? null : Util.getContainerContents(oldType, null, location); + ItemStack[] containerData = Util.getContainerContents(oldType, null, location); - if (CoreProtectEditSessionEvent.isFAWE()) { - if (eventExtent.setBlock(position.getX(), position.getY(), position.getZ(), block)) { - WorldEditLogger.postProcess(eventExtent, eventActor, position, location, block, baseBlock, oldType, oldBlock, containerData); - return true; - } - } - else { - if (eventExtent.setBlock(position, block)) { - WorldEditLogger.postProcess(eventExtent, eventActor, position, location, block, baseBlock, oldType, oldBlock, containerData); - return true; - } + if (eventExtent.setBlock(position, block)) { + WorldEditLogger.postProcess(eventExtent, eventActor, position, location, block, baseBlock, oldType, oldBlock, containerData); + return true; } return false; } - @Override - public > boolean setBlock(int x, int y, int z, T block) throws WorldEditException { - return this.setBlock(BlockVector3.at(x, y, z), block); - } - - @Override - public int replaceBlocks(final Region region, final Mask mask, final Pattern pattern) throws MaxChangedBlocksException { - org.bukkit.World world = BukkitAdapter.adapt(eventWorld); - if (!Config.getConfig(world).WORLDEDIT) { - return eventExtent.replaceBlocks(region, mask, pattern); - } - processPatternToBlocks(world, region, pattern); - return eventExtent.replaceBlocks(region, mask, pattern); - } - - @Override - public int setBlocks(Region region, Pattern pattern) throws MaxChangedBlocksException { - org.bukkit.World world = BukkitAdapter.adapt(eventWorld); - if (!Config.getConfig(world).WORLDEDIT) { - return eventExtent.setBlocks(region, pattern); - } - processPatternToBlocks(world, region, pattern); - return eventExtent.setBlocks(region, pattern); - } - - private void processPatternToBlocks(org.bukkit.World world, Region region, Pattern pattern) { - for (BlockVector3 position : region.clone()) { - BlockState oldBlock = eventExtent.getBlock(position); - Material oldType = BukkitAdapter.adapt(oldBlock.getBlockType()); - Location location = new Location(world, position.getBlockX(), position.getBlockY(), position.getBlockZ()); - BaseBlock baseBlock = WorldEditLogger.getBaseBlock(eventExtent, position, location, oldType, oldBlock); - - // No clear way to get container content data from within the WorldEdit API - // Data may be available by converting oldBlock.toBaseBlock().getNbtData() - // e.g. BaseBlock block = eventWorld.getBlock(position); - ItemStack[] containerData = CoreProtectEditSessionEvent.isFAWE() ? null : Util.getContainerContents(oldType, null, location); - WorldEditLogger.postProcess(eventExtent, eventActor, position, location, pattern.applyBlock(position), baseBlock, oldType, oldBlock, containerData); - } - } } diff --git a/src/main/java/net/coreprotect/worldedit/WorldEditBlockState.java b/src/main/java/net/coreprotect/worldedit/WorldEditBlockState.java index 86c1a3d..13430eb 100644 --- a/src/main/java/net/coreprotect/worldedit/WorldEditBlockState.java +++ b/src/main/java/net/coreprotect/worldedit/WorldEditBlockState.java @@ -211,7 +211,6 @@ public final class WorldEditBlockState implements BlockState { return null; } - @Override public BlockState copy(Location location) { // TODO Auto-generated method stub return null; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index fbb1c9d..98678fb 100755 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,4 @@ -name: CoreProtect +name: CoreProtect-OG main: net.coreprotect.CoreProtect version: ${project.version} branch: ${project.branch} @@ -143,4 +143,4 @@ permissions: default: op coreprotect.networking: description: Has permission to use the networking API - default: op \ No newline at end of file + default: op