diff --git a/core/src/main/java/art/arcane/iris/engine/EnginePanic.java b/core/src/main/java/art/arcane/iris/engine/EnginePanic.java index 9b35deeba..7c0f31faf 100644 --- a/core/src/main/java/art/arcane/iris/engine/EnginePanic.java +++ b/core/src/main/java/art/arcane/iris/engine/EnginePanic.java @@ -18,7 +18,7 @@ package art.arcane.iris.engine; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KMap; public class EnginePanic { @@ -35,14 +35,14 @@ public class EnginePanic { public static void lastPanic() { for (String i : last.keySet()) { - Iris.error("Last Panic " + i + ": " + stuff.get(i)); + IrisLogging.error("Last Panic " + i + ": " + stuff.get(i)); } } public static void panic() { lastPanic(); for (String i : stuff.keySet()) { - Iris.error("Engine Panic " + i + ": " + stuff.get(i)); + IrisLogging.error("Engine Panic " + i + ": " + stuff.get(i)); } } } diff --git a/core/src/main/java/art/arcane/iris/engine/GenerationCacheWarmer.java b/core/src/main/java/art/arcane/iris/engine/GenerationCacheWarmer.java index 6aa09932a..b35768676 100644 --- a/core/src/main/java/art/arcane/iris/engine/GenerationCacheWarmer.java +++ b/core/src/main/java/art/arcane/iris/engine/GenerationCacheWarmer.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.IrisBiome; @@ -28,6 +27,7 @@ import art.arcane.iris.engine.object.IrisOreGenerator; import art.arcane.iris.engine.object.IrisProceduralObjects; import art.arcane.iris.engine.object.IrisProceduralPlacement; import art.arcane.iris.engine.object.IrisRegion; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.math.M; import art.arcane.volmlib.util.math.RNG; @@ -64,11 +64,11 @@ public final class GenerationCacheWarmer { warmOres(engine.getDimension().getOres(), root, counter, data); } catch (Throwable e) { - Iris.reportError(e); - Iris.warn("Generation cache warm pass failed: " + e.getMessage()); + IrisLogging.reportError(e); + IrisLogging.warn("Generation cache warm pass failed: " + e.getMessage()); } - Iris.debug("[IrisEngine timing] cache warm " + counter[0] + " configs=" + (M.ms() - start) + "ms"); + IrisLogging.debug("[IrisEngine timing] cache warm " + counter[0] + " configs=" + (M.ms() - start) + "ms"); } private static void warmPlacements(KList placements, RNG root, int[] counter, IrisData data) { diff --git a/core/src/main/java/art/arcane/iris/engine/IrisComplex.java b/core/src/main/java/art/arcane/iris/engine/IrisComplex.java index 7a251854f..f0776d343 100644 --- a/core/src/main/java/art/arcane/iris/engine/IrisComplex.java +++ b/core/src/main/java/art/arcane/iris/engine/IrisComplex.java @@ -18,13 +18,13 @@ package art.arcane.iris.engine; -import art.arcane.iris.Iris; import art.arcane.iris.core.IrisSettings; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.Cache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.*; import art.arcane.iris.platform.bukkit.BukkitBiome; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBiome; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; @@ -406,9 +406,9 @@ public class IrisComplex implements DataProvider { GeneratorBounds bounds = resolveGeneratorBounds(engine, generators, bx, cachedBounds, localBounds); return bounds.noiseBounds; } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); - Iris.error("Failed to sample interpolated biome bounds at " + xx + " " + zz + "..."); + IrisLogging.error("Failed to sample interpolated biome bounds at " + xx + " " + zz + "..."); } return ZERO_NOISE_BOUNDS; diff --git a/core/src/main/java/art/arcane/iris/engine/IrisEngine.java b/core/src/main/java/art/arcane/iris/engine/IrisEngine.java index 8c9af84af..90a3a1e9a 100644 --- a/core/src/main/java/art/arcane/iris/engine/IrisEngine.java +++ b/core/src/main/java/art/arcane/iris/engine/IrisEngine.java @@ -18,6 +18,7 @@ package art.arcane.iris.engine; +import art.arcane.iris.spi.IrisLogging; import com.google.common.util.concurrent.AtomicDouble; import com.google.gson.Gson; import art.arcane.iris.Iris; @@ -132,7 +133,7 @@ public class IrisEngine implements Engine { generated = new AtomicInteger(0); long _t0 = M.ms(); mantle = new IrisEngineMantle(this); - Iris.debug("[IrisEngine timing] new IrisEngineMantle=" + (M.ms() - _t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] new IrisEngineMantle=" + (M.ms() - _t0) + "ms"); context = new IrisContext(this); cleaning = new AtomicBoolean(false); modeFallbackLogged = new AtomicBoolean(false); @@ -141,29 +142,29 @@ public class IrisEngine implements Engine { getData().dump(); getData().clearLists(); getTarget().setDimension(getData().getDimensionLoader().load(getDimension().getLoadKey())); - Iris.debug("[IrisEngine timing] dump+clearLists+reload=" + (M.ms() - _t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] dump+clearLists+reload=" + (M.ms() - _t0) + "ms"); } context.touch(); getData().setEngine(this); _t0 = M.ms(); getData().loadPrefetch(this); - Iris.debug("[IrisEngine timing] loadPrefetch=" + (M.ms() - _t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] loadPrefetch=" + (M.ms() - _t0) + "ms"); try { StructureIndexService.writeOnce(getData()); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } - Iris.info("Engine init: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " seed=" + getSeedManager().getSeed()); + IrisLogging.info("Engine init: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " seed=" + getSeedManager().getSeed()); failing = false; closed = false; art = J.ar(this::tickRandomPlayer, 0); _t0 = M.ms(); setupEngine(); - Iris.debug("[IrisEngine timing] setupEngine total=" + (M.ms() - _t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] setupEngine total=" + (M.ms() - _t0) + "ms"); _t0 = M.ms(); GenerationCacheWarmer.warm(this); - Iris.debug("[IrisEngine timing] cache warm total=" + (M.ms() - _t0) + "ms"); - Iris.debug("Engine Initialized " + getCacheID()); + IrisLogging.debug("[IrisEngine timing] cache warm total=" + (M.ms() - _t0) + "ms"); + IrisLogging.debug("Engine Initialized " + getCacheID()); } private void verifySeed() { @@ -223,29 +224,29 @@ public class IrisEngine implements Engine { try { generationSessions.activateNextSession(); closing.set(false); - Iris.debug("Setup Engine " + getCacheID()); + IrisLogging.debug("Setup Engine " + getCacheID()); cacheId = RNG.r.nextInt(); long t0 = M.ms(); complex = ensureComplex(); - Iris.debug("[IrisEngine timing] ensureComplex=" + (M.ms() - t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] ensureComplex=" + (M.ms() - t0) + "ms"); t0 = M.ms(); upperContext = buildUpperContext(); - Iris.debug("[IrisEngine timing] buildUpperContext=" + (M.ms() - t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] buildUpperContext=" + (M.ms() - t0) + "ms"); t0 = M.ms(); effects = new IrisEngineEffects(this); - Iris.debug("[IrisEngine timing] IrisEngineEffects=" + (M.ms() - t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] IrisEngineEffects=" + (M.ms() - t0) + "ms"); hash32 = new CompletableFuture<>(); t0 = M.ms(); mantle.hotload(); - Iris.debug("[IrisEngine timing] mantle.hotload=" + (M.ms() - t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] mantle.hotload=" + (M.ms() - t0) + "ms"); t0 = M.ms(); setupMode(); - Iris.debug("[IrisEngine timing] setupMode=" + (M.ms() - t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] setupMode=" + (M.ms() - t0) + "ms"); t0 = M.ms(); IrisWorldManager manager = new IrisWorldManager(this); worldManager = manager; manager.startManager(); - Iris.debug("[IrisEngine timing] IrisWorldManager=" + (M.ms() - t0) + "ms"); + IrisLogging.debug("[IrisEngine timing] IrisWorldManager=" + (M.ms() - t0) + "ms"); J.a(this::computeBiomeMaxes); J.a(() -> { File[] roots = getData().getLoaders() @@ -260,11 +261,11 @@ public class IrisEngine implements Engine { }); J.a(() -> DatapackIngestService.refreshWorkspace(getData())); } catch (Throwable e) { - Iris.error("FAILED TO SETUP ENGINE!"); + IrisLogging.error("FAILED TO SETUP ENGINE!"); e.printStackTrace(); } - Iris.debug("Engine Setup Complete " + getCacheID()); + IrisLogging.debug("Engine Setup Complete " + getCacheID()); } private UpperDimensionContext buildUpperContext() { @@ -278,11 +279,11 @@ public class IrisEngine implements Engine { : IrisData.loadAnyDimension(upperKey, getData()); if (upperDim != null) { UpperDimensionContext ctx = UpperDimensionContext.create(this, upperDim); - Iris.info("Upper dimension enabled: " + upperKey + IrisLogging.info("Upper dimension enabled: " + upperKey + (ctx.isSelfReferencing() ? " (self-referencing)" : " (cross-referencing)")); return ctx; } - Iris.warn("Upper dimension '" + upperKey + "' could not be resolved, skipping upper terrain."); + IrisLogging.warn("Upper dimension '" + upperKey + "' could not be resolved, skipping upper terrain."); return null; } @@ -325,9 +326,9 @@ public class IrisEngine implements Engine { throw new IllegalStateException("Dimension mode factory returned null"); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); if (modeFallbackLogged.compareAndSet(false, true)) { - Iris.warn("Failed to initialize configured dimension mode for " + getDimension().getLoadKey() + ", falling back to OVERWORLD mode."); + IrisLogging.warn("Failed to initialize configured dimension mode for " + getDimension().getLoadKey() + ", falling back to OVERWORLD mode."); } currentMode = IrisDimensionModeType.OVERWORLD.create(this); } @@ -423,7 +424,7 @@ public class IrisEngine implements Engine { try { data = new Gson().fromJson(IO.readAll(f), IrisEngineData.class); if (data == null) { - Iris.error("Failed to read Engine Data! Corrupted File? recreating..."); + IrisLogging.error("Failed to read Engine Data! Corrupted File? recreating..."); } } catch (IOException e) { e.printStackTrace(); @@ -436,7 +437,7 @@ public class IrisEngine implements Engine { data.getStatistics().setMCVersion(Iris.instance.getMCVersion()); data.getStatistics().setUpgradedVersion(Iris.instance.getIrisVersion()); if (data.getStatistics().getVersion() == -1 || data.getStatistics().getMCVersion() == -1 ) { - Iris.error("Failed to setup Engine Data!"); + IrisLogging.error("Failed to setup Engine Data!"); } if (f.getParentFile().exists() || f.getParentFile().mkdirs()) { @@ -446,7 +447,7 @@ public class IrisEngine implements Engine { e.printStackTrace(); } } else { - Iris.error("Failed to setup Engine Data!"); + IrisLogging.error("Failed to setup Engine Data!"); } } @@ -601,7 +602,7 @@ public class IrisEngine implements Engine { getData().dump(); getData().clearLists(); Iris.service(PreservationSVC.class).dereference(); - Iris.debug("Engine Fully Shutdown!"); + IrisLogging.debug("Engine Fully Shutdown!"); } @Override @@ -640,8 +641,8 @@ public class IrisEngine implements Engine { try { getData().getObjectLoader().clean(); } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Cleanup failed! Enable debug to see stacktrace."); + IrisLogging.reportError(e); + IrisLogging.error("Cleanup failed! Enable debug to see stacktrace."); } cleaning.lazySet(false); @@ -687,7 +688,7 @@ public class IrisEngine implements Engine { } catch (GenerationSessionException e) { throw e; } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); fail("Failed to generate " + x + ", " + z, e); } } @@ -704,9 +705,9 @@ public class IrisEngine implements Engine { f.getParentFile().mkdirs(); try { IO.writeAll(f, new Gson().toJson(getEngineData())); - Iris.debug("Saved Engine Data"); + IrisLogging.debug("Saved Engine Data"); } catch (IOException e) { - Iris.error("Failed to save Engine Data"); + IrisLogging.error("Failed to save Engine Data"); e.printStackTrace(); } } @@ -737,7 +738,7 @@ public class IrisEngine implements Engine { @Override public void fail(String error, Throwable e) { failing = true; - Iris.error(error); + IrisLogging.error(error); e.printStackTrace(); } diff --git a/core/src/main/java/art/arcane/iris/engine/IrisEngineMantle.java b/core/src/main/java/art/arcane/iris/engine/IrisEngineMantle.java index 43ae72149..adfdd1366 100644 --- a/core/src/main/java/art/arcane/iris/engine/IrisEngineMantle.java +++ b/core/src/main/java/art/arcane/iris/engine/IrisEngineMantle.java @@ -32,6 +32,7 @@ import art.arcane.iris.engine.mantle.components.MantleFloatingObjectComponent; import art.arcane.iris.engine.mantle.components.MantleFluidBodyComponent; import art.arcane.iris.engine.mantle.components.MantleObjectComponent; import art.arcane.iris.engine.mantle.components.IrisStructureComponent; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.project.matter.IrisMatterSupport; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; @@ -283,10 +284,10 @@ public class IrisEngineMantle implements EngineMantle { long end, art.arcane.volmlib.util.io.CountingDataInputStream din, IOException error) { - Iris.error("Failed to read chunk section, skipping it."); + IrisLogging.error("Failed to read chunk section, skipping it."); Iris.addPanic("read.byte.range", start + " " + end); Iris.addPanic("read.byte.current", din.count() + ""); - Iris.reportError(error); + IrisLogging.reportError(error); error.printStackTrace(); Iris.panic(); TectonicPlate.addError(); @@ -308,10 +309,10 @@ public class IrisEngineMantle implements EngineMantle { long end, art.arcane.volmlib.util.io.CountingDataInputStream din, Throwable error) { - Iris.error("Failed to read chunk, creating a new chunk instead."); + IrisLogging.error("Failed to read chunk, creating a new chunk instead."); Iris.addPanic("read.byte.range", start + " " + end); Iris.addPanic("read.byte.current", din.count() + ""); - Iris.reportError(error); + IrisLogging.reportError(error); error.printStackTrace(); Iris.panic(); } @@ -328,17 +329,17 @@ public class IrisEngineMantle implements EngineMantle { @Override public void onDebug(String message) { - Iris.debug(message); + IrisLogging.debug(message); } @Override public void onWarn(String message) { - Iris.warn(message); + IrisLogging.warn(message); } @Override public void onError(Throwable throwable) { - Iris.reportError(throwable); + IrisLogging.reportError(throwable); } }; } @@ -356,9 +357,9 @@ public class IrisEngineMantle implements EngineMantle { String message = "Acquired Channel for " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(millis, 2) + C.GRAY + " thread=" + threadName; if (millis >= 1000L) { - Iris.warn(message); + IrisLogging.warn(message); } else { - Iris.debug(message); + IrisLogging.debug(message); } } ); @@ -375,7 +376,7 @@ public class IrisEngineMantle implements EngineMantle { File dump = Iris.instance.getDataFolder("dump", name + ".bin"); worker.dumpDecoded(name, dump.toPath()); } else { - Iris.debug("Read Tectonic Plate " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(stopwatch.getMilliseconds(), 2)); + IrisLogging.debug("Read Tectonic Plate " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(stopwatch.getMilliseconds(), 2)); } } } @@ -384,7 +385,7 @@ public class IrisEngineMantle implements EngineMantle { public void write(String name, TectonicPlate region) throws Exception { PrecisionStopwatch stopwatch = PrecisionStopwatch.start(); worker.write(name, "iris", ".bin", region, TectonicPlate::write); - Iris.debug("Saved Tectonic Plate " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(stopwatch.getMilliseconds(), 2)); + IrisLogging.debug("Saved Tectonic Plate " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(stopwatch.getMilliseconds(), 2)); } @Override diff --git a/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java b/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java index 497468c73..98bd6f9c2 100644 --- a/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java +++ b/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java @@ -27,6 +27,7 @@ import art.arcane.iris.engine.data.cache.Cache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.framework.EngineAssignedWorldManager; import art.arcane.iris.engine.object.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.collection.KSet; @@ -231,7 +232,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { mantle.flag(chunkX, chunkZ, MantleFlag.DISCOVERED, true); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } finally { discoveredFlagQueue.remove(key); } @@ -341,7 +342,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { raised = true; } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } finally { markerFlagQueue.remove(key); } @@ -369,7 +370,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { try { getMantle().getChunk(chunkX, chunkZ); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } finally { mantleWarmupQueue.remove(key); } @@ -389,14 +390,14 @@ public class IrisWorldManager extends EngineAssignedWorldManager { actuallySpawned = 0; if (!getEngine().getWorld().hasRealWorld()) { - Iris.debug("Can't spawn. No real world"); + IrisLogging.debug("Can't spawn. No real world"); J.sleep(5000); return false; } double epx = getEntitySaturation(); if (epx > IrisSettings.get().getWorld().getTargetSpawnEntitiesPerChunk()) { - Iris.debug("Can't spawn. The entity per chunk ratio is at " + Form.pc(epx, 2) + " > 100% (total entities " + entityCount + ")"); + IrisLogging.debug("Can't spawn. The entity per chunk ratio is at " + Form.pc(epx, 2) + " > 100% (total entities " + entityCount + ")"); J.sleep(5000); return false; } @@ -433,7 +434,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { Chunk[] cc = getLoadedChunksSnapshot(world); while (spawnBuffer-- > 0) { if (cc.length == 0) { - Iris.debug("Can't spawn. No chunks!"); + IrisLogging.debug("Can't spawn. No chunks!"); return false; } @@ -479,7 +480,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { try { return future.get(2, TimeUnit.SECONDS); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); return new Chunk[0]; } } @@ -546,7 +547,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { try { future.get(5, TimeUnit.SECONDS); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -772,7 +773,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { Thread.currentThread().interrupt(); Iris.verbose("Chunk warmup interrupted while loading async teleport chunk."); } catch (ExecutionException ex) { - Iris.reportError(ex); + IrisLogging.reportError(ex); } } @@ -816,7 +817,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { for (String i : mark.getSpawners()) { IrisSpawner m = getData().getSpawnerLoader().load(i); if (m == null) { - Iris.error("Cannot load spawner: " + i + " for marker on " + getName()); + IrisLogging.error("Cannot load spawner: " + i + " for marker on " + getName()); continue; } m.setReferenceMarker(mark); @@ -889,7 +890,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { }); }); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } finally { markerScanQueue.remove(key); } @@ -915,7 +916,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { for (String i : mark.getSpawners()) { IrisSpawner spawner = getData().getSpawnerLoader().load(i); if (spawner == null) { - Iris.error("Cannot load spawner: " + i + " for marker on " + getName()); + IrisLogging.error("Cannot load spawner: " + i + " for marker on " + getName()); continue; } spawner.setReferenceMarker(mark); @@ -948,7 +949,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { try { getMantle().remove(marker.getX(), marker.getY(), marker.getZ(), MatterMarker.class); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } }); } diff --git a/core/src/main/java/art/arcane/iris/engine/UpperDimensionContext.java b/core/src/main/java/art/arcane/iris/engine/UpperDimensionContext.java index e1f142791..ee5762b93 100644 --- a/core/src/main/java/art/arcane/iris/engine/UpperDimensionContext.java +++ b/core/src/main/java/art/arcane/iris/engine/UpperDimensionContext.java @@ -1,10 +1,10 @@ package art.arcane.iris.engine; -import art.arcane.iris.Iris; import art.arcane.iris.core.IrisSettings; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.collection.KSet; @@ -212,7 +212,7 @@ public class UpperDimensionContext implements DataProvider { } return new NoiseBounds(bMin, bMax); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); return ZERO_NOISE_BOUNDS; } }); diff --git a/core/src/main/java/art/arcane/iris/engine/data/cache/AtomicCache.java b/core/src/main/java/art/arcane/iris/engine/data/cache/AtomicCache.java index 50d1cd2d7..d0e421e0b 100644 --- a/core/src/main/java/art/arcane/iris/engine/data/cache/AtomicCache.java +++ b/core/src/main/java/art/arcane/iris/engine/data/cache/AtomicCache.java @@ -18,7 +18,7 @@ package art.arcane.iris.engine.data.cache; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.function.NastySupplier; import java.util.concurrent.atomic.AtomicBoolean; @@ -96,7 +96,7 @@ public class AtomicCache { set.set(true); } } catch (Throwable e) { - Iris.error("Atomic cache failure!"); + IrisLogging.error("Atomic cache failure!"); e.printStackTrace(); } diff --git a/core/src/main/java/art/arcane/iris/engine/decorator/DecoratorCore.java b/core/src/main/java/art/arcane/iris/engine/decorator/DecoratorCore.java index aea7e6928..25b76f65f 100644 --- a/core/src/main/java/art/arcane/iris/engine/decorator/DecoratorCore.java +++ b/core/src/main/java/art/arcane/iris/engine/decorator/DecoratorCore.java @@ -18,13 +18,13 @@ package art.arcane.iris.engine.decorator; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.mantle.EngineMantle; import art.arcane.iris.engine.object.IrisBiome; import art.arcane.iris.engine.object.IrisDecorationPart; import art.arcane.iris.engine.object.IrisDecorator; import art.arcane.iris.platform.bukkit.BukkitBlockState; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.iris.util.common.data.B; import art.arcane.iris.util.project.hunk.Hunk; @@ -83,7 +83,7 @@ final class DecoratorCore { } } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -107,7 +107,7 @@ final class DecoratorCore { data.set(x, height + 2, z, BukkitBlockState.of(top)); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } BlockData bottom = rawBd.clone(); ((Bisected) bottom).setHalf(Bisected.Half.BOTTOM); @@ -160,7 +160,7 @@ final class DecoratorCore { data.set(x, height + 2, z, BukkitBlockState.of(top)); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } BlockData bottom = rawBd.clone(); ((Bisected) bottom).setHalf(Bisected.Half.BOTTOM); @@ -291,7 +291,7 @@ final class DecoratorCore { data.set(xf, height + 2, zf, BukkitBlockState.of(top)); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } BlockData bottom = rawBd.clone(); ((Bisected) bottom).setHalf(Bisected.Half.BOTTOM); diff --git a/core/src/main/java/art/arcane/iris/engine/framework/Engine.java b/core/src/main/java/art/arcane/iris/engine/framework/Engine.java index 1bca737b2..6ff4ef773 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/Engine.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/Engine.java @@ -38,6 +38,7 @@ import art.arcane.iris.engine.data.chunk.TerrainChunk; import art.arcane.iris.engine.mantle.EngineMantle; import art.arcane.iris.engine.object.*; import art.arcane.iris.platform.bukkit.BukkitBlockState; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBiome; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.iris.util.project.matter.TileWrapper; @@ -345,14 +346,14 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat if (c.getWorld().isChunkLoaded(c.getX() + x, c.getZ() + z)) continue; var msg = "Chunk %s, %s [%s, %s] is not loaded".formatted(c.getX() + x, c.getZ() + z, x, z); - Iris.debug(msg); + IrisLogging.debug(msg); return; } } var mantle = getMantle().getMantle(); if (!mantle.isLoaded(c)) { var msg = "Mantle Chunk " + c.getX() + "," + c.getZ() + " is not loaded"; - Iris.debug(msg); + IrisLogging.debug(msg); return; } @@ -362,7 +363,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat try { scheduled.join(); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } return; @@ -378,7 +379,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat NamespacedKey tileTypeKey = KeyedType.getKey(v.getData().getMaterial()); String blockType = blockTypeKey == null ? block.getType().name() : blockTypeKey.toString(); String tileType = tileTypeKey == null ? v.getData().getMaterial().name() : tileTypeKey.toString(); - Iris.warn("Failed to set tile entity data at [%d %d %d | %s] for tile %s!", block.getX(), block.getY(), block.getZ(), blockType, tileType); + IrisLogging.warn("Failed to set tile entity data at [%d %d %d | %s] for tile %s!", block.getX(), block.getY(), block.getZ(), blockType, tileType); } }); }; @@ -455,7 +456,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat semaphore.acquire(1024); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); - Iris.reportError(ex); + IrisLogging.reportError(ex); } } finally { chunk.release(); @@ -528,7 +529,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat addItems(false, m.getInventory(), rx, tables, slot, c.getWorld(), x, y, z, 15); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } } else { @@ -758,7 +759,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat default IrisPosition lookForBiome(IrisBiome biome, long timeout, Consumer triesc) { if (!getWorld().hasRealWorld()) { - Iris.error("Cannot GOTO without a bound world (headless mode)"); + IrisLogging.error("Cannot GOTO without a bound world (headless mode)"); return null; } @@ -798,13 +799,13 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat tries.getAndIncrement(); } catch (Throwable ex) { - Iris.reportError(ex); + IrisLogging.reportError(ex); ex.printStackTrace(); return; } } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } }); @@ -829,7 +830,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat default IrisPosition lookForRegion(IrisRegion reg, long timeout, Consumer triesc) { if (!getWorld().hasRealWorld()) { - Iris.error("Cannot GOTO without a bound world (headless mode)"); + IrisLogging.error("Cannot GOTO without a bound world (headless mode)"); return null; } @@ -865,7 +866,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat tries.getAndIncrement(); } catch (Throwable xe) { - Iris.reportError(xe); + IrisLogging.reportError(xe); xe.printStackTrace(); return; } @@ -1054,12 +1055,12 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat CompletableFuture teleportFuture = PaperLib.teleportAsync(player, location); if (teleportFuture != null) { teleportFuture.exceptionally(throwable -> { - Iris.reportError(throwable); + IrisLogging.reportError(throwable); return false; }); } } catch (Throwable throwable) { - Iris.reportError(throwable); + IrisLogging.reportError(throwable); } } @@ -1071,7 +1072,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat } catch (NoSuchMethodException ignored) { return false; } catch (Throwable throwable) { - Iris.reportError(throwable); + IrisLogging.reportError(throwable); return false; } } diff --git a/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedComponent.java b/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedComponent.java index 9cb2014b4..e551e8968 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedComponent.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedComponent.java @@ -18,7 +18,7 @@ package art.arcane.iris.engine.framework; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.math.RollingSequence; import lombok.Data; import lombok.EqualsAndHashCode; @@ -33,7 +33,7 @@ public class EngineAssignedComponent implements EngineComponent { private final String name; public EngineAssignedComponent(Engine engine, String name) { - Iris.debug("Engine: " + engine.getCacheID() + " Starting " + name); + IrisLogging.debug("Engine: " + engine.getCacheID() + " Starting " + name); this.engine = engine; this.metrics = new RollingSequence(16); this.name = name; diff --git a/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedModifier.java b/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedModifier.java index 8e49f4651..40334dd46 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedModifier.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/EngineAssignedModifier.java @@ -18,7 +18,7 @@ package art.arcane.iris.engine.framework; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.project.context.ChunkContext; import art.arcane.volmlib.util.documentation.BlockCoordinates; import art.arcane.iris.util.project.hunk.Hunk; @@ -36,7 +36,7 @@ public abstract class EngineAssignedModifier extends EngineAssignedComponent try { onModify(x, z, output, multicore, context); } catch (Throwable e) { - Iris.error("Modifier Failure: " + getName()); + IrisLogging.error("Modifier Failure: " + getName()); e.printStackTrace(); } } diff --git a/core/src/main/java/art/arcane/iris/engine/framework/EngineComponent.java b/core/src/main/java/art/arcane/iris/engine/framework/EngineComponent.java index 79d5001ba..8fa727274 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/EngineComponent.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/EngineComponent.java @@ -18,11 +18,11 @@ package art.arcane.iris.engine.framework; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.IrisComplex; import art.arcane.iris.engine.object.IrisDimension; import art.arcane.iris.platform.bukkit.BukkitPlatform; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.math.RollingSequence; import art.arcane.iris.util.common.parallel.MultiBurst; @@ -41,7 +41,7 @@ public interface EngineComponent { try { BukkitPlatform.unregisterListener(this); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } diff --git a/core/src/main/java/art/arcane/iris/engine/framework/EngineData.java b/core/src/main/java/art/arcane/iris/engine/framework/EngineData.java index 6de178452..5f67d4e88 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/EngineData.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/EngineData.java @@ -18,8 +18,8 @@ package art.arcane.iris.engine.framework; +import art.arcane.iris.spi.IrisLogging; import com.google.gson.Gson; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.IrisPosition; import art.arcane.volmlib.util.io.IO; import lombok.Data; @@ -39,7 +39,7 @@ public class EngineData { f.getParentFile().mkdirs(); return new Gson().fromJson(IO.readAll(f), EngineData.class); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } @@ -51,7 +51,7 @@ public class EngineData { f.getParentFile().mkdirs(); IO.writeAll(f, new Gson().toJson(this)); } catch (IOException e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } diff --git a/core/src/main/java/art/arcane/iris/engine/framework/EnginePlayer.java b/core/src/main/java/art/arcane/iris/engine/framework/EnginePlayer.java index 50d4754f1..d6eb4f3b8 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/EnginePlayer.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/EnginePlayer.java @@ -18,11 +18,11 @@ package art.arcane.iris.engine.framework; -import art.arcane.iris.Iris; import art.arcane.iris.core.IrisSettings; import art.arcane.iris.engine.object.IrisBiome; import art.arcane.iris.engine.object.IrisEffect; import art.arcane.iris.engine.object.IrisRegion; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.math.M; import art.arcane.iris.util.common.scheduling.J; import lombok.Data; @@ -56,7 +56,7 @@ public class EnginePlayer { try { j.apply(player, getEngine()); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -67,7 +67,7 @@ public class EnginePlayer { try { j.apply(player, getEngine()); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -92,7 +92,7 @@ public class EnginePlayer { } return false; } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } return true; diff --git a/core/src/main/java/art/arcane/iris/engine/framework/Fallible.java b/core/src/main/java/art/arcane/iris/engine/framework/Fallible.java index f10357d0b..cb7c8a54b 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/Fallible.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/Fallible.java @@ -18,14 +18,14 @@ package art.arcane.iris.engine.framework; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; public interface Fallible { default void fail(String error) { try { throw new RuntimeException(); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); fail(error, e); } } diff --git a/core/src/main/java/art/arcane/iris/engine/framework/StructureAssembler.java b/core/src/main/java/art/arcane/iris/engine/framework/StructureAssembler.java index aa6d402cc..0a72f0b56 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/StructureAssembler.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/StructureAssembler.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.framework; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.object.IrisDirection; import art.arcane.iris.engine.object.IrisJigsawConnector; @@ -29,6 +28,7 @@ import art.arcane.iris.engine.object.IrisObject; import art.arcane.iris.engine.object.IrisObjectRotation; import art.arcane.iris.engine.object.IrisStructure; import art.arcane.iris.engine.object.JigsawJoint; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.iris.engine.object.IrisPosition; import art.arcane.volmlib.util.math.RNG; @@ -59,7 +59,7 @@ public final class StructureAssembler { public KList assemble(RNG rng) { IrisJigsawPool startPool = IrisData.loadAnyJigsawPool(structure.getStartPool(), data); if (startPool == null || startPool.getPieces().isEmpty()) { - Iris.warn("Structure " + structure.getLoadKey() + " has no resolvable start pool '" + structure.getStartPool() + "'"); + IrisLogging.warn("Structure " + structure.getLoadKey() + " has no resolvable start pool '" + structure.getStartPool() + "'"); return null; } @@ -72,7 +72,7 @@ public final class StructureAssembler { } IrisObject startObject = IrisData.loadAnyObject(startPiece.getObject(), data); if (startObject == null) { - Iris.warn("Jigsaw piece references missing object '" + startPiece.getObject() + "'"); + IrisLogging.warn("Jigsaw piece references missing object '" + startPiece.getObject() + "'"); return null; } diff --git a/core/src/main/java/art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java b/core/src/main/java/art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java index c5f10b7db..d9812664e 100644 --- a/core/src/main/java/art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java +++ b/core/src/main/java/art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java @@ -1,6 +1,5 @@ package art.arcane.iris.engine.framework.placer; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.tools.IrisToolbelt; import art.arcane.iris.engine.data.cache.Cache; @@ -12,6 +11,7 @@ import art.arcane.iris.engine.object.InventorySlotType; import art.arcane.iris.engine.object.IrisLootTable; import art.arcane.iris.engine.object.TileData; import art.arcane.iris.platform.bukkit.BukkitBlockState; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; import art.arcane.iris.util.common.data.B; @@ -65,7 +65,7 @@ public class WorldObjectPlacer implements IObjectPlacer { if (d instanceof IrisCustomData data) { block.setBlockData(data.getBase(), false); - Iris.warn("Tried to place custom block at " + x + ", " + y + ", " + z + " which is not supported!"); + IrisLogging.warn("Tried to place custom block at " + x + ", " + y + ", " + z + " which is not supported!"); } else block.setBlockData(d, false); if (slot != null) { @@ -76,7 +76,7 @@ public class WorldObjectPlacer implements IObjectPlacer { Bukkit.getPluginManager().callEvent(new IrisLootEvent(engine, block, slot, tables)); if (!tables.isEmpty()){ - Iris.debug("IrisLootEvent has been accessed"); + IrisLogging.debug("IrisLootEvent has been accessed"); } if (tables.isEmpty()) @@ -84,7 +84,7 @@ public class WorldObjectPlacer implements IObjectPlacer { InventoryHolder m = (InventoryHolder) block.getState(); engine.addItems(false, m.getInventory(), rx, tables, slot, world, x, y, z, 15); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } } diff --git a/core/src/main/java/art/arcane/iris/engine/mantle/MantleWriter.java b/core/src/main/java/art/arcane/iris/engine/mantle/MantleWriter.java index 11dec4f2a..c8f2910ce 100644 --- a/core/src/main/java/art/arcane/iris/engine/mantle/MantleWriter.java +++ b/core/src/main/java/art/arcane/iris/engine/mantle/MantleWriter.java @@ -18,9 +18,9 @@ package art.arcane.iris.engine.mantle; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.project.matter.TileWrapper; import com.google.common.collect.ImmutableList; -import art.arcane.iris.Iris; import art.arcane.iris.core.IrisSettings; import art.arcane.iris.core.tools.IrisToolbelt; import art.arcane.iris.core.loader.IrisData; @@ -76,7 +76,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable { && IrisToolbelt.isWorldMaintenanceActive(engineMantle.getEngine().getWorld().realWorld()); final int parallelism = foliaMaintenance ? 1 : (multicore ? Runtime.getRuntime().availableProcessors() / 2 : 4); if (foliaMaintenance && IrisSettings.get().getGeneral().isDebug()) { - Iris.info("MantleWriter using sequential chunk prefetch for maintenance regen at " + x + "," + z + "."); + IrisLogging.info("MantleWriter using sequential chunk prefetch for maintenance regen at " + x + "," + z + "."); } final var map = multicore ? cachedChunks : new KMap>(d * d, 1f, parallelism); mantle.getChunks( @@ -244,7 +244,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable { public MantleChunk acquireChunk(int cx, int cz) { if (cx < this.x - radius || cx > this.x + radius || cz < this.z - radius || cz > this.z + radius) { - Iris.error("Mantle Writer Accessed chunk out of bounds" + cx + "," + cz); + IrisLogging.error("Mantle Writer Accessed chunk out of bounds" + cx + "," + cz); return null; } final Long key = Cache.key(cx, cz); @@ -758,7 +758,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable { try { setData(pos.getX(), pos.getY(), pos.getZ(), data); } catch (Throwable e) { - Iris.error("No set? " + data.toString() + " for " + pos.toString()); + IrisLogging.error("No set? " + data.toString() + " for " + pos.toString()); } } diff --git a/core/src/main/java/art/arcane/iris/engine/mantle/components/IrisStructureComponent.java b/core/src/main/java/art/arcane/iris/engine/mantle/components/IrisStructureComponent.java index 480e97197..db7aa37a5 100644 --- a/core/src/main/java/art/arcane/iris/engine/mantle/components/IrisStructureComponent.java +++ b/core/src/main/java/art/arcane/iris/engine/mantle/components/IrisStructureComponent.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.mantle.components; -import art.arcane.iris.Iris; import art.arcane.iris.core.IrisSettings; import art.arcane.iris.engine.IrisComplex; import art.arcane.iris.engine.data.cache.Cache; @@ -37,6 +36,7 @@ import art.arcane.iris.engine.object.ObjectPlaceMode; import art.arcane.iris.engine.object.IrisRegion; import art.arcane.iris.engine.object.IrisStructure; import art.arcane.iris.engine.object.IrisStructurePlacement; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.project.noise.CNG; import art.arcane.volmlib.util.collection.KList; import art.arcane.iris.util.project.context.ChunkContext; @@ -90,7 +90,7 @@ public class IrisStructureComponent extends IrisMantleComponent { boolean trace = IrisSettings.get().getGeneral().isDebug(); if (trace) { - Iris.info("[StructTrace] ORIGIN chunk=" + cx + "," + cz + " structures=" + placement.getStructures() + IrisLogging.info("[StructTrace] ORIGIN chunk=" + cx + "," + cz + " structures=" + placement.getStructures() + " underground=" + placement.isUnderground() + " band=" + placement.getMinHeight() + ".." + placement.getMaxHeight()); } @@ -104,7 +104,7 @@ public class IrisStructureComponent extends IrisMantleComponent { int bandMax = Math.min(worldMaxY, Math.max(placement.getMinHeight(), placement.getMaxHeight())); if (bandMin > bandMax) { if (trace) { - Iris.info("[StructTrace] BAIL band-inverted chunk=" + cx + "," + cz + " bandMin=" + bandMin + " bandMax=" + bandMax + IrisLogging.info("[StructTrace] BAIL band-inverted chunk=" + cx + "," + cz + " bandMin=" + bandMin + " bandMax=" + bandMax + " worldMinY=" + worldMinY + " worldMaxY=" + worldMaxY); } return; @@ -122,7 +122,7 @@ public class IrisStructureComponent extends IrisMantleComponent { IrisStructure structure = art.arcane.iris.core.loader.IrisData.loadAnyStructure(key, getData()); if (structure == null) { if (trace) { - Iris.info("[StructTrace] BAIL structure-load-null chunk=" + cx + "," + cz + " key=" + key); + IrisLogging.info("[StructTrace] BAIL structure-load-null chunk=" + cx + "," + cz + " key=" + key); } return; } @@ -131,13 +131,13 @@ public class IrisStructureComponent extends IrisMantleComponent { KList pieces = assembler.assemble(rng); if (pieces == null || pieces.isEmpty()) { if (trace) { - Iris.info("[StructTrace] BAIL no-pieces chunk=" + cx + "," + cz + " key=" + key + " baseY=" + baseY + IrisLogging.info("[StructTrace] BAIL no-pieces chunk=" + cx + "," + cz + " key=" + key + " baseY=" + baseY + " pieces=" + (pieces == null ? "null" : "empty")); } return; } if (trace) { - Iris.info("[StructTrace] ASSEMBLED chunk=" + cx + "," + cz + " key=" + key + " baseY=" + baseY + " pieces=" + pieces.size()); + IrisLogging.info("[StructTrace] ASSEMBLED chunk=" + cx + "," + cz + " key=" + key + " baseY=" + baseY + " pieces=" + pieces.size()); } if (placement.isOverbore()) { @@ -192,7 +192,7 @@ public class IrisStructureComponent extends IrisMantleComponent { } long volume = (long) (maxX - minX + 1) * (long) (maxY - minY + 1) * (long) (maxZ - minZ + 1); if (volume > MAX_BORE_VOLUME) { - Iris.warn("Skipping structure bore of " + volume + " blocks (cap " + MAX_BORE_VOLUME + "); use a smaller structure or larger spacing."); + IrisLogging.warn("Skipping structure bore of " + volume + " blocks (cap " + MAX_BORE_VOLUME + "); use a smaller structure or larger spacing."); return; } int mantleOffset = getEngineMantle().getEngine().getMinHeight(); @@ -236,7 +236,7 @@ public class IrisStructureComponent extends IrisMantleComponent { work += wx * wy * wz; } if (work > MAX_OVERBORE_VOLUME) { - Iris.warn("Skipping structure overbore of " + work + " blocks (cap " + MAX_OVERBORE_VOLUME + "); reduce overboreRadius/overboreHeight or use larger spacing."); + IrisLogging.warn("Skipping structure overbore of " + work + " blocks (cap " + MAX_OVERBORE_VOLUME + "); reduce overboreRadius/overboreHeight or use larger spacing."); return; } @@ -245,7 +245,7 @@ public class IrisStructureComponent extends IrisMantleComponent { CNG roll = CNG.signature(noiseRng.nextParallelRNG(0x2A17)); if (IrisSettings.get().getGeneral().isDebug()) { - Iris.info("Overbore carving organic cavern: pieces=" + pieces.size() + " margin=" + margin + " head=" + head + " floorCut=" + floorCut + " work=" + work); + IrisLogging.info("Overbore carving organic cavern: pieces=" + pieces.size() + " margin=" + margin + " head=" + head + " floorCut=" + floorCut + " work=" + work); } for (PlacedStructurePiece p : pieces) { diff --git a/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java b/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java index 9de45d6eb..515ed2f57 100644 --- a/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java +++ b/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.mantle.components; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.IrisComplex; import art.arcane.iris.engine.data.cache.Cache; @@ -37,6 +36,7 @@ import art.arcane.iris.engine.object.IrisObjectPlacement; import art.arcane.iris.engine.object.IrisObjectRotation; import art.arcane.iris.engine.object.IrisObjectTranslate; import art.arcane.iris.engine.object.ObjectPlaceMode; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.common.data.B; import art.arcane.iris.util.common.data.IrisCustomData; import art.arcane.iris.util.project.context.ChunkContext; @@ -204,7 +204,7 @@ public class MantleFloatingObjectComponent extends IrisMantleComponent { } }, null, data); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } } @@ -282,7 +282,7 @@ public class MantleFloatingObjectComponent extends IrisMantleComponent { } }, null, data); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } } @@ -377,7 +377,7 @@ public class MantleFloatingObjectComponent extends IrisMantleComponent { } }, null, data); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } } diff --git a/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleObjectComponent.java b/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleObjectComponent.java index 0733d3a22..904181a12 100644 --- a/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleObjectComponent.java +++ b/core/src/main/java/art/arcane/iris/engine/mantle/components/MantleObjectComponent.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.mantle.components; -import art.arcane.iris.Iris; import art.arcane.iris.core.IrisSettings; import art.arcane.iris.engine.data.cache.Cache; import art.arcane.iris.engine.IrisComplex; @@ -30,6 +29,7 @@ import art.arcane.iris.engine.mantle.MantleWriter; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.collection.KSet; @@ -117,7 +117,7 @@ public class MantleObjectComponent extends IrisMantleComponent { String fingerprint = context + "|" + (object == null ? "" : object.getClass().getSimpleName()); if (MISSING_LOAD_KEY_WARNED.add(fingerprint)) { java.io.File file = object == null ? null : object.getLoadFile(); - Iris.warn("Skipping placement marker write: IrisObject has no loadKey (context=" + context + IrisLogging.warn("Skipping placement marker write: IrisObject has no loadKey (context=" + context + ", file=" + (file == null ? "" : file.getPath()) + "). " + "This would previously produce 'Couldn't find Object: null' warnings on chunk reload."); } @@ -147,7 +147,7 @@ public class MantleObjectComponent extends IrisMantleComponent { carvedBlocks++; } } - Iris.info("Cave object diag: chunk=" + x + "," + z + IrisLogging.info("Cave object diag: chunk=" + x + "," + z + " surfaceBiome=" + surfaceBiome.getLoadKey() + " caveBiome=" + caveBiome.getLoadKey() + " surfaceY=" + surfaceY @@ -158,7 +158,7 @@ public class MantleObjectComponent extends IrisMantleComponent { + " sameBiome=" + (caveBiome == surfaceBiome || java.util.Objects.equals(caveBiome.getLoadKey(), surfaceBiome.getLoadKey()))); } if (traceRegen) { - Iris.info("Regen object layer start: chunk=" + x + "," + z + IrisLogging.info("Regen object layer start: chunk=" + x + "," + z + " surfaceBiome=" + surfaceBiome.getLoadKey() + " caveBiome=" + caveBiome.getLoadKey() + " region=" + region.getLoadKey() @@ -175,7 +175,7 @@ public class MantleObjectComponent extends IrisMantleComponent { placeUpperObjects(writer, rng, x, z, xxx, zzz, surfaceY, upperCtx, dimension, complex, traceRegen); } if (traceRegen) { - Iris.info("Regen object layer done: chunk=" + x + "," + z + IrisLogging.info("Regen object layer done: chunk=" + x + "," + z + " biomeSurfacePlacersChecked=" + summary.biomeSurfacePlacersChecked() + " biomeSurfacePlacersTriggered=" + summary.biomeSurfacePlacersTriggered() + " biomeCavePlacersChecked=" + summary.biomeCavePlacersChecked() @@ -256,7 +256,7 @@ public class MantleObjectComponent extends IrisMantleComponent { biomeSurfaceChecked++; boolean chance = rng.chance(i.getChance() + rng.d(-0.005, 0.005)); if (traceRegen) { - Iris.info("Regen object placer chance: chunk=" + x + "," + z + IrisLogging.info("Regen object placer chance: chunk=" + x + "," + z + " scope=biome-surface" + " chanceResult=" + chance + " chanceBase=" + i.getChance() @@ -274,10 +274,10 @@ public class MantleObjectComponent extends IrisMantleComponent { errors += result.errors(); } catch (Throwable e) { errors++; - Iris.reportError(e); - Iris.error("Failed to place objects in the following biome: " + surfaceBiome.getName()); - Iris.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); - Iris.error("Are these objects missing?"); + IrisLogging.reportError(e); + IrisLogging.error("Failed to place objects in the following biome: " + surfaceBiome.getName()); + IrisLogging.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); + IrisLogging.error("Are these objects missing?"); e.printStackTrace(); } } @@ -290,7 +290,7 @@ public class MantleObjectComponent extends IrisMantleComponent { biomeCaveChecked++; boolean chance = rng.chance(i.getChance()); if (traceRegen) { - Iris.info("Regen object placer chance: chunk=" + x + "," + z + IrisLogging.info("Regen object placer chance: chunk=" + x + "," + z + " scope=biome-cave" + " chanceResult=" + chance + " chanceBase=" + i.getChance() @@ -308,10 +308,10 @@ public class MantleObjectComponent extends IrisMantleComponent { errors += result.errors(); } catch (Throwable e) { errors++; - Iris.reportError(e); - Iris.error("Failed to place cave objects in the following biome: " + caveBiome.getName()); - Iris.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); - Iris.error("Are these objects missing?"); + IrisLogging.reportError(e); + IrisLogging.error("Failed to place cave objects in the following biome: " + caveBiome.getName()); + IrisLogging.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); + IrisLogging.error("Are these objects missing?"); e.printStackTrace(); } } @@ -321,7 +321,7 @@ public class MantleObjectComponent extends IrisMantleComponent { regionSurfaceChecked++; boolean chance = rng.chance(i.getChance() + rng.d(-0.005, 0.005)); if (traceRegen) { - Iris.info("Regen object placer chance: chunk=" + x + "," + z + IrisLogging.info("Regen object placer chance: chunk=" + x + "," + z + " scope=region-surface" + " chanceResult=" + chance + " chanceBase=" + i.getChance() @@ -339,10 +339,10 @@ public class MantleObjectComponent extends IrisMantleComponent { errors += result.errors(); } catch (Throwable e) { errors++; - Iris.reportError(e); - Iris.error("Failed to place objects in the following region: " + region.getName()); - Iris.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); - Iris.error("Are these objects missing?"); + IrisLogging.reportError(e); + IrisLogging.error("Failed to place objects in the following region: " + region.getName()); + IrisLogging.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); + IrisLogging.error("Are these objects missing?"); e.printStackTrace(); } } @@ -355,7 +355,7 @@ public class MantleObjectComponent extends IrisMantleComponent { regionCaveChecked++; boolean chance = rng.chance(i.getChance()); if (traceRegen) { - Iris.info("Regen object placer chance: chunk=" + x + "," + z + IrisLogging.info("Regen object placer chance: chunk=" + x + "," + z + " scope=region-cave" + " chanceResult=" + chance + " chanceBase=" + i.getChance() @@ -373,10 +373,10 @@ public class MantleObjectComponent extends IrisMantleComponent { errors += result.errors(); } catch (Throwable e) { errors++; - Iris.reportError(e); - Iris.error("Failed to place cave objects in the following region: " + region.getName()); - Iris.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); - Iris.error("Are these objects missing?"); + IrisLogging.reportError(e); + IrisLogging.error("Failed to place cave objects in the following region: " + region.getName()); + IrisLogging.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); + IrisLogging.error("Are these objects missing?"); e.printStackTrace(); } } @@ -420,7 +420,7 @@ public class MantleObjectComponent extends IrisMantleComponent { for (IrisProceduralPlacement p : proceduralObjects.getAllPlacements()) { boolean chancePassed = rng.chance(p.getChance() + rng.d(-0.005, 0.005)); if (golden) { - Iris.info("Goldendebug procedural chance: chunk=" + x + "," + z + IrisLogging.info("Goldendebug procedural chance: chunk=" + x + "," + z + " scope=" + scope + " placement=" + p.getName() + " passed=" + chancePassed); @@ -443,7 +443,7 @@ public class MantleObjectComponent extends IrisMantleComponent { IrisObject variant = p.getVariantObject(getData(), rng); if (variant == null) { if (golden) { - Iris.info("Goldendebug procedural pick: chunk=" + x + "," + z + IrisLogging.info("Goldendebug procedural pick: chunk=" + x + "," + z + " placement=" + p.getName() + " densityIndex=" + i + " variant=null"); @@ -455,7 +455,7 @@ public class MantleObjectComponent extends IrisMantleComponent { int id = rng.i(0, Integer.MAX_VALUE); if (golden) { KList pool = p.getVariantObjects(getData()); - Iris.info("Goldendebug procedural pick: chunk=" + x + "," + z + IrisLogging.info("Goldendebug procedural pick: chunk=" + x + "," + z + " placement=" + p.getName() + " densityIndex=" + i + " variant=" + variant.getLoadKey() @@ -470,7 +470,7 @@ public class MantleObjectComponent extends IrisMantleComponent { if (carving) { int caveFloorY = findNearestCaveFloor(writer, xx, zz); if (golden) { - Iris.info("Goldendebug procedural caveFloor: chunk=" + x + "," + z + IrisLogging.info("Goldendebug procedural caveFloor: chunk=" + x + "," + z + " placement=" + p.getName() + " xx=" + xx + " zz=" + zz @@ -493,7 +493,7 @@ public class MantleObjectComponent extends IrisMantleComponent { }, null, getData()); } if (golden) { - Iris.info("Goldendebug procedural result: chunk=" + x + "," + z + IrisLogging.info("Goldendebug procedural result: chunk=" + x + "," + z + " placement=" + p.getName() + " variant=" + variant.getLoadKey() + " xx=" + xx @@ -501,8 +501,8 @@ public class MantleObjectComponent extends IrisMantleComponent { + " resultY=" + placeResult); } } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Failed to place procedural object '" + p.getName() + "' in " + scope); + IrisLogging.reportError(e); + IrisLogging.error("Failed to place procedural object '" + p.getName() + "' in " + scope); e.printStackTrace(); } } @@ -538,7 +538,7 @@ public class MantleObjectComponent extends IrisMantleComponent { if (v == null) { nullObjects++; if (traceRegen) { - Iris.warn("Regen object placement null object: chunk=" + chunkX + "," + chunkZ + IrisLogging.warn("Regen object placement null object: chunk=" + chunkX + "," + chunkZ + " scope=" + scope + " densityIndex=" + i + " density=" + density @@ -558,7 +558,7 @@ public class MantleObjectComponent extends IrisMantleComponent { } IObjectPlacer placePlacer = golden ? new GoldenDebugPlacer(writer, scope + "/" + v.getLoadKey()) : writer; if (golden) { - Iris.info("Goldendebug object attempt: chunk=" + chunkX + "," + chunkZ + IrisLogging.info("Goldendebug object attempt: chunk=" + chunkX + "," + chunkZ + " scope=" + scope + " object=" + v.getLoadKey() + " densityIndex=" + i @@ -623,7 +623,7 @@ public class MantleObjectComponent extends IrisMantleComponent { } if (golden) { - Iris.info("Goldendebug object result: chunk=" + chunkX + "," + chunkZ + IrisLogging.info("Goldendebug object result: chunk=" + chunkX + "," + chunkZ + " scope=" + scope + " object=" + v.getLoadKey() + " resultY=" + result @@ -631,7 +631,7 @@ public class MantleObjectComponent extends IrisMantleComponent { } if (traceRegen) { - Iris.info("Regen object placement result: chunk=" + chunkX + "," + chunkZ + IrisLogging.info("Regen object placement result: chunk=" + chunkX + "," + chunkZ + " scope=" + scope + " object=" + v.getLoadKey() + " resultY=" + result @@ -644,8 +644,8 @@ public class MantleObjectComponent extends IrisMantleComponent { } } catch (Throwable e) { errors++; - Iris.reportError(e); - Iris.error("Regen object placement exception: chunk=" + chunkX + "," + chunkZ + IrisLogging.reportError(e); + IrisLogging.error("Regen object placement exception: chunk=" + chunkX + "," + chunkZ + " scope=" + scope + " object=" + v.getLoadKey() + " densityIndex=" + i @@ -715,7 +715,7 @@ public class MantleObjectComponent extends IrisMantleComponent { if (object == null) { nullObjects++; if (traceRegen) { - Iris.warn("Regen cave object placement null object: chunk=" + metricChunkX + "," + metricChunkZ + IrisLogging.warn("Regen cave object placement null object: chunk=" + metricChunkX + "," + metricChunkZ + " scope=" + scope + " densityIndex=" + i + " density=" + density @@ -836,7 +836,7 @@ public class MantleObjectComponent extends IrisMantleComponent { } if (traceRegen) { - Iris.info("Regen cave object placement result: chunk=" + metricChunkX + "," + metricChunkZ + IrisLogging.info("Regen cave object placement result: chunk=" + metricChunkX + "," + metricChunkZ + " scope=" + scope + " object=" + object.getLoadKey() + " resultY=" + result @@ -849,8 +849,8 @@ public class MantleObjectComponent extends IrisMantleComponent { } } catch (Throwable e) { errors++; - Iris.reportError(e); - Iris.error("Regen cave object placement exception: chunk=" + metricChunkX + "," + metricChunkZ + IrisLogging.reportError(e); + IrisLogging.error("Regen cave object placement exception: chunk=" + metricChunkX + "," + metricChunkZ + " scope=" + scope + " object=" + object.getLoadKey() + " densityIndex=" + i @@ -907,8 +907,8 @@ public class MantleObjectComponent extends IrisMantleComponent { try { placeUpperObject(writer, rng, chunkX, chunkZ, i, upperCtx, dimension, complex, forcePlace, traceRegen, "upper-biome-surface"); } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Failed to place upper-dimension objects in biome " + upperBiome.getName() + IrisLogging.reportError(e); + IrisLogging.error("Failed to place upper-dimension objects in biome " + upperBiome.getName() + ": " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")"); e.printStackTrace(); } @@ -923,8 +923,8 @@ public class MantleObjectComponent extends IrisMantleComponent { try { placeUpperObject(writer, rng, chunkX, chunkZ, i, upperCtx, dimension, complex, forcePlace, traceRegen, "upper-region-surface"); } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Failed to place upper-dimension objects in region " + upperRegion.getName() + IrisLogging.reportError(e); + IrisLogging.error("Failed to place upper-dimension objects in region " + upperRegion.getName() + ": " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")"); e.printStackTrace(); } @@ -993,7 +993,7 @@ public class MantleObjectComponent extends IrisMantleComponent { }, null, getData()); if (traceRegen) { - Iris.info("Upper object placement: chunk=" + chunkX + "," + chunkZ + IrisLogging.info("Upper object placement: chunk=" + chunkX + "," + chunkZ + " scope=" + scope + " object=" + v.getLoadKey() + " anchorY=" + anchorY @@ -1052,7 +1052,7 @@ public class MantleObjectComponent extends IrisMantleComponent { int suppressed = state.suppressed.getAndSet(0); String anchorYText = anchorY == null ? "none" : String.valueOf(anchorY); String errorText = error == null ? "none" : error.getClass().getSimpleName() + ":" + String.valueOf(error.getMessage()); - Iris.warn("Cave object reject: scope=" + scope + IrisLogging.warn("Cave object reject: scope=" + scope + " reason=" + reason + " chunk=" + chunkX + "," + chunkZ + " object=" + objectKey @@ -1136,14 +1136,14 @@ public class MantleObjectComponent extends IrisMantleComponent { @Override public int getHighest(int x, int z, IrisData data) { int result = delegate.getHighest(x, z, data); - Iris.info("Goldendebug query: tag=" + tag + " getHighest(" + x + "," + z + ")=" + result); + IrisLogging.info("Goldendebug query: tag=" + tag + " getHighest(" + x + "," + z + ")=" + result); return result; } @Override public int getHighest(int x, int z, IrisData data, boolean ignoreFluid) { int result = delegate.getHighest(x, z, data, ignoreFluid); - Iris.info("Goldendebug query: tag=" + tag + " getHighest(" + x + "," + z + ",ignoreFluid=" + ignoreFluid + ")=" + result); + IrisLogging.info("Goldendebug query: tag=" + tag + " getHighest(" + x + "," + z + ",ignoreFluid=" + ignoreFluid + ")=" + result); return result; } @@ -1165,14 +1165,14 @@ public class MantleObjectComponent extends IrisMantleComponent { @Override public boolean isCarved(int x, int y, int z) { boolean result = delegate.isCarved(x, y, z); - Iris.info("Goldendebug query: tag=" + tag + " isCarved(" + x + "," + y + "," + z + ")=" + result); + IrisLogging.info("Goldendebug query: tag=" + tag + " isCarved(" + x + "," + y + "," + z + ")=" + result); return result; } @Override public boolean isSolid(int x, int y, int z) { boolean result = delegate.isSolid(x, y, z); - Iris.info("Goldendebug query: tag=" + tag + " isSolid(" + x + "," + y + "," + z + ")=" + result); + IrisLogging.info("Goldendebug query: tag=" + tag + " isSolid(" + x + "," + y + "," + z + ")=" + result); return result; } @@ -1648,16 +1648,16 @@ public class MantleObjectComponent extends IrisMantleComponent { if (Math.max(bv.getBlockX(), bv.getBlockZ()) > 128) { if (scale > 1D) { - Iris.warn("Object " + objectKey + " has a large size (" + bv + ") and may increase memory usage! (Object scaled up to " + Form.pc(scale, 2) + ")"); + IrisLogging.warn("Object " + objectKey + " has a large size (" + bv + ") and may increase memory usage! (Object scaled up to " + Form.pc(scale, 2) + ")"); } else { - Iris.warn("Object " + objectKey + " has a large size (" + bv + ") and may increase memory usage!"); + IrisLogging.warn("Object " + objectKey + " has a large size (" + bv + ") and may increase memory usage!"); } } xg.getAndSet(Math.max((int) Math.ceil(bv.getBlockX() * scale), xg.get())); zg.getAndSet(Math.max((int) Math.ceil(bv.getBlockZ() * scale), zg.get())); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -1685,7 +1685,7 @@ public class MantleObjectComponent extends IrisMantleComponent { xg.getAndSet(Math.max(reachX, xg.get())); zg.getAndSet(Math.max(reachZ, zg.get())); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } } @@ -1695,7 +1695,7 @@ public class MantleObjectComponent extends IrisMantleComponent { try { return IrisObject.sampleSize(getData().getObjectLoader().findFile(objectKey)); } catch (IOException e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } diff --git a/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java b/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java index dced681a4..af2a90748 100644 --- a/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java +++ b/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java @@ -27,6 +27,7 @@ import art.arcane.iris.engine.framework.EngineMode; import art.arcane.iris.engine.framework.EngineStage; import art.arcane.iris.engine.framework.IrisEngineMode; import art.arcane.iris.engine.modifier.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.common.scheduling.J; import java.util.concurrent.atomic.AtomicLong; @@ -118,7 +119,7 @@ public class ModeOverworld extends IrisEngineMode implements EngineMode { long now = System.currentTimeMillis(); long last = lastMaintenanceBypassLog.get(); if (now - last >= 5000L && lastMaintenanceBypassLog.compareAndSet(last, now)) { - art.arcane.iris.Iris.info("Maintenance regen bypass: skipping mantle-backed overworld stages for Folia safety."); + IrisLogging.info("Maintenance regen bypass: skipping mantle-backed overworld stages for Folia safety."); } } return active; diff --git a/core/src/main/java/art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java b/core/src/main/java/art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java index 229cf743f..1d39eb78a 100644 --- a/core/src/main/java/art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java +++ b/core/src/main/java/art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.modifier; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.IrisComplex; import art.arcane.iris.engine.decorator.FloatingDecorator; @@ -36,6 +35,7 @@ import art.arcane.iris.engine.object.IrisDecorationPart; import art.arcane.iris.engine.object.IrisDimension; import art.arcane.iris.engine.object.IrisFloatingChildBiomes; import art.arcane.iris.engine.object.IrisSlopeClip; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.common.data.B; import art.arcane.iris.util.project.context.ChunkContext; import art.arcane.iris.util.project.hunk.Hunk; @@ -101,7 +101,7 @@ public class IrisFloatingChildBiomeModifier extends EngineAssignedModifier" : parent.getLoadKey(); - Iris.warn("Floating child biome on " + biomeKey + " has a null CNG for " + styleField + IrisLogging.warn("Floating child biome on " + biomeKey + " has a null CNG for " + styleField + " (style factory returned null or AtomicCache swallowed an exception); skipping floating sampling until pack is fixed"); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisBiome.java b/core/src/main/java/art/arcane/iris/engine/object/IrisBiome.java index c520c3820..12384c129 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisBiome.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisBiome.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.gui.components.RenderType; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.loader.IrisRegistrant; @@ -26,6 +25,7 @@ import art.arcane.iris.engine.IrisComplex; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import com.google.gson.annotations.SerializedName; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; @@ -434,7 +434,7 @@ public class IrisBiome extends IrisRegistrant implements IRare { try { data.add(getLayers().get(i).get(random.nextParallelRNG(i + j), (wx + j) / layers.get(i).getZoom(), j, (wz - j) / layers.get(i).getZoom(), rdata)); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } @@ -480,7 +480,7 @@ public class IrisBiome extends IrisRegistrant implements IRare { try { data.add(getCaveCeilingLayers().get(i).get(random.nextParallelRNG(i + j), (wx + j) / caveCeilingLayers.get(i).getZoom(), j, (wz - j) / caveCeilingLayers.get(i).getZoom(), rdata)); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } @@ -531,7 +531,7 @@ public class IrisBiome extends IrisRegistrant implements IRare { try { data.add(getLayers().get(i).get(random.nextParallelRNG(i + j), (wx + j) / layers.get(i).getZoom(), j, (wz - j) / layers.get(i).getZoom(), rdata)); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } @@ -603,7 +603,7 @@ public class IrisBiome extends IrisRegistrant implements IRare { try { data.add(getSeaLayers().get(i).get(random.nextParallelRNG(i + j), (wx + j) / seaLayers.get(i).getZoom(), j, (wz - j) / seaLayers.get(i).getZoom(), rdata)); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } @@ -749,7 +749,7 @@ public class IrisBiome extends IrisRegistrant implements IRare { if (this.color == null) { RandomColor randomColor = new RandomColor(getName().hashCode()); if (this.getVanillaDerivative() == null) { - Iris.warn("No vanilla biome found for " + getName()); + IrisLogging.warn("No vanilla biome found for " + getName()); return new Color(randomColor.randomColor()); } RandomColor.Color col = VanillaBiomeMap.getColorType(this.getVanillaDerivative()); @@ -763,7 +763,7 @@ public class IrisBiome extends IrisRegistrant implements IRare { try { return Color.decode(this.color); } catch (NumberFormatException e) { - Iris.warn("Could not parse color \"" + this.color + "\" for biome " + getName()); + IrisLogging.warn("Could not parse color \"" + this.color + "\" for biome " + getName()); return new Color(new RandomColor(getName().hashCode()).randomColor()); } }); diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisBiomeCustom.java b/core/src/main/java/art/arcane/iris/engine/object/IrisBiomeCustom.java index 9a625c14e..cbdd4df3a 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisBiomeCustom.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisBiomeCustom.java @@ -18,9 +18,9 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.nms.datapack.IDataFixer; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.json.JSONArray; @@ -149,7 +149,7 @@ public class IrisBiomeCustom { } EntityType type = i.getType(); if (type == null) { - Iris.warn("Skipping custom biome spawn with null entity type in biome " + getId()); + IrisLogging.warn("Skipping custom biome spawn with null entity type in biome " + getId()); continue; } IrisBiomeCustomSpawnType group = i.getGroup() == null ? IrisBiomeCustomSpawnType.MISC : i.getGroup(); @@ -157,7 +157,7 @@ public class IrisBiomeCustom { JSONObject o = new JSONObject(); NamespacedKey key = type.getKey(); if (key == null) { - Iris.warn("Skipping custom biome spawn with unresolved entity key in biome " + getId()); + IrisLogging.warn("Skipping custom biome spawn with unresolved entity key in biome " + getId()); continue; } o.put("type", key.toString()); @@ -182,8 +182,8 @@ public class IrisBiomeCustom { try { return Color.decode(v).getRGB(); } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Error Parsing '''color''', (" + c + ")"); + IrisLogging.reportError(e); + IrisLogging.error("Error Parsing '''color''', (" + c + ")"); } return 0; diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisBlockData.java b/core/src/main/java/art/arcane/iris/engine/object/IrisBlockData.java index 3e13f0771..3f1104ac3 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisBlockData.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisBlockData.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.link.Identifier; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.loader.IrisRegistrant; @@ -26,6 +25,7 @@ import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.*; import art.arcane.iris.platform.bukkit.BukkitBlockState; import art.arcane.iris.platform.bukkit.BukkitPlatform; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; @@ -170,7 +170,7 @@ public class IrisBlockData extends IrisRegistrant { String sx = keyify(st) + computeProperties(cdata); if (debug) { - Iris.debug("Block Data used " + sx + " (CUSTOM)"); + IrisLogging.debug("Block Data used " + sx + " (CUSTOM)"); } BlockData bx = B.get(sx); @@ -189,7 +189,7 @@ public class IrisBlockData extends IrisRegistrant { b = B.get(ss); if (debug) { - Iris.debug("Block Data used " + ss); + IrisLogging.debug("Block Data used " + ss); } if (b != null) { diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java b/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java index 826c163de..8d8394da1 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java @@ -18,12 +18,12 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.Desc; import art.arcane.iris.engine.object.annotations.MaxNumber; import art.arcane.iris.engine.object.annotations.MinNumber; import art.arcane.iris.engine.object.annotations.Snippet; +import art.arcane.iris.spi.IrisLogging; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @@ -87,7 +87,7 @@ public class IrisColor { try { return Color.decode(v); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisCompat.java b/core/src/main/java/art/arcane/iris/engine/object/IrisCompat.java index 0f5d49042..11fd89d31 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisCompat.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisCompat.java @@ -18,8 +18,8 @@ package art.arcane.iris.engine.object; +import art.arcane.iris.spi.IrisLogging; import com.google.gson.Gson; -import art.arcane.iris.Iris; import art.arcane.volmlib.util.collection.KList; import art.arcane.iris.util.common.data.B; import art.arcane.volmlib.util.io.IO; @@ -53,8 +53,8 @@ public class IrisCompat { try { IO.writeAll(f, defa); } catch (IOException e) { - Iris.error("Failed to writeNodeData to compat file"); - Iris.reportError(e); + IrisLogging.error("Failed to writeNodeData to compat file"); + IrisLogging.reportError(e); } }); } else { @@ -72,7 +72,7 @@ public class IrisCompat { } } catch (Throwable e) { e.printStackTrace(); - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -275,7 +275,7 @@ public class IrisCompat { searching: while (true) { if (err-- <= 0) { - Iris.error("Can't find block data for " + n); + IrisLogging.error("Can't find block data for " + n); return B.getNoCompat("STONE"); } String m = buf; @@ -299,7 +299,7 @@ public class IrisCompat { } } - Iris.error("Can't find block data for " + n); + IrisLogging.error("Can't find block data for " + n); return B.getNoCompat("STONE"); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisCompatabilityBlockFilter.java b/core/src/main/java/art/arcane/iris/engine/object/IrisCompatabilityBlockFilter.java index 83bb42c1e..5d063dc6a 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisCompatabilityBlockFilter.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisCompatabilityBlockFilter.java @@ -18,10 +18,10 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.Desc; import art.arcane.iris.engine.object.annotations.Required; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.common.data.B; import lombok.AllArgsConstructor; import lombok.Data; @@ -63,7 +63,7 @@ public class IrisCompatabilityBlockFilter { return null; } - Iris.warn("Compat: Using '%s' in place of '%s' since this server doesnt support '%s'", supplement, when, when); + IrisLogging.warn("Compat: Using '%s' in place of '%s' since this server doesnt support '%s'", supplement, when, when); return b; }); diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisDecorator.java b/core/src/main/java/art/arcane/iris/engine/object/IrisDecorator.java index 3fb20f438..998ae56b0 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisDecorator.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisDecorator.java @@ -18,10 +18,10 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.math.RNG; import art.arcane.iris.util.project.noise.CNG; @@ -157,7 +157,7 @@ public class IrisDecorator { public PlatformBlockState getBlockData100(IrisBiome b, RNG rng, double x, double y, double z, IrisData data) { if (getBlockData(data).isEmpty()) { - Iris.warn("Empty Block Data for " + b.getName()); + IrisLogging.warn("Empty Block Data for " + b.getName()); return null; } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisDimension.java b/core/src/main/java/art/arcane/iris/engine/object/IrisDimension.java index c95c02044..afd91e14b 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisDimension.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisDimension.java @@ -24,6 +24,7 @@ import art.arcane.iris.core.ServerConfigurator.DimensionHeight; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.platform.bukkit.BukkitBlockState; import art.arcane.iris.platform.bukkit.BukkitPlatform; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.iris.core.loader.IrisRegistrant; import art.arcane.iris.core.nms.datapack.IDataFixer; @@ -500,7 +501,7 @@ public class IrisDimension extends IrisRegistrant { try { IO.writeAll(output, json); } catch (IOException e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } @@ -562,7 +563,7 @@ public class IrisDimension extends IrisRegistrant { try { IO.writeAll(output, json); } catch (IOException e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } @@ -608,7 +609,7 @@ public class IrisDimension extends IrisRegistrant { try { IO.writeAll(mcm, raw); } catch (IOException e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } Iris.verbose(" Installing Data Pack MCMeta: " + mcm.getPath()); @@ -624,7 +625,7 @@ public class IrisDimension extends IrisRegistrant { try { IO.writeAll(dimTypeVanilla, json); } catch (IOException e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisEffect.java b/core/src/main/java/art/arcane/iris/engine/object/IrisEffect.java index dc9e4b4af..3171940b6 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisEffect.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisEffect.java @@ -18,10 +18,10 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.math.RNG; import art.arcane.volmlib.util.scheduling.ChronoLatch; import art.arcane.iris.util.common.scheduling.J; @@ -168,11 +168,11 @@ public class IrisEffect { return resolved; } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } if (PotionEffectTypes.shouldWarn(getPotionEffect())) { - Iris.warn("Unknown Potion Effect Type: \"" + getPotionEffect() + "\". Valid types: " + PotionEffectTypes.knownTypesList()); + IrisLogging.warn("Unknown Potion Effect Type: \"" + getPotionEffect() + "\". Valid types: " + PotionEffectTypes.knownTypesList()); } return PotionEffectType.LUCK; diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisEnchantment.java b/core/src/main/java/art/arcane/iris/engine/object/IrisEnchantment.java index 892858b9a..5bd58568c 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisEnchantment.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisEnchantment.java @@ -18,8 +18,8 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.math.RNG; import lombok.AllArgsConstructor; import lombok.Data; @@ -61,7 +61,7 @@ public class IrisEnchantment { try { Enchantment enchant = Registry.ENCHANTMENT.get(NamespacedKey.minecraft(getEnchantment())); if (enchant == null) { - Iris.warn("Unknown Enchantment: " + getEnchantment()); + IrisLogging.warn("Unknown Enchantment: " + getEnchantment()); return; } if (rng.nextDouble() < chance) { @@ -72,7 +72,7 @@ public class IrisEnchantment { meta.addEnchant(enchant, getLevel(rng), true); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisEntitySpawn.java b/core/src/main/java/art/arcane/iris/engine/object/IrisEntitySpawn.java index 6a75d8d44..7e97a95a9 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisEntitySpawn.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisEntitySpawn.java @@ -19,10 +19,10 @@ package art.arcane.iris.engine.object; import art.arcane.iris.platform.bukkit.BukkitPlatform; -import art.arcane.iris.Iris; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.common.format.C; import art.arcane.volmlib.util.math.RNG; import art.arcane.volmlib.util.math.Vector3d; @@ -169,7 +169,7 @@ public class IrisEntitySpawn implements IRare { try { IrisEntity irisEntity = getRealEntity(g); if (irisEntity == null) { // No entity - Iris.debug(" You are trying to spawn an entity that does not exist!"); + IrisLogging.debug(" You are trying to spawn an entity that does not exist!"); return null; } @@ -187,14 +187,14 @@ public class IrisEntitySpawn implements IRare { Entity e = irisEntity.spawn(g, at.add(0.5, 0.5, 0.5), rng.aquire(() -> new RNG(g.getSeedManager().getEntity()))); if (e != null) { - Iris.debug("Spawned " + C.DARK_AQUA + "Entity<" + getEntity() + "> " + C.GREEN + e.getType() + C.LIGHT_PURPLE + " @ " + C.GRAY + e.getLocation().getX() + ", " + e.getLocation().getY() + ", " + e.getLocation().getZ()); + IrisLogging.debug("Spawned " + C.DARK_AQUA + "Entity<" + getEntity() + "> " + C.GREEN + e.getType() + C.LIGHT_PURPLE + " @ " + C.GRAY + e.getLocation().getX() + ", " + e.getLocation().getY() + ", " + e.getLocation().getZ()); } return e; } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); e.printStackTrace(); - Iris.error(" Failed to retrieve real entity @ " + at + " (entity: " + getEntity() + ")"); + IrisLogging.error(" Failed to retrieve real entity @ " + at + " (entity: " + getEntity() + ")"); return null; } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisExpression.java b/core/src/main/java/art/arcane/iris/engine/object/IrisExpression.java index 1d28e899c..5b6e55799 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisExpression.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisExpression.java @@ -18,10 +18,10 @@ package art.arcane.iris.engine.object; +import art.arcane.iris.spi.IrisLogging; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisRegistrant; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.IrisExpressionFunction.FunctionContext; @@ -77,7 +77,7 @@ public class IrisExpression extends IrisRegistrant { scope.addInvocationVariable("z"); } catch (Throwable e) { e.printStackTrace(); - Iris.error("Script Variable load error in " + getLoadFile().getPath()); + IrisLogging.error("Script Variable load error in " + getLoadFile().getPath()); } for (IrisExpressionFunction f : functions) { @@ -90,7 +90,7 @@ public class IrisExpression extends IrisRegistrant { return parser.parse(getExpression(), scope); } catch (Throwable e) { e.printStackTrace(); - Iris.error("Script load error in " + getLoadFile().getPath()); + IrisLogging.error("Script load error in " + getLoadFile().getPath()); } return null; diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisGeneratorStyle.java b/core/src/main/java/art/arcane/iris/engine/object/IrisGeneratorStyle.java index 15d53a94a..ed9a63178 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisGeneratorStyle.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisGeneratorStyle.java @@ -18,10 +18,10 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.math.RNG; import art.arcane.iris.util.project.noise.CNG; import art.arcane.iris.util.project.noise.ExpressionNoise; @@ -146,7 +146,7 @@ public class IrisGeneratorStyle { } if (!file.delete()) { - Iris.debug("Unable to delete stale noise cache " + file.getName()); + IrisLogging.debug("Unable to delete stale noise cache " + file.getName()); } } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisImage.java b/core/src/main/java/art/arcane/iris/engine/object/IrisImage.java index c8e6fca07..965f60e60 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisImage.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisImage.java @@ -18,8 +18,8 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisRegistrant; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.json.JSONObject; import art.arcane.iris.util.common.plugin.VolmitSender; @@ -134,7 +134,7 @@ public class IrisImage extends IrisRegistrant { } } ImageIO.write(b, "png", at); - Iris.warn("Debug image written to " + at.getPath() + " for channel " + channel.name()); + IrisLogging.warn("Debug image written to " + at.getPath() + " for channel " + channel.name()); } catch (IOException e) { e.printStackTrace(); } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisImageMap.java b/core/src/main/java/art/arcane/iris/engine/object/IrisImageMap.java index d485e79a2..aae29ede6 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisImageMap.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisImageMap.java @@ -18,13 +18,13 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.Desc; import art.arcane.iris.engine.object.annotations.MinNumber; import art.arcane.iris.engine.object.annotations.RegistryListResource; import art.arcane.iris.engine.object.annotations.Snippet; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.project.interpolation.InterpolationMethod; import art.arcane.iris.util.project.interpolation.IrisInterpolation; import lombok.AllArgsConstructor; @@ -67,7 +67,7 @@ public class IrisImageMap { public double getNoise(IrisData data, int x, int z) { IrisImage i = imageCache.aquire(() -> data.getImageLoader().load(image)); if (i == null) { - Iris.error("NULL IMAGE FOR " + image); + IrisLogging.error("NULL IMAGE FOR " + image); return 0; } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisLoot.java b/core/src/main/java/art/arcane/iris/engine/object/IrisLoot.java index 029c389ea..6561f7580 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisLoot.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisLoot.java @@ -1,240 +1,241 @@ -/* - * Iris is a World Generator for Minecraft Bukkit Servers - * Copyright (c) 2022 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 . - */ - -package art.arcane.iris.engine.object; - -import art.arcane.iris.Iris; -import art.arcane.iris.core.link.Identifier; -import art.arcane.iris.core.service.ExternalDataSVC; -import art.arcane.iris.engine.data.cache.AtomicCache; -import art.arcane.iris.engine.object.annotations.*; -import art.arcane.iris.platform.bukkit.BukkitPlatform; -import art.arcane.volmlib.util.collection.KList; -import art.arcane.volmlib.util.collection.KMap; -import art.arcane.iris.util.common.data.B; -import art.arcane.iris.util.common.format.C; -import art.arcane.volmlib.util.format.Form; -import art.arcane.volmlib.util.math.RNG; -import art.arcane.iris.util.project.noise.CNG; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; -import org.bukkit.DyeColor; -import org.bukkit.Material; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.LeatherArmorMeta; -import org.bukkit.inventory.meta.components.CustomModelDataComponent; -import org.bukkit.material.Colorable; - -import java.awt.*; -import java.util.List; -import java.util.Optional; - -@Snippet("loot") -@Accessors(chain = true) -@NoArgsConstructor -@AllArgsConstructor -@Desc("Represents a loot entry") -@Data -public class IrisLoot { - private final transient AtomicCache chance = new AtomicCache<>(); - @Desc("The target inventory slot types to fill this loot with") - private InventorySlotType slotTypes = InventorySlotType.STORAGE; - @MinNumber(1) - @Desc("The sub rarity of this loot. Calculated after this loot table has been picked.") - private int rarity = 1; - @MinNumber(1) - @Desc("Minimum amount of this loot") - private int minAmount = 1; - @MinNumber(1) - @Desc("Maximum amount of this loot") - private int maxAmount = 1; - @MinNumber(1) - @Desc("The display name of this item") - private String displayName = null; - @MinNumber(0) - @MaxNumber(1) - @Desc("Minimum durability percent") - private double minDurability = 0; - @MinNumber(0) - @MaxNumber(1) - @Desc("Maximum durability percent") - private double maxDurability = 1; - @Desc("Define a custom model identifier 1.14+ only") - private Integer customModel = null; - @Desc("Set this to true to prevent it from being broken") - private boolean unbreakable = false; - @ArrayType(min = 1, type = ItemFlag.class) - @Desc("The item flags to add") - private KList itemFlags = new KList<>(); - @Desc("Apply enchantments to this item") - @ArrayType(min = 1, type = IrisEnchantment.class) - private KList enchantments = new KList<>(); - @Desc("Apply attribute modifiers to this item") - @ArrayType(min = 1, type = IrisAttributeModifier.class) - private KList attributes = new KList<>(); - @ArrayType(min = 1, type = String.class) - @Desc("Add lore to this item") - private KList lore = new KList<>(); - @RegistryListItemType - @Required - @Desc("This is the item or block type. Does not accept minecraft:*, only materials such as DIAMOND_SWORD or DIRT. The exception are modded materials, as they require a namespace.") - private String type = ""; - @Desc("The dye color") - private DyeColor dyeColor = null; - @Desc("The leather armor color") - private String leatherColor = null; - @Desc("Defines a custom NBT Tag for the item.") - private KMap customNbt; - - public Material getType() { - return B.getMaterial(type); - } - - public ItemStack get(boolean debug, RNG rng) { - try { - ItemStack is = getItemStack(rng); - if (is == null) - return new ItemStack(Material.AIR); - is.setItemMeta(applyProperties(is, rng, debug, null)); - return BukkitPlatform.applyCustomNbt(is, customNbt); - } catch (Throwable e) { - Iris.reportError(e); - return new ItemStack(Material.AIR); - } - } - - public ItemStack get(boolean debug, boolean giveSomething, IrisLootTable table, RNG rng, int x, int y, int z) { - if (debug) { - chance.reset(); - } - - if (giveSomething || chance.aquire(() -> NoiseStyle.STATIC.create(rng)).fit(1, rarity * table.getRarity(), x, y, z) == 1) { - try { - ItemStack is = getItemStack(rng); - if (is == null) - return null; - is.setItemMeta(applyProperties(is, rng, debug, table)); - return BukkitPlatform.applyCustomNbt(is, customNbt); - } catch (Throwable e) { - //Iris.reportError(e); - e.printStackTrace(); - } - } - - return null; - } - - // TODO Better Third Party Item Acquisition - private ItemStack getItemStack(RNG rng) { - if (!type.startsWith("minecraft:") && type.contains(":")) { - Optional opt = Iris.service(ExternalDataSVC.class).getItemStack(Identifier.fromString(type), customNbt); - if (opt.isEmpty()) { - Iris.warn("Unknown Material: " + type); - return new ItemStack(Material.AIR); - } - ItemStack is = opt.get(); - is.setAmount(Math.max(1, rng.i(getMinAmount(), getMaxAmount()))); - return is; - } - return new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount()))); - } - - private ItemMeta applyProperties(ItemStack is, RNG rng, boolean debug, IrisLootTable table) { - ItemMeta m = is.getItemMeta(); - if (m == null) { - return null; - } - - for (IrisEnchantment i : getEnchantments()) { - i.apply(rng, m); - } - - for (IrisAttributeModifier i : getAttributes()) { - i.apply(rng, m); - } - - m.setUnbreakable(isUnbreakable()); - for (ItemFlag i : getItemFlags()) { - m.addItemFlags(i); - } - - if (getCustomModel() != null) { - CustomModelDataComponent customModelData = m.getCustomModelDataComponent(); - customModelData.setFloats(List.of(getCustomModel().floatValue())); - m.setCustomModelDataComponent(customModelData); - } - - if (is.getType().getMaxDurability() > 0 && m instanceof Damageable d) { - int max = is.getType().getMaxDurability(); - d.setDamage((int) Math.round(Math.max(0, Math.min(max, (1D - rng.d(getMinDurability(), getMaxDurability())) * max)))); - } - - if (getLeatherColor() != null && m instanceof LeatherArmorMeta leather) { - Color c = Color.decode(getLeatherColor()); - leather.setColor(org.bukkit.Color.fromRGB(c.getRed(), c.getGreen(), c.getBlue())); - } - - if (getDyeColor() != null && m instanceof Colorable colorable) { - colorable.setColor(getDyeColor()); - } - - if (displayName != null) { - m.setDisplayName(C.translateAlternateColorCodes('&', displayName)); - } - - KList lore = new KList<>(); - - getLore().forEach((i) -> - { - String mf = C.translateAlternateColorCodes('&', i); - - if (mf.length() > 24) { - for (String g : Form.wrapWords(mf, 24).split("\\Q\n\\E")) { - lore.add(g.trim()); - } - } else { - lore.add(mf); - } - }); - - if (debug) { - if (table == null) { - if (lore.isNotEmpty()) { - lore.add(C.GRAY + "--------------------"); - } - lore.add(C.GRAY + "1 in " + (getRarity()) + " Chance (" + Form.pc(1D / (getRarity()), 5) + ")"); - } else { - if (lore.isNotEmpty()) { - lore.add(C.GRAY + "--------------------"); - } - - lore.add(C.GRAY + "From: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")"); - lore.add(C.GRAY + "1 in " + (table.getRarity() * getRarity()) + " Chance (" + Form.pc(1D / (table.getRarity() * getRarity()), 5) + ")"); - } - } - - m.setLore(lore); - - return m; - } -} +/* + * Iris is a World Generator for Minecraft Bukkit Servers + * Copyright (c) 2022 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 . + */ + +package art.arcane.iris.engine.object; + +import art.arcane.iris.Iris; +import art.arcane.iris.core.link.Identifier; +import art.arcane.iris.core.service.ExternalDataSVC; +import art.arcane.iris.engine.data.cache.AtomicCache; +import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.platform.bukkit.BukkitPlatform; +import art.arcane.iris.spi.IrisLogging; +import art.arcane.volmlib.util.collection.KList; +import art.arcane.volmlib.util.collection.KMap; +import art.arcane.iris.util.common.data.B; +import art.arcane.iris.util.common.format.C; +import art.arcane.volmlib.util.format.Form; +import art.arcane.volmlib.util.math.RNG; +import art.arcane.iris.util.project.noise.CNG; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.LeatherArmorMeta; +import org.bukkit.inventory.meta.components.CustomModelDataComponent; +import org.bukkit.material.Colorable; + +import java.awt.*; +import java.util.List; +import java.util.Optional; + +@Snippet("loot") +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Desc("Represents a loot entry") +@Data +public class IrisLoot { + private final transient AtomicCache chance = new AtomicCache<>(); + @Desc("The target inventory slot types to fill this loot with") + private InventorySlotType slotTypes = InventorySlotType.STORAGE; + @MinNumber(1) + @Desc("The sub rarity of this loot. Calculated after this loot table has been picked.") + private int rarity = 1; + @MinNumber(1) + @Desc("Minimum amount of this loot") + private int minAmount = 1; + @MinNumber(1) + @Desc("Maximum amount of this loot") + private int maxAmount = 1; + @MinNumber(1) + @Desc("The display name of this item") + private String displayName = null; + @MinNumber(0) + @MaxNumber(1) + @Desc("Minimum durability percent") + private double minDurability = 0; + @MinNumber(0) + @MaxNumber(1) + @Desc("Maximum durability percent") + private double maxDurability = 1; + @Desc("Define a custom model identifier 1.14+ only") + private Integer customModel = null; + @Desc("Set this to true to prevent it from being broken") + private boolean unbreakable = false; + @ArrayType(min = 1, type = ItemFlag.class) + @Desc("The item flags to add") + private KList itemFlags = new KList<>(); + @Desc("Apply enchantments to this item") + @ArrayType(min = 1, type = IrisEnchantment.class) + private KList enchantments = new KList<>(); + @Desc("Apply attribute modifiers to this item") + @ArrayType(min = 1, type = IrisAttributeModifier.class) + private KList attributes = new KList<>(); + @ArrayType(min = 1, type = String.class) + @Desc("Add lore to this item") + private KList lore = new KList<>(); + @RegistryListItemType + @Required + @Desc("This is the item or block type. Does not accept minecraft:*, only materials such as DIAMOND_SWORD or DIRT. The exception are modded materials, as they require a namespace.") + private String type = ""; + @Desc("The dye color") + private DyeColor dyeColor = null; + @Desc("The leather armor color") + private String leatherColor = null; + @Desc("Defines a custom NBT Tag for the item.") + private KMap customNbt; + + public Material getType() { + return B.getMaterial(type); + } + + public ItemStack get(boolean debug, RNG rng) { + try { + ItemStack is = getItemStack(rng); + if (is == null) + return new ItemStack(Material.AIR); + is.setItemMeta(applyProperties(is, rng, debug, null)); + return BukkitPlatform.applyCustomNbt(is, customNbt); + } catch (Throwable e) { + IrisLogging.reportError(e); + return new ItemStack(Material.AIR); + } + } + + public ItemStack get(boolean debug, boolean giveSomething, IrisLootTable table, RNG rng, int x, int y, int z) { + if (debug) { + chance.reset(); + } + + if (giveSomething || chance.aquire(() -> NoiseStyle.STATIC.create(rng)).fit(1, rarity * table.getRarity(), x, y, z) == 1) { + try { + ItemStack is = getItemStack(rng); + if (is == null) + return null; + is.setItemMeta(applyProperties(is, rng, debug, table)); + return BukkitPlatform.applyCustomNbt(is, customNbt); + } catch (Throwable e) { + //Iris.reportError(e); + e.printStackTrace(); + } + } + + return null; + } + + // TODO Better Third Party Item Acquisition + private ItemStack getItemStack(RNG rng) { + if (!type.startsWith("minecraft:") && type.contains(":")) { + Optional opt = Iris.service(ExternalDataSVC.class).getItemStack(Identifier.fromString(type), customNbt); + if (opt.isEmpty()) { + IrisLogging.warn("Unknown Material: " + type); + return new ItemStack(Material.AIR); + } + ItemStack is = opt.get(); + is.setAmount(Math.max(1, rng.i(getMinAmount(), getMaxAmount()))); + return is; + } + return new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount()))); + } + + private ItemMeta applyProperties(ItemStack is, RNG rng, boolean debug, IrisLootTable table) { + ItemMeta m = is.getItemMeta(); + if (m == null) { + return null; + } + + for (IrisEnchantment i : getEnchantments()) { + i.apply(rng, m); + } + + for (IrisAttributeModifier i : getAttributes()) { + i.apply(rng, m); + } + + m.setUnbreakable(isUnbreakable()); + for (ItemFlag i : getItemFlags()) { + m.addItemFlags(i); + } + + if (getCustomModel() != null) { + CustomModelDataComponent customModelData = m.getCustomModelDataComponent(); + customModelData.setFloats(List.of(getCustomModel().floatValue())); + m.setCustomModelDataComponent(customModelData); + } + + if (is.getType().getMaxDurability() > 0 && m instanceof Damageable d) { + int max = is.getType().getMaxDurability(); + d.setDamage((int) Math.round(Math.max(0, Math.min(max, (1D - rng.d(getMinDurability(), getMaxDurability())) * max)))); + } + + if (getLeatherColor() != null && m instanceof LeatherArmorMeta leather) { + Color c = Color.decode(getLeatherColor()); + leather.setColor(org.bukkit.Color.fromRGB(c.getRed(), c.getGreen(), c.getBlue())); + } + + if (getDyeColor() != null && m instanceof Colorable colorable) { + colorable.setColor(getDyeColor()); + } + + if (displayName != null) { + m.setDisplayName(C.translateAlternateColorCodes('&', displayName)); + } + + KList lore = new KList<>(); + + getLore().forEach((i) -> + { + String mf = C.translateAlternateColorCodes('&', i); + + if (mf.length() > 24) { + for (String g : Form.wrapWords(mf, 24).split("\\Q\n\\E")) { + lore.add(g.trim()); + } + } else { + lore.add(mf); + } + }); + + if (debug) { + if (table == null) { + if (lore.isNotEmpty()) { + lore.add(C.GRAY + "--------------------"); + } + lore.add(C.GRAY + "1 in " + (getRarity()) + " Chance (" + Form.pc(1D / (getRarity()), 5) + ")"); + } else { + if (lore.isNotEmpty()) { + lore.add(C.GRAY + "--------------------"); + } + + lore.add(C.GRAY + "From: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")"); + lore.add(C.GRAY + "1 in " + (table.getRarity() * getRarity()) + " Chance (" + Form.pc(1D / (table.getRarity() * getRarity()), 5) + ")"); + } + } + + m.setLore(lore); + + return m; + } +} diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisObject.java b/core/src/main/java/art/arcane/iris/engine/object/IrisObject.java index 16d0d7989..292020a9a 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisObject.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisObject.java @@ -19,7 +19,6 @@ package art.arcane.iris.engine.object; import art.arcane.iris.platform.bukkit.BukkitPlatform; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.loader.IrisRegistrant; import art.arcane.iris.engine.data.cache.AtomicCache; @@ -27,6 +26,7 @@ import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.framework.PlacedObject; import art.arcane.iris.engine.framework.placer.HeightmapObjectPlacer; import art.arcane.iris.platform.bukkit.BukkitBlockState; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; @@ -193,7 +193,7 @@ public class IrisObject extends IrisRegistrant { AtomicInteger applied = new AtomicInteger(); if (blocks.isEmpty()) { writeLock.unlock(); - Iris.warn("Cannot Smart Bore " + getLoadKey() + " because it has 0 blocks in it."); + IrisLogging.warn("Cannot Smart Bore " + getLoadKey() + " because it has 0 blocks in it."); smartBored = true; return; } @@ -302,7 +302,7 @@ public class IrisObject extends IrisRegistrant { burst.complete(); smartBored = true; writeLock.unlock(); - Iris.debug("Smart Bore: " + getLoadKey() + " in " + Form.duration(p.getMilliseconds(), 2) + " (" + Form.f(applied.get()) + ")"); + IrisLogging.debug("Smart Bore: " + getLoadKey() + " in " + Form.duration(p.getMilliseconds(), 2) + " (" + Form.f(applied.get()) + ")"); } public synchronized IrisObject copy() { @@ -345,7 +345,7 @@ public class IrisObject extends IrisRegistrant { states.put(new Vector3i(din.readShort(), din.readShort(), din.readShort()), TileData.read(din)); } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -519,7 +519,7 @@ public class IrisObject extends IrisRegistrant { read(fin); } catch (Throwable e) { if (!(e instanceof HeaderException)) - Iris.reportError(e); + IrisLogging.reportError(e); try (var fin = new BufferedInputStream(new FileInputStream(file))) { readLegacy(fin); } @@ -642,7 +642,7 @@ public class IrisObject extends IrisRegistrant { blocks.put(v, BukkitBlockState.of(data)); TileData state = TileData.getTileState(block, legacy); if (state != null) { - Iris.debug("Saved State " + v); + IrisLogging.debug("Saved State " + v); states.put(v, state); } } @@ -1032,13 +1032,13 @@ public class IrisObject extends IrisRegistrant { d = entry.getValue(); tile = states.get(g); } catch (Throwable e) { - Iris.reportError(e); - Iris.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (cme)"); + IrisLogging.reportError(e); + IrisLogging.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (cme)"); d = AIR; } if (d == null) { - Iris.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (null)"); + IrisLogging.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (null)"); d = AIR; } @@ -1170,7 +1170,7 @@ public class IrisObject extends IrisRegistrant { } } catch (Throwable e) { e.printStackTrace(); - Iris.reportError(e); + IrisLogging.reportError(e); } readLock.unlock(); @@ -1221,13 +1221,13 @@ public class IrisObject extends IrisRegistrant { try { sourceData = blocks.get(g); } catch (Throwable e) { - Iris.reportError(e); - Iris.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (stilt cme)"); + IrisLogging.reportError(e); + IrisLogging.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (stilt cme)"); sourceData = AIR; } if (sourceData == null) { - Iris.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (stilt null)"); + IrisLogging.warn("Failed to read block node " + g.getBlockX() + "," + g.getBlockY() + "," + g.getBlockZ() + " in object " + getLoadKey() + " (stilt null)"); sourceData = AIR; } @@ -1446,7 +1446,7 @@ public class IrisObject extends IrisRegistrant { return; } IMPLAUSIBLE_BEDROCK_WARNS.put(fingerprint, now); - Iris.warn("Implausible object placement rejected: " + IrisLogging.warn("Implausible object placement rejected: " + (key == null ? "" : key) + " resolved anchorY=" + y + " at (" + x + "," + z + ") mode=" + config.getMode() + " carving=" + config.getCarvingSupport() @@ -1606,7 +1606,7 @@ public class IrisObject extends IrisRegistrant { b.setBlockData((BlockData) Objects.requireNonNull(entry.getValue()).nativeHandle(), false); if (states.containsKey(i)) { - Iris.info(Objects.requireNonNull(states.get(i)).toString()); + IrisLogging.info(Objects.requireNonNull(states.get(i)).toString()); Objects.requireNonNull(states.get(i)).toBukkitTry(b); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisObjectPlacement.java b/core/src/main/java/art/arcane/iris/engine/object/IrisObjectPlacement.java index 799983b39..4221fb4b5 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisObjectPlacement.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisObjectPlacement.java @@ -18,11 +18,11 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; @@ -267,7 +267,7 @@ public class IrisObjectPlacement { continue; IrisLootTable table = loader.apply(loot.getName()); if (table == null) { - Iris.warn("Couldn't find loot table " + loot.getName()); + IrisLogging.warn("Couldn't find loot table " + loot.getName()); continue; } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisObjectRotation.java b/core/src/main/java/art/arcane/iris/engine/object/IrisObjectRotation.java index e130fa428..2ce95a1c2 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisObjectRotation.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisObjectRotation.java @@ -19,10 +19,10 @@ package art.arcane.iris.engine.object; import art.arcane.iris.platform.bukkit.BukkitPlatform; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.annotations.Desc; import art.arcane.iris.engine.object.annotations.Snippet; import art.arcane.iris.platform.bukkit.BukkitBlockState; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; @@ -352,7 +352,7 @@ public class IrisObjectRotation { } } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisPotionEffect.java b/core/src/main/java/art/arcane/iris/engine/object/IrisPotionEffect.java index 0a106e663..a1af9fa2a 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisPotionEffect.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisPotionEffect.java @@ -18,9 +18,9 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -69,11 +69,11 @@ public class IrisPotionEffect { return resolved; } } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } if (PotionEffectTypes.shouldWarn(getPotionEffect())) { - Iris.warn("Unknown Potion Effect Type: \"" + getPotionEffect() + "\". Valid types: " + PotionEffectTypes.knownTypesList()); + IrisLogging.warn("Unknown Potion Effect Type: \"" + getPotionEffect() + "\". Valid types: " + PotionEffectTypes.knownTypesList()); } return PotionEffectType.LUCK; diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java b/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java index a44edf1e4..b95e70710 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java @@ -27,6 +27,7 @@ import art.arcane.iris.engine.object.annotations.MinNumber; import art.arcane.iris.engine.object.annotations.Required; import art.arcane.iris.engine.object.annotations.Snippet; import art.arcane.iris.engine.object.tree.ProceduralTreeGenerator; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.math.RNG; import lombok.AllArgsConstructor; @@ -286,7 +287,7 @@ public class IrisProceduralTree implements IrisProceduralPlacement { long position = ((long) vector.getBlockX() << 40) ^ ((long) vector.getBlockY() << 20) ^ vector.getBlockZ(); digest[0] ^= Long.rotateLeft(position * 0x9E3779B97F4A7C15L ^ state.key().hashCode(), (int) (position & 63)); }); - art.arcane.iris.Iris.info("Goldendebug bake: " + object.getLoadKey() + " blocks=" + object.getBlocks().size() + " digest=" + Long.toHexString(digest[0])); + IrisLogging.info("Goldendebug bake: " + object.getLoadKey() + " blocks=" + object.getBlocks().size() + " digest=" + Long.toHexString(digest[0])); } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisRegion.java b/core/src/main/java/art/arcane/iris/engine/object/IrisRegion.java index 0803ba363..8299223b8 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisRegion.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisRegion.java @@ -18,9 +18,9 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.gui.components.RenderType; import art.arcane.iris.core.loader.IrisData; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.iris.core.loader.IrisRegistrant; import art.arcane.iris.engine.data.cache.AtomicCache; @@ -442,14 +442,14 @@ public class IrisRegion extends IrisRegistrant implements IRare { biomes.remove(index); } - Iris.warn("Couldn't find a suitable color for region " + getName()); + IrisLogging.warn("Couldn't find a suitable color for region " + getName()); return new Color(new RandomColor(rand).randomColor()); } try { return Color.decode(this.color); } catch (NumberFormatException e) { - Iris.warn("Could not parse color \"" + this.color + "\" for region " + getName()); + IrisLogging.warn("Could not parse color \"" + this.color + "\" for region " + getName()); return Color.WHITE; } }); diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisVillagerTrade.java b/core/src/main/java/art/arcane/iris/engine/object/IrisVillagerTrade.java index 4e3daac8e..dc0cba68e 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisVillagerTrade.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisVillagerTrade.java @@ -19,8 +19,8 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.math.RNG; import lombok.AllArgsConstructor; @@ -111,8 +111,8 @@ public class IrisVillagerTrade { if (warnings.isEmpty()) { return true; } else { - Iris.warn("Faulty item in cartographer item overrides: " + this); - warnings.forEach(w -> Iris.warn(" " + w)); + IrisLogging.warn("Faulty item in cartographer item overrides: " + this); + warnings.forEach(w -> IrisLogging.warn(" " + w)); return false; } } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisWorld.java b/core/src/main/java/art/arcane/iris/engine/object/IrisWorld.java index 7c1679194..370515381 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisWorld.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisWorld.java @@ -18,8 +18,8 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.Iris; import art.arcane.iris.core.tools.IrisToolbelt; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import lombok.*; import lombok.experimental.Accessors; @@ -127,7 +127,7 @@ public class IrisWorld { return realWorld().getSpawnLocation(); } - Iris.error("This world is not real yet, cannot get spawn location! HEADLESS!"); + IrisLogging.error("This world is not real yet, cannot get spawn location! HEADLESS!"); return null; } diff --git a/core/src/main/java/art/arcane/iris/engine/object/TileData.java b/core/src/main/java/art/arcane/iris/engine/object/TileData.java index 74108393c..7e6d34d2f 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/TileData.java +++ b/core/src/main/java/art/arcane/iris/engine/object/TileData.java @@ -18,10 +18,10 @@ package art.arcane.iris.engine.object; +import art.arcane.iris.spi.IrisLogging; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.Strictness; -import art.arcane.iris.Iris; import art.arcane.iris.platform.bukkit.BukkitPlatform; import art.arcane.iris.util.common.reflect.KeyedType; import art.arcane.volmlib.util.collection.KMap; @@ -108,7 +108,7 @@ public class TileData implements Cloneable { toBukkit(block); return true; } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } return false; @@ -120,7 +120,7 @@ public class TileData implements Cloneable { fromBukkit(block); return true; } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } diff --git a/core/src/main/java/art/arcane/iris/engine/platform/BukkitChunkGenerator.java b/core/src/main/java/art/arcane/iris/engine/platform/BukkitChunkGenerator.java index 042b7e000..7d7c80753 100644 --- a/core/src/main/java/art/arcane/iris/engine/platform/BukkitChunkGenerator.java +++ b/core/src/main/java/art/arcane/iris/engine/platform/BukkitChunkGenerator.java @@ -37,6 +37,7 @@ import art.arcane.iris.engine.object.VanillaStructureMode; import art.arcane.iris.engine.object.IrisWorld; import art.arcane.iris.engine.object.StudioMode; import art.arcane.iris.engine.platform.studio.StudioGenerator; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBiome; import art.arcane.volmlib.util.collection.KList; import art.arcane.iris.util.project.hunk.Hunk; @@ -130,10 +131,10 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun world.setRawWorldSeed(event.getWorld().getSeed()); if (initialize(event.getWorld())) return; - Iris.warn("Failed to get Engine for " + event.getWorld().getName() + " re-trying..."); + IrisLogging.warn("Failed to get Engine for " + event.getWorld().getName() + " re-trying..."); J.s(() -> { if (!initialize(event.getWorld())) { - Iris.error("Failed to get Engine for " + event.getWorld().getName() + "!"); + IrisLogging.error("Failed to get Engine for " + event.getWorld().getName() + "!"); } }, 10); } @@ -143,13 +144,13 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun if (engine == null) return false; try { INMS.get().inject(world.getSeed(), engine, world); - Iris.debug("Injected Iris Biome Source into " + world.getName()); + IrisLogging.debug("Injected Iris Biome Source into " + world.getName()); if (!studio) { J.s(() -> updateSpawnLocation(world), 1); } } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Failed to inject biome source into " + world.getName()); + IrisLogging.reportError(e); + IrisLogging.error("Failed to inject biome source into " + world.getName()); e.printStackTrace(); } spawnChunks.complete(INMS.get().getSpawnChunkCount(world)); @@ -240,23 +241,23 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun IrisDimension dimension = data.getDimensionLoader().load(dimensionKey); if (dimension == null) { - Iris.error("Oh No! There's no pack in " + data.getDataFolder().getPath() + " or... there's no dimension for the key " + dimensionKey); + IrisLogging.error("Oh No! There's no pack in " + data.getDataFolder().getPath() + " or... there's no dimension for the key " + dimensionKey); IrisDimension test = IrisData.loadAnyDimension(dimensionKey, null); if (test != null) { - Iris.warn("Looks like " + dimensionKey + " exists in " + test.getLoadFile().getPath() + " "); + IrisLogging.warn("Looks like " + dimensionKey + " exists in " + test.getLoadFile().getPath() + " "); test = Iris.service(StudioSVC.class).installInto(Iris.getSender(), dimensionKey, dataLocation); - Iris.warn("Attempted to install into " + data.getDataFolder().getPath()); + IrisLogging.warn("Attempted to install into " + data.getDataFolder().getPath()); if (test != null) { Iris.success("Woo! Patched the Engine!"); dimension = test; } else { - Iris.error("Failed to patch dimension!"); + IrisLogging.error("Failed to patch dimension!"); throw new RuntimeException("Missing Dimension: " + dimensionKey); } } else { - Iris.error("Nope, you don't have an installation containing " + dimensionKey + " try downloading it?"); + IrisLogging.error("Nope, you don't have an installation containing " + dimensionKey + " try downloading it?"); throw new RuntimeException("Missing Dimension: " + dimensionKey); } } @@ -330,7 +331,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun activeHotloader.join(1000L); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - Iris.reportError(e); + IrisLogging.reportError(e); } } @@ -375,7 +376,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun r.run(); loadLock.release(LOAD_LOCKS); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } }); } @@ -422,16 +423,16 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun blocks.apply(); } - Iris.debug("Generated " + x + " " + z); + IrisLogging.debug("Generated " + x + " " + z); } catch (GenerationSessionException e) { if (closing || isExpectedTeardown(engine, e)) { return; } - Iris.error("======================================"); + IrisLogging.error("======================================"); e.printStackTrace(); Iris.reportErrorChunk(x, z, e, "CHUNK"); - Iris.error("======================================"); + IrisLogging.error("======================================"); for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { @@ -439,10 +440,10 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun } } } catch (Throwable e) { - Iris.error("======================================"); + IrisLogging.error("======================================"); e.printStackTrace(); Iris.reportErrorChunk(x, z, e, "CHUNK"); - Iris.error("======================================"); + IrisLogging.error("======================================"); for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { diff --git a/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java b/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java index eb6a3bc32..3285f6ec2 100644 --- a/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java +++ b/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java @@ -18,7 +18,6 @@ package art.arcane.iris.engine.platform.studio.generators; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.runtime.ObjectStudioActivation; import art.arcane.iris.core.runtime.ObjectStudioLayout; @@ -31,6 +30,7 @@ import art.arcane.iris.engine.object.IrisObject; import art.arcane.iris.engine.platform.studio.EnginedStudioGenerator; import art.arcane.iris.platform.bukkit.BukkitBiome; import art.arcane.iris.platform.bukkit.BukkitBlockState; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBiome; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.iris.util.common.data.VectorMap; @@ -253,12 +253,12 @@ public class ObjectStudioGenerator extends EnginedStudioGenerator { try { ObjectStudioSaveService.get().register(engine, this); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } int cellCount = layout.cells().size(); BlockVector worldExtent = computeExtent(layout); - Iris.info("Object Studio layout built: %d cells from %d pack(s), extent %d x %d blocks", + IrisLogging.info("Object Studio layout built: %d cells from %d pack(s), extent %d x %d blocks", cellCount, sources.size(), worldExtent.getBlockX(), worldExtent.getBlockZ()); } } diff --git a/core/src/main/java/art/arcane/iris/platform/bukkit/BukkitPlatform.java b/core/src/main/java/art/arcane/iris/platform/bukkit/BukkitPlatform.java index c20a291da..08a2e44d6 100644 --- a/core/src/main/java/art/arcane/iris/platform/bukkit/BukkitPlatform.java +++ b/core/src/main/java/art/arcane/iris/platform/bukkit/BukkitPlatform.java @@ -183,6 +183,11 @@ public final class BukkitPlatform implements IrisPlatform { } } + @Override + public void reportError(Throwable error) { + Iris.reportError(error); + } + private static final class BukkitCapabilities implements PlatformCapabilities { @Override public boolean customBiomes() { diff --git a/core/src/main/java/art/arcane/iris/util/project/agent/Agent.java b/core/src/main/java/art/arcane/iris/util/project/agent/Agent.java index 8c61abde1..552c149e2 100644 --- a/core/src/main/java/art/arcane/iris/util/project/agent/Agent.java +++ b/core/src/main/java/art/arcane/iris/util/project/agent/Agent.java @@ -1,6 +1,7 @@ package art.arcane.iris.util.project.agent; import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import net.bytebuddy.agent.ByteBuddyAgent; import net.bytebuddy.dynamic.loading.ClassReloadingStrategy; @@ -36,12 +37,12 @@ public class Agent { return false; try { - Iris.info("Installing Java Agent..."); - Iris.info("Note: JVM [Attach Listener/ERROR] [STDERR] warning lines during this step are expected and not Iris errors."); + IrisLogging.info("Installing Java Agent..."); + IrisLogging.info("Note: JVM [Attach Listener/ERROR] [STDERR] warning lines during this step are expected and not Iris errors."); ByteBuddyAgent.attach(AGENT_JAR, ByteBuddyAgent.ProcessProvider.ForCurrentVm.INSTANCE); } catch (Throwable e) { - Iris.error("Failed to install Java Agent: " + e.getMessage()); - Iris.reportError(e); + IrisLogging.error("Failed to install Java Agent: " + e.getMessage()); + IrisLogging.reportError(e); } return doGetInstrumentation() != null; } @@ -49,26 +50,26 @@ public class Agent { private static boolean ensureAgentJar() { File parent = AGENT_JAR.getParentFile(); if (parent != null && !parent.exists() && !parent.mkdirs() && !parent.exists()) { - Iris.error("Failed to create Iris plugin data folder for Java agent: " + parent.getAbsolutePath()); + IrisLogging.error("Failed to create Iris plugin data folder for Java agent: " + parent.getAbsolutePath()); return false; } try (InputStream in = openBundledAgentJar()) { if (in == null) { if (AGENT_JAR.isFile() && AGENT_JAR.length() > 0) { - Iris.warn("Bundled agent.jar not found in Iris plugin jar. Reusing existing " + AGENT_JAR.getAbsolutePath()); + IrisLogging.warn("Bundled agent.jar not found in Iris plugin jar. Reusing existing " + AGENT_JAR.getAbsolutePath()); return true; } - Iris.error("Bundled agent.jar was not found in Iris plugin jar. Rebuild/deploy Iris with embedded agent.jar."); + IrisLogging.error("Bundled agent.jar was not found in Iris plugin jar. Rebuild/deploy Iris with embedded agent.jar."); return false; } Files.copy(in, AGENT_JAR.toPath(), StandardCopyOption.REPLACE_EXISTING); return true; } catch (Throwable e) { - Iris.error("Failed to prepare Java agent jar: " + e.getMessage()); - Iris.reportError(e); + IrisLogging.error("Failed to prepare Java agent jar: " + e.getMessage()); + IrisLogging.reportError(e); return false; } } diff --git a/core/src/main/java/art/arcane/iris/util/project/context/IrisContext.java b/core/src/main/java/art/arcane/iris/util/project/context/IrisContext.java index 8f024d918..a1d8c1f7c 100644 --- a/core/src/main/java/art/arcane/iris/util/project/context/IrisContext.java +++ b/core/src/main/java/art/arcane/iris/util/project/context/IrisContext.java @@ -18,10 +18,10 @@ package art.arcane.iris.util.project.context; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.IrisComplex; import art.arcane.iris.engine.framework.Engine; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.scheduling.ChronoLatch; import lombok.Data; @@ -76,7 +76,7 @@ public class IrisContext { } if (!thread.isAlive() || context.engine.isClosed()) { - Iris.debug("Dereferenced Context " + thread.getName() + " " + thread.threadId()); + IrisLogging.debug("Dereferenced Context " + thread.getName() + " " + thread.threadId()); it.remove(); } } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/Hunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/Hunk.java index b34e86ec7..70b1eb020 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/Hunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/Hunk.java @@ -18,9 +18,9 @@ package art.arcane.iris.util.project.hunk; -import art.arcane.iris.Iris; import art.arcane.iris.engine.data.chunk.TerrainChunk; import art.arcane.iris.engine.object.IrisPosition; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.function.*; import art.arcane.volmlib.util.hunk.HunkComputeSupport; import art.arcane.volmlib.util.hunk.HunkCoreSupport; @@ -991,7 +991,7 @@ public interface Hunk extends HunkLike { */ default void set(int x, int y, int z, T t) { if (!contains(x, y, z)) { - Iris.warn("OUT OF BOUNDS " + x + " " + y + " " + z + " in bounds " + getWidth() + " " + getHeight() + " " + getDepth()); + IrisLogging.warn("OUT OF BOUNDS " + x + " " + y + " " + z + " in bounds " + getWidth() + " " + getHeight() + " " + getDepth()); return; } diff --git a/core/src/main/java/art/arcane/iris/util/project/matter/IrisMatterSupport.java b/core/src/main/java/art/arcane/iris/util/project/matter/IrisMatterSupport.java index 04c5e5bf9..09db2fde6 100644 --- a/core/src/main/java/art/arcane/iris/util/project/matter/IrisMatterSupport.java +++ b/core/src/main/java/art/arcane/iris/util/project/matter/IrisMatterSupport.java @@ -18,9 +18,9 @@ package art.arcane.iris.util.project.matter; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.IrisObject; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.util.project.matter.slices.EntityMatter; import art.arcane.iris.util.project.matter.slices.IdentifierMatter; import art.arcane.iris.util.project.matter.slices.SpawnerMatter; @@ -90,9 +90,9 @@ public final class IrisMatterSupport { long oldSize = folder.length(); object.read(folder); from(object).write(folder); - Iris.info("Converted " + folder.getPath() + " Saved " + (oldSize - folder.length())); + IrisLogging.info("Converted " + folder.getPath() + " Saved " + (oldSize - folder.length())); } catch (Throwable e) { - Iris.error("Failed to convert " + folder.getPath()); + IrisLogging.error("Failed to convert " + folder.getPath()); e.printStackTrace(); } diff --git a/core/src/main/java/art/arcane/iris/util/project/matter/WorldMatter.java b/core/src/main/java/art/arcane/iris/util/project/matter/WorldMatter.java index 46417b742..594318b35 100644 --- a/core/src/main/java/art/arcane/iris/util/project/matter/WorldMatter.java +++ b/core/src/main/java/art/arcane/iris/util/project/matter/WorldMatter.java @@ -18,8 +18,8 @@ package art.arcane.iris.util.project.matter; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.TileData; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.data.Cuboid; import art.arcane.volmlib.util.matter.IrisMatter; import art.arcane.volmlib.util.matter.Matter; @@ -47,7 +47,7 @@ public class WorldMatter { IrisMatterSupport.ensureRegistered(); Cuboid c = new Cuboid(a, b); Matter s = new IrisMatter(c.getSizeX(), c.getSizeY(), c.getSizeZ()); - Iris.info(s.getWidth() + " " + s.getHeight() + " " + s.getDepth()); + IrisLogging.info(s.getWidth() + " " + s.getHeight() + " " + s.getDepth()); s.getHeader().setAuthor(author); s.slice(BlockData.class).readFrom(c.getLowerNE()); s.slice(MatterEntityGroup.class).readFrom(c.getLowerNE()); diff --git a/core/src/main/java/art/arcane/iris/util/project/noise/CNG.java b/core/src/main/java/art/arcane/iris/util/project/noise/CNG.java index 4bc6180f0..fe5429175 100644 --- a/core/src/main/java/art/arcane/iris/util/project/noise/CNG.java +++ b/core/src/main/java/art/arcane/iris/util/project/noise/CNG.java @@ -18,9 +18,9 @@ package art.arcane.iris.util.project.noise; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.IRare; import art.arcane.iris.engine.object.NoiseStyle; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.cache.FloatCache; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.format.Form; @@ -286,7 +286,7 @@ public class CNG { fbc.writeCache(dos); dos.close(); if (!quiet) { - Iris.info("Saved Noise Cache " + f.getName()); + IrisLogging.info("Saved Noise Cache " + f.getName()); } } catch (IOException e) { throw new RuntimeException(e); @@ -509,7 +509,7 @@ public class CNG { try { return values.get(fit2D(0, values.size() - 1, x, z)); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } return values.get(0); @@ -548,7 +548,7 @@ public class CNG { try { return v.get(fit(0, v.size() - 1, dim)); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } return v.get(0); diff --git a/core/src/main/java/art/arcane/iris/util/project/stream/ProceduralStream.java b/core/src/main/java/art/arcane/iris/util/project/stream/ProceduralStream.java index 7bface313..d933f590a 100644 --- a/core/src/main/java/art/arcane/iris/util/project/stream/ProceduralStream.java +++ b/core/src/main/java/art/arcane/iris/util/project/stream/ProceduralStream.java @@ -18,12 +18,12 @@ package art.arcane.iris.util.project.stream; -import art.arcane.iris.Iris; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.Cache; import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.object.IRare; import art.arcane.iris.engine.object.IrisStyledRange; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.stream.ProceduralLayer; import art.arcane.volmlib.util.stream.Significance; @@ -51,8 +51,8 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated { try { return of(f, Interpolated.DOUBLE); } catch (IncompatibleClassChangeError e) { - Iris.warn(f.toString()); - Iris.reportError(e); + IrisLogging.warn(f.toString()); + IrisLogging.reportError(e); e.printStackTrace(); return null; } diff --git a/core/src/main/java/art/arcane/iris/util/project/stream/interpolation/Interpolated.java b/core/src/main/java/art/arcane/iris/util/project/stream/interpolation/Interpolated.java index 1050f1828..0fcd6fd27 100644 --- a/core/src/main/java/art/arcane/iris/util/project/stream/interpolation/Interpolated.java +++ b/core/src/main/java/art/arcane/iris/util/project/stream/interpolation/Interpolated.java @@ -18,8 +18,8 @@ package art.arcane.iris.util.project.stream.interpolation; -import art.arcane.iris.Iris; import art.arcane.iris.engine.object.CaveResult; +import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.PlatformBlockState; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.math.RNG; @@ -62,7 +62,7 @@ public interface Interpolated { return new InterpolatorFactory<>((ProceduralStream) this); } - Iris.warn("Cannot interpolate " + this.getClass().getCanonicalName() + "!"); + IrisLogging.warn("Cannot interpolate " + this.getClass().getCanonicalName() + "!"); return null; } } diff --git a/core/src/main/java/art/arcane/iris/util/project/stream/utility/ProfiledStream.java b/core/src/main/java/art/arcane/iris/util/project/stream/utility/ProfiledStream.java index eba3a194c..c22f73bac 100644 --- a/core/src/main/java/art/arcane/iris/util/project/stream/utility/ProfiledStream.java +++ b/core/src/main/java/art/arcane/iris/util/project/stream/utility/ProfiledStream.java @@ -18,7 +18,7 @@ package art.arcane.iris.util.project.stream.utility; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.format.Form; import art.arcane.volmlib.util.math.RollingSequence; @@ -133,7 +133,7 @@ public class ProfiledStream extends BasicStream { try { metrics.put(p.getMilliseconds()); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } return t; @@ -146,7 +146,7 @@ public class ProfiledStream extends BasicStream { try { metrics.put(p.getMilliseconds()); } catch (Throwable e) { - Iris.reportError(e); + IrisLogging.reportError(e); } return t; diff --git a/core/src/main/java/art/arcane/iris/util/project/stream/utility/WasteDetector.java b/core/src/main/java/art/arcane/iris/util/project/stream/utility/WasteDetector.java index a6b0cec6f..74b351e37 100644 --- a/core/src/main/java/art/arcane/iris/util/project/stream/utility/WasteDetector.java +++ b/core/src/main/java/art/arcane/iris/util/project/stream/utility/WasteDetector.java @@ -1,6 +1,6 @@ package art.arcane.iris.util.project.stream.utility; -import art.arcane.iris.Iris; +import art.arcane.iris.spi.IrisLogging; import art.arcane.volmlib.util.collection.KList; import art.arcane.volmlib.util.collection.KMap; import art.arcane.iris.util.project.stream.BasicStream; @@ -23,19 +23,19 @@ public class WasteDetector extends BasicStream { public static void printAll() { if (checking) { - Iris.warn("========================================================="); + IrisLogging.warn("========================================================="); for (String i : allAccesses.sortKNumber().reverse()) { - Iris.warn(i + ": " + allAccesses.get(i) + " Time(s)"); + IrisLogging.warn(i + ": " + allAccesses.get(i) + " Time(s)"); } - Iris.warn("========================================================="); + IrisLogging.warn("========================================================="); for (String i : allAccesses.sortKNumber().reverse()) { - Iris.warn("======== " + i + " ========"); + IrisLogging.warn("======== " + i + " ========"); for (Throwable j : allThrows.get(i)) { j.printStackTrace(); } - Iris.warn("---------------------------------------------------------"); + IrisLogging.warn("---------------------------------------------------------"); } - Iris.warn("========================================================="); + IrisLogging.warn("========================================================="); } } diff --git a/spi/src/main/java/art/arcane/iris/spi/IrisLogging.java b/spi/src/main/java/art/arcane/iris/spi/IrisLogging.java new file mode 100644 index 000000000..36663389a --- /dev/null +++ b/spi/src/main/java/art/arcane/iris/spi/IrisLogging.java @@ -0,0 +1,79 @@ +/* + * Iris is a World Generator for Minecraft Bukkit Servers + * Copyright (c) 2026 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 . + */ + +package art.arcane.iris.spi; + +import java.util.IllegalFormatException; + +public final class IrisLogging { + private IrisLogging() { + } + + public static void info(String format, Object... args) { + emit(LogLevel.INFO, safeFormat(format, args)); + } + + public static void debug(String message) { + emit(LogLevel.DEBUG, message); + } + + public static void warn(String format, Object... args) { + emit(LogLevel.WARN, safeFormat(format, args)); + } + + public static void error(String format, Object... args) { + emit(LogLevel.ERROR, safeFormat(format, args)); + } + + public static void reportError(Throwable error) { + if (IrisPlatforms.isBound()) { + IrisPlatforms.get().reportError(error); + return; + } + + if (error != null) { + System.out.println("[Iris/ERROR] " + error.getClass().getName() + (error.getMessage() == null ? "" : ": " + error.getMessage())); + error.printStackTrace(System.out); + } + } + + private static void emit(LogLevel level, String message) { + if (IrisPlatforms.isBound()) { + IrisPlatforms.get().log(level, message); + return; + } + + System.out.println("[Iris/" + level + "] " + message); + } + + private static String safeFormat(String format, Object... args) { + if (format == null) { + return "null"; + } + + if (args == null || args.length == 0) { + return format; + } + + try { + return String.format(format, args); + } catch (IllegalFormatException ignored) { + return format; + } + } +} diff --git a/spi/src/main/java/art/arcane/iris/spi/IrisPlatform.java b/spi/src/main/java/art/arcane/iris/spi/IrisPlatform.java index 8a341f7b6..8feb60139 100644 --- a/spi/src/main/java/art/arcane/iris/spi/IrisPlatform.java +++ b/spi/src/main/java/art/arcane/iris/spi/IrisPlatform.java @@ -43,4 +43,6 @@ public interface IrisPlatform { void dispatchConsoleCommand(String command); void log(LogLevel level, String message); + + void reportError(Throwable error); }