Implement island distance config option
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
2866573d0d
commit
8e299009a4
@ -10,6 +10,9 @@ public class Cache
|
|||||||
{
|
{
|
||||||
|
|
||||||
public static final Coordinates baseCoords = new Coordinates(1000, 1000);
|
public static final Coordinates baseCoords = new Coordinates(1000, 1000);
|
||||||
|
|
||||||
|
public static int islandsDistance = 500;
|
||||||
|
public static int islandWalkingRange = 100;
|
||||||
private static YamlConfiguration configuration;
|
private static YamlConfiguration configuration;
|
||||||
|
|
||||||
public static final HashMap<String, Coordinates> playerIslands = new HashMap<>();
|
public static final HashMap<String, Coordinates> playerIslands = new HashMap<>();
|
||||||
|
@ -52,9 +52,12 @@ public class LimboManager extends JavaPlugin {
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cache some config variables
|
||||||
|
Cache.islandWalkingRange = configuration.getInt("sizing.allowed-range");
|
||||||
|
Cache.islandsDistance = configuration.getInt("sizing.island-distance");
|
||||||
|
|
||||||
// start location check runnable
|
// start location check runnable
|
||||||
Cache.locationCheckRunnable = new LocationCheckRunnable();
|
Cache.locationCheckRunnable = new LocationCheckRunnable();
|
||||||
Cache.locationCheckRunnable.setDistanceMax(configuration.getInt("sizing.allowed-range"));
|
|
||||||
Cache.locationCheckRunnable.task = Bukkit.getScheduler().runTaskTimerAsynchronously(this, Cache.locationCheckRunnable, 10L, 5L);
|
Cache.locationCheckRunnable.task = Bukkit.getScheduler().runTaskTimerAsynchronously(this, Cache.locationCheckRunnable, 10L, 5L);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ public class PlayerTeleporter implements Listener
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
how are islands laid out?
|
how are islands laid out?
|
||||||
we start from (1000, 1000) and we put islands at 500 blocks distance up to 10000. then we move to a new row.
|
we start from (1000, 1000) and we put islands at <Cache.islandsDistance> blocks distance up to 10000. then we move to a new row.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Coordinates islandCoords = new Coordinates(Cache.baseCoords);
|
Coordinates islandCoords = new Coordinates(Cache.baseCoords);
|
||||||
@ -107,13 +107,13 @@ public class PlayerTeleporter implements Listener
|
|||||||
if(!islandCoords.equals(currentCoords)) break;
|
if(!islandCoords.equals(currentCoords)) break;
|
||||||
|
|
||||||
// else, if they are the same,
|
// else, if they are the same,
|
||||||
// we have to either increase X or move to a new row, in case it's over 10000.
|
// we have to either increase X or move to a new row and reset X, in case it's over 10000.
|
||||||
if(islandCoords.getX() >= 10000) // if we need to create a new row
|
if(islandCoords.getX() >= 10000) // if we need to create a new row
|
||||||
{
|
{
|
||||||
islandCoords.setX(1000);
|
islandCoords.setX(1000);
|
||||||
islandCoords.setZ(islandCoords.getZ() + 500);
|
islandCoords.setZ(islandCoords.getZ() + Cache.islandsDistance);
|
||||||
} else { // if we just need to increase the column
|
} else { // if we just need to increase the column
|
||||||
islandCoords.setX(islandCoords.getX() + 500);
|
islandCoords.setX(islandCoords.getX() + Cache.islandsDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ public class LocationCheckRunnable implements Runnable
|
|||||||
public BukkitTask task;
|
public BukkitTask task;
|
||||||
|
|
||||||
List<Player> playersToCheck = new ArrayList<>();
|
List<Player> playersToCheck = new ArrayList<>();
|
||||||
private int distanceMax = 100; //just a default value
|
|
||||||
|
|
||||||
|
|
||||||
// we give players a distanceMax block range to move in.
|
// we give players a distanceMax block range to move in.
|
||||||
@ -61,7 +60,7 @@ public class LocationCheckRunnable implements Runnable
|
|||||||
int distanceZ = Math.abs(playerLocation.getBlockZ() - islandSpawnCoordinates.getZ());
|
int distanceZ = Math.abs(playerLocation.getBlockZ() - islandSpawnCoordinates.getZ());
|
||||||
|
|
||||||
// check if player is inside bounds
|
// check if player is inside bounds
|
||||||
if(distanceX > distanceMax || distanceZ > distanceMax)
|
if(distanceX > Cache.islandWalkingRange || distanceZ > Cache.islandWalkingRange)
|
||||||
{
|
{
|
||||||
LocationUtils.teleportToOwnIsland(player);
|
LocationUtils.teleportToOwnIsland(player);
|
||||||
player.sendMessage("Out of bounds");
|
player.sendMessage("Out of bounds");
|
||||||
@ -69,9 +68,4 @@ public class LocationCheckRunnable implements Runnable
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDistanceMax(int distanceMax)
|
|
||||||
{
|
|
||||||
this.distanceMax = distanceMax;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user