From ed80c56d9bb0002cd758edd54804de18e354a7dd Mon Sep 17 00:00:00 2001 From: Xiao-MoMi <70987828+Xiao-MoMi@users.noreply.github.com> Date: Tue, 13 Sep 2022 15:34:45 +0800 Subject: [PATCH] 1.6.3.4 --- build.gradle | 3 +- .../momirealms/customcrops/ConfigReader.java | 8 ++++++ .../customcrops/commands/Completer.java | 4 +-- .../customcrops/commands/Executor.java | 28 +++++++++++++++++++ .../listener/itemframe/BreakBlockI.java | 1 + .../listener/itemframe/BreakFurnitureI.java | 1 + .../itemframe/InteractFurnitureI.java | 1 + .../listener/itemframe/RightClickI.java | 1 + .../listener/tripwire/BreakBlockT.java | 8 ++++-- .../listener/tripwire/BreakFurnitureT.java | 1 + .../listener/tripwire/InteractFurnitureT.java | 1 + .../listener/tripwire/RightClickT.java | 1 + .../customcrops/utils/DropUtil.java | 1 - src/main/resources/config.yml | 7 ++++- .../resources/messages/messages_chinese.yml | 1 + .../resources/messages/messages_english.yml | 1 + .../resources/messages/messages_spanish.yml | 1 + src/main/resources/zh-cn/config.yml | 3 ++ 18 files changed, 64 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index f22b7b4..7b6ebc9 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,8 @@ plugins { id 'com.github.johnrengelman.shadow' version '7.1.2' } - group = 'net.momirealms' -version = '1.6.3.2' +version = '1.6.3.4' repositories { mavenCentral() diff --git a/src/main/java/net/momirealms/customcrops/ConfigReader.java b/src/main/java/net/momirealms/customcrops/ConfigReader.java index 8fde6cf..ec29a49 100644 --- a/src/main/java/net/momirealms/customcrops/ConfigReader.java +++ b/src/main/java/net/momirealms/customcrops/ConfigReader.java @@ -47,6 +47,7 @@ public class ConfigReader { public static HashMap FERTILIZERS = new HashMap<>(); public static HashMap CANS = new HashMap<>(); public static HashMap SPRINKLERS = new HashMap<>(); + public static HashSet REALTIME = new HashSet<>(); public static boolean useRedis; public static YamlConfiguration getConfig(String configName) { @@ -128,6 +129,11 @@ public class ConfigReader { rotation = config.getBoolean("config.rotation.enable", false); oneTry = config.getBoolean("config.gigantic-only-one-try", false); variant4 = config.getInt("config.rotation.variant", 4) == 4; + if (config.contains("config.real-time")){ + + REALTIME.clear(); + REALTIME.addAll(config.getStringList("config.real-time")); + } boneMeal = config.getBoolean("config.bone-meal.enable", true); if (boneMeal){ @@ -359,6 +365,7 @@ public class ConfigReader { public static String badSeason; public static String forceGrow; public static String forceWater; + public static String forceAll; public static String backUp; public static String setSeason; public static String wrongArgs; @@ -403,6 +410,7 @@ public class ConfigReader { badSeason = config.getString("messages.bad-season"); forceGrow = config.getString("messages.force-grow"); forceWater = config.getString("messages.force-water"); + forceAll = config.getString("messages.force-all","messages.force-all is missing"); backUp = config.getString("messages.back-up"); setSeason = config.getString("messages.set-season"); wrongArgs = config.getString("messages.wrong-args"); diff --git a/src/main/java/net/momirealms/customcrops/commands/Completer.java b/src/main/java/net/momirealms/customcrops/commands/Completer.java index 5efd685..27c0970 100644 --- a/src/main/java/net/momirealms/customcrops/commands/Completer.java +++ b/src/main/java/net/momirealms/customcrops/commands/Completer.java @@ -37,7 +37,7 @@ public class Completer implements TabCompleter { } if (args.length == 1) { List arrayList = new ArrayList<>(); - for (String cmd : Arrays.asList("backup", "forcegrow", "forcesave", "forcewater", "reload", "setseason")) { + for (String cmd : Arrays.asList("backup", "forcegrow", "forcesave", "forceall","forcewater", "reload", "setseason")) { if (cmd.startsWith(args[0])) arrayList.add(cmd); } @@ -81,7 +81,7 @@ public class Completer implements TabCompleter { } return arrayList; } - if(args[0].equalsIgnoreCase("forcegrow") || args[0].equalsIgnoreCase("forcewater")){ + if(args[0].equalsIgnoreCase("forcegrow") || args[0].equalsIgnoreCase("forcewater") || args[0].equalsIgnoreCase("forceall")){ List arrayList = new ArrayList<>(); for (String cmd : ConfigReader.Config.worldNames) { if (cmd.startsWith(args[1])) diff --git a/src/main/java/net/momirealms/customcrops/commands/Executor.java b/src/main/java/net/momirealms/customcrops/commands/Executor.java index 7c7e7b2..7ad766e 100644 --- a/src/main/java/net/momirealms/customcrops/commands/Executor.java +++ b/src/main/java/net/momirealms/customcrops/commands/Executor.java @@ -100,6 +100,34 @@ public class Executor implements CommandExecutor { } return true; } + case "forceall" -> { + if (args.length < 2) { + lackArgs(sender); + return true; + } + Bukkit.getScheduler().runTaskAsynchronously(CustomCrops.plugin, ()-> { + switch (ConfigReader.Config.growMode){ + case 1 -> plugin.getCropManager().growModeOne(args[1]); + case 2 -> plugin.getCropManager().growModeTwo(args[1]); + case 3 -> plugin.getCropManager().growModeThree(args[1]); + case 4 -> plugin.getCropManager().growModeFour(args[1]); + } + }); + Bukkit.getScheduler().runTaskLaterAsynchronously(CustomCrops.plugin, ()-> { + switch (ConfigReader.Config.growMode){ + case 1 -> plugin.getSprinklerManager().workModeOne(args[1]); + case 2 -> plugin.getSprinklerManager().workModeTwo(args[1]); + case 3 -> plugin.getSprinklerManager().workModeThree(args[1]); + case 4 -> plugin.getSprinklerManager().workModeFour(args[1]); + } + }, ConfigReader.Config.timeToGrow); + if (sender instanceof Player player){ + AdventureManager.playerMessage(player,ConfigReader.Message.prefix + ConfigReader.Message.forceAll.replace("{world}",args[1])); + }else { + AdventureManager.consoleMessage(ConfigReader.Message.prefix + ConfigReader.Message.forceAll.replace("{world}",args[1])); + } + return true; + } case "forcesave" -> { if (args.length < 2) { lackArgs(sender); diff --git a/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakBlockI.java b/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakBlockI.java index c530814..d882a65 100644 --- a/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakBlockI.java +++ b/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakBlockI.java @@ -43,6 +43,7 @@ public class BreakBlockI implements Listener { @EventHandler public void onBreak(CustomBlockBreakEvent event){ + if (event.isCancelled()) return; String namespacedId = event.getNamespacedID(); if(namespacedId.equalsIgnoreCase(ConfigReader.Basic.watered_pot) || namespacedId.equalsIgnoreCase(ConfigReader.Basic.pot)){ Location location = event.getBlock().getLocation(); diff --git a/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakFurnitureI.java b/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakFurnitureI.java index 806e132..d6271dc 100644 --- a/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakFurnitureI.java +++ b/src/main/java/net/momirealms/customcrops/listener/itemframe/BreakFurnitureI.java @@ -48,6 +48,7 @@ public class BreakFurnitureI implements Listener { @EventHandler public void onBreakFurniture(FurnitureBreakEvent event){ + if (event.isCancelled()) return; String namespacedID = event.getNamespacedID(); Sprinkler config = ConfigReader.SPRINKLERS.get(namespacedID); if (config != null){ diff --git a/src/main/java/net/momirealms/customcrops/listener/itemframe/InteractFurnitureI.java b/src/main/java/net/momirealms/customcrops/listener/itemframe/InteractFurnitureI.java index 33c05f4..69f98c0 100644 --- a/src/main/java/net/momirealms/customcrops/listener/itemframe/InteractFurnitureI.java +++ b/src/main/java/net/momirealms/customcrops/listener/itemframe/InteractFurnitureI.java @@ -58,6 +58,7 @@ public class InteractFurnitureI implements Listener { @EventHandler public void onEntityInteract(FurnitureInteractEvent event){ + if (event.isCancelled()) return; long time = System.currentTimeMillis(); Player player = event.getPlayer(); if (time - (JoinAndQuit.coolDown.getOrDefault(player, time - 200)) < 200) return; diff --git a/src/main/java/net/momirealms/customcrops/listener/itemframe/RightClickI.java b/src/main/java/net/momirealms/customcrops/listener/itemframe/RightClickI.java index 308c3af..83d69ce 100644 --- a/src/main/java/net/momirealms/customcrops/listener/itemframe/RightClickI.java +++ b/src/main/java/net/momirealms/customcrops/listener/itemframe/RightClickI.java @@ -59,6 +59,7 @@ public class RightClickI implements Listener { @EventHandler public void onInteract(PlayerInteractEvent event){ + if (event.isCancelled()) return; long time = System.currentTimeMillis(); Player player = event.getPlayer(); if (time - (JoinAndQuit.coolDown.getOrDefault(player, time - 200)) < 200) return; diff --git a/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakBlockT.java b/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakBlockT.java index 8945f1d..9d3d654 100644 --- a/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakBlockT.java +++ b/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakBlockT.java @@ -45,17 +45,21 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; +import java.util.HashMap; import java.util.List; import java.util.concurrent.ThreadLocalRandom; public class BreakBlockT implements Listener { + private HashMap coolDown = new HashMap<>(); + @EventHandler public void onBreak(CustomBlockBreakEvent event){ + if (event.isCancelled()) return; long time = System.currentTimeMillis(); Player player = event.getPlayer(); - if (time - (JoinAndQuit.coolDown.getOrDefault(player, time - 150)) < 150) return; - JoinAndQuit.coolDown.put(player, time); + if (time - (coolDown.getOrDefault(player, time - 100)) < 80) return; + coolDown.put(player, time); String namespacedId = event.getNamespacedID(); if(namespacedId.contains("_stage_")){ Location location = event.getBlock().getLocation(); diff --git a/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakFurnitureT.java b/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakFurnitureT.java index 562b1ea..bd0e3c4 100644 --- a/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakFurnitureT.java +++ b/src/main/java/net/momirealms/customcrops/listener/tripwire/BreakFurnitureT.java @@ -30,6 +30,7 @@ public class BreakFurnitureT implements Listener { @EventHandler public void onBreakFurniture(FurnitureBreakEvent event){ + if (event.isCancelled()) return; Sprinkler config = ConfigReader.SPRINKLERS.get(event.getNamespacedID()); if (config != null){ SimpleLocation simpleLocation = LocUtil.fromLocation(event.getBukkitEntity().getLocation()); diff --git a/src/main/java/net/momirealms/customcrops/listener/tripwire/InteractFurnitureT.java b/src/main/java/net/momirealms/customcrops/listener/tripwire/InteractFurnitureT.java index 8e17523..d55f325 100644 --- a/src/main/java/net/momirealms/customcrops/listener/tripwire/InteractFurnitureT.java +++ b/src/main/java/net/momirealms/customcrops/listener/tripwire/InteractFurnitureT.java @@ -47,6 +47,7 @@ public class InteractFurnitureT implements Listener { @EventHandler public void onEntityInteract(FurnitureInteractEvent event){ + if (event.isCancelled()) return; Sprinkler config = ConfigReader.SPRINKLERS.get(event.getNamespacedID()); if(config != null){ long time = System.currentTimeMillis(); diff --git a/src/main/java/net/momirealms/customcrops/listener/tripwire/RightClickT.java b/src/main/java/net/momirealms/customcrops/listener/tripwire/RightClickT.java index 16cf3bd..f174347 100644 --- a/src/main/java/net/momirealms/customcrops/listener/tripwire/RightClickT.java +++ b/src/main/java/net/momirealms/customcrops/listener/tripwire/RightClickT.java @@ -64,6 +64,7 @@ public class RightClickT implements Listener { @EventHandler public void onInteract(PlayerInteractEvent event){ + if (event.isCancelled()) return; long time = System.currentTimeMillis(); Player player = event.getPlayer(); if (time - (JoinAndQuit.coolDown.getOrDefault(player, time - 200)) < 200) return; diff --git a/src/main/java/net/momirealms/customcrops/utils/DropUtil.java b/src/main/java/net/momirealms/customcrops/utils/DropUtil.java index dceea92..33bd961 100644 --- a/src/main/java/net/momirealms/customcrops/utils/DropUtil.java +++ b/src/main/java/net/momirealms/customcrops/utils/DropUtil.java @@ -27,5 +27,4 @@ public class DropUtil { } } } - } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8b607d5..360f941 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,5 @@ #Don't change -config-version: '6' +config-version: '7' #Want to sell the crops? #Try this plugin: https://www.spigotmc.org/resources/shipping-bin.104591/ @@ -91,6 +91,11 @@ config: # Sprinklers will work after all crops finish growing grow-time: - 1000 + + # Time in real life + #real-time: + # - 06:30 + # Time in random a single crop need to grow(seconds) # This prevents a large amount of crops grow at the same time # Large amount of block replacement would cause lag. diff --git a/src/main/resources/messages/messages_chinese.yml b/src/main/resources/messages/messages_chinese.yml index 1b22a55..f6d3200 100644 --- a/src/main/resources/messages/messages_chinese.yml +++ b/src/main/resources/messages/messages_chinese.yml @@ -21,6 +21,7 @@ messages: force-grow: '成功强制 {world} 的农作物生长!' force-water: '成功强制 {world} 的洒水器洒水!' force-save: '成功强制保存缓存信息!' + force-all: '成功强制 {world} 的农作物生长和洒水器工作!' back-up: '已完成数据备份!' set-season: '成功切换世界 {world} 的季节为 {season}!' before-plant: '这种肥料必须在种植前使用!' diff --git a/src/main/resources/messages/messages_english.yml b/src/main/resources/messages/messages_english.yml index ab502b9..1173695 100644 --- a/src/main/resources/messages/messages_english.yml +++ b/src/main/resources/messages/messages_english.yml @@ -21,6 +21,7 @@ messages: force-grow: 'Forced {world}''s crops to start growing!' force-water: 'Forced {world}''s sprinklers to start working!' force-save: 'Successfully saved cache to file!' + force-all: 'Forced {world}''s crops to start growing and sprinklers to start working!' back-up: 'Backed up!' set-season: 'Changed {world}''s season to {season}!' before-plant: 'This fertilizer must be used befored planting!' diff --git a/src/main/resources/messages/messages_spanish.yml b/src/main/resources/messages/messages_spanish.yml index 5438508..e8faa11 100644 --- a/src/main/resources/messages/messages_spanish.yml +++ b/src/main/resources/messages/messages_spanish.yml @@ -21,6 +21,7 @@ messages: force-grow: '¡Forzó a los cultivos de {world} a empezar a crecer!' force-water: '¡Forzó a los aspersores del {world} a empezar a crecer!' force-save: '¡Guardado con éxito la caché en un archivo!' + force-all: 'Forced {world}''s crops to start growing and sprinklers to start working!' back-up: 'Backed up!' set-season: '¡Cambió la estación de {world} a {season}!' before-plant: 'Este abono debe utilizarse antes de la siembra.' diff --git a/src/main/resources/zh-cn/config.yml b/src/main/resources/zh-cn/config.yml index 89d4cc3..7b5a14b 100644 --- a/src/main/resources/zh-cn/config.yml +++ b/src/main/resources/zh-cn/config.yml @@ -81,6 +81,9 @@ config: # 洒水器将在所有农作物完成生长后开始工作 grow-time: - 1000 + # 现实时间 + #real-time: + # - 06:30 # 农作物将在开始生长的时间点后多少秒内完成生长(seconds) # 这是为了避免大量农作物在同一时间点进行判断和方块替换,否则会造成卡顿 # 假如你有100个农作物,默认配置代表在游戏时间7点后的现实时间60秒内,100个农作物会在这60秒内随机时间点完成生长