From c1203bd3feb9bc2bde95a9b69aecb91498fbee3f Mon Sep 17 00:00:00 2001 From: okx-code Date: Mon, 25 Aug 2025 22:19:26 +0100 Subject: [PATCH] add farm beacon warmup --- .../civmc/heliodor/farmbeacon/FarmBeacon.java | 6 +++--- .../farmbeacon/FarmBeaconListener.java | 2 +- .../realisticbiomes/FarmBeaconManager.java | 21 ++++++++++++++----- .../src/main/resources/config.yml | 2 ++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeacon.java b/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeacon.java index 2d7404df6..dab2e53f9 100644 --- a/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeacon.java +++ b/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeacon.java @@ -21,9 +21,9 @@ public interface FarmBeacon { ItemMeta meta = item.getItemMeta(); meta.itemName(Component.text("Farm Beacon", NamedTextColor.LIGHT_PURPLE)); meta.lore(List.of(Component.text("Allows crops to grow larger and more bountiful", NamedTextColor.WHITE), - Component.text("Within a 20 block radius:", NamedTextColor.WHITE), - Component.text("doubles growth times, and", NamedTextColor.WHITE), - Component.text("increase soil fertility +5%", NamedTextColor.WHITE), + Component.text("Increases soil fertility +5%", NamedTextColor.WHITE), + Component.text("within a 20 block radius.", NamedTextColor.WHITE), + Component.text("Takes 6 days to become effective.", NamedTextColor.WHITE), Component.text("Requires a beacon base and sky exposure", NamedTextColor.WHITE))); meta.setEnchantmentGlintOverride(true); meta.setFireResistant(true); diff --git a/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeaconListener.java b/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeaconListener.java index 3b7c90e8a..486232528 100644 --- a/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeaconListener.java +++ b/plugins/heliodor-paper/src/main/java/net/civmc/heliodor/farmbeacon/FarmBeaconListener.java @@ -38,7 +38,7 @@ public class FarmBeaconListener implements Listener { Block block = event.getBlock(); Beacon type = (Beacon) block.getState(false); - type.getPersistentDataContainer().set(FARM_BEACON_KEY, PersistentDataType.BOOLEAN, true); + type.getPersistentDataContainer().set(FARM_BEACON_KEY, PersistentDataType.LONG, System.currentTimeMillis()); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/FarmBeaconManager.java b/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/FarmBeaconManager.java index 8435d8bfb..6fe9e0d82 100644 --- a/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/FarmBeaconManager.java +++ b/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/FarmBeaconManager.java @@ -6,10 +6,9 @@ import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.World; import org.bukkit.block.Beacon; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.persistence.PersistentDataType; public class FarmBeaconManager { @@ -17,12 +16,14 @@ public class FarmBeaconManager { private final int beaconRange; private final double farmBeaconFertility; private final double farmBeaconGrowthMultiplier; + private final long farmBeaconWarmup; - public FarmBeaconManager(NamespacedKey farmBeaconKey, int beaconRange, double farmBeaconFertility, double farmBeaconGrowthMultiplier) { + public FarmBeaconManager(NamespacedKey farmBeaconKey, int beaconRange, double farmBeaconFertility, double farmBeaconGrowthMultiplier, long farmBeaconWarmup) { this.farmBeaconKey = farmBeaconKey; this.beaconRange = beaconRange; this.farmBeaconFertility = farmBeaconFertility; this.farmBeaconGrowthMultiplier = farmBeaconGrowthMultiplier; + this.farmBeaconWarmup = farmBeaconWarmup; } public static FarmBeaconManager fromConfiguration(ConfigurationSection section) { @@ -30,7 +31,8 @@ public class FarmBeaconManager { NamespacedKey.fromString(section.getString("farm_beacon_key")), section.getInt("farm_beacon_range"), section.getDouble("farm_beacon_fertility"), - section.getDouble("farm_beacon_growth_multiplier") + section.getDouble("farm_beacon_growth_multiplier"), + section.getLong("farm_beacon_warmup") ); } @@ -57,7 +59,16 @@ public class FarmBeaconManager { continue; } - if (beacon.getTier() > 0 && beacon.getPersistentDataContainer().has(farmBeaconKey)) { + if (beacon.getTier() <= 0) { + continue; + } + + Long value = beacon.getPersistentDataContainer().get(farmBeaconKey, PersistentDataType.LONG); + if (value == null) { + continue; + } + + if (System.currentTimeMillis() - value >= farmBeaconWarmup) { return true; } } diff --git a/plugins/realisticbiomes2-paper/src/main/resources/config.yml b/plugins/realisticbiomes2-paper/src/main/resources/config.yml index 1034b3a1b..083f8fb1f 100644 --- a/plugins/realisticbiomes2-paper/src/main/resources/config.yml +++ b/plugins/realisticbiomes2-paper/src/main/resources/config.yml @@ -186,6 +186,8 @@ climate: farm_beacon_key: "heliodor:farm_beacon" farm_beacon_range: 20 farm_beacon_fertility: 0.05 +farm_beacon_growth_multiplier: 1 +farm_beacon_warmup: 518400000 plants: