diff --git a/pom.xml b/pom.xml index ab26a47..b8b5786 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cx.ajneb97 Codex - 2.5.3 + 2.5.4 21 @@ -144,6 +144,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + \ No newline at end of file diff --git a/src/main/java/cx/ajneb97/Codex.java b/src/main/java/cx/ajneb97/Codex.java index b608a72..882cbf0 100644 --- a/src/main/java/cx/ajneb97/Codex.java +++ b/src/main/java/cx/ajneb97/Codex.java @@ -6,6 +6,7 @@ import cx.ajneb97.config.ConfigsManager; import cx.ajneb97.database.MySQLConnection; import cx.ajneb97.listeners.InventoryListener; +import cx.ajneb97.listeners.MovementListener; import cx.ajneb97.listeners.PlayerListener; import cx.ajneb97.listeners.dependencies.EliteMobsListener; import cx.ajneb97.listeners.dependencies.MythicMobsListener; @@ -43,10 +44,11 @@ public class Codex extends JavaPlugin { private PlayerDataSaveTask playerDataSaveTask; private UpdateCheckerManager updateCheckerManager; private VerifyManager verifyManager; - + private MovementListener movementListener; public void onEnable(){ setVersion(); setPrefix(); + this.movementListener = new MovementListener(this); this.playerDataManager = new PlayerDataManager(this); this.inventoryManager = new InventoryManager(this); this.commonItemManager = new CommonItemManager(this); @@ -90,6 +92,7 @@ public void onEnable(){ } public void onDisable(){ + movementListener.unregister(); configsManager.getPlayersConfigManager().saveConfigs(); Bukkit.getConsoleSender().sendMessage(prefix+MessagesManager.getColoredMessage("&eHas been disabled! &fVersion: "+version)); @@ -100,6 +103,7 @@ public void registerCommands(){ public void registerEvents(){ PluginManager pm = getServer().getPluginManager(); + movementListener.register(); pm.registerEvents(new InventoryListener(this), this); pm.registerEvents(new PlayerListener(this), this); if(dependencyManager.getWorldGuardManager() != null){ diff --git a/src/main/java/cx/ajneb97/config/CategoriesConfigManager.java b/src/main/java/cx/ajneb97/config/CategoriesConfigManager.java index 7db40a4..449cf38 100644 --- a/src/main/java/cx/ajneb97/config/CategoriesConfigManager.java +++ b/src/main/java/cx/ajneb97/config/CategoriesConfigManager.java @@ -55,6 +55,8 @@ public void loadConfigs() { discoveredOn.setMobName(config.getString(pathValue+".mob_name")); discoveredOn.setMobType(config.getString(pathValue+".mob_type")); discoveredOn.setRegionName(config.getString(pathValue+".region_name")); + discoveredOn.setLocation(config.getString(pathValue+".location")); + discoveredOn.setRange(config.getString(pathValue+".range")); } CommonItem customDiscoveryItemUnlocked = null; diff --git a/src/main/java/cx/ajneb97/listeners/MovementListener.java b/src/main/java/cx/ajneb97/listeners/MovementListener.java new file mode 100644 index 0000000..4627c5f --- /dev/null +++ b/src/main/java/cx/ajneb97/listeners/MovementListener.java @@ -0,0 +1,27 @@ +package cx.ajneb97.listeners; + +import cx.ajneb97.Codex; +import org.bukkit.Bukkit; + +public class MovementListener { + + private Codex plugin; + public MovementListener(Codex plugin){ + this.plugin = plugin; + } + + private int taskId = 0; + + public void register() { + taskId = Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, () -> { + Bukkit.getOnlinePlayers().forEach(player -> { + plugin.getDiscoveryManager().onLocationNear(player, player.getLocation()); + }); + }, 100, 100).getTaskId(); + } + + public void unregister() { + Bukkit.getScheduler().cancelTask(taskId); + } + +} diff --git a/src/main/java/cx/ajneb97/managers/DiscoveryManager.java b/src/main/java/cx/ajneb97/managers/DiscoveryManager.java index a9d10af..b19f9c3 100644 --- a/src/main/java/cx/ajneb97/managers/DiscoveryManager.java +++ b/src/main/java/cx/ajneb97/managers/DiscoveryManager.java @@ -8,6 +8,9 @@ import cx.ajneb97.model.structure.DiscoveredOn; import cx.ajneb97.model.structure.Discovery; import cx.ajneb97.utils.ActionUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.entity.Player; import java.util.*; @@ -117,6 +120,23 @@ public void onWorldGuardRegionEnter(Player player, String regionName){ } } + public void onLocationNear(Player player, Location location){ + ArrayList discoveries = getPossibleDiscoveries(DiscoveredOn.DiscoveredOnType.LOCATION); + for(Discovery discovery : discoveries){ + DiscoveredOn discoveredOn = discovery.getDiscoveredOn(); + List locArgs = List.of(discoveredOn.getLocation().split(",")); + World world = Bukkit.getWorld(locArgs.get(0)); + if(world != location.getWorld()) continue; + Location discoveredLoc = new Location(world,Integer.parseInt(locArgs.get(1)),Integer.parseInt(locArgs.get(2)),Integer.parseInt(locArgs.get(3))); + if(discoveredLoc.distance(location) > Integer.parseInt(discoveredOn.getRange())) { + continue; + } + onDiscover(player,discovery.getCategoryName(),discovery.getId()); + + return; + } + } + public boolean onDiscover(Player player,String categoryName,String discoveryName){ Category category = plugin.getCategoryManager().getCategory(categoryName); Discovery discovery = category.getDiscovery(discoveryName); diff --git a/src/main/java/cx/ajneb97/model/structure/DiscoveredOn.java b/src/main/java/cx/ajneb97/model/structure/DiscoveredOn.java index c75e509..2dcedeb 100644 --- a/src/main/java/cx/ajneb97/model/structure/DiscoveredOn.java +++ b/src/main/java/cx/ajneb97/model/structure/DiscoveredOn.java @@ -6,6 +6,8 @@ public class DiscoveredOn { private String mobType; private String mobName; private String regionName; + private String location; + private String range; public DiscoveredOn(DiscoveredOnType type) { this.type = type; @@ -39,6 +41,17 @@ public String getRegionName() { return regionName; } + public String getLocation() { + return location; + } + public String getRange() { + return range; + } + + public void setLocation(String location) { this.location = location; } + + public void setRange(String range) { this.range = range; } + public void setRegionName(String regionName) { this.regionName = regionName; } @@ -47,6 +60,7 @@ public enum DiscoveredOnType{ MOB_KILL, MYTHIC_MOB_KILL, ELITE_MOB_KILL, - WORLDGUARD_REGION + WORLDGUARD_REGION, + LOCATION } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e324df6..7c59797 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,7 +2,9 @@ main: cx.ajneb97.Codex version: ${project.version} name: Codex api-version: 1.13 -author: Ajneb97 +author: + - Ajneb97 + - MikkoAyaka softdepend: [WorldGuard,WorldEdit,PlaceholderAPI,MythicMobs] commands: