diff --git a/pom.xml b/pom.xml index ef2ec68f6..bb4ae6589 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,11 @@ walshy-public https://repo.walshy.dev/public + + + imprex-repo + https://imprex.ingrim4.me/repository/maven-public/ + @@ -473,6 +478,20 @@ 2.4.6 provided + + + + * + * + + + + + net.imprex + orebfuscator-api + 1.0.0 + provided + diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/IntegrationsManager.java b/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/IntegrationsManager.java index 794751805..59c177360 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/IntegrationsManager.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/IntegrationsManager.java @@ -54,6 +54,7 @@ public class IntegrationsManager { private boolean isMcMMOInstalled = false; private boolean isClearLagInstalled = false; private boolean isItemsAdderInstalled = false; + private boolean isOrebfuscatorInstalled = false; // Addon support private boolean isChestTerminalInstalled = false; @@ -140,6 +141,12 @@ public class IntegrationsManager { SlimefunPlugin.logger().log(Level.WARNING, x, () -> "Failed to load Protection plugin integrations for Slimefun v" + SlimefunPlugin.getVersion()); } + // Orebfuscator Integration + load("Orebfuscator", integration -> { + new OrebfuscatorIntegration(plugin).register(); + isOrebfuscatorInstalled = true; + }); + isChestTerminalInstalled = isAddonInstalled("ChestTerminal"); } @@ -281,4 +288,7 @@ public class IntegrationsManager { return isChestTerminalInstalled; } + public boolean isOrebfuscatorInstalled() { + return isOrebfuscatorInstalled; + } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/OrebfuscatorIntegration.java b/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/OrebfuscatorIntegration.java new file mode 100644 index 000000000..867e70b04 --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/integrations/OrebfuscatorIntegration.java @@ -0,0 +1,63 @@ +package io.github.thebusybiscuit.slimefun4.integrations; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import javax.annotation.Nonnull; + +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +import io.github.thebusybiscuit.slimefun4.api.events.BlockPlacerPlaceEvent; +import io.github.thebusybiscuit.slimefun4.api.events.ExplosiveToolBreakBlocksEvent; +import io.github.thebusybiscuit.slimefun4.api.events.ReactorExplodeEvent; +import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; +import net.imprex.orebfuscator.api.OrebfuscatorService; + +/** + * + * This handles block breaks with orebfuscator + * + * @author NgLoader + * + */ +public class OrebfuscatorIntegration implements Listener { + + private final SlimefunPlugin plugin; + private OrebfuscatorService service; + + public OrebfuscatorIntegration(@Nonnull SlimefunPlugin plugin) { + this.plugin = plugin; + } + + /** + * Init orebfuscation service and register listener + */ + public void register() { + this.service = Bukkit.getServer().getServicesManager().getRegistration(OrebfuscatorService.class).getProvider(); + + plugin.getServer().getPluginManager().registerEvents(this, this.plugin); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlacerPlace(BlockPlacerPlaceEvent event) { + this.service.deobfuscate(Arrays.asList(event.getBlock(), event.getBlockPlacer())); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onExplosiveToolBreakBlocks(ExplosiveToolBreakBlocksEvent event) { + Set blocks = new HashSet<>(); + blocks.addAll(event.getAdditionalBlocks()); + blocks.add(event.getPrimaryBlock()); + this.service.deobfuscate(blocks); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onReactorExplode(ReactorExplodeEvent event) { + this.service.deobfuscate(Arrays.asList(event.getLocation().getBlock())); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f6bc1c3e2..9003c8772 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -18,6 +18,7 @@ softdepend: - ClearLag - mcMMO - ItemsAdder +- Orebfuscator # We hook into these plugins too, but they depend on Slimefun. loadBefore: