diff --git a/plugins/fancynpcs/fn-api/build.gradle.kts b/plugins/fancynpcs/fn-api/build.gradle.kts index c5a2ee3f..ba5b27d6 100644 --- a/plugins/fancynpcs/fn-api/build.gradle.kts +++ b/plugins/fancynpcs/fn-api/build.gradle.kts @@ -10,6 +10,7 @@ dependencies { compileOnly("io.papermc.paper:paper-api:$minecraftVersion-R0.1-SNAPSHOT") compileOnly(project(":libraries:common")) + compileOnly(project(":libraries:config")) compileOnly("de.oliver.FancyAnalytics:logger:0.0.8") implementation("org.lushplugins:ChatColorHandler:6.0.2") diff --git a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsPlugin.java b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsPlugin.java index a582a1a9..58664baf 100644 --- a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsPlugin.java +++ b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsPlugin.java @@ -1,5 +1,6 @@ package de.oliver.fancynpcs.api; +import com.fancyinnovations.config.featureflags.FeatureFlagConfig; import de.oliver.fancyanalytics.logger.ExtendedFancyLogger; import de.oliver.fancylib.serverSoftware.schedulers.FancyScheduler; import de.oliver.fancylib.translations.Translator; @@ -32,8 +33,8 @@ public interface FancyNpcsPlugin { ScheduledExecutorService getNpcThread(); /** - * Creates a new thread with the given name and runnable. - * Warning: Do not use this method, it is for internal use only. + * Creates a new thread with the given name and runnable. + * Warning: Do not use this method, it is for internal use only. */ @ApiStatus.Internal Thread newThread(String name, Runnable runnable); @@ -44,6 +45,8 @@ public interface FancyNpcsPlugin { FancyNpcsConfig getFancyNpcConfig(); + FeatureFlagConfig getFeatureFlagConfig(); + NpcManager getNpcManager(); AttributeManager getAttributeManager(); diff --git a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java index d10f165b..dcc5afee 100644 --- a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java +++ b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java @@ -114,7 +114,7 @@ public abstract class Npc { spawn(player); // Respawn the npc to fix visibility issues on Folia - if (ServerSoftware.isFolia()) { + if (ServerSoftware.isFolia() && FancyNpcsPlugin.get().getFeatureFlagConfig().getFeatureFlag("enable-folia-visibility-fix").isEnabled()) { FancyNpcsPlugin.get().getNpcThread().schedule(() -> { remove(player); spawn(player); diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java index 2ff1b8ef..0c1c11b1 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java @@ -81,6 +81,7 @@ public class FancyNpcs extends JavaPlugin implements FancyNpcsPlugin { public static final FeatureFlag PLAYER_NPCS_FEATURE_FLAG = new FeatureFlag("player-npcs", "Every player can only manage the npcs they have created", false); public static final FeatureFlag USE_NATIVE_THREADS_FEATURE_FLAG = new FeatureFlag("use-native-threads", "Use native threads instead of virtual threads.", false); public static final FeatureFlag ENABLE_DEBUG_MODE_FEATURE_FLAG = new FeatureFlag("enable-debug-mode", "Enable debug mode", false); + public static final FeatureFlag ENABLE_FOLIA_VISIBILITY_FIX_FEATURE_FLAG = new FeatureFlag("enable-folia-visibility-fix", "When enabled, all npcs will respawn after 100ms when they should spawn", false); private static FancyNpcs instance; private final ExtendedFancyLogger fancyLogger; @@ -152,6 +153,7 @@ public class FancyNpcs extends JavaPlugin implements FancyNpcsPlugin { featureFlagConfig.addFeatureFlag(PLAYER_NPCS_FEATURE_FLAG); featureFlagConfig.addFeatureFlag(USE_NATIVE_THREADS_FEATURE_FLAG); featureFlagConfig.addFeatureFlag(ENABLE_DEBUG_MODE_FEATURE_FLAG); + featureFlagConfig.addFeatureFlag(ENABLE_FOLIA_VISIBILITY_FIX_FEATURE_FLAG); featureFlagConfig.load(); if (ENABLE_DEBUG_MODE_FEATURE_FLAG.isEnabled()) { @@ -595,6 +597,7 @@ public class FancyNpcs extends JavaPlugin implements FancyNpcsPlugin { return textConfig; } + @Override public FeatureFlagConfig getFeatureFlagConfig() { return featureFlagConfig; }