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: