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: