mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Merge remote-tracking branch 'upstream/master' into DecreeCommands
This commit is contained in:
commit
bfb47aba87
@ -95,6 +95,8 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
|
|
||||||
private void preEnable() {
|
private void preEnable() {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
services = new KMap<>();
|
||||||
|
initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i));
|
||||||
INMS.get();
|
INMS.get();
|
||||||
IO.delete(new File("iris"));
|
IO.delete(new File("iris"));
|
||||||
installDataPacks();
|
installDataPacks();
|
||||||
@ -103,9 +105,6 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void enable() {
|
private void enable() {
|
||||||
services = new KMap<>();
|
|
||||||
initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i));
|
|
||||||
|
|
||||||
audiences = BukkitAudiences.create(this);
|
audiences = BukkitAudiences.create(this);
|
||||||
sender = new VolmitSender(Bukkit.getConsoleSender());
|
sender = new VolmitSender(Bukkit.getConsoleSender());
|
||||||
sender.setTag(getTag());
|
sender.setTag(getTag());
|
||||||
@ -245,7 +244,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
for (File i : packs.listFiles()) {
|
for (File i : packs.listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
Iris.verbose("Checking Pack: " + i.getPath());
|
Iris.verbose("Checking Pack: " + i.getPath());
|
||||||
IrisData data = new IrisData(i);
|
IrisData data = IrisData.get(i);
|
||||||
File dims = new File(i, "dimensions");
|
File dims = new File(i, "dimensions");
|
||||||
|
|
||||||
if (dims.exists()) {
|
if (dims.exists()) {
|
||||||
@ -339,7 +338,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
for (File i : packs.listFiles()) {
|
for (File i : packs.listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
Iris.verbose("Checking Pack: " + i.getPath());
|
Iris.verbose("Checking Pack: " + i.getPath());
|
||||||
IrisData data = new IrisData(i);
|
IrisData data = IrisData.get(i);
|
||||||
File dims = new File(i, "dimensions");
|
File dims = new File(i, "dimensions");
|
||||||
|
|
||||||
if (dims.exists()) {
|
if (dims.exists()) {
|
||||||
@ -376,7 +375,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean verifyDataPackInstalled(IrisDimension dimension) {
|
public boolean verifyDataPackInstalled(IrisDimension dimension) {
|
||||||
IrisData idm = new IrisData(getDataFolder("packs", dimension.getLoadKey()));
|
IrisData idm = IrisData.get(getDataFolder("packs", dimension.getLoadKey()));
|
||||||
KSet<String> keys = new KSet<>();
|
KSet<String> keys = new KSet<>();
|
||||||
boolean warn = false;
|
boolean warn = false;
|
||||||
|
|
||||||
|
@ -122,7 +122,6 @@ public class IrisSettings {
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public static class IrisSettingsGenerator {
|
public static class IrisSettingsGenerator {
|
||||||
|
|
||||||
public String defaultWorldType = "overworld";
|
public String defaultWorldType = "overworld";
|
||||||
public boolean disableMCA = false;
|
public boolean disableMCA = false;
|
||||||
public boolean systemEffects = true;
|
public boolean systemEffects = true;
|
||||||
|
@ -87,7 +87,7 @@ public class CommandIrisStudioProfile extends MortarCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IrisProject p = new IrisProject(f);
|
IrisProject p = new IrisProject(f);
|
||||||
IrisData data = new IrisData(f);
|
IrisData data = IrisData.get(f);
|
||||||
KMap<NoiseStyle, Double> styleTimings = new KMap<>();
|
KMap<NoiseStyle, Double> styleTimings = new KMap<>();
|
||||||
KMap<InterpolationMethod, Double> interpolatorTimings = new KMap<>();
|
KMap<InterpolationMethod, Double> interpolatorTimings = new KMap<>();
|
||||||
KMap<String, Double> generatorTimings = new KMap<>();
|
KMap<String, Double> generatorTimings = new KMap<>();
|
||||||
|
@ -63,7 +63,7 @@ public class CommandIrisStudioUpdate extends MortarCommand {
|
|||||||
|
|
||||||
for (String i : args) {
|
for (String i : args) {
|
||||||
if (i.equals("--rewrite-objects")) {
|
if (i.equals("--rewrite-objects")) {
|
||||||
IrisData data = new IrisData(Iris.service(StudioSVC.class).getWorkspaceFolder(args[0]));
|
IrisData data = IrisData.get(Iris.service(StudioSVC.class).getWorkspaceFolder(args[0]));
|
||||||
int t = data.getObjectLoader().getPossibleKeys().length;
|
int t = data.getObjectLoader().getPossibleKeys().length;
|
||||||
ChronoLatch cl = new ChronoLatch(250, false);
|
ChronoLatch cl = new ChronoLatch(250, false);
|
||||||
MultiBurst bx = new MultiBurst("Object Rewriter", Thread.MIN_PRIORITY, Runtime.getRuntime().availableProcessors());
|
MultiBurst bx = new MultiBurst("Object Rewriter", Thread.MIN_PRIORITY, Runtime.getRuntime().availableProcessors());
|
||||||
|
@ -206,7 +206,7 @@ public class DecStudio implements DecreeExecutor {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
IrisData data = new IrisData(Iris.service(StudioSVC.class).getWorkspaceFolder(project.getLoadKey()));
|
IrisData data = IrisData.get(Iris.service(StudioSVC.class).getWorkspaceFolder(project.getLoadKey()));
|
||||||
for (String f : data.getObjectLoader().getPossibleKeys()) {
|
for (String f : data.getObjectLoader().getPossibleKeys()) {
|
||||||
CompletableFuture<?> gg = burst.complete(() -> {
|
CompletableFuture<?> gg = burst.complete(() -> {
|
||||||
File ff = data.getObjectLoader().findFile(f);
|
File ff = data.getObjectLoader().findFile(f);
|
||||||
@ -437,7 +437,7 @@ public class DecStudio implements DecreeExecutor {
|
|||||||
File pack = dimension.getLoadFile().getParentFile().getParentFile();
|
File pack = dimension.getLoadFile().getParentFile().getParentFile();
|
||||||
File report = Iris.instance.getDataFile("profile.txt");
|
File report = Iris.instance.getDataFile("profile.txt");
|
||||||
IrisProject project = new IrisProject(pack);
|
IrisProject project = new IrisProject(pack);
|
||||||
IrisData data = new IrisData(pack);
|
IrisData data = IrisData.get(pack);
|
||||||
|
|
||||||
KList<String> fileText = new KList<>();
|
KList<String> fileText = new KList<>();
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ public class IrisProject {
|
|||||||
settings.put("[json]", jc);
|
settings.put("[json]", jc);
|
||||||
settings.put("json.maxItemsComputed", 30000);
|
settings.put("json.maxItemsComputed", 30000);
|
||||||
JSONArray schemas = new JSONArray();
|
JSONArray schemas = new JSONArray();
|
||||||
IrisData dm = new IrisData(getPath());
|
IrisData dm = IrisData.get(getPath());
|
||||||
|
|
||||||
for (ResourceLoader<?> r : dm.getLoaders().v()) {
|
for (ResourceLoader<?> r : dm.getLoaders().v()) {
|
||||||
if (r.supportsSchemas()) {
|
if (r.supportsSchemas()) {
|
||||||
@ -265,7 +265,7 @@ public class IrisProject {
|
|||||||
|
|
||||||
public File compilePackage(VolmitSender sender, boolean obfuscate, boolean minify) {
|
public File compilePackage(VolmitSender sender, boolean obfuscate, boolean minify) {
|
||||||
String dimm = getName();
|
String dimm = getName();
|
||||||
IrisData dm = new IrisData(path);
|
IrisData dm = IrisData.get(path);
|
||||||
IrisDimension dimension = dm.getDimensionLoader().load(dimm);
|
IrisDimension dimension = dm.getDimensionLoader().load(dimm);
|
||||||
File folder = new File(Iris.instance.getDataFolder(), "exports/" + dimension.getLoadKey());
|
File folder = new File(Iris.instance.getDataFolder(), "exports/" + dimension.getLoadKey());
|
||||||
folder.mkdirs();
|
folder.mkdirs();
|
||||||
|
@ -47,6 +47,7 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class IrisData {
|
public class IrisData {
|
||||||
|
private static final KMap<File, IrisData> dataLoaders = new KMap<>();
|
||||||
private ResourceLoader<IrisBiome> biomeLoader;
|
private ResourceLoader<IrisBiome> biomeLoader;
|
||||||
private ResourceLoader<IrisLootTable> lootLoader;
|
private ResourceLoader<IrisLootTable> lootLoader;
|
||||||
private ResourceLoader<IrisRegion> regionLoader;
|
private ResourceLoader<IrisRegion> regionLoader;
|
||||||
@ -68,11 +69,12 @@ public class IrisData {
|
|||||||
private Engine engine;
|
private Engine engine;
|
||||||
private final int id;
|
private final int id;
|
||||||
|
|
||||||
public IrisData(File dataFolder) {
|
public static IrisData get(File dataFolder)
|
||||||
this(dataFolder, false);
|
{
|
||||||
|
return dataLoaders.compute(dataFolder, (k,v) -> v == null ? new IrisData(dataFolder) : v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisData(File dataFolder, boolean oneshot) {
|
private IrisData(File dataFolder) {
|
||||||
this.engine = null;
|
this.engine = null;
|
||||||
this.dataFolder = dataFolder;
|
this.dataFolder = dataFolder;
|
||||||
this.id = RNG.r.imax();
|
this.id = RNG.r.imax();
|
||||||
@ -80,6 +82,19 @@ public class IrisData {
|
|||||||
hotloaded();
|
hotloaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int cacheSize() {
|
||||||
|
int m = 0;
|
||||||
|
for(IrisData i : dataLoaders.values())
|
||||||
|
{
|
||||||
|
for(ResourceLoader<?> j : i.getLoaders().values())
|
||||||
|
{
|
||||||
|
m+=j.getLoadCache().size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
public void preprocessObject(IrisRegistrant t) {
|
public void preprocessObject(IrisRegistrant t) {
|
||||||
try {
|
try {
|
||||||
IrisContext ctx = IrisContext.get();
|
IrisContext ctx = IrisContext.get();
|
||||||
@ -125,7 +140,7 @@ public class IrisData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IrisData copy() {
|
public IrisData copy() {
|
||||||
return new IrisData(dataFolder);
|
return IrisData.get(dataFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends IrisRegistrant> ResourceLoader<T> registerLoader(Class<T> registrant) {
|
private <T extends IrisRegistrant> ResourceLoader<T> registerLoader(Class<T> registrant) {
|
||||||
@ -260,7 +275,7 @@ public class IrisData {
|
|||||||
try {
|
try {
|
||||||
for (File i : Objects.requireNonNull(Iris.instance.getDataFolder("packs").listFiles())) {
|
for (File i : Objects.requireNonNull(Iris.instance.getDataFolder("packs").listFiles())) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData dm = new IrisData(i, true);
|
IrisData dm = get(i);
|
||||||
T t = v.apply(dm);
|
T t = v.apply(dm);
|
||||||
|
|
||||||
if (t != null) {
|
if (t != null) {
|
||||||
|
@ -45,10 +45,10 @@ import java.util.stream.Stream;
|
|||||||
@Data
|
@Data
|
||||||
public class ResourceLoader<T extends IrisRegistrant> {
|
public class ResourceLoader<T extends IrisRegistrant> {
|
||||||
public static final AtomicDouble tlt = new AtomicDouble(0);
|
public static final AtomicDouble tlt = new AtomicDouble(0);
|
||||||
|
private static final int CACHE_SIZE = 100000;
|
||||||
protected File root;
|
protected File root;
|
||||||
protected String folderName;
|
protected String folderName;
|
||||||
protected String resourceTypeName;
|
protected String resourceTypeName;
|
||||||
protected KMap<String, File> folderMapCache;
|
|
||||||
protected KMap<String, T> loadCache;
|
protected KMap<String, T> loadCache;
|
||||||
protected KList<File> folderCache;
|
protected KList<File> folderCache;
|
||||||
protected Class<? extends T> objectClass;
|
protected Class<? extends T> objectClass;
|
||||||
@ -64,7 +64,6 @@ public class ResourceLoader<T extends IrisRegistrant> {
|
|||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
sec = new ChronoLatch(5000);
|
sec = new ChronoLatch(5000);
|
||||||
loads = new AtomicInteger();
|
loads = new AtomicInteger();
|
||||||
folderMapCache = new KMap<>();
|
|
||||||
this.objectClass = objectClass;
|
this.objectClass = objectClass;
|
||||||
cname = objectClass.getCanonicalName();
|
cname = objectClass.getCanonicalName();
|
||||||
this.resourceTypeName = resourceTypeName;
|
this.resourceTypeName = resourceTypeName;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package com.volmit.iris.core.service;
|
package com.volmit.iris.core.service;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
@ -142,7 +143,7 @@ public class BoardSVC implements IrisService, BoardProvider {
|
|||||||
v.add(C.AQUA + "Height" + C.GRAY + ": " + Math.round(engine.getHeight(x, z)));
|
v.add(C.AQUA + "Height" + C.GRAY + ": " + Math.round(engine.getHeight(x, z)));
|
||||||
v.add(C.AQUA + "Slope" + C.GRAY + ": " + Form.f(engine.getComplex().getSlopeStream().get(x, z), 2));
|
v.add(C.AQUA + "Slope" + C.GRAY + ": " + Form.f(engine.getComplex().getSlopeStream().get(x, z), 2));
|
||||||
v.add(C.AQUA + "Features" + C.GRAY + ": " + Form.f(f.size()));
|
v.add(C.AQUA + "Features" + C.GRAY + ": " + Form.f(f.size()));
|
||||||
v.add(C.AQUA + "Energy" + C.GRAY + ": " + Form.f(engine.getWorldManager().getEnergy(), 0));
|
v.add(C.AQUA + "Cache" + C.GRAY + ": " + Form.f(IrisData.cacheSize()));
|
||||||
v.add(C.AQUA + "Sat" + C.GRAY + ": " + Form.f(engine.getWorldManager().getEntityCount()) + "e / " + Form.f(engine.getWorldManager().getChunkCount()) + "c (" + Form.pc(engine.getWorldManager().getEntitySaturation(), 0) + ")");
|
v.add(C.AQUA + "Sat" + C.GRAY + ": " + Form.f(engine.getWorldManager().getEntityCount()) + "e / " + Form.f(engine.getWorldManager().getChunkCount()) + "c (" + Form.pc(engine.getWorldManager().getEntitySaturation(), 0) + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
101
src/main/java/com/volmit/iris/core/service/ExecutionSVC.java
Normal file
101
src/main/java/com/volmit/iris/core/service/ExecutionSVC.java
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
* Iris is a World Generator for Minecraft Bukkit Servers
|
||||||
|
* Copyright (c) 2021 Arcane Arts (Volmit Software)
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.volmit.iris.core.service;
|
||||||
|
|
||||||
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
|
import com.volmit.iris.util.plugin.IrisService;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
|
public class ExecutionSVC implements IrisService
|
||||||
|
{
|
||||||
|
private KList<Thread> threads = new KList<>();
|
||||||
|
private KList<MultiBurst> bursts = new KList<>();
|
||||||
|
private KList<ExecutorService> services = new KList<>();
|
||||||
|
|
||||||
|
public void register(Thread t)
|
||||||
|
{
|
||||||
|
threads.add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register(MultiBurst burst)
|
||||||
|
{
|
||||||
|
bursts.add(burst);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register(ExecutorService service)
|
||||||
|
{
|
||||||
|
services.add(service);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
for(Thread i : threads)
|
||||||
|
{
|
||||||
|
if(i.isAlive())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
i.interrupt();
|
||||||
|
Iris.info("Shutdown Thread " + i.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(MultiBurst i : bursts)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
i.shutdownNow();
|
||||||
|
Iris.info("Shutdown Multiburst " + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(ExecutorService i : services)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
i.shutdownNow();
|
||||||
|
Iris.info("Shutdown Executor Service " + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -78,6 +78,7 @@ public class StudioSVC implements IrisService {
|
|||||||
|
|
||||||
for (World i : Bukkit.getWorlds()) {
|
for (World i : Bukkit.getWorlds()) {
|
||||||
if (IrisToolbelt.isIrisWorld(i)) {
|
if (IrisToolbelt.isIrisWorld(i)) {
|
||||||
|
IrisToolbelt.evacuate(i);
|
||||||
Iris.debug("Closing Platform Generator " + i.getName());
|
Iris.debug("Closing Platform Generator " + i.getName());
|
||||||
IrisToolbelt.access(i).close();
|
IrisToolbelt.access(i).close();
|
||||||
}
|
}
|
||||||
@ -142,7 +143,7 @@ public class StudioSVC implements IrisService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisData dm = new IrisData(irispack);
|
IrisData dm = IrisData.get(irispack);
|
||||||
dim = dm.getDimensionLoader().load(type);
|
dim = dm.getDimensionLoader().load(type);
|
||||||
|
|
||||||
if (dim == null) {
|
if (dim == null) {
|
||||||
|
@ -64,7 +64,7 @@ public class IrisToolbelt {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new IrisData(pack).getDimensionLoader().load(dimension);
|
return IrisData.get(pack).getDimensionLoader().load(dimension);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -431,7 +431,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
|||||||
|
|
||||||
catch(Throwable e)
|
catch(Throwable e)
|
||||||
{
|
{
|
||||||
e.printStackTrace();
|
Iris.reportError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ public class EngineProvider {
|
|||||||
public void provideEngine(IrisWorld world, String dimension, File dataLocation, boolean studio, Consumer<Engine> post) {
|
public void provideEngine(IrisWorld world, String dimension, File dataLocation, boolean studio, Consumer<Engine> post) {
|
||||||
close();
|
close();
|
||||||
engine.set(MultiBurst.burst.completeValue(() -> {
|
engine.set(MultiBurst.burst.completeValue(() -> {
|
||||||
IrisData data = new IrisData(dataLocation);
|
IrisData data = IrisData.get(dataLocation);
|
||||||
IrisDimension realDimension = data.getDimensionLoader().load(dimension);
|
IrisDimension realDimension = data.getDimensionLoader().load(dimension);
|
||||||
|
|
||||||
if (realDimension == null) {
|
if (realDimension == null) {
|
||||||
|
@ -37,7 +37,7 @@ public class BiomeHandler implements DecreeParameterHandler<IrisBiome> {
|
|||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData data = new IrisData(i, true);
|
IrisData data = IrisData.get(i);
|
||||||
for (IrisBiome j : data.getBiomeLoader().loadAll(data.getBiomeLoader().getPossibleKeys())) {
|
for (IrisBiome j : data.getBiomeLoader().loadAll(data.getBiomeLoader().getPossibleKeys())) {
|
||||||
p.putIfAbsent(j.getLoadKey(), j);
|
p.putIfAbsent(j.getLoadKey(), j);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ public class DimensionHandler implements DecreeParameterHandler<IrisDimension> {
|
|||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData data = new IrisData(i, true);
|
IrisData data = IrisData.get(i);
|
||||||
for (IrisDimension j : data.getDimensionLoader().loadAll(data.getDimensionLoader().getPossibleKeys())) {
|
for (IrisDimension j : data.getDimensionLoader().loadAll(data.getDimensionLoader().getPossibleKeys())) {
|
||||||
p.putIfAbsent(j.getLoadKey(), j);
|
p.putIfAbsent(j.getLoadKey(), j);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ public class EntityHandler implements DecreeParameterHandler<IrisEntity> {
|
|||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData data = new IrisData(i, true);
|
IrisData data = IrisData.get(i);
|
||||||
for (IrisEntity j : data.getEntityLoader().loadAll(data.getEntityLoader().getPossibleKeys())) {
|
for (IrisEntity j : data.getEntityLoader().loadAll(data.getEntityLoader().getPossibleKeys())) {
|
||||||
p.putIfAbsent(j.getLoadKey(), j);
|
p.putIfAbsent(j.getLoadKey(), j);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ public class GeneratorHandler implements DecreeParameterHandler<IrisGenerator> {
|
|||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData data = new IrisData(i, true);
|
IrisData data = IrisData.get(i);
|
||||||
for (IrisGenerator j : data.getGeneratorLoader().loadAll(data.getGeneratorLoader().getPossibleKeys())) {
|
for (IrisGenerator j : data.getGeneratorLoader().loadAll(data.getGeneratorLoader().getPossibleKeys())) {
|
||||||
p.putIfAbsent(j.getLoadKey(), j);
|
p.putIfAbsent(j.getLoadKey(), j);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ public class RegionHandler implements DecreeParameterHandler<IrisRegion> {
|
|||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData data = new IrisData(i, true);
|
IrisData data = IrisData.get(i);
|
||||||
for (IrisRegion j : data.getRegionLoader().loadAll(data.getRegionLoader().getPossibleKeys())) {
|
for (IrisRegion j : data.getRegionLoader().loadAll(data.getRegionLoader().getPossibleKeys())) {
|
||||||
p.putIfAbsent(j.getLoadKey(), j);
|
p.putIfAbsent(j.getLoadKey(), j);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ public class ScriptHandler implements DecreeParameterHandler<IrisScript> {
|
|||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
IrisData data = new IrisData(i, true);
|
IrisData data = IrisData.get(i);
|
||||||
for (IrisScript j : data.getScriptLoader().loadAll(data.getScriptLoader().getPossibleKeys())) {
|
for (IrisScript j : data.getScriptLoader().loadAll(data.getScriptLoader().getPossibleKeys())) {
|
||||||
p.putIfAbsent(j.getLoadKey(), j);
|
p.putIfAbsent(j.getLoadKey(), j);
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ package com.volmit.iris.util.parallel;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
|
import com.volmit.iris.core.service.ExecutionSVC;
|
||||||
import com.volmit.iris.util.io.InstanceState;
|
import com.volmit.iris.util.io.InstanceState;
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
@ -70,6 +71,7 @@ public class MultiBurst {
|
|||||||
};
|
};
|
||||||
heartbeat.setName(name + " Monitor");
|
heartbeat.setName(name + " Monitor");
|
||||||
heartbeat.start();
|
heartbeat.start();
|
||||||
|
Iris.service(ExecutionSVC.class).register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized ExecutorService getService() {
|
private synchronized ExecutorService getService() {
|
||||||
@ -88,6 +90,7 @@ public class MultiBurst {
|
|||||||
|
|
||||||
return t;
|
return t;
|
||||||
});
|
});
|
||||||
|
Iris.service(ExecutionSVC.class).register(service);
|
||||||
Iris.debug("Started MultiBurst Pool " + name + " with " + tc + " threads at " + priority + " priority.");
|
Iris.debug("Started MultiBurst Pool " + name + " with " + tc + " threads at " + priority + " priority.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,10 +19,14 @@
|
|||||||
package com.volmit.iris.util.scheduling;
|
package com.volmit.iris.util.scheduling;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.core.service.ExecutionSVC;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
public abstract class Looper extends Thread {
|
public abstract class Looper extends Thread {
|
||||||
@SuppressWarnings("BusyWait")
|
@SuppressWarnings("BusyWait")
|
||||||
public void run() {
|
public void run() {
|
||||||
|
Iris.service(ExecutionSVC.class).register(this);
|
||||||
while (!interrupted()) {
|
while (!interrupted()) {
|
||||||
try {
|
try {
|
||||||
long m = loop();
|
long m = loop();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user