mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-17 22:32:04 +00:00
Sync
This commit is contained in:
@@ -142,7 +142,6 @@ public class IrisSettings {
|
|||||||
public int objectLoaderCacheSize = 4_096;
|
public int objectLoaderCacheSize = 4_096;
|
||||||
public int scriptLoaderCacheSize = 512;
|
public int scriptLoaderCacheSize = 512;
|
||||||
public int tectonicUnloadThreads = -1; // -1 = Disabled and instead use the dynamic method
|
public int tectonicUnloadThreads = -1; // -1 = Disabled and instead use the dynamic method
|
||||||
public boolean dynamicPerformanceMode = true;
|
|
||||||
public boolean AggressiveTectonicUnload = false;
|
public boolean AggressiveTectonicUnload = false;
|
||||||
public int AggressiveTectonicThreshold = -1; // -1 = Disabled and instead uses the tectonicLimit
|
public int AggressiveTectonicThreshold = -1; // -1 = Disabled and instead uses the tectonicLimit
|
||||||
public int LazyPregenMaxCPM = -1; // -1 = no limit
|
public int LazyPregenMaxCPM = -1; // -1 = no limit
|
||||||
|
|||||||
@@ -3,33 +3,49 @@ package com.volmit.iris.core.service;
|
|||||||
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.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.IrisWorld;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
import com.volmit.iris.util.mantle.Mantle;
|
import com.volmit.iris.util.format.C;
|
||||||
|
import com.volmit.iris.util.format.Form;
|
||||||
|
import com.volmit.iris.util.mantle.TectonicPlate;
|
||||||
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.misc.getHardware;
|
import com.volmit.iris.util.misc.getHardware;
|
||||||
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
|
import com.volmit.iris.util.parallel.HyperLock;
|
||||||
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.plugin.IrisService;
|
import com.volmit.iris.util.plugin.IrisService;
|
||||||
import com.volmit.iris.util.scheduling.Looper;
|
import com.volmit.iris.util.scheduling.Looper;
|
||||||
|
import io.papermc.lib.PaperLib;
|
||||||
|
import lombok.Getter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import static com.volmit.iris.util.mantle.Mantle.tectonicLimit;
|
import static com.volmit.iris.util.mantle.Mantle.tectonicLimit;
|
||||||
|
|
||||||
public class IrisEngineSVC implements IrisService {
|
public class IrisEngineSVC implements IrisService {
|
||||||
private JavaPlugin plugin;
|
private JavaPlugin plugin;
|
||||||
public Looper ticker;
|
public Looper ticker;
|
||||||
public Mantle mantle;
|
public List<World> IrisWorlds = new ArrayList<>();
|
||||||
public final World IrisWorld = Bukkit.getWorld("test");
|
public List<World> corruptedIrisWorlds = new ArrayList<>();
|
||||||
// public Engine engine = IrisToolbelt.access(IrisWorld).getEngine();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
this.plugin = Iris.instance;
|
this.plugin = Iris.instance;
|
||||||
if (IrisSettings.get().getPerformance().dynamicPerformanceMode) {
|
this.IrisStartup();
|
||||||
this.startupPerformance();
|
this.IrisEngine();
|
||||||
this.IrisEngine();
|
ticker.start();
|
||||||
ticker.start();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void IrisEngine(){
|
public void IrisEngine(){
|
||||||
@@ -37,7 +53,11 @@ public class IrisEngineSVC implements IrisService {
|
|||||||
@Override
|
@Override
|
||||||
protected long loop() {
|
protected long loop() {
|
||||||
try {
|
try {
|
||||||
|
for (World world : IrisWorlds){
|
||||||
|
Engine engine = IrisToolbelt.access(world).getEngine();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -48,19 +68,30 @@ public class IrisEngineSVC implements IrisService {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public void startupPerformance(){
|
public void IrisStartup(){
|
||||||
if (IrisSettings.get().getPerformance().dynamicPerformanceMode) {
|
tectonicLimit.set(2);
|
||||||
tectonicLimit.set(2);
|
long t = getHardware.getProcessMemory();
|
||||||
long t = getHardware.getProcessMemory();
|
for (; t > 250; ) {
|
||||||
for (; t > 250; ) {
|
tectonicLimit.getAndAdd(1);
|
||||||
tectonicLimit.getAndAdd(1);
|
t = t - 250;
|
||||||
t = t - 250;
|
|
||||||
}
|
|
||||||
tectonicLimit.set(10);
|
|
||||||
}
|
}
|
||||||
}
|
tectonicLimit.set(10); // DEBUG CODE
|
||||||
public void getAllIrisWorlds(){
|
|
||||||
|
|
||||||
|
for (World w : Bukkit.getServer().getWorlds()) {
|
||||||
|
File container = Bukkit.getWorldContainer();
|
||||||
|
Bukkit.getWorldContainer();
|
||||||
|
if(IrisToolbelt.access(w) != null){
|
||||||
|
IrisWorlds.add(w);
|
||||||
|
} else {
|
||||||
|
File worldDirectory = new File(container, w.getName());
|
||||||
|
File IrisWorldTest = new File(worldDirectory, "Iris");
|
||||||
|
if (IrisWorldTest.exists()){
|
||||||
|
if(IrisToolbelt.access(w) == null){
|
||||||
|
corruptedIrisWorlds.add(w);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -418,7 +418,6 @@ public class Mantle {
|
|||||||
forceAggressiveThreshold.set(IrisSettings.get().getPerformance().getAggressiveTectonicThreshold());
|
forceAggressiveThreshold.set(IrisSettings.get().getPerformance().getAggressiveTectonicThreshold());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IrisSettings.get().getPerformance().dynamicPerformanceMode) {
|
|
||||||
// todo Repixel improve the logic
|
// todo Repixel improve the logic
|
||||||
int h = dynamicThreads.get() - 1;
|
int h = dynamicThreads.get() - 1;
|
||||||
if (toUnload.size() != 0) {
|
if (toUnload.size() != 0) {
|
||||||
@@ -438,24 +437,20 @@ public class Mantle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
oldFakeToUnload.set(toUnload.size());
|
oldFakeToUnload.set(toUnload.size());
|
||||||
}
|
|
||||||
if (!IrisSettings.get().getPerformance().dynamicPerformanceMode){
|
|
||||||
if(IrisSettings.get().getPerformance().getTectonicUnloadThreads() <= -1){
|
if(IrisSettings.get().getPerformance().getTectonicUnloadThreads() <= -1){
|
||||||
dynamicThreads.set(1);
|
dynamicThreads.set(1);
|
||||||
} else {
|
} else {
|
||||||
dynamicThreads.set(IrisSettings.get().getPerformance().getTectonicUnloadThreads());
|
dynamicThreads.set(IrisSettings.get().getPerformance().getTectonicUnloadThreads());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
adjustedIdleDuration.set(baseIdleDuration);
|
adjustedIdleDuration.set(baseIdleDuration);
|
||||||
|
|
||||||
if (loadedRegions != null) {
|
if (loadedRegions != null) {
|
||||||
if (loadedRegions.size() > tectonicLimit.get()) {
|
if (loadedRegions.size() > tectonicLimit.get()) {
|
||||||
// todo update this correctly and maybe do something when its above a 100%
|
// todo update this correctly and maybe do something when its above a 100%
|
||||||
if (IrisSettings.get().getPerformance().dynamicPerformanceMode) {
|
|
||||||
int tectonicLimitValue = tectonicLimit.get();
|
int tectonicLimitValue = tectonicLimit.get();
|
||||||
adjustedIdleDuration.set(Math.max(adjustedIdleDuration.get() - (1000 * (((loadedRegions.size() - tectonicLimitValue) / (double) tectonicLimitValue) * 100) * 0.4), 4000));
|
adjustedIdleDuration.set(Math.max(adjustedIdleDuration.get() - (1000 * (((loadedRegions.size() - tectonicLimitValue) / (double) tectonicLimitValue) * 100) * 0.4), 4000));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user