diff --git a/api/src/main/java/net/momirealms/customcrops/api/CustomCropsPlugin.java b/api/src/main/java/net/momirealms/customcrops/api/CustomCropsPlugin.java index 042c746..b772c49 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/CustomCropsPlugin.java +++ b/api/src/main/java/net/momirealms/customcrops/api/CustomCropsPlugin.java @@ -18,6 +18,7 @@ package net.momirealms.customcrops.api; import net.momirealms.customcrops.api.manager.*; +import net.momirealms.customcrops.api.mechanic.world.season.Season; import net.momirealms.customcrops.api.scheduler.Scheduler; import org.bukkit.plugin.java.JavaPlugin; diff --git a/api/src/main/java/net/momirealms/customcrops/api/manager/WorldManager.java b/api/src/main/java/net/momirealms/customcrops/api/manager/WorldManager.java index 7577a19..8ddc5a1 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/manager/WorldManager.java +++ b/api/src/main/java/net/momirealms/customcrops/api/manager/WorldManager.java @@ -26,6 +26,7 @@ import net.momirealms.customcrops.api.mechanic.world.level.*; import org.bukkit.Chunk; import org.bukkit.World; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Optional; @@ -103,6 +104,28 @@ public interface WorldManager extends Reloadable { Optional getBlockAt(SimpleLocation location); + WorldCrop createCropData(SimpleLocation location, Crop crop, int point); + + default WorldCrop createCropData(SimpleLocation location, Crop crop) { + return createCropData(location, crop, 0); + } + + WorldSprinkler createSprinklerData(SimpleLocation location, Sprinkler sprinkler, int water); + + default WorldSprinkler createSprinklerData(SimpleLocation location, Sprinkler sprinkler) { + return createSprinklerData(location, sprinkler, 0); + } + + WorldPot createPotData(SimpleLocation location, Pot pot, int water, @Nullable Fertilizer fertilizer, int fertilizerTimes); + + default WorldPot createPotData(SimpleLocation location, Pot pot) { + return createPotData(location, pot, 0, null, 0); + } + + WorldGlass createGreenhouseGlassData(SimpleLocation location); + + WorldScarecrow createScarecrowData(SimpleLocation location); + void addWaterToSprinkler(@NotNull Sprinkler sprinkler, @NotNull SimpleLocation location, int amount); void addFertilizerToPot(@NotNull Pot pot, @NotNull Fertilizer fertilizer, @NotNull SimpleLocation location); diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java index e8d9ea2..5d0a6b7 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java @@ -29,6 +29,7 @@ import net.momirealms.customcrops.api.mechanic.world.level.*; import net.momirealms.customcrops.api.util.LogUtils; import net.momirealms.customcrops.mechanic.world.adaptor.BukkitWorldAdaptor; import net.momirealms.customcrops.mechanic.world.adaptor.SlimeWorldAdaptor; +import net.momirealms.customcrops.mechanic.world.block.*; import net.momirealms.customcrops.util.ConfigUtils; import org.bukkit.Bukkit; import org.bukkit.Chunk; @@ -288,6 +289,31 @@ public class WorldManagerImpl implements WorldManager, Listener { return cWorld.getBlockAt(location); } + @Override + public WorldCrop createCropData(SimpleLocation location, Crop crop, int point) { + return new MemoryCrop(location, crop.getKey(), point); + } + + @Override + public WorldSprinkler createSprinklerData(SimpleLocation location, Sprinkler sprinkler, int water) { + return new MemorySprinkler(location, sprinkler.getKey(), water); + } + + @Override + public WorldPot createPotData(SimpleLocation location, Pot pot, int water, Fertilizer fertilizer, int fertilizerTimes) { + return new MemoryPot(location, pot.getKey(), water, fertilizer == null ? "" : fertilizer.getKey(), fertilizerTimes); + } + + @Override + public WorldGlass createGreenhouseGlassData(SimpleLocation location) { + return new MemoryGlass(location); + } + + @Override + public WorldScarecrow createScarecrowData(SimpleLocation location) { + return new MemoryScarecrow(location); + } + @Override public void addWaterToSprinkler(@NotNull Sprinkler sprinkler, @NotNull SimpleLocation location, int amount) { CWorld cWorld = loadedWorlds.get(location.getWorldName());