From d42aae28c8ce4e0fccbc85f5c20f764ab35e002d Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Sat, 27 Apr 2024 22:44:16 +0800 Subject: [PATCH] [Feature] Variation keeps the data --- .../net/momirealms/customcrops/api/mechanic/item/Crop.java | 7 +++++++ .../customcrops/mechanic/action/ActionManagerImpl.java | 5 ++++- .../customcrops/mechanic/item/impl/CropConfig.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/Crop.java b/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/Crop.java index e378a98..4a942f1 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/Crop.java +++ b/api/src/main/java/net/momirealms/customcrops/api/mechanic/item/Crop.java @@ -151,6 +151,13 @@ public interface Crop extends KeyItem { interface Stage { + /** + * Get the crop config + * + * @return crop config + */ + Crop getCrop(); + /** * Get the offset of the hologram * diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java index b3f4501..c34e1ad 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/action/ActionManagerImpl.java @@ -494,9 +494,12 @@ public class ActionManagerImpl implements ActionManager { } for (VariationCrop variationCrop : variations) { if (Math.random() < variationCrop.getChance() + bonus) { + SimpleLocation location = SimpleLocation.of(state.getLocation()); plugin.getItemManager().removeAnythingAt(state.getLocation()); - plugin.getWorldManager().removeAnythingAt(SimpleLocation.of(state.getLocation())); + plugin.getWorldManager().removeAnythingAt(location); plugin.getItemManager().placeItem(state.getLocation(), variationCrop.getItemCarrier(), variationCrop.getItemID()); + Optional.ofNullable(plugin.getItemManager().getCropStageByStageID(variationCrop.getItemID())) + .ifPresent(stage -> plugin.getWorldManager().addCropAt(new MemoryCrop(location, stage.getCrop().getKey(), stage.getPoint()), location)); break; } } diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/CropConfig.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/CropConfig.java index 2b746fe..2618d5a 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/CropConfig.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/item/impl/CropConfig.java @@ -17,6 +17,7 @@ package net.momirealms.customcrops.mechanic.item.impl; +import net.momirealms.customcrops.api.CustomCropsPlugin; import net.momirealms.customcrops.api.mechanic.action.Action; import net.momirealms.customcrops.api.mechanic.action.ActionTrigger; import net.momirealms.customcrops.api.mechanic.condition.Conditions; @@ -206,6 +207,11 @@ public class CropConfig extends AbstractEventItem implements Crop { this.breakRequirements = breakRequirements; } + @Override + public Crop getCrop() { + return CustomCropsPlugin.get().getItemManager().getCropByStageID(stageID); + } + @Override public double getHologramOffset() { return hologramOffset;