From 19403099546c35edc9479c09ebc283f38a9a98bd Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 6 Dec 2020 02:47:14 -0700 Subject: [PATCH] Remove singleton getter --- src/main/java/com/dfsek/terra/Terra.java | 16 ++++++---------- .../com/dfsek/terra/async/AsyncBiomeFinder.java | 5 +++-- .../dfsek/terra/async/AsyncFeatureFinder.java | 8 +++++--- .../dfsek/terra/async/AsyncStructureFinder.java | 5 +++-- .../terra/command/biome/BiomeLocateCommand.java | 7 +++---- .../dfsek/terra/command/image/RenderCommand.java | 3 +-- .../terra/command/structure/ExportCommand.java | 3 +-- .../terra/command/structure/LocateCommand.java | 7 +++---- .../command/structure/load/LoadCommand.java | 5 ++--- .../command/structure/load/LoadFullCommand.java | 8 +++----- .../command/structure/load/LoadRawCommand.java | 8 +++----- .../com/dfsek/terra/config/lang/LangUtil.java | 2 +- .../config/loaders/config/TreeLayerLoader.java | 11 +++++++++-- src/main/java/com/dfsek/terra/debug/Debug.java | 15 ++++++++------- .../terra/generation/TerraChunkGenerator.java | 7 ++++--- .../terra/generation/items/tree/TreeLayer.java | 10 ++++++---- .../dfsek/terra/listeners/SpigotListener.java | 4 ++-- .../java/com/dfsek/terra/util/ConfigUtil.java | 9 ++++++++- 18 files changed, 71 insertions(+), 62 deletions(-) diff --git a/src/main/java/com/dfsek/terra/Terra.java b/src/main/java/com/dfsek/terra/Terra.java index 35cf1028d..0a4d32230 100644 --- a/src/main/java/com/dfsek/terra/Terra.java +++ b/src/main/java/com/dfsek/terra/Terra.java @@ -10,6 +10,7 @@ import com.dfsek.terra.generation.TerraChunkGenerator; import com.dfsek.terra.listeners.EventListener; import com.dfsek.terra.listeners.SpigotListener; import com.dfsek.terra.registry.ConfigRegistry; +import com.dfsek.terra.util.ConfigUtil; import com.dfsek.terra.util.PaperUtil; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -27,23 +28,18 @@ import java.util.Objects; public class Terra extends GaeaPlugin { - private static Terra instance; private final Map generatorMap = new HashMap<>(); - public static Terra getInstance() { - return instance; - } - @Override public void onDisable() { TerraChunkGenerator.saveAll(); } - @SuppressWarnings("deprecation") @Override public void onEnable() { - Debug.setMain(this); // Set debug logger. - instance = this; // Singleton B) + Debug.setLogger(getLogger()); // Set debug logger. + ConfigUtil.setMain(this); // Set ConfigLoader's instance for use in some loaders + saveDefaultConfig(); @@ -68,7 +64,7 @@ public class Terra extends GaeaPlugin { long save = PluginConfig.getDataSaveInterval(); - Bukkit.getScheduler().scheduleAsyncRepeatingTask(this, TerraChunkGenerator::saveAll, save, save); // Schedule population data saving + Bukkit.getScheduler().runTaskTimerAsynchronously(this, TerraChunkGenerator::saveAll, save, save); // Schedule population data saving Bukkit.getPluginManager().registerEvents(new EventListener(this), this); // Register master event listener Bukkit.getPluginManager().registerEvents(new SpigotListener(this), this); // Register Spigot event listener, once Paper accepts StructureLocateEvent PR Spigot and Paper events will be separate. @@ -81,7 +77,7 @@ public class Terra extends GaeaPlugin { return generatorMap.computeIfAbsent(worldName, name -> { WorldConfig c = new WorldConfig(worldName, id, this); TerraWorld.loadWorld(c); - return new TerraChunkGenerator(c.getConfig()); + return new TerraChunkGenerator(c.getConfig(), this); }); } diff --git a/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java b/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java index 275f2cb6a..464a2d334 100644 --- a/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java +++ b/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java @@ -5,6 +5,7 @@ import com.dfsek.terra.config.base.PluginConfig; import org.bukkit.Location; import org.bukkit.util.Vector; import org.jetbrains.annotations.NotNull; +import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.biome.Biome; import org.polydev.gaea.generation.GenerationPhase; @@ -15,8 +16,8 @@ import java.util.function.Consumer; */ public class AsyncBiomeFinder extends AsyncFeatureFinder { - public AsyncBiomeFinder(TerraBiomeGrid grid, Biome target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback) { - super(grid, target, origin, startRadius, maxRadius, callback); + public AsyncBiomeFinder(TerraBiomeGrid grid, Biome target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, GaeaPlugin main) { + super(grid, target, origin, startRadius, maxRadius, callback, main); } /** diff --git a/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java b/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java index 562382f7d..84ca11047 100644 --- a/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java +++ b/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java @@ -1,12 +1,12 @@ package com.dfsek.terra.async; -import com.dfsek.terra.Terra; import com.dfsek.terra.biome.grid.TerraBiomeGrid; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.util.Vector; import org.jetbrains.annotations.NotNull; +import org.polydev.gaea.GaeaPlugin; import java.util.function.Consumer; @@ -20,10 +20,12 @@ public abstract class AsyncFeatureFinder implements Runnable { protected final World world; private final Consumer callback; protected int searchSize = 1; + protected final GaeaPlugin main; - public AsyncFeatureFinder(TerraBiomeGrid grid, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback) { + public AsyncFeatureFinder(TerraBiomeGrid grid, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, GaeaPlugin main) { this.grid = grid; this.target = target; + this.main = main; this.startRadius = startRadius; this.maxRadius = maxRadius; this.centerX = origin.getBlockX(); @@ -66,7 +68,7 @@ public abstract class AsyncFeatureFinder implements Runnable { toggle = !toggle; } Vector finalSpawn = found ? finalizeVector(new Vector(x, 0, z)) : null; - Bukkit.getScheduler().runTask(Terra.getInstance(), () -> callback.accept(finalSpawn)); + Bukkit.getScheduler().runTask(main, () -> callback.accept(finalSpawn)); } diff --git a/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java b/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java index bda8bf6c5..506150ab2 100644 --- a/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java +++ b/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java @@ -10,6 +10,7 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.util.Vector; import org.jetbrains.annotations.NotNull; +import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.util.FastRandom; import java.util.Random; @@ -19,8 +20,8 @@ import java.util.function.Consumer; * Runnable to locate structures asynchronously */ public class AsyncStructureFinder extends AsyncFeatureFinder { - public AsyncStructureFinder(TerraBiomeGrid grid, TerraStructure target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback) { - super(grid, target, origin, startRadius, maxRadius, callback); + public AsyncStructureFinder(TerraBiomeGrid grid, TerraStructure target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, GaeaPlugin main) { + super(grid, target, origin, startRadius, maxRadius, callback, main); setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); } diff --git a/src/main/java/com/dfsek/terra/command/biome/BiomeLocateCommand.java b/src/main/java/com/dfsek/terra/command/biome/BiomeLocateCommand.java index 39f405130..31bf72e38 100644 --- a/src/main/java/com/dfsek/terra/command/biome/BiomeLocateCommand.java +++ b/src/main/java/com/dfsek/terra/command/biome/BiomeLocateCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.biome; -import com.dfsek.terra.Terra; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.async.AsyncBiomeFinder; import com.dfsek.terra.biome.UserDefinedBiome; @@ -45,15 +44,15 @@ public class BiomeLocateCommand extends WorldCommand { LangUtil.send("command.biome.invalid", sender, id); return true; } - Bukkit.getScheduler().runTaskAsynchronously(Terra.getInstance(), new AsyncBiomeFinder(TerraWorld.getWorld(world).getGrid(), b, sender.getLocation().clone().multiply((1D / PluginConfig.getBiomeSearchResolution())), 0, maxRadius, location -> { + Bukkit.getScheduler().runTaskAsynchronously(getMain(), new AsyncBiomeFinder(TerraWorld.getWorld(world).getGrid(), b, sender.getLocation().clone().multiply((1D / PluginConfig.getBiomeSearchResolution())), 0, maxRadius, location -> { if(location != null) { LangUtil.send("command.biome.biome-found", sender, String.valueOf(location.getBlockX()), String.valueOf(location.getBlockZ())); if(tp) { Location l = new Location(sender.getWorld(), location.getX(), sender.getLocation().getY(), location.getZ()); - Bukkit.getScheduler().runTask(Terra.getInstance(), () -> sender.teleport(l)); + Bukkit.getScheduler().runTask(getMain(), () -> sender.teleport(l)); } } else LangUtil.send("command.biome.unable-to-locate", sender); - })); + }, getMain())); return true; } diff --git a/src/main/java/com/dfsek/terra/command/image/RenderCommand.java b/src/main/java/com/dfsek/terra/command/image/RenderCommand.java index d33dfaacc..ac21563e4 100644 --- a/src/main/java/com/dfsek/terra/command/image/RenderCommand.java +++ b/src/main/java/com/dfsek/terra/command/image/RenderCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.image; -import com.dfsek.terra.Terra; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.image.WorldImageGenerator; import org.bukkit.World; @@ -24,7 +23,7 @@ public class RenderCommand extends WorldCommand { try { WorldImageGenerator g = new WorldImageGenerator(world, Integer.parseInt(args[0]), Integer.parseInt(args[1])); g.drawWorld(sender.getLocation().getBlockX(), sender.getLocation().getBlockZ()); - File file = new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "map" + File.separator + "map_" + System.currentTimeMillis() + ".png"); + File file = new File(getMain().getDataFolder() + File.separator + "export" + File.separator + "map" + File.separator + "map_" + System.currentTimeMillis() + ".png"); //noinspection ResultOfMethodCallIgnored file.mkdirs(); //noinspection ResultOfMethodCallIgnored diff --git a/src/main/java/com/dfsek/terra/command/structure/ExportCommand.java b/src/main/java/com/dfsek/terra/command/structure/ExportCommand.java index 0c82ffdaa..58df083d5 100644 --- a/src/main/java/com/dfsek/terra/command/structure/ExportCommand.java +++ b/src/main/java/com/dfsek/terra/command/structure/ExportCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.structure; -import com.dfsek.terra.Terra; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.structure.InitializationException; import com.dfsek.terra.structure.Structure; @@ -36,7 +35,7 @@ public class ExportCommand extends PlayerCommand { return true; } try { - File file = new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "structures", args[0] + ".tstructure"); + File file = new File(getMain().getDataFolder() + File.separator + "export" + File.separator + "structures", args[0] + ".tstructure"); //noinspection ResultOfMethodCallIgnored file.getParentFile().mkdirs(); //noinspection ResultOfMethodCallIgnored diff --git a/src/main/java/com/dfsek/terra/command/structure/LocateCommand.java b/src/main/java/com/dfsek/terra/command/structure/LocateCommand.java index 7649e3f2f..93d8cc69a 100644 --- a/src/main/java/com/dfsek/terra/command/structure/LocateCommand.java +++ b/src/main/java/com/dfsek/terra/command/structure/LocateCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.structure; -import com.dfsek.terra.Terra; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.async.AsyncStructureFinder; import com.dfsek.terra.config.lang.LangUtil; @@ -45,18 +44,18 @@ public class LocateCommand extends WorldCommand { LangUtil.send("command.structure.invalid", sender, id); return true; } - Bukkit.getScheduler().runTaskAsynchronously(Terra.getInstance(), new AsyncStructureFinder(TerraWorld.getWorld(world).getGrid(), s, sender.getLocation(), 0, maxRadius, (location) -> { + Bukkit.getScheduler().runTaskAsynchronously(getMain(), new AsyncStructureFinder(TerraWorld.getWorld(world).getGrid(), s, sender.getLocation(), 0, maxRadius, (location) -> { if(sender.isOnline()) { if(location != null) { sender.sendMessage("Located structure at (" + location.getBlockX() + ", " + location.getBlockZ() + ")."); if(tp) { int finalX = location.getBlockX(); int finalZ = location.getBlockZ(); - Bukkit.getScheduler().runTask(Terra.getInstance(), () -> sender.teleport(new Location(sender.getWorld(), finalX, sender.getLocation().getY(), finalZ))); + Bukkit.getScheduler().runTask(getMain(), () -> sender.teleport(new Location(sender.getWorld(), finalX, sender.getLocation().getY(), finalZ))); } } else sender.sendMessage("Unable to locate structure. "); } - })); + }, getMain())); return true; } diff --git a/src/main/java/com/dfsek/terra/command/structure/load/LoadCommand.java b/src/main/java/com/dfsek/terra/command/structure/load/LoadCommand.java index b3a962887..7e5421b0a 100644 --- a/src/main/java/com/dfsek/terra/command/structure/load/LoadCommand.java +++ b/src/main/java/com/dfsek/terra/command/structure/load/LoadCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.structure.load; -import com.dfsek.terra.Terra; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -21,9 +20,9 @@ public class LoadCommand extends PlayerCommand implements DebugCommand { super(parent); } - public static List getStructureNames() { + public List getStructureNames() { List names = new ArrayList<>(); - File structureDir = new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "structures"); + File structureDir = new File(getMain().getDataFolder() + File.separator + "export" + File.separator + "structures"); if(!structureDir.exists()) return Collections.emptyList(); Path structurePath = structureDir.toPath(); diff --git a/src/main/java/com/dfsek/terra/command/structure/load/LoadFullCommand.java b/src/main/java/com/dfsek/terra/command/structure/load/LoadFullCommand.java index 79b130325..3340c8d98 100644 --- a/src/main/java/com/dfsek/terra/command/structure/load/LoadFullCommand.java +++ b/src/main/java/com/dfsek/terra/command/structure/load/LoadFullCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.structure.load; -import com.dfsek.terra.Terra; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.structure.Rotation; import com.dfsek.terra.structure.Structure; @@ -9,7 +8,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.polydev.gaea.command.DebugCommand; -import org.polydev.gaea.command.PlayerCommand; import java.io.File; import java.io.IOException; @@ -18,7 +16,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -public class LoadFullCommand extends PlayerCommand implements DebugCommand { +public class LoadFullCommand extends LoadCommand implements DebugCommand { private final boolean chunk; public LoadFullCommand(org.polydev.gaea.command.Command parent, boolean chunk) { @@ -36,7 +34,7 @@ public class LoadFullCommand extends PlayerCommand implements DebugCommand { LangUtil.send("command.structure.invalid-rotation", sender, args[1]); return true; } - Structure struc = Structure.load(new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "structures", args[0] + ".tstructure")); + Structure struc = Structure.load(new File(getMain().getDataFolder() + File.separator + "export" + File.separator + "structures", args[0] + ".tstructure")); if(chunk) struc.paste(sender.getLocation(), sender.getLocation().getChunk(), r); else struc.paste(sender.getLocation(), r); //sender.sendMessage(String.valueOf(struc.checkSpawns(sender.getLocation(), r))); @@ -66,7 +64,7 @@ public class LoadFullCommand extends PlayerCommand implements DebugCommand { public List getTabCompletions(@NotNull CommandSender commandSender, @NotNull String s, @NotNull String[] args) { switch(args.length) { case 1: - return LoadCommand.getStructureNames().stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList()); + return getStructureNames().stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList()); case 2: return Stream.of("0", "90", "180", "270").filter(string -> string.toUpperCase().startsWith(args[1].toUpperCase())).collect(Collectors.toList()); } diff --git a/src/main/java/com/dfsek/terra/command/structure/load/LoadRawCommand.java b/src/main/java/com/dfsek/terra/command/structure/load/LoadRawCommand.java index 4ad7bd2a9..503cf386f 100644 --- a/src/main/java/com/dfsek/terra/command/structure/load/LoadRawCommand.java +++ b/src/main/java/com/dfsek/terra/command/structure/load/LoadRawCommand.java @@ -1,6 +1,5 @@ package com.dfsek.terra.command.structure.load; -import com.dfsek.terra.Terra; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.structure.Structure; import com.dfsek.terra.structure.StructureContainedBlock; @@ -14,7 +13,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.polydev.gaea.command.DebugCommand; -import org.polydev.gaea.command.PlayerCommand; import java.io.File; import java.io.IOException; @@ -22,7 +20,7 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -public class LoadRawCommand extends PlayerCommand implements DebugCommand { +public class LoadRawCommand extends LoadCommand implements DebugCommand { public LoadRawCommand(org.polydev.gaea.command.Command parent) { super(parent); } @@ -36,7 +34,7 @@ public class LoadRawCommand extends PlayerCommand implements DebugCommand { @Override public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { try { - Structure struc = Structure.load(new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "structures", args[0] + ".tstructure")); + Structure struc = Structure.load(new File(getMain().getDataFolder() + File.separator + "export" + File.separator + "structures", args[0] + ".tstructure")); StructureInfo info = struc.getStructureInfo(); int centerX = info.getCenterX(); int centerZ = info.getCenterZ(); @@ -106,7 +104,7 @@ public class LoadRawCommand extends PlayerCommand implements DebugCommand { @Override public List getTabCompletions(@NotNull CommandSender commandSender, @NotNull String s, @NotNull String[] args) { if(args.length == 1) { - return LoadCommand.getStructureNames().stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList()); + return getStructureNames().stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList()); } return Collections.emptyList(); } diff --git a/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 60c1fef75..bd4b9a93d 100644 --- a/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -31,7 +31,7 @@ public final class LangUtil { Debug.error("Report this to Terra!"); } try { - language = new Language(new File(Terra.getInstance().getDataFolder(), "lang" + File.separator + langID + ".yml")); + language = new Language(new File(main.getDataFolder(), "lang" + File.separator + langID + ".yml")); } catch(InvalidConfigurationException | IOException e) { logger.severe("Unable to load language: " + langID); e.printStackTrace(); diff --git a/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index 3e2090cb8..25c2cee82 100644 --- a/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.generation.items.tree.TreeLayer; +import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.math.FastNoiseLite; import org.polydev.gaea.math.ProbabilityCollection; import org.polydev.gaea.math.Range; @@ -15,6 +16,12 @@ import java.util.Map; @SuppressWarnings("unchecked") public class TreeLayerLoader implements TypeLoader { + private final GaeaPlugin main; + + public TreeLayerLoader(GaeaPlugin main) { + this.main = main; + } + @Override public TreeLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; @@ -26,9 +33,9 @@ public class TreeLayerLoader implements TypeLoader { if(map.containsKey("simplex-frequency")) { FastNoiseLite noiseLite = new FastNoiseLite(); noiseLite.setFrequency((Double) map.get("simplex-frequency")); - return new TreeLayer(density, range, items, noiseLite); + return new TreeLayer(density, range, items, noiseLite, main); } - return new TreeLayer(density, range, items, null); + return new TreeLayer(density, range, items, null, main); } } diff --git a/src/main/java/com/dfsek/terra/debug/Debug.java b/src/main/java/com/dfsek/terra/debug/Debug.java index fc24022bc..9bb9fcfe9 100644 --- a/src/main/java/com/dfsek/terra/debug/Debug.java +++ b/src/main/java/com/dfsek/terra/debug/Debug.java @@ -1,25 +1,26 @@ package com.dfsek.terra.debug; import com.dfsek.terra.config.base.PluginConfig; -import org.bukkit.plugin.java.JavaPlugin; + +import java.util.logging.Logger; public class Debug { - public static JavaPlugin main; + public static Logger logger; - public static void setMain(JavaPlugin main) { - Debug.main = main; + public static void setLogger(Logger logger) { + Debug.logger = logger; } public static void info(String message) { - if(PluginConfig.isDebug()) main.getLogger().info(message); + if(PluginConfig.isDebug()) logger.info(message); } public static void warn(String message) { - if(PluginConfig.isDebug()) main.getLogger().warning(message); + if(PluginConfig.isDebug()) logger.warning(message); } public static void error(String message) { - if(PluginConfig.isDebug()) main.getLogger().severe(message); + if(PluginConfig.isDebug()) logger.severe(message); } public static void stack(Exception e) { diff --git a/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java b/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java index 051a5c0c1..43cf45b07 100644 --- a/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java +++ b/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java @@ -1,6 +1,5 @@ package com.dfsek.terra.generation; -import com.dfsek.terra.Terra; import com.dfsek.terra.TerraProfiler; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; @@ -28,6 +27,7 @@ import org.bukkit.block.data.type.Stairs; import org.bukkit.generator.BlockPopulator; import org.bukkit.util.Vector; import org.jetbrains.annotations.NotNull; +import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.biome.Biome; import org.polydev.gaea.generation.GaeaChunkGenerator; import org.polydev.gaea.generation.GenerationPhase; @@ -51,12 +51,13 @@ import java.util.logging.Level; public class TerraChunkGenerator extends GaeaChunkGenerator { private static final Map popMap = new HashMap<>(); - private final PopulationManager popMan = new PopulationManager(Terra.getInstance()); + private final PopulationManager popMan; private final ConfigPack configPack; private boolean needsLoad = true; - public TerraChunkGenerator(ConfigPack c) { + public TerraChunkGenerator(ConfigPack c, GaeaPlugin main) { super(ChunkInterpolator.InterpolationType.TRILINEAR); + popMan = new PopulationManager(main); this.configPack = c; popMan.attach(new OrePopulator()); popMan.attach(new TreePopulator()); diff --git a/src/main/java/com/dfsek/terra/generation/items/tree/TreeLayer.java b/src/main/java/com/dfsek/terra/generation/items/tree/TreeLayer.java index 79a217b68..bcc24f7c6 100644 --- a/src/main/java/com/dfsek/terra/generation/items/tree/TreeLayer.java +++ b/src/main/java/com/dfsek/terra/generation/items/tree/TreeLayer.java @@ -1,11 +1,11 @@ package com.dfsek.terra.generation.items.tree; -import com.dfsek.terra.Terra; import com.dfsek.terra.generation.items.PlaceableLayer; import com.dfsek.terra.procgen.math.Vector2; import org.bukkit.Chunk; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.math.FastNoiseLite; import org.polydev.gaea.math.ProbabilityCollection; import org.polydev.gaea.math.Range; @@ -15,9 +15,11 @@ import org.polydev.gaea.tree.TreeType; import java.util.Random; public class TreeLayer extends PlaceableLayer { + private final GaeaPlugin main; - public TreeLayer(double density, Range level, ProbabilityCollection layer, FastNoiseLite noise) { + public TreeLayer(double density, Range level, ProbabilityCollection layer, FastNoiseLite noise, GaeaPlugin main) { super(density, level, layer, noise); + this.main = main; } @Override @@ -28,8 +30,8 @@ public class TreeLayer extends PlaceableLayer { current = current.getRelative(BlockFace.DOWN); if(item.getSpawnable().contains(current.getType())) { if(item instanceof TreeType && current.getRelative(BlockFace.UP).isEmpty()) - item.plant(current.getLocation().add(0, 1, 0), random, Terra.getInstance()); - else if(!(item instanceof TreeType)) item.plant(current.getLocation(), random, Terra.getInstance()); + item.plant(current.getLocation().add(0, 1, 0), random, main); + else if(!(item instanceof TreeType)) item.plant(current.getLocation(), random, main); } } } diff --git a/src/main/java/com/dfsek/terra/listeners/SpigotListener.java b/src/main/java/com/dfsek/terra/listeners/SpigotListener.java index fe8b8877b..1cfb8d00f 100644 --- a/src/main/java/com/dfsek/terra/listeners/SpigotListener.java +++ b/src/main/java/com/dfsek/terra/listeners/SpigotListener.java @@ -21,7 +21,7 @@ import org.polydev.gaea.GaeaPlugin; * Listener to load on Spigot servers, contains Villager crash prevention and hacky ender eye redirection. *

* (This is currently loaded on all servers; once Paper accepts the StructureLocateEvent PR this will only be loaded on servers without - * StructureLocateEvent. + * StructureLocateEvent). */ public class SpigotListener implements Listener { private final GaeaPlugin main; @@ -43,7 +43,7 @@ public class SpigotListener implements Listener { AsyncStructureFinder finder = new AsyncStructureFinder(tw.getGrid(), config, e.getLocation(), 0, 500, location -> { if(location != null) signal.setTargetLocation(location.toLocation(signal.getWorld())); Debug.info("Location: " + location); - }); + }, main); finder.run(); // Do this synchronously so eye doesn't change direction several ticks after spawning. } else main.getLogger().warning("No overrides are defined for Strongholds. Ender Signals will not work correctly."); diff --git a/src/main/java/com/dfsek/terra/util/ConfigUtil.java b/src/main/java/com/dfsek/terra/util/ConfigUtil.java index 00465d4b8..4e7264723 100644 --- a/src/main/java/com/dfsek/terra/util/ConfigUtil.java +++ b/src/main/java/com/dfsek/terra/util/ConfigUtil.java @@ -33,10 +33,17 @@ import org.bukkit.Material; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; import org.bukkit.entity.EntityType; +import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.math.ProbabilityCollection; import org.polydev.gaea.math.Range; public final class ConfigUtil { + private static GaeaPlugin main; + + public static void setMain(GaeaPlugin main) { + ConfigUtil.main = main; + } + /** * Register all Terra loaders to a {@link TypeRegistry}. * @@ -56,7 +63,7 @@ public final class ConfigUtil { .registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf((String) o)) .registerLoader(OreConfig.class, new OreConfigLoader()) .registerLoader(NoiseBuilder.class, new NoiseBuilderLoader()) - .registerLoader(TreeLayer.class, new TreeLayerLoader()) + .registerLoader(TreeLayer.class, new TreeLayerLoader(main)) .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(OreHolder.class, new OreHolderLoader()) .registerLoader(Feature.class, new StructureFeatureLoader())