mirror of
https://github.com/BentoBoxWorld/Level.git
synced 2024-11-29 06:05:10 +01:00
Add ability to specify delay between each task that checks and loads chunks for level calculation. (#76)
Add ability to specify how much chunks should be loaded at the same tick.
This commit is contained in:
parent
7e29ba3ade
commit
0bd5bd4d10
@ -31,8 +31,8 @@ import world.bentobox.level.Level;
|
|||||||
|
|
||||||
public class CalcIslandLevel {
|
public class CalcIslandLevel {
|
||||||
|
|
||||||
private static final int MAX_CHUNKS = 200;
|
private final int MAX_CHUNKS;
|
||||||
private static final long SPEED = 1;
|
private final long SPEED;
|
||||||
private static final String LINE_BREAK = "==================================";
|
private static final String LINE_BREAK = "==================================";
|
||||||
private boolean checking;
|
private boolean checking;
|
||||||
private final BukkitTask task;
|
private final BukkitTask task;
|
||||||
@ -80,6 +80,9 @@ public class CalcIslandLevel {
|
|||||||
// Set the initial island handicap
|
// Set the initial island handicap
|
||||||
result.initialLevel = addon.getInitialIslandLevel(island);
|
result.initialLevel = addon.getInitialIslandLevel(island);
|
||||||
|
|
||||||
|
SPEED = addon.getSettings().getUpdateTickDelay();
|
||||||
|
MAX_CHUNKS = addon.getSettings().getChunksPerTick();
|
||||||
|
|
||||||
// Get chunks to scan
|
// Get chunks to scan
|
||||||
chunksToScan = getChunksToScan(island);
|
chunksToScan = getChunksToScan(island);
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package world.bentobox.level.config;
|
package world.bentobox.level.config;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -23,7 +22,19 @@ public class Settings {
|
|||||||
private int deathpenalty;
|
private int deathpenalty;
|
||||||
private long levelCost;
|
private long levelCost;
|
||||||
private int levelWait;
|
private int levelWait;
|
||||||
private List<String> gameModes = new ArrayList<>();
|
|
||||||
|
/**
|
||||||
|
* Stores number of chunks that can be updated in single tick.
|
||||||
|
*/
|
||||||
|
private int chunksPerTick;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores number of tick delay between each chunk loading.
|
||||||
|
*/
|
||||||
|
private long updateTickDelay;
|
||||||
|
|
||||||
|
private List<String> gameModes;
|
||||||
|
|
||||||
|
|
||||||
public Settings(Level level) {
|
public Settings(Level level) {
|
||||||
this.level = level;
|
this.level = level;
|
||||||
@ -32,6 +43,22 @@ public class Settings {
|
|||||||
// GameModes
|
// GameModes
|
||||||
gameModes = level.getConfig().getStringList("game-modes");
|
gameModes = level.getConfig().getStringList("game-modes");
|
||||||
|
|
||||||
|
// Level calculation chunk load speed
|
||||||
|
this.setUpdateTickDelay(level.getConfig().getLong("updatetickdelay", 1));
|
||||||
|
|
||||||
|
if (this.getUpdateTickDelay() <= 0)
|
||||||
|
{
|
||||||
|
this.setUpdateTickDelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level calculation chunk count per update
|
||||||
|
this.setChunksPerTick(level.getConfig().getInt("chunkspertick", 200));
|
||||||
|
|
||||||
|
if (this.getChunksPerTick() <= 0)
|
||||||
|
{
|
||||||
|
this.setChunksPerTick(200);
|
||||||
|
}
|
||||||
|
|
||||||
setLevelWait(level.getConfig().getInt("levelwait", 60));
|
setLevelWait(level.getConfig().getInt("levelwait", 60));
|
||||||
if (getLevelWait() < 0) {
|
if (getLevelWait() < 0) {
|
||||||
setLevelWait(0);
|
setLevelWait(0);
|
||||||
@ -218,4 +245,46 @@ public class Settings {
|
|||||||
public boolean isShortHand() {
|
public boolean isShortHand() {
|
||||||
return level.getConfig().getBoolean("shorthand");
|
return level.getConfig().getBoolean("shorthand");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns the number of chunks that can be processed at single tick.
|
||||||
|
* @return the value of chunksPerTick.
|
||||||
|
*/
|
||||||
|
public int getChunksPerTick()
|
||||||
|
{
|
||||||
|
return this.chunksPerTick;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method sets the chunksPerTick value.
|
||||||
|
* @param chunksPerTick the chunksPerTick new value.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void setChunksPerTick(int chunksPerTick)
|
||||||
|
{
|
||||||
|
this.chunksPerTick = chunksPerTick;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns the delay between each update call.
|
||||||
|
* @return the value of updateTickDelay.
|
||||||
|
*/
|
||||||
|
public long getUpdateTickDelay()
|
||||||
|
{
|
||||||
|
return this.updateTickDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method sets the updateTickDelay value.
|
||||||
|
* @param updateTickDelay the updateTickDelay new value.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void setUpdateTickDelay(long updateTickDelay)
|
||||||
|
{
|
||||||
|
this.updateTickDelay = updateTickDelay;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,14 @@ levelcost: 100
|
|||||||
# Cooldown between level requests in seconds
|
# Cooldown between level requests in seconds
|
||||||
levelwait: 60
|
levelwait: 60
|
||||||
|
|
||||||
|
# Delay between each task that loads chunks for calculating island level.
|
||||||
|
# Increasing this will increase time to calculate island level.
|
||||||
|
updatetickdelay: 1
|
||||||
|
|
||||||
|
# Number of chunks that will be processed at the same tick.
|
||||||
|
# Decreasing this will increase time to calculate island level.
|
||||||
|
chunkspertick: 200
|
||||||
|
|
||||||
# Death penalty
|
# Death penalty
|
||||||
# How many block values a player will lose per death.
|
# How many block values a player will lose per death.
|
||||||
# Default value of 100 means that for every death, the player will lose 1 level (if levelcost is 100)
|
# Default value of 100 means that for every death, the player will lose 1 level (if levelcost is 100)
|
||||||
|
Loading…
Reference in New Issue
Block a user