From c9ce385cddea9495ef337979c9a60a4e9dfa488e Mon Sep 17 00:00:00 2001
From: Xiao-MoMi <70987828+Xiao-MoMi@users.noreply.github.com>
Date: Wed, 19 Oct 2022 14:32:54 +0800
Subject: [PATCH] API improvement
---
build.gradle | 2 +-
.../momirealms/customcrops/api/crop/Crop.java | 2 +-
.../customcrops/api/event/SeedPlantEvent.java | 17 +++++-
.../season => api/utils}/CCSeason.java | 2 +-
.../customcrops/api/utils/CropUtils.java | 12 ++++
.../customcrops/api/utils/SeasonUtils.java | 12 +++-
.../commands/subcmd/SetSeasonCommand.java | 2 +-
.../customcrops/config/CropConfig.java | 2 +-
.../integrations/customplugin/HandlerP.java | 57 ++++++++++---------
.../itemsadder/ItemsAdderFrameHandler.java | 4 +-
.../itemsadder/ItemsAdderWireHandler.java | 4 +-
.../oraxen/OraxenFrameHandler.java | 4 +-
.../oraxen/OraxenWireHandler.java | 4 +-
.../integrations/papi/SeasonPapi.java | 10 +---
.../integrations/season/InternalSeason.java | 1 +
.../season/RealisticSeasonsHook.java | 5 ++
.../integrations/season/SeasonInterface.java | 1 +
.../customcrops/managers/CropManager.java | 7 ++-
.../customcrops/managers/CustomWorld.java | 4 +-
.../customcrops/objects/CCCrop.java | 2 +-
.../resources/messages/messages_english.yml | 2 +-
21 files changed, 98 insertions(+), 58 deletions(-)
rename src/main/java/net/momirealms/customcrops/{integrations/season => api/utils}/CCSeason.java (93%)
diff --git a/build.gradle b/build.gradle
index b39731d..5605107 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group = 'net.momirealms'
-version = '2.0-r9'
+version = '2.0.1'
repositories {
mavenCentral()
diff --git a/src/main/java/net/momirealms/customcrops/api/crop/Crop.java b/src/main/java/net/momirealms/customcrops/api/crop/Crop.java
index 54fdfc8..50d991c 100644
--- a/src/main/java/net/momirealms/customcrops/api/crop/Crop.java
+++ b/src/main/java/net/momirealms/customcrops/api/crop/Crop.java
@@ -17,7 +17,7 @@
package net.momirealms.customcrops.api.crop;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.objects.GiganticCrop;
import net.momirealms.customcrops.objects.OtherLoot;
import net.momirealms.customcrops.objects.QualityLoot;
diff --git a/src/main/java/net/momirealms/customcrops/api/event/SeedPlantEvent.java b/src/main/java/net/momirealms/customcrops/api/event/SeedPlantEvent.java
index d8ccc73..e2ca86d 100644
--- a/src/main/java/net/momirealms/customcrops/api/event/SeedPlantEvent.java
+++ b/src/main/java/net/momirealms/customcrops/api/event/SeedPlantEvent.java
@@ -22,19 +22,22 @@ import net.momirealms.customcrops.api.crop.Crop;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
+import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
-public class SeedPlantEvent extends PlayerEvent implements Cancellable {
+public class SeedPlantEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private final Location seedLoc;
private final Crop crop;
+ private final Player player;
- public SeedPlantEvent(@NotNull Player who, Location seedLoc, Crop crop) {
- super(who);
+ public SeedPlantEvent(@Nullable Player who, Location seedLoc, Crop crop) {
+ this.player = who;
this.cancelled = false;
this.seedLoc = seedLoc;
this.crop = crop;
@@ -62,4 +65,12 @@ public class SeedPlantEvent extends PlayerEvent implements Cancellable {
public Crop getCrop() {
return crop;
}
+
+ /**
+ * return null if this is not triggered by a player
+ */
+ @Nullable
+ public Player getPlayer() {
+ return player;
+ }
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/season/CCSeason.java b/src/main/java/net/momirealms/customcrops/api/utils/CCSeason.java
similarity index 93%
rename from src/main/java/net/momirealms/customcrops/integrations/season/CCSeason.java
rename to src/main/java/net/momirealms/customcrops/api/utils/CCSeason.java
index c0d6ea6..b62d981 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/season/CCSeason.java
+++ b/src/main/java/net/momirealms/customcrops/api/utils/CCSeason.java
@@ -15,7 +15,7 @@
* along with this program. If not, see .
*/
-package net.momirealms.customcrops.integrations.season;
+package net.momirealms.customcrops.api.utils;
public enum CCSeason {
diff --git a/src/main/java/net/momirealms/customcrops/api/utils/CropUtils.java b/src/main/java/net/momirealms/customcrops/api/utils/CropUtils.java
index ecf7227..f0464d5 100644
--- a/src/main/java/net/momirealms/customcrops/api/utils/CropUtils.java
+++ b/src/main/java/net/momirealms/customcrops/api/utils/CropUtils.java
@@ -17,8 +17,10 @@
package net.momirealms.customcrops.api.utils;
+import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.api.crop.Crop;
import net.momirealms.customcrops.config.CropConfig;
+import org.bukkit.Location;
import org.jetbrains.annotations.Nullable;
public class CropUtils {
@@ -32,4 +34,14 @@ public class CropUtils {
public static Crop getCrop(String crop) {
return CropConfig.CROPS.get(crop);
}
+
+ /**
+ * whether planting succeeds
+ * @param location location
+ * @param crop crop
+ * @return
+ */
+ public static boolean plantCrop(Location location, String crop) {
+ return CustomCrops.plugin.getCropManager().getHandler().plantSeed(location, crop, null, null);
+ }
}
diff --git a/src/main/java/net/momirealms/customcrops/api/utils/SeasonUtils.java b/src/main/java/net/momirealms/customcrops/api/utils/SeasonUtils.java
index 545c170..c2226eb 100644
--- a/src/main/java/net/momirealms/customcrops/api/utils/SeasonUtils.java
+++ b/src/main/java/net/momirealms/customcrops/api/utils/SeasonUtils.java
@@ -18,7 +18,7 @@
package net.momirealms.customcrops.api.utils;
import net.momirealms.customcrops.CustomCrops;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.config.MessageConfig;
import org.bukkit.World;
import org.jetbrains.annotations.NotNull;
@@ -50,4 +50,14 @@ public class SeasonUtils {
public static void unloadSeason(World world) {
CustomCrops.plugin.getCropManager().getSeasonAPI().unloadWorld(world);
}
+
+ public static String getSeasonText(CCSeason season) {
+ return switch (season) {
+ case SPRING -> MessageConfig.spring;
+ case SUMMER -> MessageConfig.summer;
+ case AUTUMN -> MessageConfig.autumn;
+ case WINTER -> MessageConfig.winter;
+ default -> throw new IllegalStateException("Unexpected value: " + season);
+ };
+ }
}
diff --git a/src/main/java/net/momirealms/customcrops/commands/subcmd/SetSeasonCommand.java b/src/main/java/net/momirealms/customcrops/commands/subcmd/SetSeasonCommand.java
index 35fc4e8..c8fdb47 100644
--- a/src/main/java/net/momirealms/customcrops/commands/subcmd/SetSeasonCommand.java
+++ b/src/main/java/net/momirealms/customcrops/commands/subcmd/SetSeasonCommand.java
@@ -22,7 +22,7 @@ import net.momirealms.customcrops.commands.AbstractSubCommand;
import net.momirealms.customcrops.commands.SubCommand;
import net.momirealms.customcrops.config.MessageConfig;
import net.momirealms.customcrops.config.SeasonConfig;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.utils.AdventureUtil;
import org.bukkit.Bukkit;
import org.bukkit.World;
diff --git a/src/main/java/net/momirealms/customcrops/config/CropConfig.java b/src/main/java/net/momirealms/customcrops/config/CropConfig.java
index c341489..6c3542b 100644
--- a/src/main/java/net/momirealms/customcrops/config/CropConfig.java
+++ b/src/main/java/net/momirealms/customcrops/config/CropConfig.java
@@ -18,7 +18,7 @@
package net.momirealms.customcrops.config;
import net.momirealms.customcrops.api.crop.Crop;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.objects.CCCrop;
import net.momirealms.customcrops.objects.GiganticCrop;
import net.momirealms.customcrops.objects.OtherLoot;
diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java
index 48ac389..0311d50 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java
@@ -24,8 +24,9 @@ import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.api.crop.Crop;
import net.momirealms.customcrops.api.event.*;
+import net.momirealms.customcrops.api.utils.SeasonUtils;
import net.momirealms.customcrops.config.*;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.managers.CropManager;
import net.momirealms.customcrops.managers.CustomWorld;
import net.momirealms.customcrops.managers.listener.InteractListener;
@@ -535,53 +536,54 @@ public abstract class HandlerP extends Function {
}
}
- protected void plantSeed(Location seedLoc, String cropName, Player player, ItemStack itemInHand, boolean isOraxen, boolean isWire) {
+ public boolean plantSeed(Location seedLoc, String cropName, @Nullable Player player, @Nullable ItemStack itemInHand) {
Crop crop = CropConfig.CROPS.get(cropName);
- if (crop == null) return;
+ if (crop == null) return false;
CustomWorld customWorld = cropManager.getCustomWorld(seedLoc.getWorld());
- if (customWorld == null) return;
+ if (customWorld == null) return false;
- if (!isOraxen && FurnitureUtil.hasFurniture(seedLoc.clone().add(0.5,0.5,0.5))) return;
- if (isOraxen && FurnitureUtil.hasFurniture(seedLoc.clone().add(0.5,0.03125,0.5))) return;
- if (seedLoc.getBlock().getType() != Material.AIR) return;
-
- PlantingCondition plantingCondition = new PlantingCondition(seedLoc, player);
+ if (!MainConfig.OraxenHook && FurnitureUtil.hasFurniture(seedLoc.clone().add(0.5,0.5,0.5))) return false;
+ if (MainConfig.OraxenHook && FurnitureUtil.hasFurniture(seedLoc.clone().add(0.5,0.03125,0.5))) return false;
+ if (seedLoc.getBlock().getType() != Material.AIR) return false;
CCSeason[] seasons = crop.getSeasons();
if (SeasonConfig.enable && seasons != null) {
if (cropManager.isWrongSeason(seedLoc, seasons)) {
- if (MainConfig.notifyInWrongSeason) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.wrongSeason);
- if (MainConfig.preventInWrongSeason) return;
+ if (MainConfig.notifyInWrongSeason) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.wrongSeason.replace("{season}", SeasonUtils.getSeasonText(SeasonUtils.getSeason(seedLoc.getWorld()))));
+ if (MainConfig.preventInWrongSeason) return false;
}
}
- if (crop.getRequirements() != null) {
- for (RequirementInterface requirement : crop.getRequirements()) {
- if (!requirement.isConditionMet(plantingCondition)) {
- return;
+ if (player != null) {
+ PlantingCondition plantingCondition = new PlantingCondition(seedLoc, player);
+ if (crop.getRequirements() != null) {
+ for (RequirementInterface requirement : crop.getRequirements()) {
+ if (!requirement.isConditionMet(plantingCondition)) {
+ return false;
+ }
}
}
}
- if (MainConfig.limitation ) {
- if (isWire && LimitationUtil.reachWireLimit(seedLoc)) {
- AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitWire.replace("{max}", String.valueOf(MainConfig.wireAmount)));
- return;
+ if (MainConfig.limitation) {
+ if (MainConfig.cropMode && LimitationUtil.reachWireLimit(seedLoc)) {
+ if (player != null) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitWire.replace("{max}", String.valueOf(MainConfig.wireAmount)));
+ return false;
}
- if (!isWire && LimitationUtil.reachFrameLimit(seedLoc)) {
- AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitFrame.replace("{max}", String.valueOf(MainConfig.frameAmount)));
- return;
+ if (!MainConfig.cropMode && LimitationUtil.reachFrameLimit(seedLoc)) {
+ if (player != null) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitFrame.replace("{max}", String.valueOf(MainConfig.frameAmount)));
+ return false;
}
}
SeedPlantEvent seedPlantEvent = new SeedPlantEvent(player, seedLoc, crop);
Bukkit.getPluginManager().callEvent(seedPlantEvent);
if (seedPlantEvent.isCancelled()) {
- return;
+ return false;
}
- if (SoundConfig.plantSeed.isEnable()) {
+ if (SoundConfig.plantSeed.isEnable() && player != null) {
AdventureUtil.playerSound(
player,
SoundConfig.plantSeed.getSource(),
@@ -590,13 +592,14 @@ public abstract class HandlerP extends Function {
);
}
- if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
- if (isWire) customInterface.placeWire(seedLoc, cropName + "_stage_1");
+ if (itemInHand != null && player != null && player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
+ if (MainConfig.cropMode) customInterface.placeWire(seedLoc, cropName + "_stage_1");
else {
ItemFrame itemFrame = customInterface.placeFurniture(seedLoc, cropName + "_stage_1");
- if (itemFrame == null) return;
+ if (itemFrame == null) return false;
itemFrame.setRotation(FurnitureUtil.getRandomRotation());
}
customWorld.addCrop(seedLoc, cropName);
+ return true;
}
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java
index 5419b9d..7849caa 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java
@@ -188,13 +188,13 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
String namespacedID = customStack.getNamespacedID();
if (namespacedID.endsWith("_seeds")) {
String cropName = customStack.getId().substring(0, customStack.getId().length() - 6);
- plantSeed(seedLoc, cropName, player, itemInHand, false, false);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
else if (MainConfig.enableConvert) {
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
if (cropName == null) return;
- plantSeed(seedLoc, cropName, player, itemInHand, false, false);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java
index fe6061c..c2f41c3 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java
@@ -163,13 +163,13 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler {
String namespacedID = customStack.getNamespacedID();
if (namespacedID.endsWith("_seeds")) {
String cropName = customStack.getId().substring(0, customStack.getId().length() - 6);
- plantSeed(seedLoc, cropName, player, itemInHand, false, true);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
else if (MainConfig.enableConvert) {
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
if (cropName == null) return;
- plantSeed(seedLoc, cropName, player, itemInHand, false, true);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java
index 90f2283..fee34d6 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java
@@ -142,13 +142,13 @@ public class OraxenFrameHandler extends OraxenHandler {
if (id != null) {
if (id.endsWith("_seeds")) {
String cropName = id.substring(0, id.length() - 6);
- plantSeed(seedLoc, cropName, player, itemInHand, true, false);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
else if (MainConfig.enableConvert) {
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
if (cropName == null) return;
- plantSeed(seedLoc, cropName, player, itemInHand, true, false);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java
index 80fcfed..977c0f1 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java
@@ -184,13 +184,13 @@ public class OraxenWireHandler extends OraxenHandler{
if (id != null) {
if (id.endsWith("_seeds")) {
String cropName = id.substring(0, id.length() - 6);
- plantSeed(seedLoc, cropName, player, itemInHand, true, true);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
else if (MainConfig.enableConvert) {
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
if (cropName == null) return;
- plantSeed(seedLoc, cropName, player, itemInHand, true, true);
+ plantSeed(seedLoc, cropName, player, itemInHand);
}
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/papi/SeasonPapi.java b/src/main/java/net/momirealms/customcrops/integrations/papi/SeasonPapi.java
index 8d50b7e..95bba52 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/papi/SeasonPapi.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/papi/SeasonPapi.java
@@ -22,7 +22,7 @@ import net.momirealms.customcrops.api.utils.SeasonUtils;
import net.momirealms.customcrops.config.MainConfig;
import net.momirealms.customcrops.config.MessageConfig;
import net.momirealms.customcrops.config.SeasonConfig;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
@@ -97,12 +97,6 @@ public class SeasonPapi extends PlaceholderExpansion {
private String getSeasonText(World world) {
CCSeason season = SeasonUtils.getSeason(world);
- return switch (season) {
- case SPRING -> MessageConfig.spring;
- case SUMMER -> MessageConfig.summer;
- case AUTUMN -> MessageConfig.autumn;
- case WINTER -> MessageConfig.winter;
- default -> throw new IllegalStateException("Unexpected value: " + season);
- };
+ return SeasonUtils.getSeasonText(season);
}
}
diff --git a/src/main/java/net/momirealms/customcrops/integrations/season/InternalSeason.java b/src/main/java/net/momirealms/customcrops/integrations/season/InternalSeason.java
index 640630f..117850f 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/season/InternalSeason.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/season/InternalSeason.java
@@ -18,6 +18,7 @@
package net.momirealms.customcrops.integrations.season;
import net.momirealms.customcrops.CustomCrops;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.config.MainConfig;
import net.momirealms.customcrops.config.SeasonConfig;
import net.momirealms.customcrops.objects.Function;
diff --git a/src/main/java/net/momirealms/customcrops/integrations/season/RealisticSeasonsHook.java b/src/main/java/net/momirealms/customcrops/integrations/season/RealisticSeasonsHook.java
index b7c8476..f96bdef 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/season/RealisticSeasonsHook.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/season/RealisticSeasonsHook.java
@@ -18,6 +18,7 @@
package net.momirealms.customcrops.integrations.season;
import me.casperge.realisticseasons.api.SeasonsAPI;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.config.MainConfig;
import net.momirealms.customcrops.objects.Function;
import org.bukkit.World;
@@ -28,6 +29,10 @@ public class RealisticSeasonsHook extends Function implements SeasonInterface {
private SeasonsAPI api;
+ public RealisticSeasonsHook() {
+ load();
+ }
+
@Override
public void load() {
super.load();
diff --git a/src/main/java/net/momirealms/customcrops/integrations/season/SeasonInterface.java b/src/main/java/net/momirealms/customcrops/integrations/season/SeasonInterface.java
index a86b818..48df5e5 100644
--- a/src/main/java/net/momirealms/customcrops/integrations/season/SeasonInterface.java
+++ b/src/main/java/net/momirealms/customcrops/integrations/season/SeasonInterface.java
@@ -17,6 +17,7 @@
package net.momirealms.customcrops.integrations.season;
+import net.momirealms.customcrops.api.utils.CCSeason;
import org.bukkit.World;
public interface SeasonInterface {
diff --git a/src/main/java/net/momirealms/customcrops/managers/CropManager.java b/src/main/java/net/momirealms/customcrops/managers/CropManager.java
index 14c417a..e96cf91 100644
--- a/src/main/java/net/momirealms/customcrops/managers/CropManager.java
+++ b/src/main/java/net/momirealms/customcrops/managers/CropManager.java
@@ -29,7 +29,7 @@ import net.momirealms.customcrops.integrations.customplugin.CustomInterface;
import net.momirealms.customcrops.integrations.customplugin.HandlerP;
import net.momirealms.customcrops.integrations.customplugin.itemsadder.*;
import net.momirealms.customcrops.integrations.customplugin.oraxen.*;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.integrations.season.InternalSeason;
import net.momirealms.customcrops.integrations.season.RealisticSeasonsHook;
import net.momirealms.customcrops.integrations.season.SeasonInterface;
@@ -57,7 +57,6 @@ import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Future;
import java.util.concurrent.ThreadLocalRandom;
public class CropManager extends Function {
@@ -465,4 +464,8 @@ public class CropManager extends Function {
public ArmorStandUtil getArmorStandUtil() {
return armorStandUtil;
}
+
+ public HandlerP getHandler() {
+ return handler;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java b/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java
index a6f297f..fdc6f01 100644
--- a/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java
+++ b/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java
@@ -22,7 +22,7 @@ import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.api.event.CustomWorldEvent;
import net.momirealms.customcrops.api.utils.SeasonUtils;
import net.momirealms.customcrops.config.*;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.objects.SimpleLocation;
import net.momirealms.customcrops.objects.Sprinkler;
import net.momirealms.customcrops.objects.WorldState;
@@ -59,7 +59,6 @@ public class CustomWorld {
private final BukkitScheduler bukkitScheduler;
private final HashSet plantedToday;
private final CropModeInterface cropMode;
-
private YamlConfiguration cropData;
public CustomWorld(World world, CropManager cropManager) {
@@ -332,6 +331,7 @@ public class CustomWorld {
}
public void growWire(int cropTime, int sprinklerTime, int dryTime, boolean compensation, boolean force) {
+ if (cropData == null) return;
Random randomGenerator = new Random();
if (force) {
diff --git a/src/main/java/net/momirealms/customcrops/objects/CCCrop.java b/src/main/java/net/momirealms/customcrops/objects/CCCrop.java
index 38a860f..4e18db9 100644
--- a/src/main/java/net/momirealms/customcrops/objects/CCCrop.java
+++ b/src/main/java/net/momirealms/customcrops/objects/CCCrop.java
@@ -18,7 +18,7 @@
package net.momirealms.customcrops.objects;
import net.momirealms.customcrops.api.crop.Crop;
-import net.momirealms.customcrops.integrations.season.CCSeason;
+import net.momirealms.customcrops.api.utils.CCSeason;
import net.momirealms.customcrops.objects.actions.ActionInterface;
import net.momirealms.customcrops.objects.requirements.RequirementInterface;
diff --git a/src/main/resources/messages/messages_english.yml b/src/main/resources/messages/messages_english.yml
index 716374e..c110ae9 100644
--- a/src/main/resources/messages/messages_english.yml
+++ b/src/main/resources/messages/messages_english.yml
@@ -17,7 +17,7 @@ messages:
grow-simulation: 'Growing simulation has started'
set-season: 'Successfully set {world}''s season to {season}!'
before-plant: 'This fertilizer must be used before planting!'
- wrong-season: 'Current season is not suitable for planting this seed'
+ wrong-season: 'Current season is not suitable for planting this seed. Suitable season: {season}'
no-season: 'No season'
season-disabled: 'Season is disabled'