From a945f551047f5372424cc51ca8e75ed52c441474 Mon Sep 17 00:00:00 2001 From: Zrips Date: Wed, 26 Jun 2024 18:09:39 +0300 Subject: [PATCH] Exploration data recording by using persistent data containers --- libs/{CMILib1.5.0.2.jar => CMILib1.5.0.3.jar} | Bin 841360 -> 842762 bytes src/main/java/com/gamingmesh/jobs/Jobs.java | 16 +++- .../jobs/commands/list/explored.java | 34 +++----- .../commands/list/resetexploreregion.java | 5 +- .../jobs/config/ChunkExplorationManager.java | 79 ++++++++++++++++++ .../gamingmesh/jobs/config/ConfigManager.java | 4 + .../jobs/config/ExploreManager.java | 32 +++++++ .../jobs/config/GeneralConfigManager.java | 9 +- .../jobs/container/ExploreChunk.java | 1 + .../jobs/container/ExploreRespond.java | 13 ++- .../java/com/gamingmesh/jobs/dao/JobsDAO.java | 16 +++- .../jobs/listeners/JobsPaymentListener.java | 10 ++- src/main/resources/jobs/explorer.yml | 15 +++- 13 files changed, 201 insertions(+), 33 deletions(-) rename libs/{CMILib1.5.0.2.jar => CMILib1.5.0.3.jar} (91%) create mode 100644 src/main/java/com/gamingmesh/jobs/config/ChunkExplorationManager.java diff --git a/libs/CMILib1.5.0.2.jar b/libs/CMILib1.5.0.3.jar similarity index 91% rename from libs/CMILib1.5.0.2.jar rename to libs/CMILib1.5.0.3.jar index 52aab65907eae62f78238082a24a55db25122001..223091999066f1eb505a67786abd2a14d4696de1 100644 GIT binary patch delta 39614 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 diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index 6aa25b62..6c85949f 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -49,6 +49,7 @@ import com.gamingmesh.jobs.api.JobsPrePaymentEvent; import com.gamingmesh.jobs.commands.JobsCommands; import com.gamingmesh.jobs.config.BlockProtectionManager; import com.gamingmesh.jobs.config.BossBarManager; +import com.gamingmesh.jobs.config.ChunkExplorationManager; import com.gamingmesh.jobs.config.ConfigManager; import com.gamingmesh.jobs.config.ExploitProtectionManager; import com.gamingmesh.jobs.config.ExploreManager; @@ -133,13 +134,16 @@ public final class Jobs extends JavaPlugin { private static SignUtil signManager; private static ScheduleManager scheduleManager; private static NameTranslatorManager nameTranslatorManager; + @Deprecated private static ExploreManager exploreManager; + private static ChunkExplorationManager chunkExplorationManager; private static TitleManager titleManager; private static RestrictedBlockManager rbManager; private static RestrictedAreaManager raManager; private static BossBarManager bbManager; private static ShopManager shopManager; private static Loging loging; + @Deprecated private static BlockProtectionManager bpManager; private static ExploitProtectionManager exploitManager; private static JobsManager dbManager; @@ -405,12 +409,19 @@ public final class Jobs extends JavaPlugin { return getExploreManager(); } + @Deprecated public static ExploreManager getExploreManager() { if (exploreManager == null) exploreManager = new ExploreManager(); return exploreManager; } + public static ChunkExplorationManager getChunkExplorationManager() { + if (chunkExplorationManager == null) + chunkExplorationManager = new ChunkExplorationManager(); + return chunkExplorationManager; + } + /** * @return returns this class object instance */ @@ -786,7 +797,8 @@ public final class Jobs extends JavaPlugin { } dao.loadBlockProtection(); - getExploreManager().load(); + if (!getGCManager().useNewExploration) + getExploreManager().load(); getCommandManager().fillCommands(); getDBManager().getDB().triggerTableIdUpdate(); @@ -820,7 +832,7 @@ public final class Jobs extends JavaPlugin { if (Version.isCurrentEqualOrHigher(Version.v1_20_R1)) { pm.registerEvents(new PlayerSignEdit1_20Listeners(), getInstance()); - pm.registerEvents(new JobsPayment1_20Listener(), getInstance()); + pm.registerEvents(new JobsPayment1_20Listener(), getInstance()); } if (getGCManager().useBlockProtection) { diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/explored.java b/src/main/java/com/gamingmesh/jobs/commands/list/explored.java index aaa046aa..ab678c8c 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/explored.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/explored.java @@ -1,14 +1,12 @@ package com.gamingmesh.jobs.commands.list; -import java.util.Map; +import java.util.List; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gamingmesh.jobs.Jobs; import com.gamingmesh.jobs.commands.Cmd; -import com.gamingmesh.jobs.container.ExploreChunk; -import com.gamingmesh.jobs.container.ExploreRegion; import com.gamingmesh.jobs.container.PlayerInfo; import com.gamingmesh.jobs.i18n.Language; @@ -24,35 +22,25 @@ public class explored implements Cmd { } Player player = (Player) sender; - Map exploreRegion = Jobs.getExploreManager().getWorlds().get(player.getWorld().getName()); - if (exploreRegion == null) { + List players = null; + + if (Jobs.getGCManager().useNewExploration) { + players = Jobs.getChunkExplorationManager().getVisitors(player.getLocation().getChunk()); + } else { + players = Jobs.getExploreManager().getVisitors(player.getLocation().getChunk()); + } + + if (players == null) { Language.sendMessage(sender, "command.explored.error.noexplore"); return true; } - int RegionX = (int) Math.floor(player.getLocation().getChunk().getX() / 32D); - int RegionZ = (int) Math.floor(player.getLocation().getChunk().getZ() / 32D); - ExploreRegion region = exploreRegion.get(RegionX + ":" + RegionZ); - if (region == null) { + if (players.isEmpty()) { Language.sendMessage(sender, "command.explored.error.noexplore"); return true; } - ExploreChunk chunk = region.getChunk(player.getLocation().getChunk()); - - if (chunk == null) { - Language.sendMessage(sender, "command.explored.error.noexplore"); - return true; - } - - if (Jobs.getGCManager().ExploreCompact && chunk.isFullyExplored()) { - Language.sendMessage(sender, "command.explored.fullExplore"); - return true; - } - - java.util.List players = chunk.getPlayers(); - for (int i = 0; i < players.size(); i++) { PlayerInfo ji = Jobs.getPlayerManager().getPlayerInfo(players.get(i)); if (ji != null) diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/resetexploreregion.java b/src/main/java/com/gamingmesh/jobs/commands/list/resetexploreregion.java index 1d08d370..ad326f4a 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/resetexploreregion.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/resetexploreregion.java @@ -28,7 +28,10 @@ public class resetexploreregion implements Cmd { return true; } - Jobs.getExploreManager().resetRegion(worldName); + if (Jobs.getGCManager().useNewExploration) { + Jobs.getChunkExplorationManager().resetRegion(worldName); + } else + Jobs.getExploreManager().resetRegion(worldName); Language.sendMessage(sender, "command.resetexploreregion.output.reseted", "%worldname%", worldName); return true; } diff --git a/src/main/java/com/gamingmesh/jobs/config/ChunkExplorationManager.java b/src/main/java/com/gamingmesh/jobs/config/ChunkExplorationManager.java new file mode 100644 index 00000000..e148f61b --- /dev/null +++ b/src/main/java/com/gamingmesh/jobs/config/ChunkExplorationManager.java @@ -0,0 +1,79 @@ +package com.gamingmesh.jobs.config; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Chunk; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.Nullable; + +import com.gamingmesh.jobs.Jobs; +import com.gamingmesh.jobs.container.ExploreRespond; + +import net.Zrips.CMILib.Messages.CMIMessages; +import net.Zrips.CMILib.PersistentData.CMIChunkPersistentDataContainer; + +public class ChunkExplorationManager { + + private static final String NAME = "JobsExplore"; + private static final String SUBNAME = "Explorers"; + + private boolean exploreEnabled = false; + private int playerAmount = 1; + + public int getPlayerAmount() { + return playerAmount; + } + + public void setPlayerAmount(int amount) { + if (playerAmount < amount) + playerAmount = amount; + } + + public boolean isExploreEnabled() { + return exploreEnabled; + } + + public void setExploreEnabled() { + exploreEnabled = true; + } + + public List getVisitors(Chunk chunk) { + return new CMIChunkPersistentDataContainer(NAME, chunk).getListInt(SUBNAME); + } + + public ExploreRespond chunkRespond(Player player, Chunk chunk) { + return chunkRespond(Jobs.getPlayerManager().getJobsPlayer(player).getUserId(), chunk); + } + + public ExploreRespond chunkRespond(int playerId, Chunk chunk) { + + CMIChunkPersistentDataContainer container = new CMIChunkPersistentDataContainer(NAME, chunk); + + @Nullable + List list = container.getListInt(SUBNAME); + + ExploreRespond response = new ExploreRespond(); + + if (list == null || !list.contains(playerId)) { + if (list == null) + list = new ArrayList(); + else + list = new ArrayList(list); + list.add(playerId); + container.setIntList(SUBNAME, list); + container.save(); + response.setNewChunk(true); + } + + response.setCount(list.size()); + + return response; + } + + public void resetRegion(String worldname) { + CMIMessages.consoleMessage("&eReseting explorer data. World: " + worldname); +// Needs to pick new way of tracking data + CMIMessages.consoleMessage("&eCompleted to reset explorer data."); + } +} diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index 74994665..26642062 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -813,6 +813,10 @@ public class ConfigManager { Jobs.getExploreManager().setExploreEnabled(); Jobs.getExploreManager().setPlayerAmount(amount); + + Jobs.getChunkExplorationManager().setExploreEnabled(); + Jobs.getChunkExplorationManager().setPlayerAmount(amount); + } else if (actionType == ActionType.CRAFT) { if (myKey.startsWith("!")) { type = myKey.substring(1, myKey.length()); diff --git a/src/main/java/com/gamingmesh/jobs/config/ExploreManager.java b/src/main/java/com/gamingmesh/jobs/config/ExploreManager.java index 1b0d62fd..3cff6fb0 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ExploreManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ExploreManager.java @@ -2,12 +2,16 @@ package com.gamingmesh.jobs.config; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.bukkit.Chunk; import org.bukkit.entity.Player; +import org.bukkit.persistence.PersistentDataType; +import org.jetbrains.annotations.Nullable; import com.gamingmesh.jobs.Jobs; import com.gamingmesh.jobs.container.ExploreChunk; @@ -15,10 +19,13 @@ import com.gamingmesh.jobs.container.ExploreRegion; import com.gamingmesh.jobs.container.ExploreRespond; import com.gamingmesh.jobs.container.JobsWorld; import com.gamingmesh.jobs.dao.JobsDAO.ExploreDataTableFields; +import com.gamingmesh.jobs.i18n.Language; import com.gamingmesh.jobs.stuff.Util; import net.Zrips.CMILib.Messages.CMIMessages; +import net.Zrips.CMILib.PersistentData.CMIChunkPersistentDataContainer; +@Deprecated public class ExploreManager { private final Map> worlds = new HashMap<>(); @@ -42,6 +49,31 @@ public class ExploreManager { exploreEnabled = true; } + public List getVisitors(Chunk chunk) { + + Map exploreRegion = worlds.get(chunk.getWorld().getName()); + + if (exploreRegion == null) + return null; + + int RegionX = (int) Math.floor(chunk.getX() / 32D); + int RegionZ = (int) Math.floor(chunk.getZ() / 32D); + ExploreRegion region = exploreRegion.get(RegionX + ":" + RegionZ); + if (region == null) + return null; + + ExploreChunk echunk = region.getChunk(chunk); + + if (echunk == null) + return null; + + if (Jobs.getGCManager().ExploreCompact && echunk.isFullyExplored()) { + return Collections.emptyList(); + } + + return echunk.getPlayers(); + } + public void load() { if (!exploreEnabled) return; diff --git a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java index b25c9c28..008eff9d 100644 --- a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java @@ -93,7 +93,8 @@ public class GeneralConfigManager { private FireworkEffect fireworkEffect; - public boolean ignoreOreGenerators, useBlockProtection, useNewBlockProtection, useBlockProtectionBlockTracker, enableSchedule, PayForRenaming, PayForEnchantingOnAnvil, PayForEachCraft, SignsEnabled, + public boolean ignoreOreGenerators, useBlockProtection, useNewBlockProtection, useNewExploration, useBlockProtectionBlockTracker, enableSchedule, PayForRenaming, PayForEnchantingOnAnvil, + PayForEachCraft, SignsEnabled, SignsColorizeJobName, ShowToplistInScoreboard, useGlobalTimer, useSilkTouchProtection, UseCustomNames, PreventSlimeSplit, PreventMagmaCubeSplit, PreventHopperFillUps, PreventBrewingStandFillUps, informOnPaymentDisable, BrowseUseNewLook, payExploringWhenGliding = false, resetExploringData = false, disablePaymentIfMaxLevelReached, disablePaymentIfRiding, @@ -423,6 +424,12 @@ public class GeneralConfigManager { UseAsWhiteListWorldList = c.get("Optimizations.DisabledWorlds.UseAsWhiteList", false); DisabledWorldsList = c.get("Optimizations.DisabledWorlds.List", Arrays.asList("Example", "Worlds")); CMIList.toLowerCase(DisabledWorldsList); + + if (Version.isCurrentEqualOrHigher(Version.v1_14_R1)) { + c.addComment("Optimizations.Explore.NewMethod", + "Do you want to use new exploration tracking method. Only for 1.14+ servers"); + useNewExploration = c.get("Optimizations.Explore.NewMethod", true); + } c.addComment("Optimizations.Explore.Compact", "By setting this to true when there is max amount of players explored a chunk then it will be marked as fully explored and exact players who explored it will not be saved to save some memory"); diff --git a/src/main/java/com/gamingmesh/jobs/container/ExploreChunk.java b/src/main/java/com/gamingmesh/jobs/container/ExploreChunk.java index d0df0e49..76fe6f1f 100644 --- a/src/main/java/com/gamingmesh/jobs/container/ExploreChunk.java +++ b/src/main/java/com/gamingmesh/jobs/container/ExploreChunk.java @@ -5,6 +5,7 @@ import java.util.List; import com.gamingmesh.jobs.Jobs; +@Deprecated public class ExploreChunk { private List playerIds = new ArrayList<>(); diff --git a/src/main/java/com/gamingmesh/jobs/container/ExploreRespond.java b/src/main/java/com/gamingmesh/jobs/container/ExploreRespond.java index b55c642c..70104923 100644 --- a/src/main/java/com/gamingmesh/jobs/container/ExploreRespond.java +++ b/src/main/java/com/gamingmesh/jobs/container/ExploreRespond.java @@ -2,9 +2,12 @@ package com.gamingmesh.jobs.container; public class ExploreRespond { - private int count; + private int count = 0; private boolean newChunk = false; + public ExploreRespond() { + } + public ExploreRespond(int count, boolean newChunk) { this.count = count; this.newChunk = newChunk; @@ -17,4 +20,12 @@ public class ExploreRespond { public boolean isNewChunk() { return newChunk; } + + public void setCount(int count) { + this.count = count; + } + + public void setNewChunk(boolean newChunk) { + this.newChunk = newChunk; + } } diff --git a/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java b/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java index 99d11815..bcfea717 100644 --- a/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java +++ b/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java @@ -2467,7 +2467,7 @@ public abstract class JobsDAO { public void loadBlockProtection() { if (Jobs.getGCManager().useNewBlockProtection) return; - + JobsConnection conn = getConnection(); if (conn == null) return; @@ -2555,6 +2555,9 @@ public abstract class JobsDAO { if (!Jobs.getExploreManager().isExploreEnabled()) return; + if (Jobs.getGCManager().useNewExploration) + return; + JobsConnection conn = getConnection(); if (conn == null) return; @@ -2580,7 +2583,7 @@ public abstract class JobsDAO { int id = jobsWorld == null ? 0 : jobsWorld.getId(); if (id == 0) continue; - + for (Entry region : worlds.getValue().entrySet()) { for (Entry oneChunk : region.getValue().getChunks().entrySet()) { ExploreChunk chunk = oneChunk.getValue(); @@ -2620,6 +2623,9 @@ public abstract class JobsDAO { if (!Jobs.getExploreManager().isExploreEnabled()) return; + if (Jobs.getGCManager().useNewExploration) + return; + JobsConnection conn = getConnection(); if (conn == null) return; @@ -2672,6 +2678,9 @@ public abstract class JobsDAO { if (!Jobs.getExploreManager().isExploreEnabled()) return; + if (Jobs.getGCManager().useNewExploration) + return; + JobsConnection conn = getConnection(); if (conn == null) return; @@ -2723,6 +2732,9 @@ public abstract class JobsDAO { if (!Jobs.getExploreManager().isExploreEnabled()) return false; + if (Jobs.getGCManager().useNewExploration) + return false; + JobsConnection conn = getConnection(); if (conn == null) return false; diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index 4300470b..4cc43fbd 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -134,6 +134,7 @@ import net.Zrips.CMILib.Items.CMIItemStack; import net.Zrips.CMILib.Items.CMIMC; import net.Zrips.CMILib.Items.CMIMaterial; import net.Zrips.CMILib.Locale.LC; +import net.Zrips.CMILib.Logs.CMIDebug; import net.Zrips.CMILib.Messages.CMIMessages; import net.Zrips.CMILib.Version.Version; import net.Zrips.CMILib.Version.Schedulers.CMIScheduler; @@ -1875,7 +1876,7 @@ public final class JobsPaymentListener implements Listener { @EventHandler(ignoreCancelled = true) public void onExplore(JobsChunkChangeEvent event) { - if (!Jobs.getExploreManager().isExploreEnabled()) + if (!Jobs.getChunkExplorationManager().isExploreEnabled()) return; Player player = event.getPlayer(); @@ -1910,7 +1911,12 @@ public final class JobsPaymentListener implements Listener { if (jPlayer == null) return; - ExploreRespond respond = Jobs.getExploreManager().chunkRespond(jPlayer.getUserId(), event.getNewChunk()); + ExploreRespond respond = null; + + if (Jobs.getGCManager().useNewExploration) + respond = Jobs.getChunkExplorationManager().chunkRespond(jPlayer.getUserId(), event.getNewChunk()); + else + respond = Jobs.getExploreManager().chunkRespond(jPlayer.getUserId(), event.getNewChunk()); if (!respond.isNewChunk()) return; diff --git a/src/main/resources/jobs/explorer.yml b/src/main/resources/jobs/explorer.yml index fb9cc356..2d47147f 100644 --- a/src/main/resources/jobs/explorer.yml +++ b/src/main/resources/jobs/explorer.yml @@ -47,7 +47,20 @@ Explorer: '5': income: 0.1 points: 0.1 - experience: 0.1 + experience: 0.1 + Brush: + 'suspicious_sand': + income: 5 + points: 5 + experience: 5 + 'suspicious_gravel': + income: 6 + points: 6 + experience: 6 + coal: + income: 10 + points: 10 + experience: 10 Kill: Player: income: 7.5