From a9b72c160bdc862209be23efef924591d7024ebf Mon Sep 17 00:00:00 2001 From: Xiao-MoMi <70987828+Xiao-MoMi@users.noreply.github.com> Date: Fri, 20 Jan 2023 16:25:18 +0800 Subject: [PATCH] 2.2.2-hotfix --- build.gradle | 2 +- .../protection/IridiumSkyblockHook.java | 17 +++++++ .../customcrops/managers/CustomWorld.java | 51 +++++++++---------- .../objects/requirements/CustomPapi.java | 18 +++---- .../requirements/papi/ExpressionAnd.java | 6 ++- .../requirements/papi/ExpressionOr.java | 6 ++- .../objects/requirements/papi/PapiEquals.java | 7 ++- .../requirements/papi/PapiGreater.java | 9 ++-- .../requirements/papi/PapiNoLarger.java | 9 ++-- .../objects/requirements/papi/PapiNoLess.java | 9 ++-- .../requirements/papi/PapiNotEquals.java | 7 ++- .../requirements/papi/PapiRequirement.java | 4 +- .../requirements/papi/PapiSmaller.java | 9 ++-- 13 files changed, 97 insertions(+), 57 deletions(-) diff --git a/build.gradle b/build.gradle index e7b902b..cedfdbb 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'net.momirealms' -version = '2.2.2' +version = '2.2.2-hotfix' repositories { mavenCentral() diff --git a/src/main/java/net/momirealms/customcrops/integrations/protection/IridiumSkyblockHook.java b/src/main/java/net/momirealms/customcrops/integrations/protection/IridiumSkyblockHook.java index f64e359..5f378ae 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/protection/IridiumSkyblockHook.java +++ b/src/main/java/net/momirealms/customcrops/integrations/protection/IridiumSkyblockHook.java @@ -1,3 +1,20 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + package net.momirealms.customcrops.integrations.protection; import com.iridium.iridiumskyblock.PermissionType; diff --git a/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java b/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java index 3dac0f5..6c526c9 100644 --- a/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java +++ b/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java @@ -363,15 +363,15 @@ public class CustomWorld { if (cropData == null) return; Random randomGenerator = new Random(); if (force) { - for (Map.Entry entry : cropData.entrySet()) { - growSingleWire(entry.getKey(), entry.getValue(), randomGenerator.nextInt(cropTime)); + for (SimpleLocation location : cropData.keySet()) { + growSingleWire(location, randomGenerator.nextInt(cropTime)); } } else if (!compensation) { route(sprinklerTime); - for (Map.Entry entry : cropData.entrySet()) { - growSingleWire(entry.getKey(), entry.getValue(), sprinklerTime + dryTime + randomGenerator.nextInt(cropTime)); + for (SimpleLocation location : cropData.keySet()) { + growSingleWire(location, sprinklerTime + dryTime + randomGenerator.nextInt(cropTime)); } Bukkit.getScheduler().runTaskLaterAsynchronously(CustomCrops.plugin, () -> { @@ -381,17 +381,19 @@ public class CustomWorld { else { int delay = (int) (24000 - world.getTime()); double chance = (double) (24000 - world.getTime()) / 24000; - for (Map.Entry entry : cropData.entrySet()) { + for (SimpleLocation location : cropData.keySet()) { if (Math.random() < chance) { - growSingleWire(entry.getKey(), entry.getValue(), randomGenerator.nextInt(delay)); + growSingleWire(location, randomGenerator.nextInt(delay)); } } } } - private void growSingleWire(SimpleLocation simpleLocation, GrowingCrop growingCrop, long delay) { + private void growSingleWire(SimpleLocation simpleLocation, long delay) { bukkitScheduler.runTaskLaterAsynchronously(CustomCrops.plugin, () -> { Location location = MiscUtils.getLocation(simpleLocation); + GrowingCrop growingCrop = cropData.get(simpleLocation); + if (growingCrop == null) return; if (cropManager.wireGrowJudge(location, growingCrop)) { cropData.remove(simpleLocation); } @@ -402,17 +404,15 @@ public class CustomWorld { if (cropData == null) return; Random randomGenerator = new Random(); if (force) { - for (Map.Entry entry : cropData.entrySet()) { - growSingleFrame(entry.getKey(), entry.getValue(), randomGenerator.nextInt(cropTime)); + for (SimpleLocation location : cropData.keySet()) { + growSingleFrame(location, randomGenerator.nextInt(cropTime)); } } else if (!compensation) { route(sprinklerTime); - - for (Map.Entry entry : cropData.entrySet()) { - growSingleFrame(entry.getKey(), entry.getValue(), sprinklerTime + dryTime + randomGenerator.nextInt(cropTime)); + for (SimpleLocation location : cropData.keySet()) { + growSingleFrame(location, sprinklerTime + dryTime + randomGenerator.nextInt(cropTime)); } - Bukkit.getScheduler().runTaskLaterAsynchronously(CustomCrops.plugin, () -> { potDryJudge(dryTime); }, sprinklerTime); @@ -420,30 +420,29 @@ public class CustomWorld { else { int delay = (int) (24000 - world.getTime()); double chance = (double) (24000 - world.getTime()) / 24000; - for (Map.Entry entry : cropData.entrySet()) { + for (SimpleLocation location : cropData.keySet()) { if (Math.random() < chance) { - growSingleFrame(entry.getKey(), entry.getValue(), randomGenerator.nextInt(delay)); + growSingleFrame(location, randomGenerator.nextInt(delay)); } } } } - private void growSingleFrame(SimpleLocation simpleLocation, GrowingCrop growingCrop, long delay) { + private void growSingleFrame(SimpleLocation simpleLocation, long delay) { bukkitScheduler.runTaskLater(CustomCrops.plugin, () -> { Location location = MiscUtils.getLocation(simpleLocation); if (location == null) return; + GrowingCrop growingCrop = cropData.get(simpleLocation); + if (growingCrop == null) return; location.getChunk().load(); + bukkitScheduler.runTaskLater(CustomCrops.plugin, () -> { + if (cropManager.itemFrameGrowJudge(location, growingCrop)) { + cropData.remove(simpleLocation); + } + }, 5); }, delay); - bukkitScheduler.runTaskLater(CustomCrops.plugin, () -> { - Location location = MiscUtils.getLocation(simpleLocation); - if (location == null) return; - if (cropManager.itemFrameGrowJudge(location, growingCrop)) { - cropData.remove(simpleLocation); - } - }, delay + 5); } - private void route(int sprinklerTime) { //先将湿润的种植盆放入等待判断的种植盆列表中 tempWatered = new HashSet<>(watered); @@ -556,8 +555,8 @@ public class CustomWorld { double chance = (double) (24000 - world.getTime()) / 24000; plantedToday.add(simpleLocation); if (Math.random() > chance) return; - if (MainConfig.cropMode) growSingleWire(simpleLocation, growingCrop, new Random().nextInt(delay)); - else growSingleFrame(simpleLocation, growingCrop, new Random().nextInt(delay)); + if (MainConfig.cropMode) growSingleWire(simpleLocation, new Random().nextInt(delay)); + else growSingleFrame(simpleLocation, new Random().nextInt(delay)); } } @Nullable diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/CustomPapi.java b/src/main/java/net/momirealms/customcrops/objects/requirements/CustomPapi.java index 192571b..9b42ac2 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/CustomPapi.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/CustomPapi.java @@ -62,10 +62,10 @@ public class CustomPapi implements RequirementInterface { switch (type){ case "==" -> papiRequirement = new PapiEquals(papi, value); case "!=" -> papiRequirement = new PapiNotEquals(papi, value); - case ">=" -> papiRequirement = new PapiNoLess(papi, Double.parseDouble(value)); - case "<=" -> papiRequirement = new PapiNoLarger(papi, Double.parseDouble(value)); - case "<" -> papiRequirement = new PapiSmaller(papi, Double.parseDouble(value)); - case ">" -> papiRequirement = new PapiGreater(papi, Double.parseDouble(value)); + case ">=" -> papiRequirement = new PapiNoLess(papi, value); + case "<=" -> papiRequirement = new PapiNoLarger(papi, value); + case "<" -> papiRequirement = new PapiSmaller(papi, value); + case ">" -> papiRequirement = new PapiGreater(papi, value); } } } @@ -74,7 +74,7 @@ public class CustomPapi implements RequirementInterface { @Override public boolean isConditionMet(PlantingCondition plantingCondition) { - if (!papiRequirement.isMet(plantingCondition.getPapiMap())) { + if (!papiRequirement.isMet(plantingCondition.getPapiMap(), plantingCondition.getPlayer())) { if (msg != null) AdventureUtil.playerMessage(plantingCondition.getPlayer(), msg); return false; } @@ -112,10 +112,10 @@ public class CustomPapi implements RequirementInterface { switch (type){ case "==" -> papiRequirements.add(new PapiEquals(papi, value)); case "!=" -> papiRequirements.add(new PapiNotEquals(papi, value)); - case ">=" -> papiRequirements.add(new PapiNoLess(papi, Double.parseDouble(value))); - case "<=" -> papiRequirements.add(new PapiNoLarger(papi, Double.parseDouble(value))); - case "<" -> papiRequirements.add(new PapiSmaller(papi, Double.parseDouble(value))); - case ">" -> papiRequirements.add(new PapiGreater(papi, Double.parseDouble(value))); + case ">=" -> papiRequirements.add(new PapiNoLess(papi, value)); + case "<=" -> papiRequirements.add(new PapiNoLarger(papi, value)); + case "<" -> papiRequirements.add(new PapiSmaller(papi, value)); + case ">" -> papiRequirements.add(new PapiGreater(papi, value)); } } } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionAnd.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionAnd.java index 56c6e19..05bdfff 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionAnd.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionAnd.java @@ -17,15 +17,17 @@ package net.momirealms.customcrops.objects.requirements.papi; +import org.bukkit.entity.Player; + import java.util.HashMap; import java.util.List; public record ExpressionAnd(List requirements) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { for (PapiRequirement requirement : requirements) { - if (!requirement.isMet(papiMap)) return false; + if (!requirement.isMet(papiMap, player)) return false; } return true; } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionOr.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionOr.java index 5b5a498..cc01373 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionOr.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/ExpressionOr.java @@ -17,15 +17,17 @@ package net.momirealms.customcrops.objects.requirements.papi; +import org.bukkit.entity.Player; + import java.util.HashMap; import java.util.List; public record ExpressionOr(List requirements) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { for (PapiRequirement requirement : requirements) { - if (requirement.isMet(papiMap)) return true; + if (requirement.isMet(papiMap, player)) return true; } return false; } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiEquals.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiEquals.java index e58db79..60cd62f 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiEquals.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiEquals.java @@ -17,14 +17,17 @@ package net.momirealms.customcrops.objects.requirements.papi; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.entity.Player; + import java.util.HashMap; import java.util.Objects; public record PapiEquals(String papi, String requirement) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { String value = papiMap.get(papi); - return Objects.equals(value, requirement); + return Objects.equals(value, PlaceholderAPI.setPlaceholders(player, requirement)); } } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiGreater.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiGreater.java index f386d86..a58fea6 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiGreater.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiGreater.java @@ -17,13 +17,16 @@ package net.momirealms.customcrops.objects.requirements.papi; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.entity.Player; + import java.util.HashMap; -public record PapiGreater(String papi, double requirement) implements PapiRequirement{ +public record PapiGreater(String papi, String requirement) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { double value = Double.parseDouble(papiMap.get(papi)); - return value > requirement; + return value > Double.parseDouble(PlaceholderAPI.setPlaceholders(player, requirement)); } } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLarger.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLarger.java index 075edb1..863290b 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLarger.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLarger.java @@ -17,13 +17,16 @@ package net.momirealms.customcrops.objects.requirements.papi; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.entity.Player; + import java.util.HashMap; -public record PapiNoLarger(String papi, double requirement) implements PapiRequirement{ +public record PapiNoLarger(String papi, String requirement) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { double value = Double.parseDouble(papiMap.get(papi)); - return value <= requirement; + return value <= Double.parseDouble(PlaceholderAPI.setPlaceholders(player, requirement)); } } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLess.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLess.java index e3f1fd7..72f68ce 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLess.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNoLess.java @@ -17,13 +17,16 @@ package net.momirealms.customcrops.objects.requirements.papi; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.entity.Player; + import java.util.HashMap; -public record PapiNoLess(String papi, double requirement) implements PapiRequirement{ +public record PapiNoLess(String papi, String requirement) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { double value = Double.parseDouble(papiMap.get(papi)); - return value >= requirement; + return value >= Double.parseDouble(PlaceholderAPI.setPlaceholders(player, requirement)); } } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNotEquals.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNotEquals.java index 11a48ae..95555b3 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNotEquals.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiNotEquals.java @@ -17,14 +17,17 @@ package net.momirealms.customcrops.objects.requirements.papi; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.entity.Player; + import java.util.HashMap; import java.util.Objects; public record PapiNotEquals(String papi, String requirement) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { String value = papiMap.get(papi); - return !Objects.equals(value, requirement); + return !Objects.equals(value, PlaceholderAPI.setPlaceholders(player, requirement)); } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiRequirement.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiRequirement.java index cc66df8..a2eb97b 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiRequirement.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiRequirement.java @@ -17,8 +17,10 @@ package net.momirealms.customcrops.objects.requirements.papi; +import org.bukkit.entity.Player; + import java.util.HashMap; public interface PapiRequirement { - boolean isMet(HashMap papiMap); + boolean isMet(HashMap papiMap, Player player); } diff --git a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiSmaller.java b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiSmaller.java index acd1281..85a577d 100644 --- a/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiSmaller.java +++ b/src/main/java/net/momirealms/customcrops/objects/requirements/papi/PapiSmaller.java @@ -17,13 +17,16 @@ package net.momirealms.customcrops.objects.requirements.papi; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.entity.Player; + import java.util.HashMap; -public record PapiSmaller(String papi, double requirement) implements PapiRequirement{ +public record PapiSmaller(String papi, String requirement) implements PapiRequirement{ @Override - public boolean isMet(HashMap papiMap) { + public boolean isMet(HashMap papiMap, Player player) { double value = Double.parseDouble(papiMap.get(papi)); - return value < requirement; + return value < Double.parseDouble(PlaceholderAPI.setPlaceholders(player, requirement)); } }