the quick, dirty, jungle-proof edit
This commit is contained in:
parent
2e07dcbb1a
commit
1d7d4961d3
3 changed files with 78 additions and 28 deletions
|
@ -1,5 +1,8 @@
|
||||||
package iieLoadSaveEntireWorld;
|
package iieLoadSaveEntireWorld;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
@ -11,6 +14,7 @@ public class LoadProcess implements Runnable
|
||||||
final int totalRegions;
|
final int totalRegions;
|
||||||
int[] currentRegion;
|
int[] currentRegion;
|
||||||
|
|
||||||
|
//NEW PROCESS
|
||||||
LoadProcess(String name, WorldObj newWorld)
|
LoadProcess(String name, WorldObj newWorld)
|
||||||
{
|
{
|
||||||
ConfigProcess.addNew(name, newWorld);
|
ConfigProcess.addNew(name, newWorld);
|
||||||
|
@ -19,7 +23,7 @@ public class LoadProcess implements Runnable
|
||||||
totalRegions = newWorld.total;
|
totalRegions = newWorld.total;
|
||||||
currentRegion = newWorld.current;
|
currentRegion = newWorld.current;
|
||||||
}
|
}
|
||||||
|
//RESUME
|
||||||
LoadProcess(String name)
|
LoadProcess(String name)
|
||||||
{
|
{
|
||||||
final WorldObj unfinished = ConfigProcess.getUnfinished(name);
|
final WorldObj unfinished = ConfigProcess.getUnfinished(name);
|
||||||
|
@ -108,7 +112,7 @@ public class LoadProcess implements Runnable
|
||||||
|
|
||||||
//==================================RUN=================================
|
//==================================RUN=================================
|
||||||
|
|
||||||
private static volatile boolean ready = true;
|
private volatile boolean ready = true;
|
||||||
private volatile int unqueued = 0;
|
private volatile int unqueued = 0;
|
||||||
public final void run()
|
public final void run()
|
||||||
{
|
{
|
||||||
|
@ -128,6 +132,52 @@ public class LoadProcess implements Runnable
|
||||||
{
|
{
|
||||||
TaskManager.finish();
|
TaskManager.finish();
|
||||||
}
|
}
|
||||||
|
while (skip(currentRegion))
|
||||||
|
{
|
||||||
|
if (!setNextRegion())
|
||||||
|
{
|
||||||
|
TaskManager.finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
ready = true;
|
ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================SKIP REGION?=============================
|
||||||
|
//this is specific to our new TerrainControl world
|
||||||
|
//skip all regions that contain jungle biome
|
||||||
|
private static final boolean skip(int[] r)
|
||||||
|
{
|
||||||
|
switch(r[0])
|
||||||
|
{
|
||||||
|
case -17 : return check(r[1], -15,-14 );
|
||||||
|
case -16 : return check(r[1], -20,-19,-18,-17,-16,-15,-14 );
|
||||||
|
case -15 : return check(r[1], -20,-19,-18,-17,-16,-15 );
|
||||||
|
case -14 : return check(r[1], -19,-18,-17,-16,-15 );
|
||||||
|
case -13 : return check(r[1], -19,-18,-17,-16,-15 );
|
||||||
|
case -12 : return check(r[1], -18,-17,-16,-15 );
|
||||||
|
case -11 : return check(r[1], -19,-18,-17,-16,-15,-14 );
|
||||||
|
case -10 : return check(r[1], -19,-18,-17,-16,-15,-14 );
|
||||||
|
case -9 : return check(r[1], -19,-18,-17,-16,-15,-14 );
|
||||||
|
case -8 : return check(r[1], -18,-17,-16,-15 );
|
||||||
|
case -7 : return check(r[1], -18,-17,-16,-15 );
|
||||||
|
case -6 : return check(r[1], -17,-16,-15 );
|
||||||
|
|
||||||
|
case -3 : return check(r[1], -7, -6, -5 );
|
||||||
|
case -2 : return check(r[1], -6, -5, -4 );
|
||||||
|
case -1 : return check(r[1], -7, -6, -5, -4 );
|
||||||
|
case 0 : return check(r[1], -8, -7, -6, -5, -4 );
|
||||||
|
case 1 : return check(r[1], -9, -8, -7, -6, -5, -4 );
|
||||||
|
case 2 : return check(r[1], -9, -8, -7, -6, -5 );
|
||||||
|
case 3 : return check(r[1], -7, -6 );
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private static final boolean check(int z, int... skips)
|
||||||
|
{
|
||||||
|
for (int skip : skips)
|
||||||
|
{
|
||||||
|
if (z == skip) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,17 @@ public class Main extends JavaPlugin {
|
||||||
ConfigProcess.plugin = this;
|
ConfigProcess.plugin = this;
|
||||||
ConfigProcess.config = getConfig();
|
ConfigProcess.config = getConfig();
|
||||||
|
|
||||||
if (TaskManager.crashResume())
|
if (ConfigProcess.crashResume())
|
||||||
|
{
|
||||||
|
Bukkit.getScheduler().runTaskLater(this, new CrashResume(), 1200);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static final class CrashResume implements Runnable
|
||||||
|
{
|
||||||
|
public final void run()
|
||||||
|
{
|
||||||
Bukkit.getLogger().info("...resuming from crash");
|
Bukkit.getLogger().info("...resuming from crash");
|
||||||
|
TaskManager.start(null, ConfigProcess.getCrashResume());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,43 +12,33 @@ public class TaskManager {
|
||||||
private static boolean inProgress = false;
|
private static boolean inProgress = false;
|
||||||
|
|
||||||
static LoadProcess loadProcess;
|
static LoadProcess loadProcess;
|
||||||
private static ConfigProcess configProcess;
|
static ConfigProcess configProcess;
|
||||||
private static BukkitTask loadTask;
|
private static BukkitTask loadTask;
|
||||||
private static BukkitTask configTask;
|
private static BukkitTask configTask;
|
||||||
|
|
||||||
|
|
||||||
//===================================CONTROLS==================================
|
//===================================CONTROLS==================================
|
||||||
|
|
||||||
private static final void schedule(long delay)
|
private static final void schedule()
|
||||||
{
|
{
|
||||||
loadTask = Bukkit.getScheduler().runTaskTimer(ConfigProcess.plugin, loadProcess, delay, 100);
|
loadTask = Bukkit.getScheduler().runTaskTimer(ConfigProcess.plugin, loadProcess, 0, 200);
|
||||||
configTask = Bukkit.getScheduler().runTaskTimer(ConfigProcess.plugin, configProcess, delay, 200);
|
configTask = Bukkit.getScheduler().runTaskTimer(ConfigProcess.plugin, configProcess, 0, 400);
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
private static final boolean start(String[] args, String name)
|
static final boolean start(String[] args, String name)
|
||||||
{
|
{
|
||||||
if (ConfigProcess.isNew(name))
|
boolean isNew;
|
||||||
|
if (isNew = ConfigProcess.isNew(name))
|
||||||
{
|
{
|
||||||
loadProcess = new LoadProcess(name, WorldObj.generate(args));
|
loadProcess = new LoadProcess(name, WorldObj.generate(args));
|
||||||
configProcess = new ConfigProcess(name);
|
|
||||||
schedule(0);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
loadProcess = new LoadProcess(name);
|
loadProcess = new LoadProcess(name);
|
||||||
|
}
|
||||||
configProcess = new ConfigProcess(name);
|
configProcess = new ConfigProcess(name);
|
||||||
schedule(0);
|
schedule();
|
||||||
return false;
|
return isNew;
|
||||||
}
|
|
||||||
static final boolean crashResume()
|
|
||||||
{
|
|
||||||
if (ConfigProcess.crashResume())
|
|
||||||
{
|
|
||||||
loadProcess = new LoadProcess(ConfigProcess.getCrashResume());
|
|
||||||
configProcess = new ConfigProcess(false);
|
|
||||||
schedule(1200);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
private static final void stop_or_finish()
|
private static final void stop_or_finish()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue