diff --git a/compatibility/build.gradle.kts b/compatibility/build.gradle.kts index 281d157c..7f9d3348 100644 --- a/compatibility/build.gradle.kts +++ b/compatibility/build.gradle.kts @@ -69,8 +69,8 @@ dependencies { compileOnly("io.th0rgal:oraxen:1.168.0") compileOnly("com.nexomc:nexo:1.7.3") compileOnly("com.github.brcdev-minecraft:shopgui-api:3.0.0") - compileOnly("net.momirealms:craft-engine-core:0.0.61") - compileOnly("net.momirealms:craft-engine-bukkit:0.0.61") + compileOnly("net.momirealms:craft-engine-core:0.0.65") + compileOnly("net.momirealms:craft-engine-bukkit:0.0.65") // entity compileOnly("io.lumine:Mythic-Dist:5.6.2") // eco diff --git a/compatibility/src/main/java/net/momirealms/customfishing/bukkit/integration/action/CEActionExpansion.java b/compatibility/src/main/java/net/momirealms/customfishing/bukkit/integration/action/CEActionExpansion.java new file mode 100644 index 00000000..eaf1e525 --- /dev/null +++ b/compatibility/src/main/java/net/momirealms/customfishing/bukkit/integration/action/CEActionExpansion.java @@ -0,0 +1,43 @@ +package net.momirealms.customfishing.bukkit.integration.action; + +import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; +import net.momirealms.craftengine.core.plugin.context.ContextHolder; +import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.event.EventFunctions; +import net.momirealms.craftengine.core.plugin.context.function.Function; +import net.momirealms.customfishing.api.BukkitCustomFishingPlugin; +import net.momirealms.customfishing.api.mechanic.action.Action; +import net.momirealms.customfishing.api.mechanic.action.ActionFactory; +import net.momirealms.customfishing.api.mechanic.misc.value.MathValue; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class CEActionExpansion implements ActionFactory { + + public static void register() { + BukkitCustomFishingPlugin.getInstance().getActionManager().registerAction(new CEActionExpansion(), "ce-function"); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public Action process(Object arg, MathValue mathValue) { + if (arg instanceof List list) { + List> functions = new ArrayList<>(); + for (Object o : list) { + if (o instanceof Map functionArguments) { + functions.add(EventFunctions.fromMap(functionArguments)); + } + } + return context -> { + PlayerOptionalContext ctx = PlayerOptionalContext.of(BukkitAdaptors.adapt(context.holder()), ContextHolder.builder()); + for (Function function : functions) { + function.run(ctx); + } + }; + } + return context -> {}; + } +} diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 80b2f747..a556091c 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -57,7 +57,6 @@ dependencies { tasks { shadowJar { - from(project(":compatibility:j21").tasks.jar.get().archiveFile) archiveFileName = "CustomFishing-${rootProject.properties["project_version"]}.jar" destinationDirectory.set(file("$rootDir/target")) relocate("net.kyori", "net.momirealms.customfishing.libraries") diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/integration/BukkitIntegrationManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/integration/BukkitIntegrationManager.java index 139a5dbc..1e140b77 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/integration/BukkitIntegrationManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/integration/BukkitIntegrationManager.java @@ -21,7 +21,9 @@ import net.momirealms.customfishing.api.BukkitCustomFishingPlugin; import net.momirealms.customfishing.api.integration.*; import net.momirealms.customfishing.bukkit.block.BukkitBlockManager; import net.momirealms.customfishing.bukkit.entity.BukkitEntityManager; +import net.momirealms.customfishing.bukkit.integration.action.CEActionExpansion; import net.momirealms.customfishing.bukkit.integration.block.ItemsAdderBlockProvider; +import net.momirealms.customfishing.bukkit.integration.block.NexoBlockProvider; import net.momirealms.customfishing.bukkit.integration.block.OraxenBlockProvider; import net.momirealms.customfishing.bukkit.integration.enchant.AdvancedEnchantmentsProvider; import net.momirealms.customfishing.bukkit.integration.enchant.VanillaEnchantmentsProvider; @@ -103,31 +105,12 @@ public class BukkitIntegrationManager implements IntegrationManager { registerEntityProvider(new ItemsAdderEntityProvider()); } if (isHooked("CraftEngine")) { - try { - Class ceItemProviderClass = Class.forName("net.momirealms.customfishing.bukkit.integration.item.CraftEngineItemProvider"); - Constructor itemProviderConstructor = ceItemProviderClass.getDeclaredConstructor(); - itemProviderConstructor.setAccessible(true); - ItemProvider itemProvider = (ItemProvider) itemProviderConstructor.newInstance(); - registerItemProvider(itemProvider); - } catch (ReflectiveOperationException e) { - plugin.getPluginLogger().warn("Failed to hook CraftEngine", e); - } + registerItemProvider(new CraftEngineItemProvider()); + CEActionExpansion.register(); } if (isHooked("Nexo")) { - try { - Class nexoItemProviderClass = Class.forName("net.momirealms.customfishing.bukkit.integration.item.NexoItemProvider"); - Constructor itemProviderConstructor = nexoItemProviderClass.getDeclaredConstructor(); - itemProviderConstructor.setAccessible(true); - ItemProvider itemProvider = (ItemProvider) itemProviderConstructor.newInstance(); - registerItemProvider(itemProvider); - Class nexoBlockProviderClass = Class.forName("net.momirealms.customfishing.bukkit.integration.block.NexoBlockProvider"); - Constructor nexoBlockProviderConstructor = nexoBlockProviderClass.getDeclaredConstructor(); - nexoBlockProviderConstructor.setAccessible(true); - BlockProvider blockProvider = (BlockProvider) nexoBlockProviderConstructor.newInstance(); - registerBlockProvider(blockProvider); - } catch (ReflectiveOperationException e) { - plugin.getPluginLogger().warn("Failed to hook Nexo", e); - } + registerItemProvider(new NexoItemProvider()); + registerBlockProvider(new NexoBlockProvider()); } if (isHooked("MMOItems")) { registerItemProvider(new MMOItemsItemProvider()); diff --git a/settings.gradle.kts b/settings.gradle.kts index 40b444e0..0d746ebb 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,4 +2,3 @@ rootProject.name = "CustomFishing" include(":api") include(":core") include(":compatibility") -include(":compatibility:j21")