From ddf744bc9e05a4c77fafb158a650a252b6eb0e18 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Mon, 12 Jun 2023 14:54:12 +0800 Subject: [PATCH] 3.2.4.0 --- build.gradle | 4 +-- libs/BiomeAPI.jar | Bin 8037 -> 10488 bytes .../api/customplugin/PlatformManager.java | 9 ++++++ .../object/fertilizer/FertilizerConfig.java | 9 +++++- .../object/fertilizer/FertilizerManager.java | 12 +++++--- .../api/object/fertilizer/Quality.java | 5 +-- .../api/object/fertilizer/SoilRetain.java | 5 +-- .../api/object/fertilizer/SpeedGrow.java | 5 +-- .../api/object/fertilizer/Variation.java | 5 +-- .../api/object/fertilizer/YieldIncrease.java | 5 +-- .../requirement/AbstractRequirement.java | 14 +++++++-- .../api/object/requirement/BiomeImpl.java | 7 +++-- .../api/object/requirement/CurrentState.java | 4 +-- .../api/object/requirement/CustomPapi.java | 8 +++-- .../api/object/requirement/DateImpl.java | 9 ++++-- .../api/object/requirement/JobLevelImpl.java | 7 +++-- .../object/requirement/PermissionImpl.java | 7 +++-- .../api/object/requirement/SeasonImpl.java | 7 +++-- .../object/requirement/SkillLevelImpl.java | 7 +++-- .../api/object/requirement/TimeImpl.java | 7 +++-- .../api/object/requirement/WeatherImpl.java | 7 +++-- .../api/object/requirement/WorldImpl.java | 7 +++-- .../api/object/requirement/YPosImpl.java | 7 +++-- .../customcrops/api/util/ConfigUtils.java | 29 +++++++++++------- 24 files changed, 120 insertions(+), 66 deletions(-) diff --git a/build.gradle b/build.gradle index 2351a18..913b000 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'net.momirealms' -version = '3.2.3.3' +version = '3.2.4.0' repositories { mavenCentral() @@ -30,7 +30,7 @@ dependencies { compileOnly ('dev.folia:folia-api:1.19.4-R0.1-SNAPSHOT') compileOnly ('io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT') compileOnly ('me.clip:placeholderapi:2.11.3') - compileOnly ('com.github.LoneDev6:api-itemsadder:3.4.1-r4') + compileOnly ('com.github.LoneDev6:api-itemsadder:3.4.1e') compileOnly ('io.lumine:Mythic-Dist:5.0.3-SNAPSHOT') //compileOnly ('com.willfp:EcoSkills:3.0.0-b2') No read access compileOnly ('com.willfp:eco:6.60.0') diff --git a/libs/BiomeAPI.jar b/libs/BiomeAPI.jar index a9c346d1a0990a9b3fdff14650bf650dca470dfa..00c06717792bd9929cb8177b8d3784f4a8d57471 100644 GIT binary patch delta 2996 zcmZvecUV)|62Mcap@|d|LzSW!dXplsfYcx*K5T%78Ac7$wMno3DOB0Z?G-Uzl z(u5#NC@aPlK|0crB8q|#lo#0N`u2N!|C#fhnK|FwIrEz{v-)4{cx=&778nS`!2!CH z*_+HG3kD~vTS1AW-sD)xeNiG0-O~(c@G}M0!|$OioCO4O<^X|Y0ZCRQP$t4lNKGBH zM>@hgbB!gM$)|}5ber0u%fJBv^SYRJ^L!HS>oIVTncFB?Mt&w%mWWhp*?8(p^YvLs z7>WwmdXHQXw8lhW3*YO~pPglD{PyoNRbNdDTRav`N9xH`P5}-gteNq;h(^xzXqwZ zs-32CRbLEEg0`_ecqH0412ld4E*qvgrz_k>yX(mG zL0p;iS>Ms_q1Vkrg&rA??;;X2sw*!Dmy@I#b>2D;hi1e^7Q2RKB-)glK*mqqQW{RF zvv+*o@zAP{97#C1HD=T!7CzIkY4L`uyR6g1^bPg5QL1>a@Q2Kc$wmI;q&N4ToQA!I z4Hr|PaSY4K_VIEyjlvd>??dcr0{Z zVodT0`fgV5i`tpRhW&Y-Ex&Qg&Erlb?Hl%7^90J91A=tnwo`LRTj7H&Hs$;+34g?lW{t@Dot>V ze5UX%>7AR;wn5$N$9E+(gD}_B3!)htqHWQP#J1gU>)J6Iz$BLxA>^}ZtS)zzMu%$4 z6$)6R4keXHW^rjhAV}dKd3d>~!}Y~lZ9foTKPr<&IC{Q zr)1K41Yo%IWmS@Jkn+y5#Dwzvx=L5ZGZW5qLHABKZZH4GFGr+tZ-tGsjUM~xdf)JD zQ47{jhiqyZHkXu?uy~U(L-Sk z^%t{*AScOuYx(3mf>8-JaM`nR-PF$#ee99;gH~gum%}aDTbAvzoe-G&nFgE=l12tz zB!}(=#q^JI12R#?lOdz$oEMZd;77IY2Mb9wN#R*AVRUtI%6jdj_psM_)-QOvV|QzNt8)^g!t|B zNFHRkLyvP)=p^+7_v=D<(l8yWwUlu!2i$>$I-YYPfb$rg}dcGx@)zLTT-&D;^ z)Re=o&<-$?5MRU)pZ(BV`p84t@r|B|zg}7F;5ME;bUMvbf5Ob>49~EmbDEsSL{UL` z*psNyll~C`9(4}_Q>-roj=YkDM!HM`*Od2+l8?)1cV^R4uoJ}OvFkc8wkgyD! zx}bI|$cnzH7gPe_dQ0Q0?F{18vAke#i>0TPoh|WZKJ9EbCS|~_M!}t+)tM?>9G58; zWkh(h`;u4xlIJ^)4{9P_MM>Xz3KYt|k^bPXKa!#QG>m0rogk?hxw#m{)ojx}{0p+j z;z2{)6?Y@b+&kG{<%p`H5j=LV(s(nnMG>d>WQ=Wvu_2G_Q0eQf18)u9rc@rWyJvcC zE5Gtpo}+A?$aOLjy~A#c=K3*9L^JU|$pjM&o$HSX1lvJU*bZZcv{UFn0aqabeGPqLqkdwrnuNf0nNOABwV&eeTWwGB+-5{( zF7@Js&ZzV>(NM$NDni@nbKKJhWd*Z4+_+sIh4UpVb35rMsLF5LHtdvEG;eq?d2rkt z?%NzaE^F9P51$fj@)%J;aZle*UT+j^2#5cv$J*zV6ohaRbbsF5UgP&3`+SCQVd{#C z`c)u{Sfe>QDEP(6Za6i@;72vIFYb`sevGq@Z-9~igpiw z23hd?u|WXfNd%*7j_|sIq1Tv~Lg3qlLZe8%1w;WBXasYEe25C&oAdxPq&gT3L?I3L znlwN~D(%ZpNS%GHl87JMui5hN?%jZ$m?99v1(V+o3-ni5KML~SeOLtd4%gH^i}`P@{;w-D zf7l6wSM`sW(Ozc`!vBoc0M2w(23q;pfm>qS63iT9X=<|#l}zKD|1&leVH%$Rmc_XD jE&*VOAt9$E_Wz4|2nN`QbMW$k_&{UKiJMh=FDL&2I@C>e delta 1398 zcmewn_|%R!z?+$ci-CcIgF$wc$3$K=Muv$dKFnpyJSH|Pf~n;?%rZckYo>xgDvUSQ z{oO%k28JAV1_rgs3)!V7SE};WPYt$<_kwkB+EJ5{P@k5H>-% zM$ykF^H) zWqSK8*N^0nQw>5|L^G`T9K|gHH^(fFT7RoAHEfmd;*9I7r`_DpD>=_c|19^4qjz7P zyz_r%y2-8m?(X`0ll4j<^qML7uyy!38tvfZPibO=8-2)sQ#YKxEHq z<<^h&SKV&c2PoXg39;ZvPx@WndH>e>$Flb?f3&k(5U^(U*{?T$$$E!f+tX$8a$9ir z%Hr(s<2OGz%S!qLF-FDb%$%xr-+cRa8{?0&wKmBnc^#e7erZc@mn6UMiLL$C*_y1y zOvhGFJG3rd{Kw8S@-t>$D(IZKv)SOxEVGJSRiW#xeP#QcNv7$W?LI9!-BT!<*s|wSpzxQA z{kK@o9=dbIgH2(F^redK36Awa6L{3#Ip3Mw5-Q~!wDN&jZ`Eyv`JPoX*1w;4{N$|b zSKcpBiR!4?-7f#~(dvl9&sA8r?>CFD;k4h$Y&hcwW9|N~5B?Gv4c8~ zXRrQ`O((_9)iM9ucC&x3`}Lnz+soztUQ^lWc}aEWj?WdZ$|qe``L9rECOJ3b;hp+$ zi}&a6xmrou>Q59@nBw7PKPf}SBf~;+?z9#5E-Ta}=T6mFk@5og(>P=R4y7U)NbJt`YI5mw#BKV z*>U>*V;8@i&X~7s1#|6`evP_?C3Xv2{&h0igf3*%z~*JFuNXmPz~*z@tSn&0HGT^gW+|YEkHmjwX6aQPi~VF+m?eP% zfeHthnSmwAWDyk;Muy3rDvlr{Cikl7gX#S$Rv-f=|50(~LoH4w`>MJr0F{O@009$- z00J2Z1tbL+-a4|ePF4_+;}7s=WD;S9lvyCNAE-(*If10KCf{deo2;wG1GZwmnlzI> zJ5bnQGA|Fi2v`>bL>I{BHMwScCOfK$F`09N)%dFmD*$~IcHjQuw)MaQu8xC&!4z&i zh*883RH!>yNJ9+d fertilizerConfig = new SpeedGrow(key, fertilizerType, times, getChancePair(fertilizerSec), pot_whitelist, beforePlant, particle, sound, icon); - case YIELD_INCREASE -> fertilizerConfig = new YieldIncrease(key, fertilizerType, times, fertilizerSec.getDouble("chance"), getChancePair(fertilizerSec), pot_whitelist, beforePlant, particle, sound, icon); - case VARIATION -> fertilizerConfig = new Variation(key, fertilizerType, times, fertilizerSec.getDouble("chance"), pot_whitelist, beforePlant, particle, sound, icon); - case QUALITY -> fertilizerConfig = new Quality(key, fertilizerType, times, fertilizerSec.getDouble("chance"), ConfigUtils.getQualityRatio(fertilizerSec.getString("ratio", "2/2/1")), pot_whitelist, beforePlant, particle, sound, icon); - case SOIL_RETAIN -> fertilizerConfig = new SoilRetain(key, fertilizerType, times, fertilizerSec.getDouble("chance"), pot_whitelist, beforePlant, particle, sound, icon); + case SPEED_GROW -> fertilizerConfig = new SpeedGrow(key, fertilizerType, times, getChancePair(fertilizerSec), pot_whitelist, beforePlant, particle, sound, icon, requirements); + case YIELD_INCREASE -> fertilizerConfig = new YieldIncrease(key, fertilizerType, times, fertilizerSec.getDouble("chance"), getChancePair(fertilizerSec), pot_whitelist, beforePlant, particle, sound, icon, requirements); + case VARIATION -> fertilizerConfig = new Variation(key, fertilizerType, times, fertilizerSec.getDouble("chance"), pot_whitelist, beforePlant, particle, sound, icon, requirements); + case QUALITY -> fertilizerConfig = new Quality(key, fertilizerType, times, fertilizerSec.getDouble("chance"), ConfigUtils.getQualityRatio(fertilizerSec.getString("ratio", "2/2/1")), pot_whitelist, beforePlant, particle, sound, icon, requirements); + case SOIL_RETAIN -> fertilizerConfig = new SoilRetain(key, fertilizerType, times, fertilizerSec.getDouble("chance"), pot_whitelist, beforePlant, particle, sound, icon, requirements); default -> fertilizerConfig = null; } String item = fertilizerSec.getString("item"); diff --git a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Quality.java b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Quality.java index 4fb8369..81c3d57 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Quality.java +++ b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Quality.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api.object.fertilizer; import net.kyori.adventure.sound.Sound; +import net.momirealms.customcrops.api.object.requirement.Requirement; import org.bukkit.Particle; import org.jetbrains.annotations.Nullable; @@ -26,8 +27,8 @@ public class Quality extends FertilizerConfig { private final double[] ratio; public Quality(String key, FertilizerType fertilizerType, int times, double chance, double[] ratio, - @Nullable String[] pot_whitelist, boolean beforePlant, @Nullable Particle particle, @Nullable Sound sound, @Nullable String icon) { - super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon); + @Nullable String[] pot_whitelist, boolean beforePlant, @Nullable Particle particle, @Nullable Sound sound, @Nullable String icon, Requirement[] requirements) { + super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon, requirements); this.ratio = ratio; } diff --git a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SoilRetain.java b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SoilRetain.java index 9821530..72e6e4b 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SoilRetain.java +++ b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SoilRetain.java @@ -18,13 +18,14 @@ package net.momirealms.customcrops.api.object.fertilizer; import net.kyori.adventure.sound.Sound; +import net.momirealms.customcrops.api.object.requirement.Requirement; import org.bukkit.Particle; import org.jetbrains.annotations.Nullable; public class SoilRetain extends FertilizerConfig { public SoilRetain(String key, FertilizerType fertilizerType, int times, double chance, - @Nullable String[] pot_whitelist, boolean beforePlant, @Nullable Particle particle, @Nullable Sound sound, String icon) { - super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon); + @Nullable String[] pot_whitelist, boolean beforePlant, @Nullable Particle particle, @Nullable Sound sound, String icon, Requirement[] requirements) { + super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon, requirements); } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SpeedGrow.java b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SpeedGrow.java index 4483154..ce64137 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SpeedGrow.java +++ b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/SpeedGrow.java @@ -19,6 +19,7 @@ package net.momirealms.customcrops.api.object.fertilizer; import net.kyori.adventure.sound.Sound; import net.momirealms.customcrops.api.object.Pair; +import net.momirealms.customcrops.api.object.requirement.Requirement; import org.bukkit.Particle; import org.jetbrains.annotations.Nullable; @@ -29,8 +30,8 @@ public class SpeedGrow extends FertilizerConfig { private final List> pairs; public SpeedGrow(String key, FertilizerType fertilizerType, int times, List> pairs, - @Nullable String[] pot_whitelist, boolean beforePlant, @Nullable Particle particle, @Nullable Sound sound, String icon) { - super(key, fertilizerType, times, 1, pot_whitelist, beforePlant, particle, sound, icon); + @Nullable String[] pot_whitelist, boolean beforePlant, @Nullable Particle particle, @Nullable Sound sound, String icon, Requirement[] requirements) { + super(key, fertilizerType, times, 1, pot_whitelist, beforePlant, particle, sound, icon, requirements); this.pairs = pairs; } diff --git a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Variation.java b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Variation.java index 1837efa..5454a96 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Variation.java +++ b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/Variation.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api.object.fertilizer; import net.kyori.adventure.sound.Sound; +import net.momirealms.customcrops.api.object.requirement.Requirement; import org.bukkit.Particle; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class Variation extends FertilizerConfig { public Variation(String key, FertilizerType fertilizerType, int times, double chance, @Nullable String[] pot_whitelist, boolean beforePlant, - @Nullable Particle particle, @Nullable Sound sound, String icon) { - super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon); + @Nullable Particle particle, @Nullable Sound sound, String icon, Requirement[] requirements) { + super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon, requirements); } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/YieldIncrease.java b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/YieldIncrease.java index 8a46b8d..3b93575 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/fertilizer/YieldIncrease.java +++ b/src/main/java/net/momirealms/customcrops/api/object/fertilizer/YieldIncrease.java @@ -19,6 +19,7 @@ package net.momirealms.customcrops.api.object.fertilizer; import net.kyori.adventure.sound.Sound; import net.momirealms.customcrops.api.object.Pair; +import net.momirealms.customcrops.api.object.requirement.Requirement; import org.bukkit.Particle; import org.jetbrains.annotations.Nullable; @@ -30,8 +31,8 @@ public class YieldIncrease extends FertilizerConfig { public YieldIncrease(String key, FertilizerType fertilizerType, int times, double chance, List> pairs, @Nullable String[] pot_whitelist, boolean beforePlant, - @Nullable Particle particle, @Nullable Sound sound, String icon) { - super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon); + @Nullable Particle particle, @Nullable Sound sound, String icon, Requirement[] requirements) { + super(key, fertilizerType, times, chance, pot_whitelist, beforePlant, particle, sound, icon, requirements); this.pairs = pairs; } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/AbstractRequirement.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/AbstractRequirement.java index caacc0a..173ea44 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/AbstractRequirement.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/AbstractRequirement.java @@ -17,6 +17,8 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; +import net.momirealms.customcrops.api.object.world.SimpleLocation; import net.momirealms.customcrops.api.util.AdventureUtils; import org.bukkit.entity.Player; import org.jetbrains.annotations.Nullable; @@ -24,16 +26,24 @@ import org.jetbrains.annotations.Nullable; public abstract class AbstractRequirement { protected String[] msg; + protected Action[] actions; - protected AbstractRequirement(@Nullable String[] msg) { + protected AbstractRequirement(@Nullable String[] msg, @Nullable Action[] actions) { this.msg = msg; + this.actions = actions; } - public void notMetMessage(Player player) { + public void notMetMessage(CurrentState currentState) { + Player player = currentState.getPlayer(); if (msg != null && player != null) { for (String str : msg) { AdventureUtils.playerMessage(player, str); } } + if (actions != null) { + for (Action action : actions) { + action.doOn(player, SimpleLocation.getByBukkitLocation(currentState.getLocation()), null); + } + } } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/BiomeImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/BiomeImpl.java index 0a72cbb..7876be5 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/BiomeImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/BiomeImpl.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api.object.requirement; import net.momirealms.biomeapi.BiomeAPI; +import net.momirealms.customcrops.api.object.action.Action; import org.jetbrains.annotations.Nullable; import java.util.HashSet; @@ -26,8 +27,8 @@ public class BiomeImpl extends AbstractRequirement implements Requirement { private final HashSet biomes; - public BiomeImpl(@Nullable String[] msg, HashSet biomes) { - super(msg); + public BiomeImpl(@Nullable String[] msg, @Nullable Action[] actions, HashSet biomes) { + super(msg, actions); this.biomes = biomes; } @@ -37,7 +38,7 @@ public class BiomeImpl extends AbstractRequirement implements Requirement { if (biomes.contains(currentBiome)) { return true; } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/CurrentState.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/CurrentState.java index 1034116..f99382d 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/CurrentState.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/CurrentState.java @@ -25,8 +25,8 @@ public class CurrentState { private final Location location; private final Player player; - public CurrentState(Location crop_loc, Player player) { - this.location = crop_loc; + public CurrentState(Location location, Player player) { + this.location = location; this.player = player; } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/CustomPapi.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/CustomPapi.java index 7d3878e..77e5ee0 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/CustomPapi.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/CustomPapi.java @@ -17,9 +17,11 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; import net.momirealms.customcrops.api.object.requirement.papi.*; import org.bukkit.configuration.MemorySection; import org.bukkit.entity.Player; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -29,8 +31,8 @@ public class CustomPapi extends AbstractRequirement implements Requirement { private final List papiRequirement; - public CustomPapi(String[] msg, Map expressions){ - super(msg); + public CustomPapi(String[] msg, @Nullable Action[] actions, Map expressions){ + super(msg, actions); papiRequirement = getRequirements(expressions); } @@ -40,7 +42,7 @@ public class CustomPapi extends AbstractRequirement implements Requirement { if (currentState.getPlayer() == null) return true; for (PapiRequirement requirement : papiRequirement) { if (!requirement.isMet(player)) { - notMetMessage(player); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/DateImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/DateImpl.java index a65e339..7dd592f 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/DateImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/DateImpl.java @@ -17,6 +17,9 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; +import org.jetbrains.annotations.Nullable; + import java.util.Calendar; import java.util.HashSet; @@ -24,8 +27,8 @@ public class DateImpl extends AbstractRequirement implements Requirement { private final HashSet dates; - public DateImpl(String[] msg, HashSet dates) { - super(msg); + public DateImpl(String[] msg, @Nullable Action[] actions, HashSet dates) { + super(msg, actions); this.dates = dates; } @@ -36,7 +39,7 @@ public class DateImpl extends AbstractRequirement implements Requirement { if (dates.contains(current)) { return true; } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/JobLevelImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/JobLevelImpl.java index 0edb2c1..7942d2e 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/JobLevelImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/JobLevelImpl.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api.object.requirement; import net.momirealms.customcrops.CustomCrops; +import net.momirealms.customcrops.api.object.action.Action; import net.momirealms.customcrops.integration.JobInterface; import org.jetbrains.annotations.Nullable; @@ -26,8 +27,8 @@ public class JobLevelImpl extends AbstractRequirement implements Requirement { private final int level; private final String jobName; - public JobLevelImpl(@Nullable String[] msg, int level, String jobName) { - super(msg); + public JobLevelImpl(@Nullable String[] msg, @Nullable Action[] actions, int level, String jobName) { + super(msg, actions); this.level = level; this.jobName = jobName; } @@ -39,7 +40,7 @@ public class JobLevelImpl extends AbstractRequirement implements Requirement { if (jobInterface.getLevel(currentState.getPlayer(), jobName) >= level) { return true; } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/PermissionImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/PermissionImpl.java index 576b4d3..23c0818 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/PermissionImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/PermissionImpl.java @@ -17,14 +17,15 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; import org.jetbrains.annotations.Nullable; public class PermissionImpl extends AbstractRequirement implements Requirement { private final String permission; - public PermissionImpl(@Nullable String[] msg, String permission) { - super(msg); + public PermissionImpl(@Nullable String[] msg, @Nullable Action[] actions, String permission) { + super(msg, actions); this.permission = permission; } @@ -37,7 +38,7 @@ public class PermissionImpl extends AbstractRequirement implements Requirement { if (currentState.getPlayer() == null || currentState.getPlayer().hasPermission(permission)) { return true; } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/SeasonImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/SeasonImpl.java index c8f4e61..5615cd1 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/SeasonImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/SeasonImpl.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api.object.requirement; import net.momirealms.customcrops.CustomCrops; +import net.momirealms.customcrops.api.object.action.Action; import net.momirealms.customcrops.api.object.basic.ConfigManager; import net.momirealms.customcrops.api.object.season.CCSeason; import net.momirealms.customcrops.api.object.world.SimpleLocation; @@ -31,8 +32,8 @@ public class SeasonImpl extends AbstractRequirement implements Requirement { private final List seasons; - public SeasonImpl(@Nullable String[] msg, List seasons) { - super(msg); + public SeasonImpl(@Nullable String[] msg, @Nullable Action[] actions, List seasons) { + super(msg, actions); this.seasons = seasons; } @@ -53,7 +54,7 @@ public class SeasonImpl extends AbstractRequirement implements Requirement { } } } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/SkillLevelImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/SkillLevelImpl.java index 068fde2..f367fbe 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/SkillLevelImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/SkillLevelImpl.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api.object.requirement; import net.momirealms.customcrops.CustomCrops; +import net.momirealms.customcrops.api.object.action.Action; import net.momirealms.customcrops.integration.SkillInterface; import org.jetbrains.annotations.Nullable; @@ -25,8 +26,8 @@ public class SkillLevelImpl extends AbstractRequirement implements Requirement { private final int level; - public SkillLevelImpl(@Nullable String[] msg, int level) { - super(msg); + public SkillLevelImpl(@Nullable String[] msg, @Nullable Action[] actions, int level) { + super(msg, actions); this.level = level; } @@ -37,7 +38,7 @@ public class SkillLevelImpl extends AbstractRequirement implements Requirement { if (skillInterface.getLevel(currentState.getPlayer()) >= level) { return true; } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/TimeImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/TimeImpl.java index e9ddd38..e35e422 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/TimeImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/TimeImpl.java @@ -17,6 +17,7 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -25,8 +26,8 @@ public class TimeImpl extends AbstractRequirement implements Requirement { private final List times; - public TimeImpl(@Nullable String[] msg, List times) { - super(msg); + public TimeImpl(@Nullable String[] msg, @Nullable Action[] actions, List times) { + super(msg, actions); this.times = times; } @@ -39,7 +40,7 @@ public class TimeImpl extends AbstractRequirement implements Requirement { return true; } } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/WeatherImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/WeatherImpl.java index d18252c..2764de4 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/WeatherImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/WeatherImpl.java @@ -17,6 +17,7 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; import org.bukkit.World; import org.jetbrains.annotations.Nullable; @@ -24,8 +25,8 @@ public class WeatherImpl extends AbstractRequirement implements Requirement { private final String[] weathers; - public WeatherImpl(@Nullable String[] msg, String[] weathers) { - super(msg); + public WeatherImpl(@Nullable String[] msg, @Nullable Action[] actions, String[] weathers) { + super(msg, actions); this.weathers = weathers; } @@ -41,7 +42,7 @@ public class WeatherImpl extends AbstractRequirement implements Requirement { return true; } } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/WorldImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/WorldImpl.java index 06899f8..cf78f1a 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/WorldImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/WorldImpl.java @@ -17,6 +17,7 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; import org.bukkit.World; import org.jetbrains.annotations.Nullable; @@ -26,8 +27,8 @@ public class WorldImpl extends AbstractRequirement implements Requirement { private final List worlds; - public WorldImpl(@Nullable String[] msg, List worlds) { - super(msg); + public WorldImpl(@Nullable String[] msg, @Nullable Action[] actions, List worlds) { + super(msg, actions); this.worlds = worlds; } @@ -37,7 +38,7 @@ public class WorldImpl extends AbstractRequirement implements Requirement { if (worlds.contains(world.getName())) { return true; } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/api/object/requirement/YPosImpl.java b/src/main/java/net/momirealms/customcrops/api/object/requirement/YPosImpl.java index e92cefd..0a6975d 100644 --- a/src/main/java/net/momirealms/customcrops/api/object/requirement/YPosImpl.java +++ b/src/main/java/net/momirealms/customcrops/api/object/requirement/YPosImpl.java @@ -17,6 +17,7 @@ package net.momirealms.customcrops.api.object.requirement; +import net.momirealms.customcrops.api.object.action.Action; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -25,8 +26,8 @@ public class YPosImpl extends AbstractRequirement implements Requirement { private final List yPos; - public YPosImpl(@Nullable String[] msg, List yPos) { - super(msg); + public YPosImpl(@Nullable String[] msg, @Nullable Action[] actions, List yPos) { + super(msg, actions); this.yPos = yPos; } @@ -39,7 +40,7 @@ public class YPosImpl extends AbstractRequirement implements Requirement { return true; } } - notMetMessage(currentState.getPlayer()); + notMetMessage(currentState); return false; } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/api/util/ConfigUtils.java b/src/main/java/net/momirealms/customcrops/api/util/ConfigUtils.java index 6f7442a..4d75dee 100644 --- a/src/main/java/net/momirealms/customcrops/api/util/ConfigUtils.java +++ b/src/main/java/net/momirealms/customcrops/api/util/ConfigUtils.java @@ -51,6 +51,7 @@ import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import org.checkerframework.checker.units.qual.N; import org.intellij.lang.annotations.Subst; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -205,21 +206,22 @@ public class ConfigUtils { String type = innerSec.getString("type"); if (type == null) continue; String[] msg = innerSec.getStringList("message").size() == 0 ? (innerSec.getString("message") == null ? null : new String[]{innerSec.getString("message")}) : innerSec.getStringList("message").toArray(new String[0]); + ConfigurationSection actionSec = innerSec.getConfigurationSection("actions"); switch (type) { - case "biome" -> requirements.add(new BiomeImpl(msg, new HashSet<>(innerSec.getStringList("value")))); - case "weather" -> requirements.add(new WeatherImpl(msg, innerSec.getStringList("value").toArray(new String[0]))); - case "ypos" -> requirements.add(new YPosImpl(msg, innerSec.getStringList("value"))); + case "biome" -> requirements.add(new BiomeImpl(msg, getActions(actionSec), new HashSet<>(innerSec.getStringList("value")))); + case "weather" -> requirements.add(new WeatherImpl(msg, getActions(actionSec), innerSec.getStringList("value").toArray(new String[0]))); + case "ypos" -> requirements.add(new YPosImpl(msg, getActions(actionSec), innerSec.getStringList("value"))); case "season" -> { if (!ConfigManager.enableSeason) continue; - requirements.add(new SeasonImpl(msg, innerSec.getStringList("value").stream().map(str -> CCSeason.valueOf(str.toUpperCase(Locale.ENGLISH))).collect(Collectors.toList()))); + requirements.add(new SeasonImpl(msg, getActions(actionSec), innerSec.getStringList("value").stream().map(str -> CCSeason.valueOf(str.toUpperCase(Locale.ENGLISH))).collect(Collectors.toList()))); } - case "world" -> requirements.add(new WorldImpl(msg, innerSec.getStringList("value"))); - case "permission" -> requirements.add(new PermissionImpl(msg, innerSec.getString("value"))); - case "time" -> requirements.add(new TimeImpl(msg, innerSec.getStringList("value"))); - case "skill-level" -> requirements.add(new SkillLevelImpl(msg, innerSec.getInt("value"))); - case "job-level" -> requirements.add(new JobLevelImpl(msg, innerSec.getInt("value.level"), innerSec.getString("value.job"))); - case "date" -> requirements.add(new DateImpl(msg, new HashSet<>(innerSec.getStringList("value")))); - case "papi-condition" -> requirements.add(new CustomPapi(msg, Objects.requireNonNull(innerSec.getConfigurationSection("value")).getValues(false))); + case "world" -> requirements.add(new WorldImpl(msg, getActions(actionSec), innerSec.getStringList("value"))); + case "permission" -> requirements.add(new PermissionImpl(msg, getActions(actionSec), innerSec.getString("value"))); + case "time" -> requirements.add(new TimeImpl(msg, getActions(actionSec), innerSec.getStringList("value"))); + case "skill-level" -> requirements.add(new SkillLevelImpl(msg, getActions(actionSec), innerSec.getInt("value"))); + case "job-level" -> requirements.add(new JobLevelImpl(msg, getActions(actionSec), innerSec.getInt("value.level"), innerSec.getString("value.job"))); + case "date" -> requirements.add(new DateImpl(msg, getActions(actionSec), new HashSet<>(innerSec.getStringList("value")))); + case "papi-condition" -> requirements.add(new CustomPapi(msg, getActions(actionSec), Objects.requireNonNull(innerSec.getConfigurationSection("value")).getValues(false))); } } return requirements.toArray(new Requirement[0]); @@ -227,6 +229,11 @@ public class ConfigUtils { return null; } + @Nullable + public static Action[] getActions(ConfigurationSection section) { + return getActions(section, null); + } + @Nullable public static Action[] getActions(ConfigurationSection section, String model_id) { if (section != null) {