From 9f379ec601c85812ab0aa65b9a10eec81386dd89 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Mon, 29 Apr 2024 14:35:29 +0800 Subject: [PATCH] [Compatibility] Oraxen 2.0 support --- .../customcrops/api/manager/ItemManager.java | 50 ++++++++ .../item}/AbstractCustomListener.java | 11 +- .../api}/mechanic/item/CustomProvider.java | 9 +- .../api}/util/DisplayEntityUtils.java | 2 +- .../customcrops/api}/util/EventUtils.java | 2 +- .../customcrops/api/util/StringUtils.java | 15 +++ build.gradle.kts | 3 +- oraxen-legacy/.gitignore | 42 +++++++ oraxen-legacy/build.gradle.kts | 5 + .../oraxenlegacy/LegacyOraxenListener.java | 108 ++++++++++++++++++ .../oraxenlegacy/LegacyOraxenProvider.java | 104 +++++++++++++++++ plugin/build.gradle.kts | 3 +- .../customcrops/CustomCropsPluginImpl.java | 2 +- .../mechanic/action/ActionManagerImpl.java | 2 +- .../mechanic/item/ItemManagerImpl.java | 24 +++- .../custom/crucible/CrucibleListener.java | 2 +- .../custom/crucible/CrucibleProvider.java | 2 +- .../custom/itemsadder/ItemsAdderListener.java | 2 +- .../custom/itemsadder/ItemsAdderProvider.java | 2 +- .../item/custom/oraxen/OraxenListener.java | 18 +-- .../item/custom/oraxen/OraxenProvider.java | 4 +- .../customcrops/mechanic/world/CWorld.java | 2 +- settings.gradle | 1 + 23 files changed, 378 insertions(+), 37 deletions(-) rename {plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom => api/src/main/java/net/momirealms/customcrops/api/mechanic/item}/AbstractCustomListener.java (97%) rename {plugin/src/main/java/net/momirealms/customcrops => api/src/main/java/net/momirealms/customcrops/api}/mechanic/item/CustomProvider.java (95%) rename {plugin/src/main/java/net/momirealms/customcrops => api/src/main/java/net/momirealms/customcrops/api}/util/DisplayEntityUtils.java (90%) rename {plugin/src/main/java/net/momirealms/customcrops => api/src/main/java/net/momirealms/customcrops/api}/util/EventUtils.java (96%) create mode 100644 api/src/main/java/net/momirealms/customcrops/api/util/StringUtils.java create mode 100644 oraxen-legacy/.gitignore create mode 100644 oraxen-legacy/build.gradle.kts create mode 100644 oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenListener.java create mode 100644 oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenProvider.java diff --git a/api/src/main/java/net/momirealms/customcrops/api/manager/ItemManager.java b/api/src/main/java/net/momirealms/customcrops/api/manager/ItemManager.java index d0e7d16..9ba33b6 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/manager/ItemManager.java +++ b/api/src/main/java/net/momirealms/customcrops/api/manager/ItemManager.java @@ -23,13 +23,16 @@ import net.momirealms.customcrops.api.mechanic.item.*; import net.momirealms.customcrops.api.mechanic.misc.CRotation; import org.bukkit.Location; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.List; public interface ItemManager extends Reloadable { @@ -325,6 +328,53 @@ public interface ItemManager extends Reloadable { @Nullable Crop.Stage getCropStageByStageID(String id); + void handlePlayerInteractBlock( + Player player, + Block clickedBlock, + BlockFace clickedFace, + Cancellable event + ); + + void handlePlayerInteractAir( + Player player, + Cancellable event + ); + + void handlePlayerBreakBlock( + Player player, + Block brokenBlock, + String blockID, + Cancellable event + ); + + void handlePlayerInteractFurniture( + Player player, + Location location, + String id, + Entity baseEntity, + Cancellable event + ); + + void handlePlayerPlaceFurniture( + Player player, + Location location, + String id, + Cancellable event + ); + + void handlePlayerBreakFurniture( + Player player, + Location location, + String id, + Cancellable event + ); + + void handlePlayerPlaceBlock(Player player, Block block, String blockID, Cancellable event); + + void handleEntityTramplingBlock(Entity entity, Block block, Cancellable event); + + void handleExplosion(Entity entity, List blocks, Cancellable event); + /** * Update a pot's block state * diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/AbstractCustomListener.java b/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/AbstractCustomListener.java similarity index 97% rename from plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/AbstractCustomListener.java rename to api/src/main/java/net/momirealms/customcrops/api/mechanic/item/AbstractCustomListener.java index 76f2584..f748704 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/AbstractCustomListener.java +++ b/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/AbstractCustomListener.java @@ -15,19 +15,18 @@ * along with this program. If not, see . */ -package net.momirealms.customcrops.mechanic.item.custom; +package net.momirealms.customcrops.api.mechanic.item; import net.momirealms.customcrops.api.CustomCropsPlugin; import net.momirealms.customcrops.api.event.BoneMealDispenseEvent; import net.momirealms.customcrops.api.manager.ConfigManager; +import net.momirealms.customcrops.api.manager.ItemManager; import net.momirealms.customcrops.api.manager.VersionManager; import net.momirealms.customcrops.api.manager.WorldManager; -import net.momirealms.customcrops.api.mechanic.item.*; import net.momirealms.customcrops.api.mechanic.requirement.State; import net.momirealms.customcrops.api.mechanic.world.SimpleLocation; import net.momirealms.customcrops.api.mechanic.world.level.WorldCrop; -import net.momirealms.customcrops.mechanic.item.ItemManagerImpl; -import net.momirealms.customcrops.util.EventUtils; +import net.momirealms.customcrops.api.util.EventUtils; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -56,10 +55,10 @@ import java.util.Optional; public abstract class AbstractCustomListener implements Listener { - protected ItemManagerImpl itemManager; + protected ItemManager itemManager; private final HashSet CUSTOM_MATERIAL = new HashSet<>(); - public AbstractCustomListener(ItemManagerImpl itemManager) { + public AbstractCustomListener(ItemManager itemManager) { this.itemManager = itemManager; this.CUSTOM_MATERIAL.addAll( List.of( diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/CustomProvider.java b/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/CustomProvider.java similarity index 95% rename from plugin/src/main/java/net/momirealms/customcrops/mechanic/item/CustomProvider.java rename to api/src/main/java/net/momirealms/customcrops/api/mechanic/item/CustomProvider.java index ce1f80a..20f99b2 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/CustomProvider.java +++ b/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/CustomProvider.java @@ -15,14 +15,13 @@ * along with this program. If not, see . */ -package net.momirealms.customcrops.mechanic.item; +package net.momirealms.customcrops.api.mechanic.item; import net.momirealms.customcrops.api.manager.VersionManager; import net.momirealms.customcrops.api.mechanic.misc.CRotation; +import net.momirealms.customcrops.api.util.DisplayEntityUtils; import net.momirealms.customcrops.api.util.LocationUtils; -import net.momirealms.customcrops.util.ConfigUtils; -import net.momirealms.customcrops.util.DisplayEntityUtils; -import net.momirealms.customcrops.util.RotationUtils; +import net.momirealms.customcrops.api.util.StringUtils; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -38,7 +37,7 @@ public interface CustomProvider { void placeCustomBlock(Location location, String id); default void placeBlock(Location location, String id) { - if (ConfigUtils.isVanillaItem(id)) { + if (StringUtils.isCapitalLetter(id)) { location.getBlock().setType(Material.valueOf(id)); } else { placeCustomBlock(location, id); diff --git a/plugin/src/main/java/net/momirealms/customcrops/util/DisplayEntityUtils.java b/api/src/main/java/net/momirealms/customcrops/api/util/DisplayEntityUtils.java similarity index 90% rename from plugin/src/main/java/net/momirealms/customcrops/util/DisplayEntityUtils.java rename to api/src/main/java/net/momirealms/customcrops/api/util/DisplayEntityUtils.java index 856ef7d..fcef960 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/util/DisplayEntityUtils.java +++ b/api/src/main/java/net/momirealms/customcrops/api/util/DisplayEntityUtils.java @@ -1,4 +1,4 @@ -package net.momirealms.customcrops.util; +package net.momirealms.customcrops.api.util; import net.momirealms.customcrops.api.mechanic.misc.CRotation; import org.bukkit.entity.Entity; diff --git a/plugin/src/main/java/net/momirealms/customcrops/util/EventUtils.java b/api/src/main/java/net/momirealms/customcrops/api/util/EventUtils.java similarity index 96% rename from plugin/src/main/java/net/momirealms/customcrops/util/EventUtils.java rename to api/src/main/java/net/momirealms/customcrops/api/util/EventUtils.java index 2f503b9..038de4d 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/util/EventUtils.java +++ b/api/src/main/java/net/momirealms/customcrops/api/util/EventUtils.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package net.momirealms.customcrops.util; +package net.momirealms.customcrops.api.util; import org.bukkit.Bukkit; import org.bukkit.event.Cancellable; diff --git a/api/src/main/java/net/momirealms/customcrops/api/util/StringUtils.java b/api/src/main/java/net/momirealms/customcrops/api/util/StringUtils.java new file mode 100644 index 0000000..65e1687 --- /dev/null +++ b/api/src/main/java/net/momirealms/customcrops/api/util/StringUtils.java @@ -0,0 +1,15 @@ +package net.momirealms.customcrops.api.util; + +public class StringUtils { + + public static boolean isCapitalLetter(String item) { + char[] chars = item.toCharArray(); + for (char character : chars) { + if ((character < 65 || character > 90) && character != 95) { + return false; + } + } + return true; + } + +} diff --git a/build.gradle.kts b/build.gradle.kts index c3c9cc2..c64a749 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { allprojects { project.group = "net.momirealms" - project.version = "3.4.6" + project.version = "3.4.7-BETA" apply() apply(plugin = "java") @@ -44,6 +44,7 @@ allprojects { maven("https://repo.rapture.pw/repository/maven-releases/") maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") maven("https://repo.xenondevs.xyz/releases/") + maven("https://repo.oraxen.com/snapshots/") } } diff --git a/oraxen-legacy/.gitignore b/oraxen-legacy/.gitignore new file mode 100644 index 0000000..b63da45 --- /dev/null +++ b/oraxen-legacy/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/oraxen-legacy/build.gradle.kts b/oraxen-legacy/build.gradle.kts new file mode 100644 index 0000000..a9bc7a9 --- /dev/null +++ b/oraxen-legacy/build.gradle.kts @@ -0,0 +1,5 @@ +dependencies { + compileOnly(project(":api")) + compileOnly("dev.folia:folia-api:1.20.1-R0.1-SNAPSHOT") + compileOnly("com.github.oraxen:oraxen:1.172.0") +} \ No newline at end of file diff --git a/oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenListener.java b/oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenListener.java new file mode 100644 index 0000000..58a0270 --- /dev/null +++ b/oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenListener.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customcrops.mechanic.item.custom.oraxenlegacy; + +import io.th0rgal.oraxen.api.events.furniture.OraxenFurnitureBreakEvent; +import io.th0rgal.oraxen.api.events.furniture.OraxenFurnitureInteractEvent; +import io.th0rgal.oraxen.api.events.furniture.OraxenFurniturePlaceEvent; +import io.th0rgal.oraxen.api.events.noteblock.OraxenNoteBlockBreakEvent; +import io.th0rgal.oraxen.api.events.noteblock.OraxenNoteBlockPlaceEvent; +import io.th0rgal.oraxen.api.events.stringblock.OraxenStringBlockBreakEvent; +import io.th0rgal.oraxen.api.events.stringblock.OraxenStringBlockPlaceEvent; +import net.momirealms.customcrops.api.manager.ItemManager; +import net.momirealms.customcrops.api.mechanic.item.AbstractCustomListener; +import net.momirealms.customcrops.api.util.LocationUtils; +import org.bukkit.event.EventHandler; + +public class LegacyOraxenListener extends AbstractCustomListener { + + public LegacyOraxenListener(ItemManager itemManager) { + super(itemManager); + } + + @EventHandler (ignoreCancelled = true) + public void onBreakCustomNoteBlock(OraxenNoteBlockBreakEvent event) { + this.itemManager.handlePlayerBreakBlock( + event.getPlayer(), + event.getBlock(), + event.getMechanic().getItemID(), + event + ); + } + + @EventHandler (ignoreCancelled = true) + public void onBreakCustomStringBlock(OraxenStringBlockBreakEvent event) { + this.itemManager.handlePlayerBreakBlock( + event.getPlayer(), + event.getBlock(), + event.getMechanic().getItemID(), + event + ); + } + + @EventHandler (ignoreCancelled = true) + public void onPlaceCustomBlock(OraxenNoteBlockPlaceEvent event) { + super.onPlaceBlock( + event.getPlayer(), + event.getBlock(), + event.getMechanic().getItemID(), + event + ); + } + + @EventHandler (ignoreCancelled = true) + public void onPlaceCustomBlock(OraxenStringBlockPlaceEvent event) { + super.onPlaceBlock( + event.getPlayer(), + event.getBlock(), + event.getMechanic().getItemID(), + event + ); + } + + @EventHandler (ignoreCancelled = true) + public void onPlaceFurniture(OraxenFurniturePlaceEvent event) { + super.onPlaceFurniture( + event.getPlayer(), + event.getBlock().getLocation(), + event.getMechanic().getItemID(), + event + ); + } + + @EventHandler (ignoreCancelled = true) + public void onBreakFurniture(OraxenFurnitureBreakEvent event) { + super.onBreakFurniture( + event.getPlayer(), + LocationUtils.toBlockLocation(event.getBaseEntity().getLocation()), + event.getMechanic().getItemID(), + event + ); + } + + @EventHandler (ignoreCancelled = true) + public void onInteractFurniture(OraxenFurnitureInteractEvent event) { + super.onInteractFurniture( + event.getPlayer(), + LocationUtils.toBlockLocation(event.getBaseEntity().getLocation()), + event.getMechanic().getItemID(), + event.getBaseEntity(), + event + ); + } +} diff --git a/oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenProvider.java b/oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenProvider.java new file mode 100644 index 0000000..8d3be1a --- /dev/null +++ b/oraxen-legacy/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxenlegacy/LegacyOraxenProvider.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customcrops.mechanic.item.custom.oraxenlegacy; + +import io.th0rgal.oraxen.api.OraxenBlocks; +import io.th0rgal.oraxen.api.OraxenFurniture; +import io.th0rgal.oraxen.api.OraxenItems; +import io.th0rgal.oraxen.items.ItemBuilder; +import io.th0rgal.oraxen.mechanics.Mechanic; +import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic; +import net.momirealms.customcrops.api.mechanic.item.CustomProvider; +import net.momirealms.customcrops.api.util.LogUtils; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Rotation; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Entity; +import org.bukkit.inventory.ItemStack; + +public class LegacyOraxenProvider implements CustomProvider { + + @Override + public boolean removeBlock(Location location) { + Block block = location.getBlock(); + if (block.getType() == Material.AIR) { + return false; + } + block.setType(Material.AIR); + return true; + } + + @Override + public void placeCustomBlock(Location location, String id) { + OraxenBlocks.place(id, location); + } + + @Override + public Entity placeFurniture(Location location, String id) { + Entity entity = OraxenFurniture.place(id, location, Rotation.NONE, BlockFace.UP); + if (entity == null) { + LogUtils.warn("Furniture(" + id +") doesn't exist in Oraxen configs. Please double check if that furniture exists."); + } + return entity; + } + + @Override + public void removeFurniture(Entity entity) { + OraxenFurniture.remove(entity, null); + } + + @Override + public String getBlockID(Block block) { + Mechanic mechanic = OraxenBlocks.getOraxenBlock(block.getLocation()); + if (mechanic == null) { + return block.getType().name(); + } + return mechanic.getItemID(); + } + + @Override + public String getItemID(ItemStack itemStack) { + return OraxenItems.getIdByItem(itemStack); + } + + @Override + public ItemStack getItemStack(String id) { + if (id == null) return new ItemStack(Material.AIR); + ItemBuilder builder = OraxenItems.getItemById(id); + if (builder == null) { + return null; + } + return builder.build(); + } + + @Override + public String getEntityID(Entity entity) { + FurnitureMechanic mechanic = OraxenFurniture.getFurnitureMechanic(entity); + if (mechanic == null) { + return entity.getType().name(); + } + return mechanic.getItemID(); + } + + @Override + public boolean isFurniture(Entity entity) { + return OraxenFurniture.isFurniture(entity); + } +} diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 4a5a441..baa80be 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { // Items compileOnly("com.github.LoneDev6:api-itemsadder:3.6.2-beta-r3-b") - compileOnly("com.github.oraxen:oraxen:1.172.0") + compileOnly("io.th0rgal:oraxen:2.0-SNAPSHOT") compileOnly("pers.neige.neigeitems:NeigeItems:1.16.24") compileOnly("net.Indyuce:MMOItems-API:6.9.2-SNAPSHOT") compileOnly("io.lumine:MythicLib-dist:1.6-SNAPSHOT") @@ -48,6 +48,7 @@ dependencies { compileOnly(files("libs/RealisticSeasons-api.jar")) implementation(project(":api")) + implementation(project(":oraxen-legacy")) implementation(project(":legacy-api")) compileOnly("net.kyori:adventure-api:4.16.0") compileOnly("net.kyori:adventure-platform-bukkit:4.3.2") diff --git a/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java b/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java index c05aa03..4498e00 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java @@ -38,7 +38,7 @@ import net.momirealms.customcrops.mechanic.misc.migrator.Migration; import net.momirealms.customcrops.mechanic.requirement.RequirementManagerImpl; import net.momirealms.customcrops.mechanic.world.WorldManagerImpl; import net.momirealms.customcrops.scheduler.SchedulerImpl; -import net.momirealms.customcrops.util.EventUtils; +import net.momirealms.customcrops.api.util.EventUtils; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java index c34e1ad..6bdb473 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java @@ -58,7 +58,7 @@ import net.momirealms.customcrops.mechanic.misc.TempFakeItem; import net.momirealms.customcrops.mechanic.world.block.MemoryCrop; import net.momirealms.customcrops.util.ClassUtils; import net.momirealms.customcrops.util.ConfigUtils; -import net.momirealms.customcrops.util.EventUtils; +import net.momirealms.customcrops.api.util.EventUtils; import net.momirealms.customcrops.util.ItemUtils; import org.bukkit.*; import org.bukkit.block.BlockFace; diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/ItemManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/ItemManagerImpl.java index 2471676..0b47bb8 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/ItemManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/ItemManagerImpl.java @@ -40,13 +40,15 @@ import net.momirealms.customcrops.api.mechanic.world.SimpleLocation; import net.momirealms.customcrops.api.mechanic.world.level.*; import net.momirealms.customcrops.api.util.LocationUtils; import net.momirealms.customcrops.api.util.LogUtils; -import net.momirealms.customcrops.mechanic.item.custom.AbstractCustomListener; +import net.momirealms.customcrops.api.mechanic.item.AbstractCustomListener; import net.momirealms.customcrops.mechanic.item.custom.crucible.CrucibleListener; import net.momirealms.customcrops.mechanic.item.custom.crucible.CrucibleProvider; import net.momirealms.customcrops.mechanic.item.custom.itemsadder.ItemsAdderListener; import net.momirealms.customcrops.mechanic.item.custom.itemsadder.ItemsAdderProvider; import net.momirealms.customcrops.mechanic.item.custom.oraxen.OraxenListener; import net.momirealms.customcrops.mechanic.item.custom.oraxen.OraxenProvider; +import net.momirealms.customcrops.mechanic.item.custom.oraxenlegacy.LegacyOraxenListener; +import net.momirealms.customcrops.mechanic.item.custom.oraxenlegacy.LegacyOraxenProvider; import net.momirealms.customcrops.mechanic.item.function.CFunction; import net.momirealms.customcrops.mechanic.item.function.FunctionResult; import net.momirealms.customcrops.mechanic.item.function.FunctionTrigger; @@ -58,7 +60,7 @@ import net.momirealms.customcrops.mechanic.item.impl.WateringCanConfig; import net.momirealms.customcrops.mechanic.item.impl.fertilizer.*; import net.momirealms.customcrops.mechanic.world.block.*; import net.momirealms.customcrops.util.ConfigUtils; -import net.momirealms.customcrops.util.EventUtils; +import net.momirealms.customcrops.api.util.EventUtils; import net.momirealms.customcrops.util.ItemUtils; import net.momirealms.customcrops.util.RotationUtils; import org.bukkit.*; @@ -126,8 +128,13 @@ public class ItemManagerImpl implements ItemManager { this.stage2CropStageMap = new HashMap<>(); this.deadCrops = new HashSet<>(); if (Bukkit.getPluginManager().getPlugin("Oraxen") != null) { - listener = new OraxenListener(this); - customProvider = new OraxenProvider(); + if (Bukkit.getPluginManager().getPlugin("Oraxen").getDescription().getVersion().startsWith("2")) { + listener = new OraxenListener(this); + customProvider = new OraxenProvider(); + } else { + listener = new LegacyOraxenListener(this); + customProvider = new LegacyOraxenProvider(); + } } else if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) { listener = new ItemsAdderListener(this); customProvider = new ItemsAdderProvider(); @@ -2328,6 +2335,7 @@ public class ItemManagerImpl implements ItemManager { } } + @Override @SuppressWarnings("DuplicatedCode") public void handlePlayerInteractBlock( Player player, @@ -2358,6 +2366,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(itemFunctions -> handleFunctions(itemFunctions, condition, event)); } + @Override public void handlePlayerInteractAir( Player player, Cancellable event @@ -2377,6 +2386,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(cFunctions -> handleFunctions(cFunctions, condition, event)); } + @Override public void handlePlayerBreakBlock( Player player, Block brokenBlock, @@ -2395,6 +2405,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(cFunctions -> handleFunctions(cFunctions, new BreakBlockWrapper(player, brokenBlock), event)); } + @Override @SuppressWarnings("DuplicatedCode") public void handlePlayerInteractFurniture( Player player, @@ -2423,6 +2434,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(cFunctions -> handleFunctions(cFunctions, condition, event)); } + @Override public void handlePlayerPlaceFurniture( Player player, Location location, @@ -2442,6 +2454,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(cFunctions -> handleFunctions(cFunctions, new PlaceFurnitureWrapper(player, location, id), event)); } + @Override public void handlePlayerBreakFurniture( Player player, Location location, @@ -2461,6 +2474,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(cFunctions -> handleFunctions(cFunctions, new BreakFurnitureWrapper(player, location, id), event)); } + @Override public void handlePlayerPlaceBlock(Player player, Block block, String blockID, Cancellable event) { if (!plugin.getWorldManager().isMechanicEnabled(player.getWorld())) return; @@ -2475,6 +2489,7 @@ public class ItemManagerImpl implements ItemManager { .ifPresent(cFunctions -> handleFunctions(cFunctions, new PlaceBlockWrapper(player, block, blockID), event)); } + @Override public void handleEntityTramplingBlock(Entity entity, Block block, Cancellable event) { if (entity instanceof Player player) { handlePlayerBreakBlock(player, block, "FARMLAND", event); @@ -2542,6 +2557,7 @@ public class ItemManagerImpl implements ItemManager { } } + @Override public void handleExplosion(Entity entity, List blocks, Cancellable event) { List locationsToRemove = new ArrayList<>(); List locationsToRemoveBlock = new ArrayList<>(); diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleListener.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleListener.java index 1d896d6..bba6daa 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleListener.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleListener.java @@ -19,7 +19,7 @@ package net.momirealms.customcrops.mechanic.item.custom.crucible; import io.lumine.mythiccrucible.events.MythicFurniturePlaceEvent; import net.momirealms.customcrops.mechanic.item.ItemManagerImpl; -import net.momirealms.customcrops.mechanic.item.custom.AbstractCustomListener; +import net.momirealms.customcrops.api.mechanic.item.AbstractCustomListener; import org.bukkit.event.EventHandler; public class CrucibleListener extends AbstractCustomListener { diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleProvider.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleProvider.java index aa9a73f..523b012 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleProvider.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/crucible/CrucibleProvider.java @@ -27,7 +27,7 @@ import io.lumine.mythiccrucible.items.blocks.CustomBlockManager; import io.lumine.mythiccrucible.items.furniture.Furniture; import io.lumine.mythiccrucible.items.furniture.FurnitureManager; import net.momirealms.customcrops.api.util.LogUtils; -import net.momirealms.customcrops.mechanic.item.CustomProvider; +import net.momirealms.customcrops.api.mechanic.item.CustomProvider; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderListener.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderListener.java index 58ffe55..6963149 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderListener.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderListener.java @@ -20,7 +20,7 @@ package net.momirealms.customcrops.mechanic.item.custom.itemsadder; import dev.lone.itemsadder.api.CustomFurniture; import dev.lone.itemsadder.api.Events.*; import net.momirealms.customcrops.mechanic.item.ItemManagerImpl; -import net.momirealms.customcrops.mechanic.item.custom.AbstractCustomListener; +import net.momirealms.customcrops.api.mechanic.item.AbstractCustomListener; import org.bukkit.entity.Entity; import org.bukkit.event.EventHandler; diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderProvider.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderProvider.java index 62e0939..96cfdd0 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderProvider.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/itemsadder/ItemsAdderProvider.java @@ -21,7 +21,7 @@ import dev.lone.itemsadder.api.CustomBlock; import dev.lone.itemsadder.api.CustomFurniture; import dev.lone.itemsadder.api.CustomStack; import net.momirealms.customcrops.api.util.LogUtils; -import net.momirealms.customcrops.mechanic.item.CustomProvider; +import net.momirealms.customcrops.api.mechanic.item.CustomProvider; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenListener.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenListener.java index 41bc62e..225f5bf 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenListener.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenListener.java @@ -17,16 +17,16 @@ package net.momirealms.customcrops.mechanic.item.custom.oraxen; +import io.th0rgal.oraxen.api.events.custom_block.noteblock.OraxenNoteBlockBreakEvent; +import io.th0rgal.oraxen.api.events.custom_block.noteblock.OraxenNoteBlockPlaceEvent; +import io.th0rgal.oraxen.api.events.custom_block.stringblock.OraxenStringBlockBreakEvent; +import io.th0rgal.oraxen.api.events.custom_block.stringblock.OraxenStringBlockPlaceEvent; import io.th0rgal.oraxen.api.events.furniture.OraxenFurnitureBreakEvent; import io.th0rgal.oraxen.api.events.furniture.OraxenFurnitureInteractEvent; import io.th0rgal.oraxen.api.events.furniture.OraxenFurniturePlaceEvent; -import io.th0rgal.oraxen.api.events.noteblock.OraxenNoteBlockBreakEvent; -import io.th0rgal.oraxen.api.events.noteblock.OraxenNoteBlockPlaceEvent; -import io.th0rgal.oraxen.api.events.stringblock.OraxenStringBlockBreakEvent; -import io.th0rgal.oraxen.api.events.stringblock.OraxenStringBlockPlaceEvent; import net.momirealms.customcrops.api.util.LocationUtils; import net.momirealms.customcrops.mechanic.item.ItemManagerImpl; -import net.momirealms.customcrops.mechanic.item.custom.AbstractCustomListener; +import net.momirealms.customcrops.api.mechanic.item.AbstractCustomListener; import org.bukkit.event.EventHandler; public class OraxenListener extends AbstractCustomListener { @@ -98,10 +98,10 @@ public class OraxenListener extends AbstractCustomListener { @EventHandler (ignoreCancelled = true) public void onInteractFurniture(OraxenFurnitureInteractEvent event) { super.onInteractFurniture( - event.getPlayer(), - LocationUtils.toBlockLocation(event.getBaseEntity().getLocation()), - event.getMechanic().getItemID(), - event.getBaseEntity(), + event.player(), + LocationUtils.toBlockLocation(event.baseEntity().getLocation()), + event.mechanic().getItemID(), + event.baseEntity(), event ); } diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenProvider.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenProvider.java index 34f2327..bf2a37a 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenProvider.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/custom/oraxen/OraxenProvider.java @@ -24,7 +24,7 @@ import io.th0rgal.oraxen.items.ItemBuilder; import io.th0rgal.oraxen.mechanics.Mechanic; import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic; import net.momirealms.customcrops.api.util.LogUtils; -import net.momirealms.customcrops.mechanic.item.CustomProvider; +import net.momirealms.customcrops.api.mechanic.item.CustomProvider; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Rotation; @@ -66,7 +66,7 @@ public class OraxenProvider implements CustomProvider { @Override public String getBlockID(Block block) { - Mechanic mechanic = OraxenBlocks.getOraxenBlock(block.getLocation()); + Mechanic mechanic = OraxenBlocks.getCustomBlockMechanic(block.getLocation()); if (mechanic == null) { return block.getType().name(); } diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java index b6898bf..02da2d0 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java @@ -36,7 +36,7 @@ import net.momirealms.customcrops.api.mechanic.world.season.Season; import net.momirealms.customcrops.api.scheduler.CancellableTask; import net.momirealms.customcrops.api.scheduler.Scheduler; import net.momirealms.customcrops.api.util.LogUtils; -import net.momirealms.customcrops.util.EventUtils; +import net.momirealms.customcrops.api.util.EventUtils; import org.bukkit.Bukkit; import org.bukkit.World; import org.jetbrains.annotations.NotNull; diff --git a/settings.gradle b/settings.gradle index a492555..0319b10 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,4 +2,5 @@ rootProject.name = 'CustomCrops' include(":plugin") include(":api") include(":legacy-api") +include 'oraxen-legacy'