From d4a75f1fe863a8c92acf31d5eff4667256df1c59 Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 12:39:41 +0300 Subject: [PATCH 1/7] Sync --- src/main/java/com/gamingmesh/jobs/commands/list/give.java | 1 + .../com/gamingmesh/jobs/config/BlockProtectionManager.java | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/give.java b/src/main/java/com/gamingmesh/jobs/commands/list/give.java index a631bb71..9f8ff994 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/give.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/give.java @@ -103,6 +103,7 @@ public class give implements Cmd { default: break; } + return true; } } \ No newline at end of file diff --git a/src/main/java/com/gamingmesh/jobs/config/BlockProtectionManager.java b/src/main/java/com/gamingmesh/jobs/config/BlockProtectionManager.java index c4e56e14..75321afd 100644 --- a/src/main/java/com/gamingmesh/jobs/config/BlockProtectionManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/BlockProtectionManager.java @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Block; @@ -107,7 +106,7 @@ public class BlockProtectionManager { // If timer is under 2 hours, we can run scheduler to remove it when time comes if (time > -1 && (time - System.currentTimeMillis()) / 1000 < 60 * 60 * 2) - Bp.setScheduler(CMIScheduler.get().runTaskLater(() -> { + Bp.setScheduler(CMIScheduler.get().runAtLocationLater(loc, () -> { remove(loc); }, (time - System.currentTimeMillis()) / 50)); From 7ba5a2bd86ef8487b682f3dfc514f762198aa36c Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 12:59:05 +0300 Subject: [PATCH 2/7] To disable max job limit now it needs to be set to -1 and not 0 --- src/main/java/com/gamingmesh/jobs/Jobs.java | 2 +- .../jobs/Placeholders/Placeholder.java | 3 ++- .../com/gamingmesh/jobs/PlayerManager.java | 23 ++++++++++--------- .../gamingmesh/jobs/config/ConfigManager.java | 2 ++ .../jobs/config/GeneralConfigManager.java | 5 ++-- .../gamingmesh/jobs/container/JobsPlayer.java | 3 ++- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index e9971e3f..21f7df0b 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -154,7 +154,7 @@ public final class Jobs extends JavaPlugin { private GuiManager guiManager; private static JobsDAO dao; - private static List jobs; + private static List jobs = new ArrayList(); private static Job noneJob; private static Map usedSlots = new WeakHashMap<>(); diff --git a/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java b/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java index e3af33ad..2b67b2c8 100644 --- a/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java +++ b/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java @@ -582,7 +582,8 @@ public class Placeholder { return convert(true); case maxjobs: - return Integer.toString(Jobs.getPlayerManager().getMaxJobs(user)); + int max = Jobs.getPlayerManager().getMaxJobs(user); + return Integer.toString(max == -1 ? 99 : max); default: break; diff --git a/src/main/java/com/gamingmesh/jobs/PlayerManager.java b/src/main/java/com/gamingmesh/jobs/PlayerManager.java index 224963d1..15ef2a66 100644 --- a/src/main/java/com/gamingmesh/jobs/PlayerManager.java +++ b/src/main/java/com/gamingmesh/jobs/PlayerManager.java @@ -63,9 +63,9 @@ import com.gamingmesh.jobs.hooks.HookManager; import com.gamingmesh.jobs.stuff.Util; import net.Zrips.CMILib.ActionBar.CMIActionBar; +import net.Zrips.CMILib.Container.CMINumber; import net.Zrips.CMILib.Items.CMIItemStack; import net.Zrips.CMILib.Items.CMIMaterial; -import net.Zrips.CMILib.Logs.CMIDebug; import net.Zrips.CMILib.Messages.CMIMessages; import net.Zrips.CMILib.NBT.CMINBT; import net.Zrips.CMILib.Version.Version; @@ -488,10 +488,10 @@ public class PlayerManager { Jobs.getSignUtil().updateAllSign(job); job.updateTotalPlayers(); - jPlayer.maxJobsEquation = getMaxJobs(jPlayer); - + jPlayer.maxJobsEquation = CMINumber.clamp(getMaxJobs(jPlayer), 0, 9999); + // Removing from cached item boost for recalculation - cache.remove(jPlayer.getUniqueId()); + cache.remove(jPlayer.getUniqueId()); } private static void performCommandsOnLeave(JobsPlayer jPlayer, Job job) { @@ -533,10 +533,10 @@ public class PlayerManager { Jobs.getSignUtil().updateAllSign(job); job.updateTotalPlayers(); - + // Removing from cached item boost for recalculation - cache.remove(jPlayer.getUniqueId()); - + cache.remove(jPlayer.getUniqueId()); + return true; } @@ -931,7 +931,8 @@ public class PlayerManager { * @return true if the player is under the given jobs size */ public boolean getJobsLimit(JobsPlayer jPlayer, short currentCount) { - return getMaxJobs(jPlayer) > currentCount; + int max = getMaxJobs(jPlayer); + return max == -1 ? true : max > currentCount; } /** @@ -1064,7 +1065,7 @@ public class PlayerManager { continue; } } - + jitems.add(getJobsItemByNbt(item)); } } @@ -1214,11 +1215,11 @@ public class PlayerManager { int playerMaxJobs = getMaxJobs(jPlayer); int playerCurrentJobs = jPlayer.progression.size(); - if (playerMaxJobs <= 0 || playerCurrentJobs >= playerMaxJobs) + if (playerMaxJobs == 0 || playerMaxJobs != -1 && playerCurrentJobs >= playerMaxJobs) return; for (Job one : Jobs.getJobs()) { - if (jPlayer.progression.size() >= playerMaxJobs) + if (playerMaxJobs != -1 && jPlayer.progression.size() >= playerMaxJobs) return; if (one.getMaxSlots() != null && Jobs.getUsedSlots(one) >= one.getMaxSlots()) diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index 0821b358..212d6377 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -1571,6 +1571,8 @@ public class ConfigManager { return job; } } + + return null; } diff --git a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java index a4a98967..411d6cbe 100644 --- a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java @@ -45,6 +45,7 @@ import net.Zrips.CMILib.Equations.Parser; import net.Zrips.CMILib.FileHandler.ConfigReader; import net.Zrips.CMILib.Items.CMIItemStack; import net.Zrips.CMILib.Items.CMIMaterial; +import net.Zrips.CMILib.Logs.CMIDebug; import net.Zrips.CMILib.Messages.CMIMessages; import net.Zrips.CMILib.Version.Version; @@ -442,9 +443,9 @@ public class GeneralConfigManager { "For this to work, the player needs to get a new job for the timer to start.", "Counting in hours"); jobExpiryTime = c.get("JobExpirationTime", 0); - c.addComment("max-jobs", "Maximum number of jobs a player can join.", "Use 0 for no maximum", "Keep in mind that jobs.max.[amount] will bypass this setting"); + c.addComment("max-jobs", "Maximum number of jobs a player can join.", "Use -1 to disable limitations", "Keep in mind that jobs.max.[amount] will bypass this setting"); maxJobs = c.get("max-jobs", 3); - + c.addComment("disable-payment-if-max-level-reached", "Disabling the payment if the user reached the maximum level of a job."); disablePaymentIfMaxLevelReached = c.get("disable-payment-if-max-level-reached", false); diff --git a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java index 0a51170f..520bef13 100644 --- a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java +++ b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java @@ -43,6 +43,7 @@ import com.gamingmesh.jobs.economy.PaymentData; import net.Zrips.CMILib.ActionBar.CMIActionBar; import net.Zrips.CMILib.Colors.CMIChatColor; +import net.Zrips.CMILib.Container.CMINumber; import net.Zrips.CMILib.Equations.Parser; import net.Zrips.CMILib.Items.CMIMaterial; import net.Zrips.CMILib.Logs.CMIDebug; @@ -442,7 +443,7 @@ public class JobsPlayer { Parser eq = Jobs.getGCManager().getLimit(type).getMaxEquation(); eq.setVariable("totallevel", getTotalLevels()); - maxJobsEquation = Jobs.getPlayerManager().getMaxJobs(this); + maxJobsEquation = CMINumber.clamp(Jobs.getPlayerManager().getMaxJobs(this), 0, 9999); limits.put(type, (int) eq.getValue()); setSaved(false); } From 2e1d9afc9f1a65a15081d0cec2ce75a1f7c40946 Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 13:35:20 +0300 Subject: [PATCH 3/7] Formating limit output with bigger numbers --- src/main/java/com/gamingmesh/jobs/commands/list/limit.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/limit.java b/src/main/java/com/gamingmesh/jobs/commands/list/limit.java index 72d30567..e76b5f41 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/limit.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/limit.java @@ -1,5 +1,7 @@ package com.gamingmesh.jobs.commands.list; +import java.text.DecimalFormat; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -11,7 +13,6 @@ import com.gamingmesh.jobs.economy.PaymentData; import com.gamingmesh.jobs.i18n.Language; import net.Zrips.CMILib.Locale.LC; -import net.Zrips.CMILib.Logs.CMIDebug; import net.Zrips.CMILib.Messages.CMIMessages; import net.Zrips.CMILib.Time.CMITimeManager; @@ -38,7 +39,7 @@ public class limit implements Cmd { } if (disabled) { - Language.sendMessage(sender,"command.limit.output.notenabled"); + Language.sendMessage(sender, "command.limit.output.notenabled"); return true; } @@ -64,7 +65,7 @@ public class limit implements Cmd { Language.sendMessage(sender, "command.limit.output." + typeName + "time", "%time%", CMITimeManager.to24hourShort(limit.getLeftTime(type))); Language.sendMessage(sender, "command.limit.output." + typeName + "Limit", - "%current%", (int) (limit.getAmount(type) * 100) / 100D, + "%current%", new DecimalFormat("##.##").format(limit.getAmount(type)), "%total%", JPlayer.getLimit(type)); } } From 6051c78d219462666ea795b624f0debabef8bbfe Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 13:43:07 +0300 Subject: [PATCH 4/7] Feedback when transfer job isn't successful --- src/main/java/com/gamingmesh/jobs/commands/list/transfer.java | 3 ++- src/main/java/com/gamingmesh/jobs/config/LanguageManager.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/transfer.java b/src/main/java/com/gamingmesh/jobs/commands/list/transfer.java index 8a8df026..67afc768 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/transfer.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/transfer.java @@ -46,7 +46,8 @@ public class transfer implements Cmd { "%newjobname%", newjob.getDisplayName()); } Language.sendMessage(sender, "general.admin.success"); - } + } else + Language.sendMessage(sender, "general.admin.error"); } catch (Exception e) { Language.sendMessage(sender, "general.admin.error"); } diff --git a/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java b/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java index 72bad4a6..44c546ef 100644 --- a/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java @@ -580,7 +580,7 @@ public class LanguageManager { c.get("command.transfer.help.info", "Transfer a player's job from an old job to a new job."); c.get("command.transfer.help.args", "[playername] [oldjob] [newjob]"); Jobs.getGCManager().getCommandArgs().put("transfer", Arrays.asList("[playername]", "[oldjob]", "[newjob]")); - c.get("command.transfer.output.target", "You have been transferred from %oldjobname% to %newjobname%."); + c.get("command.transfer.output.target", "&fYou have been transferred from %oldjobname% &fto %newjobname%."); c.get("command.promote.help.info", "Promote the player X levels in a job."); c.get("command.promote.help.args", "[playername] [jobname] [levels] (-cmd)"); From 14b7e837d87a02eceacb5c445173edd8ab18ad4f Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 15:18:05 +0300 Subject: [PATCH 5/7] Lets keep loading in plugin when some none essential files fail to load --- .../jobs/config/GeneralConfigManager.java | 27 ++++++++++++++----- .../com/gamingmesh/jobs/container/Job.java | 4 +-- .../java/com/gamingmesh/jobs/stuff/Util.java | 7 +++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java index 411d6cbe..db601aaa 100644 --- a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java @@ -111,7 +111,7 @@ public class GeneralConfigManager { DisabledWorldsUse, UseAsWhiteListWorldList, MythicMobsEnabled, LoggingUse, payForCombiningItems, BlastFurnacesReassign = false, SmokerReassign = false, payForStackedEntities, payForAbove = false, payForEachVTradeItem, allowEnchantingBoostedItems, bossBarAsync = false, preventShopItemEnchanting; - + public boolean jobsshopenabled; public boolean DailyQuestsEnabled; @@ -273,11 +273,24 @@ public class GeneralConfigManager { // Load locale Jobs.getLanguageManager().load(); // title settings - Jobs.getTitleManager().load(); + try { + Jobs.getTitleManager().load(); + } catch (Throwable e) { + e.printStackTrace(); + } // restricted areas - Jobs.getRestrictedAreaManager().load(); + try { + Jobs.getRestrictedAreaManager().load(); + } catch (Throwable e) { + e.printStackTrace(); + } // restricted blocks - Jobs.getRestrictedBlockManager().load(); + try { + Jobs.getRestrictedBlockManager().load(); + } catch (Throwable e) { + e.printStackTrace(); + } + // Item/Block/mobs name list Jobs.getNameTranslatorManager().load(); // signs information @@ -426,7 +439,7 @@ public class GeneralConfigManager { c.addComment("DailyQuests.Enabled", "Enables or disables daily quests"); DailyQuestsEnabled = c.get("DailyQuests.Enabled", true); - + c.addComment("DailyQuests.ResetTime", "Defines time in 24hour format when we want to give out new daily quests", "Any daily quests given before reset will be invalid and new ones will be given out"); ResetTimeHour = c.get("DailyQuests.ResetTime.Hour", 4); @@ -445,7 +458,7 @@ public class GeneralConfigManager { c.addComment("max-jobs", "Maximum number of jobs a player can join.", "Use -1 to disable limitations", "Keep in mind that jobs.max.[amount] will bypass this setting"); maxJobs = c.get("max-jobs", 3); - + c.addComment("disable-payment-if-max-level-reached", "Disabling the payment if the user reached the maximum level of a job."); disablePaymentIfMaxLevelReached = c.get("disable-payment-if-max-level-reached", false); @@ -457,7 +470,7 @@ public class GeneralConfigManager { c.addComment("prevent-shop-item-enchanting", "Prevent players to enchant items from the shop in the anvil with enchanted books"); preventShopItemEnchanting = c.get("prevent-shop-item-enchanting", true); - + c.addComment("jobs-shop-enabled", "Enables or disables jobs shop"); jobsshopenabled = c.get("jobs-shop-enabled", true); diff --git a/src/main/java/com/gamingmesh/jobs/container/Job.java b/src/main/java/com/gamingmesh/jobs/container/Job.java index cdf3a685..08ac41fc 100644 --- a/src/main/java/com/gamingmesh/jobs/container/Job.java +++ b/src/main/java/com/gamingmesh/jobs/container/Job.java @@ -237,7 +237,7 @@ public class Job { if (now < Jobs.getGCManager().DynamicPaymentMaxPenalty) now = Jobs.getGCManager().DynamicPaymentMaxPenalty; - + if (Double.isNaN(now)) now = 0; @@ -310,7 +310,7 @@ public class Job { }; String shortActionName = CMIMaterial.getGeneralMaterialName(action.getName()); - + for (JobInfo info : getJobInfo(action.getType())) { if (condition.test(info, action)) { if (!info.isInLevelRange(level)) { diff --git a/src/main/java/com/gamingmesh/jobs/stuff/Util.java b/src/main/java/com/gamingmesh/jobs/stuff/Util.java index 5e82a31f..0b71622d 100644 --- a/src/main/java/com/gamingmesh/jobs/stuff/Util.java +++ b/src/main/java/com/gamingmesh/jobs/stuff/Util.java @@ -3,6 +3,7 @@ package com.gamingmesh.jobs.stuff; import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; @@ -63,6 +64,12 @@ public final class Util { return blocks; } + private final static DecimalFormat dcf = new DecimalFormat("##.##"); + + public static String format2Decimals(double number) { + return dcf.format(number); + } + public static String getRealType(Entity entity) { if (Version.isCurrentEqualOrHigher(Version.v1_11_R1)) { return entity.getType().name(); From 5bb3414ea7983e1b31caf760294b906bbbc73088 Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 16:45:03 +0300 Subject: [PATCH 6/7] Prevent sign UI opening while interacting with Jobs signs in 1.20 --- libs/WildStackerAPI-2023.2.jar | Bin 0 -> 41270 bytes libs/WildStackerAPI-latest.jar | Bin 37510 -> 0 bytes pom.xml | 32 +++++++------- src/main/java/com/gamingmesh/jobs/Jobs.java | 4 ++ .../gamingmesh/jobs/config/ConfigManager.java | 2 +- .../jobs/listeners/JobsListener.java | 6 +-- .../PlayerSignEdit1_20Listeners.java | 39 ++++++++++++++++++ 7 files changed, 63 insertions(+), 20 deletions(-) create mode 100644 libs/WildStackerAPI-2023.2.jar delete mode 100644 libs/WildStackerAPI-latest.jar create mode 100644 src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java diff --git a/libs/WildStackerAPI-2023.2.jar b/libs/WildStackerAPI-2023.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..519184278e4683b25705f7f151944db644237bcb GIT binary patch literal 41270 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 TMnFK=fd8O?wgrsf?|=P2L2vZQ literal 0 HcmV?d00001 diff --git a/libs/WildStackerAPI-latest.jar b/libs/WildStackerAPI-latest.jar deleted file mode 100644 index 4f77b7a8583420071148a9a12360613766546e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37510 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 diff --git a/pom.xml b/pom.xml index 7d83800d..ff5d5824 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 Jobs jobs @@ -10,6 +8,8 @@ http://maven.apache.org + 17 + 17 UTF-8 @@ -17,9 +17,9 @@ io.papermc.paper paper-api - 1.17.1-R0.1-SNAPSHOT + 1.20.1-R0.1-SNAPSHOT provided - + org.ow2.asm asm-commons @@ -80,12 +80,12 @@ 4.11.0 provided - - io.lumine - Mythic-Dist - 5.1.0-SNAPSHOT - provided - + + io.lumine + Mythic-Dist + 5.1.0-SNAPSHOT + provided + com.sk89q @@ -200,12 +200,13 @@ ${basedir}/libs/CMILib1.4.0.0.jar + com.bgsoftware WildStackerAPI latest system - ${basedir}/libs/WildStackerAPI-latest.jar + ${basedir}/libs/WildStackerAPI-2023.2.jar @@ -275,20 +276,19 @@ maven-compiler-plugin - 3.8.1 1.8 1.8 - + org.apache.maven.plugins maven-jar-plugin 2.3.1 - D:\MC\Server 1.20\plugins\ + D:\MC\Server 1.20\plugins\ - + \ No newline at end of file diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index 21f7df0b..12dbf69a 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -97,6 +97,7 @@ import com.gamingmesh.jobs.listeners.JobsListener; import com.gamingmesh.jobs.listeners.JobsPayment14Listener; import com.gamingmesh.jobs.listeners.JobsPaymentListener; import com.gamingmesh.jobs.listeners.PistonProtectionListener; +import com.gamingmesh.jobs.listeners.PlayerSignEdit1_20Listeners; import com.gamingmesh.jobs.selection.SelectionManager; import com.gamingmesh.jobs.stuff.Loging; import com.gamingmesh.jobs.stuff.TabComplete; @@ -795,6 +796,9 @@ public final class Jobs extends JavaPlugin { pm.registerEvents(new JobsPayment14Listener(), getInstance()); } + if (Version.isCurrentEqualOrHigher(Version.v1_20_R1)) { + pm.registerEvents(new PlayerSignEdit1_20Listeners(), getInstance()); + } if (getGCManager().useBlockProtection) { pm.registerEvents(new PistonProtectionListener(), getInstance()); } diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index 212d6377..6a097d5d 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -28,7 +28,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeMap; -import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang3.StringEscapeUtils; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java index ed1a91b7..5d15387d 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java @@ -328,10 +328,10 @@ public class JobsListener implements Listener { String line1 = CMIChatColor.stripColor(plugin.getComplement().getLine(event, 1)); - if (CMIChatColor.stripColor(plugin.getComplement().getLine(event, 0)) - .equalsIgnoreCase(CMIChatColor.stripColor(Jobs.getLanguage().getMessage("signs.topline"))) && !line1.equalsIgnoreCase("toplist")) + if (CMIChatColor.stripColor(plugin.getComplement().getLine(event, 0)).equalsIgnoreCase(CMIChatColor.stripColor(Jobs.getLanguage().getMessage("signs.topline"))) && !line1.equalsIgnoreCase( + "toplist")) { event.setLine(0, convert(Jobs.getLanguage().getMessage("signs.topline"))); - else + } else return; if (!event.getPlayer().hasPermission("jobs.command.signs")) { diff --git a/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java b/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java new file mode 100644 index 00000000..e120bda3 --- /dev/null +++ b/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java @@ -0,0 +1,39 @@ +package com.gamingmesh.jobs.listeners; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.block.sign.SignSide; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerSignOpenEvent; +import org.bukkit.event.player.PlayerSignOpenEvent.Cause; + +import com.gamingmesh.jobs.Jobs; + +import net.Zrips.CMILib.Colors.CMIChatColor; + +public class PlayerSignEdit1_20Listeners implements Listener { + + public PlayerSignEdit1_20Listeners() { + } + + Set signEditCache = new HashSet(); + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerSignOpenEvent(PlayerSignOpenEvent event) { + + if (!event.getCause().equals(Cause.INTERACT)) + return; + + SignSide side = event.getSign().getSide(event.getSide()); + + if (!event.getPlayer().hasPermission("jobs.command.signs") && CMIChatColor.stripColor(side.getLine(0)).equalsIgnoreCase(CMIChatColor.stripColor(Jobs.getLanguage().getMessage("signs.topline")))) { + event.setCancelled(true); + } + + } + +} From 98b84287a4b5dba18546de4d65ee7eb16a04607f Mon Sep 17 00:00:00 2001 From: Zrips Date: Tue, 29 Aug 2023 17:19:24 +0300 Subject: [PATCH 7/7] Smithing table support --- .../jobs/listeners/JobsPaymentListener.java | 11 ++-- .../PlayerSignEdit1_20Listeners.java | 58 +++++++++++++++++++ 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index ba81b0f1..30f247c3 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -788,7 +788,7 @@ public final class JobsPaymentListener implements Listener { // HACK! The API doesn't allow us to easily determine the resulting number of // crafted items, so we're forced to compare the inventory before and after. - private void schedulePostDetection(final HumanEntity player, final ItemStack compareItem, final JobsPlayer jPlayer, final ItemStack resultStack, final ActionType type) { + public static void schedulePostDetection(final HumanEntity player, final ItemStack compareItem, final JobsPlayer jPlayer, final ItemStack resultStack, final ActionType type) { final ItemStack[] preInv = player.getInventory().getContents(); // Clone the array. The content may (was for me) be mutable. for (int i = 0; i < preInv.length; i++) { @@ -821,7 +821,7 @@ public final class JobsPaymentListener implements Listener { }, 1); } - private static boolean hasItems(ItemStack stack) { + public static boolean hasItems(ItemStack stack) { return stack != null && stack.getAmount() > 0; } @@ -837,7 +837,7 @@ public final class JobsPaymentListener implements Listener { Objects.equal(a.getEnchantments(), b.getEnchantments()); } - private static boolean isStackSumLegal(ItemStack a, ItemStack b) { + public static boolean isStackSumLegal(ItemStack a, ItemStack b) { // See if we can create a new item stack with the combined elements of a and b if (a == null || b == null) return true;// Treat null as an empty stack @@ -1601,6 +1601,9 @@ public final class JobsPaymentListener implements Listener { if (!Jobs.getGCManager().useBreederFinder || !Jobs.getGCManager().canPerformActionInWorld(event.getEntity().getWorld())) return; + if (event.getEntity().getType().equals(EntityType.TURTLE)) + CMIDebug.d(event.getSpawnReason()); + if (!event.getSpawnReason().toString().equalsIgnoreCase("BREEDING") && !event.getSpawnReason().toString().equalsIgnoreCase("EGG")) return; @@ -1839,7 +1842,7 @@ public final class JobsPaymentListener implements Listener { // either it's version 1.13+ and we're trying to strip a normal log like oak, // or it's 1.16+ and we're trying to strip a fungi like warped stem if ((Version.isCurrentEqualOrHigher(Version.v1_13_R1) && (block.getType().toString().endsWith("_LOG") || block.getType().toString().endsWith("_WOOD"))) || - (Version.isCurrentEqualOrHigher(Version.v1_16_R1) && (block.getType().toString().endsWith("_STEM") || block.getType().toString().endsWith("_HYPHAE")))) { + (Version.isCurrentEqualOrHigher(Version.v1_16_R1) && (block.getType().toString().endsWith("_STEM") || block.getType().toString().endsWith("_HYPHAE")))) { CMIScheduler.get().runTaskLater(() -> Jobs.action(jPlayer, new BlockActionInfo(block, ActionType.STRIPLOGS), block), 1); } } diff --git a/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java b/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java index e120bda3..22b5b403 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/PlayerSignEdit1_20Listeners.java @@ -5,13 +5,19 @@ import java.util.Set; import java.util.UUID; import org.bukkit.block.sign.SignSide; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryType.SlotType; +import org.bukkit.event.inventory.SmithItemEvent; import org.bukkit.event.player.PlayerSignOpenEvent; import org.bukkit.event.player.PlayerSignOpenEvent.Cause; import com.gamingmesh.jobs.Jobs; +import com.gamingmesh.jobs.actions.ItemActionInfo; +import com.gamingmesh.jobs.container.ActionType; +import com.gamingmesh.jobs.container.JobsPlayer; import net.Zrips.CMILib.Colors.CMIChatColor; @@ -36,4 +42,56 @@ public class PlayerSignEdit1_20Listeners implements Listener { } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onInventoryCraft(SmithItemEvent event) { + + // If event is nothing or place, do nothing + switch (event.getAction()) { + case NOTHING: + case PLACE_ONE: + case PLACE_ALL: + case PLACE_SOME: + return; + default: + break; + } + + if (event.getSlotType() != SlotType.CRAFTING) + return; + + if (!event.isLeftClick() && !event.isRightClick()) + return; + + if (!Jobs.getGCManager().canPerformActionInWorld(event.getWhoClicked().getWorld())) + return; + + if (!(event.getWhoClicked() instanceof Player)) + return; + + Player player = (Player) event.getWhoClicked(); + + //Check if inventory is full and using shift click, possible money dupping fix + if (player.getInventory().firstEmpty() == -1 && event.isShiftClick()) { + player.sendMessage(Jobs.getLanguage().getMessage("message.crafting.fullinventory")); + return; + } + + if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName())) + return; + + // check if player is riding + if (Jobs.getGCManager().disablePaymentIfRiding && player.isInsideVehicle()) + return; + + // check if in creative + if (!JobsPaymentListener.payIfCreative(player)) + return; + + JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(player); + if (jPlayer == null) + return; + + Jobs.action(jPlayer, new ItemActionInfo(event.getInventory().getResult(), ActionType.CRAFT)); + + } }