mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2026-01-06 15:51:52 +00:00
Additional slime world event listener
This commit is contained in:
@@ -81,6 +81,7 @@ public class GreenhouseBlock extends AbstractCustomCropsBlock {
|
||||
CustomCropsBlockState state = getOrFixState(world, pos3);
|
||||
GreenhouseGlassBreakEvent breakEvent = new GreenhouseGlassBreakEvent(event.entityBreaker(), event.blockBreaker(), event.location(), event.brokenID(), state, event.reason());
|
||||
if (EventUtils.fireAndCheckCancel(breakEvent)) {
|
||||
breakEvent.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
world.removeBlockState(pos3);
|
||||
|
||||
@@ -81,6 +81,7 @@ public class ScarecrowBlock extends AbstractCustomCropsBlock {
|
||||
CustomCropsBlockState state = getOrFixState(world, pos3);
|
||||
ScarecrowBreakEvent breakEvent = new ScarecrowBreakEvent(event.entityBreaker(), event.blockBreaker(), event.location(), event.brokenID(), state, event.reason());
|
||||
if (EventUtils.fireAndCheckCancel(breakEvent)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
world.removeBlockState(pos3);
|
||||
|
||||
@@ -72,6 +72,8 @@ public interface WorldManager extends Reloadable {
|
||||
*/
|
||||
boolean unloadWorld(World world, boolean disabling);
|
||||
|
||||
boolean isMechanicEnabled(World world);
|
||||
|
||||
/**
|
||||
* Retrieves a CustomCrops world based on the specified Bukkit world, if loaded.
|
||||
*
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
package net.momirealms.customcrops.bukkit.integration.adaptor.asp_r1;
|
||||
|
||||
import com.flowpowered.nbt.*;
|
||||
import com.infernalsuite.aswm.api.events.LoadSlimeWorldEvent;
|
||||
import com.infernalsuite.aswm.api.world.SlimeWorld;
|
||||
import net.momirealms.customcrops.api.BukkitCustomCropsPlugin;
|
||||
import net.momirealms.customcrops.api.core.InternalRegistries;
|
||||
@@ -27,8 +28,12 @@ import net.momirealms.customcrops.api.core.world.adaptor.AbstractWorldAdaptor;
|
||||
import net.momirealms.customcrops.api.util.StringUtils;
|
||||
import net.momirealms.customcrops.api.util.TagUtils;
|
||||
import net.momirealms.customcrops.common.helper.GsonHelper;
|
||||
import net.momirealms.customcrops.common.plugin.CustomCropsPlugin;
|
||||
import net.momirealms.customcrops.common.util.Key;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -40,7 +45,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class SlimeWorldAdaptorR1 extends AbstractWorldAdaptor<SlimeWorld> {
|
||||
public class SlimeWorldAdaptorR1 extends AbstractWorldAdaptor<SlimeWorld> implements Listener {
|
||||
|
||||
private final Function<String, SlimeWorld> getSlimeWorldFunction;
|
||||
|
||||
@@ -76,6 +81,13 @@ public class SlimeWorldAdaptorR1 extends AbstractWorldAdaptor<SlimeWorld> {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWorldLoad(LoadSlimeWorldEvent event) {
|
||||
World world = Bukkit.getWorld(event.getSlimeWorld().getName());
|
||||
if (!BukkitCustomCropsPlugin.getInstance().getWorldManager().isMechanicEnabled(world)) return;
|
||||
BukkitCustomCropsPlugin.getInstance().getWorldManager().loadWorld(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomCropsWorld<SlimeWorld> adapt(Object world) {
|
||||
return CustomCropsWorld.create((SlimeWorld) world, this);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Project settings
|
||||
# Rule: [major update].[feature update].[bug fix]
|
||||
project_version=3.6.17
|
||||
project_version=3.6.19
|
||||
config_version=42
|
||||
project_group=net.momirealms
|
||||
|
||||
@@ -18,7 +18,7 @@ asm_commons_version=9.7.1
|
||||
jar_relocator_version=1.7
|
||||
adventure_bundle_version=4.17.0
|
||||
adventure_platform_version=4.3.4
|
||||
sparrow_heart_version=0.45
|
||||
sparrow_heart_version=0.46
|
||||
cloud_core_version=2.0.0
|
||||
cloud_services_version=2.0.0
|
||||
cloud_brigadier_version=2.0.0-beta.10
|
||||
|
||||
@@ -45,7 +45,7 @@ public abstract class BukkitItemFactory extends ItemFactory<CustomCropsPlugin, R
|
||||
return new UniversalItemFactory(plugin);
|
||||
}
|
||||
case "1.20.5", "1.20.6",
|
||||
"1.21", "1.21.1", "1.21.2" -> {
|
||||
"1.21", "1.21.1", "1.21.2", "1.21.3", "1.21.4" -> {
|
||||
return new ComponentItemFactory(plugin);
|
||||
}
|
||||
default -> throw new IllegalStateException("Unsupported server version: " + plugin.getServerVersion());
|
||||
|
||||
@@ -56,12 +56,16 @@ public class BukkitWorldManager implements WorldManager, Listener {
|
||||
this.plugin = plugin;
|
||||
try {
|
||||
Class.forName("com.infernalsuite.aswm.api.SlimePlugin");
|
||||
adaptors.add(new SlimeWorldAdaptorR1(1));
|
||||
SlimeWorldAdaptorR1 adaptor = new SlimeWorldAdaptorR1(1);
|
||||
adaptors.add(adaptor);
|
||||
Bukkit.getPluginManager().registerEvents(adaptor, plugin.getBootstrap());
|
||||
plugin.getPluginLogger().info("SlimeWorldManager hooked!");
|
||||
} catch (ClassNotFoundException ignored) {
|
||||
}
|
||||
if (Bukkit.getPluginManager().isPluginEnabled("SlimeWorldPlugin")) {
|
||||
adaptors.add(new SlimeWorldAdaptorR1(2));
|
||||
SlimeWorldAdaptorR1 adaptor = new SlimeWorldAdaptorR1(2);
|
||||
adaptors.add(adaptor);
|
||||
Bukkit.getPluginManager().registerEvents(adaptor, plugin.getBootstrap());
|
||||
plugin.getPluginLogger().info("AdvancedSlimePaper hooked!");
|
||||
}
|
||||
this.adaptors.add(new BukkitWorldAdaptor());
|
||||
@@ -140,6 +144,19 @@ public class BukkitWorldManager implements WorldManager, Listener {
|
||||
this.worldSettings.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
this.unload();
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
unloadWorld(world, true);
|
||||
}
|
||||
for (WorldAdaptor<?> adaptor : this.adaptors) {
|
||||
if (adaptor instanceof Listener listener) {
|
||||
HandlerList.unregisterAll(listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadConfig() {
|
||||
YamlDocument config = BukkitConfigManager.getMainConfig();
|
||||
|
||||
@@ -176,14 +193,6 @@ public class BukkitWorldManager implements WorldManager, Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
this.unload();
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
unloadWorld(world, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomCropsWorld<?> loadWorld(World world) {
|
||||
Optional<CustomCropsWorld<?>> optionalWorld = getWorld(world);
|
||||
@@ -282,7 +291,9 @@ public class BukkitWorldManager implements WorldManager, Listener {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMechanicEnabled(World world) {
|
||||
if (world == null) return false;
|
||||
if (matchRule == MatchRule.WHITELIST) {
|
||||
return worldList.contains(world.getName());
|
||||
} else if (matchRule == MatchRule.BLACKLIST) {
|
||||
|
||||
Reference in New Issue
Block a user