9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-25 09:59:20 +00:00

WorldEdit support

This commit is contained in:
XiaoMoMi
2024-09-07 23:54:36 +08:00
parent 6ca6281507
commit d4a40f5b5c
15 changed files with 511 additions and 15 deletions

View File

@@ -33,11 +33,14 @@ import net.momirealms.customcrops.api.misc.HologramManager;
import net.momirealms.customcrops.api.misc.cooldown.CoolDownManager;
import net.momirealms.customcrops.api.misc.placeholder.BukkitPlaceholderManager;
import net.momirealms.customcrops.api.util.EventUtils;
import net.momirealms.customcrops.api.util.PluginUtils;
import net.momirealms.customcrops.bukkit.action.BlockActionManager;
import net.momirealms.customcrops.bukkit.action.PlayerActionManager;
import net.momirealms.customcrops.bukkit.command.BukkitCommandManager;
import net.momirealms.customcrops.bukkit.config.BukkitConfigManager;
import net.momirealms.customcrops.bukkit.integration.BukkitIntegrationManager;
import net.momirealms.customcrops.bukkit.integration.worldedit.CustomCropsDelegateExtent;
import net.momirealms.customcrops.bukkit.integration.worldedit.WorldEditHook;
import net.momirealms.customcrops.bukkit.item.BukkitItemManager;
import net.momirealms.customcrops.bukkit.requirement.BlockRequirementManager;
import net.momirealms.customcrops.bukkit.requirement.PlayerRequirementManager;
@@ -191,21 +194,18 @@ public class BukkitCustomCropsPluginImpl extends BukkitCustomCropsPlugin {
});
}
Runnable delayedInitTask = () -> {
((SimpleRegistryAccess) registryAccess).freeze();
logger.info("Registry access has been frozen");
((BukkitItemManager) itemManager).setAntiGriefLib(AntiGriefLib.builder((JavaPlugin) getBoostrap()).silentLogs(true).ignoreOP(true).build());
EventUtils.fireAndForget(new CustomCropsReloadEvent(this));
};
// delayed init task
if (VersionHelper.isFolia()) {
Bukkit.getGlobalRegionScheduler().run(getBoostrap(), (scheduledTask) -> {
((SimpleRegistryAccess) registryAccess).freeze();
logger.info("Registry access has been frozen");
((BukkitItemManager) itemManager).setAntiGriefLib(AntiGriefLib.builder((JavaPlugin) getBoostrap()).silentLogs(true).ignoreOP(true).build());
EventUtils.fireAndForget(new CustomCropsReloadEvent(this));
});
Bukkit.getGlobalRegionScheduler().run(getBoostrap(), (scheduledTask) -> delayedInitTask.run());
} else {
Bukkit.getScheduler().runTask(getBoostrap(), () -> {
((SimpleRegistryAccess) registryAccess).freeze();
logger.info("Registry access has been frozen");
((BukkitItemManager) itemManager).setAntiGriefLib(AntiGriefLib.builder((JavaPlugin) getBoostrap()).silentLogs(false).ignoreOP(true).build());
EventUtils.fireAndForget(new CustomCropsReloadEvent(this));
});
Bukkit.getScheduler().runTask(getBoostrap(), delayedInitTask);
}
}
@@ -236,6 +236,11 @@ public class BukkitCustomCropsPluginImpl extends BukkitCustomCropsPlugin {
this.worldManager.load();
if (ConfigManager.worldeditSupport() && PluginUtils.isEnabled("WorldEdit")) {
WorldEditHook.register();
} else {
WorldEditHook.unregister();
}
EventUtils.fireAndForget(new CustomCropsReloadEvent(this));
}

View File

@@ -140,6 +140,8 @@ public class BukkitConfigManager extends ConfigManager {
preventTrampling = config.getBoolean("mechanics.vanilla-farmland.prevent-trampling", false);
disableMoistureMechanic = config.getBoolean("mechanics.vanilla-farmland.disable-moisture-mechanic", false);
worldeditSupport = config.getBoolean("other-settings.worldedit-support", false);
offsets.clear();
Section section = config.getSection("mechanics.hologram-offset-correction");
if (section != null) {

View File

@@ -57,6 +57,7 @@ public class BukkitIntegrationManager implements IntegrationManager {
@Override
public void disable() {
this.levelerProviders.clear();
this.entityProviders.clear();
}
@Override
@@ -126,6 +127,24 @@ public class BukkitIntegrationManager implements IntegrationManager {
}
}
private boolean doesPluginExists(String hooked) {
return Bukkit.getPluginManager().getPlugin(hooked) != null;
}
@SuppressWarnings("deprecation")
private boolean doesPluginExists(String hooked, String... versionPrefix) {
Plugin p = Bukkit.getPluginManager().getPlugin(hooked);
if (p != null) {
String ver = p.getDescription().getVersion();
for (String prefix : versionPrefix) {
if (ver.startsWith(prefix)) {
return true;
}
}
}
return false;
}
private boolean isHooked(String hooked) {
if (Bukkit.getPluginManager().getPlugin(hooked) != null) {
plugin.getPluginLogger().info(hooked + " hooked!");

View File

@@ -141,3 +141,5 @@ other-settings:
# Whether to verify if a block/furniture matches the data in CustomCrops
# Enable this if using Oraxen, as its API is more reliable
double-check: false
# Enable WorldEdit support (Experimental)
worldedit-support: false

View File

@@ -16,4 +16,5 @@ softdepend:
- RealisticSeasons
- AdvancedSeasons
- SlimeWorldManager
- MythicMobs
- MythicMobs
- WorldEdit