From 8f418965f2b6cf8333f1539cd3634418229466b4 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Thu, 14 Mar 2024 21:09:11 +0800 Subject: [PATCH] 3.4.0.8 --- build.gradle.kts | 2 +- plugin/build.gradle.kts | 4 +-- .../customcrops/CustomCropsPluginImpl.java | 4 +-- .../condition/ConditionManagerImpl.java | 33 +++++++++++++++++++ .../mechanic/item/ItemManagerImpl.java | 17 +++++++--- .../mechanic/item/impl/PotConfig.java | 2 +- .../mechanic/misc/migrator/Migration.java | 2 +- .../requirement/RequirementManagerImpl.java | 28 ++++++++++++++++ 8 files changed, 80 insertions(+), 12 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e0fb6a5..59150a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { allprojects { project.group = "net.momirealms" - project.version = "3.4.0.7" + project.version = "3.4.0.8" apply() apply(plugin = "java") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 53a6f31..da84adf 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -50,8 +50,8 @@ dependencies { implementation(project(":legacy-api")) implementation("net.kyori:adventure-api:4.15.0") implementation("net.kyori:adventure-platform-bukkit:4.3.2") - compileOnly("com.github.Xiao-MoMi:AntiGriefLib:0.7") - compileOnly("com.github.Xiao-MoMi:BiomeAPI:0.2") + implementation("com.github.Xiao-MoMi:AntiGriefLib:0.7") + implementation("com.github.Xiao-MoMi:BiomeAPI:0.3") compileOnly("net.kyori:adventure-text-minimessage:4.15.0") compileOnly("net.kyori:adventure-text-serializer-legacy:4.15.0") compileOnly("de.tr7zw:item-nbt-api:2.12.2") diff --git a/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java b/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java index 9d301e7..739acb3 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/CustomCropsPluginImpl.java @@ -68,9 +68,7 @@ public class CustomCropsPluginImpl extends CustomCropsPlugin { Dependency.ADVENTURE_TEXT_MINIMESSAGE, Dependency.ADVENTURE_LEGACY_SERIALIZER, Dependency.BSTATS_BASE, - Dependency.BSTATS_BUKKIT, - Dependency.BIOME_API, - Dependency.ANTI_GRIEF + Dependency.BSTATS_BUKKIT ) )); diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/condition/ConditionManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/condition/ConditionManagerImpl.java index 9abdf14..50f790c 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/condition/ConditionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/condition/ConditionManagerImpl.java @@ -35,6 +35,7 @@ import net.momirealms.customcrops.compatibility.papi.ParseUtils; import net.momirealms.customcrops.mechanic.misc.CrowAttackAnimation; import net.momirealms.customcrops.utils.ClassUtils; import net.momirealms.customcrops.utils.ConfigUtils; +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.data.type.Farmland; @@ -94,6 +95,7 @@ public class ConditionManagerImpl implements ConditionManager { this.registerFertilizerCondition(); this.registerCrowAttackCondition(); this.registerPotCondition(); + this.registerLightCondition(); } @Override @@ -621,6 +623,37 @@ public class ConditionManagerImpl implements ConditionManager { }); } + private void registerLightCondition() { + registerCondition("skylight_more_than", (args) -> { + int value = (int) args; + return block -> { + int light = block.getLocation().getBukkitLocation().getBlock().getLightFromSky(); + return value > light; + }; + }); + registerCondition("skylight_less_than", (args) -> { + int value = (int) args; + return block -> { + int light = block.getLocation().getBukkitLocation().getBlock().getLightFromSky(); + return value < light; + }; + }); + registerCondition("light_more_than", (args) -> { + int value = (int) args; + return block -> { + int light = block.getLocation().getBukkitLocation().getBlock().getLightLevel(); + return value > light; + }; + }); + registerCondition("light_less_than", (args) -> { + int value = (int) args; + return block -> { + int light = block.getLocation().getBukkitLocation().getBlock().getLightLevel(); + return value < light; + }; + }); + } + private void registerWaterCondition() { registerCondition("water_more_than", (args) -> { int value = (int) args; 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 04cb8b8..7e750d6 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 @@ -1151,7 +1151,7 @@ public class ItemManagerImpl implements ItemManager { ); } - this.registerItemFunction(sprinkler.get3DItemID(), FunctionTrigger.PLACE, + this.registerItemFunction(new String[]{sprinkler.get3DItemID(), sprinkler.get3DItemWithWater()}, FunctionTrigger.PLACE, /* * This will only trigger if the sprinkler has only 3D items */ @@ -1184,7 +1184,7 @@ public class ItemManagerImpl implements ItemManager { }, CFunction.FunctionPriority.NORMAL) ); - this.registerItemFunction(sprinkler.get3DItemID(), FunctionTrigger.BE_INTERACTED, + this.registerItemFunction(new String[]{sprinkler.get3DItemID(), sprinkler.get3DItemWithWater()}, FunctionTrigger.BE_INTERACTED, /* * Interact the sprinkler */ @@ -1261,7 +1261,7 @@ public class ItemManagerImpl implements ItemManager { }, CFunction.FunctionPriority.NORMAL) ); - this.registerItemFunction(sprinkler.get3DItemID(), FunctionTrigger.BE_INTERACTED, + this.registerItemFunction(new String[]{sprinkler.get3DItemID(), sprinkler.get3DItemWithWater()}, FunctionTrigger.BE_INTERACTED, new CFunction(conditionWrapper -> { if (!(conditionWrapper instanceof InteractFurnitureWrapper interactFurnitureWrapper)) { return FunctionResult.PASS; @@ -1287,7 +1287,7 @@ public class ItemManagerImpl implements ItemManager { }, CFunction.FunctionPriority.LOWEST) ); - this.registerItemFunction(sprinkler.get3DItemID(), FunctionTrigger.BREAK, + this.registerItemFunction(new String[]{sprinkler.get3DItemID(), sprinkler.get3DItemWithWater()}, FunctionTrigger.BREAK, /* * Handle breaking sprinklers */ @@ -2064,7 +2064,16 @@ public class ItemManagerImpl implements ItemManager { } } + private void registerItemFunction(String[] items, FunctionTrigger trigger, CFunction... function) { + for (String item : items) { + if (item != null) { + registerItemFunction(item, trigger, function); + } + } + } + private void registerItemFunction(String item, FunctionTrigger trigger, CFunction... function) { + if (item == null) return; if (itemID2FunctionMap.containsKey(item)) { var previous = itemID2FunctionMap.get(item); TreeSet previousFunctions = previous.get(trigger); diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/PotConfig.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/PotConfig.java index a2c4cff..cf0f48e 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/PotConfig.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/PotConfig.java @@ -46,7 +46,7 @@ public class PotConfig extends AbstractEventItem implements Pot { private final Requirement[] useRequirements; private final boolean acceptRainDrop; private final boolean acceptNearbyWater; - private boolean isVanillaBlock; + private final boolean isVanillaBlock; public PotConfig( String key, diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/misc/migrator/Migration.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/misc/migrator/Migration.java index 907a527..c3cf397 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/misc/migrator/Migration.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/misc/migrator/Migration.java @@ -41,7 +41,7 @@ public class Migration { // do migration if (config.contains("mechanics.season.sync-season")) { config.set("mechanics.sync-season.enable", config.getBoolean("mechanics.season.sync-season.enable")); - config.set("mechanics.sync-season.reference", config.getBoolean("mechanics.season.sync-season.reference")); + config.set("mechanics.sync-season.reference", config.getString("mechanics.season.sync-season.reference")); } if (config.contains("mechanics.season.greenhouse")) { config.set("mechanics.greenhouse.enable", config.getBoolean("mechanics.season.greenhouse.enable")); diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/requirement/RequirementManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/requirement/RequirementManagerImpl.java index f37c1cc..8dabb1f 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/requirement/RequirementManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/requirement/RequirementManagerImpl.java @@ -124,6 +124,7 @@ public class RequirementManagerImpl implements RequirementManager { this.registerSneakRequirement(); this.registerTemperatureRequirement(); this.registerFertilizerRequirement(); + this.registerLightRequirement(); } @NotNull @@ -242,6 +243,33 @@ public class RequirementManagerImpl implements RequirementManager { }); } + private void registerLightRequirement() { + registerRequirement("light", (args, actions, advanced) -> { + List> tempPairs = ConfigUtils.stringListArgs(args).stream().map(it -> ConfigUtils.splitStringIntegerArgs(it, "~")).toList(); + return state -> { + Location location = state.getLocation(); + int temp = location.getBlock().getLightLevel(); + for (Pair pair : tempPairs) + if (temp >= pair.left() && temp <= pair.right()) + return true; + if (advanced) triggerActions(actions, state); + return false; + }; + }); + registerRequirement("natural_light", (args, actions, advanced) -> { + List> tempPairs = ConfigUtils.stringListArgs(args).stream().map(it -> ConfigUtils.splitStringIntegerArgs(it, "~")).toList(); + return state -> { + Location location = state.getLocation(); + int temp = location.getBlock().getLightFromSky(); + for (Pair pair : tempPairs) + if (temp >= pair.left() && temp <= pair.right()) + return true; + if (advanced) triggerActions(actions, state); + return false; + }; + }); + } + private void registerOrRequirement() { registerRequirement("||", (args, actions, advanced) -> { if (args instanceof ConfigurationSection section) {