This commit is contained in:
dfsek
2021-05-02 22:26:23 -07:00
parent 138ee0a448
commit 1d4b0bc100
15 changed files with 11 additions and 52 deletions
@@ -19,8 +19,6 @@ public interface World extends Handle {
ChunkGenerator getGenerator(); ChunkGenerator getGenerator();
String getName();
Chunk getChunkAt(int x, int z); Chunk getChunkAt(int x, int z);
default Chunk getChunkAt(Location location) { default Chunk getChunkAt(Location location) {
@@ -30,11 +30,6 @@ public class DummyWorld implements World {
return () -> (GeneratorWrapper) () -> null; return () -> (GeneratorWrapper) () -> null;
} }
@Override
public String getName() {
return "DUMMY";
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
throw new UnsupportedOperationException("Cannot get chunk in DummyWorld"); throw new UnsupportedOperationException("Cannot get chunk in DummyWorld");
@@ -34,6 +34,7 @@ import com.dfsek.terra.bukkit.listeners.SpigotListener;
import com.dfsek.terra.bukkit.listeners.TerraListener; import com.dfsek.terra.bukkit.listeners.TerraListener;
import com.dfsek.terra.bukkit.util.PaperUtil; import com.dfsek.terra.bukkit.util.PaperUtil;
import com.dfsek.terra.bukkit.world.BukkitBiome; import com.dfsek.terra.bukkit.world.BukkitBiome;
import com.dfsek.terra.bukkit.world.BukkitWorld;
import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.commands.CommandUtil;
import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.PluginConfig;
@@ -268,14 +269,15 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
return checkedRegistry; return checkedRegistry;
} }
public TerraWorld getWorld(World w) { public TerraWorld getWorld(World world) {
if(!TerraWorld.isTerraWorld(w)) BukkitWorld w = (BukkitWorld) world;
if(!w.isTerraWorld())
throw new IllegalArgumentException("Not a Terra world! " + w.getGenerator()); throw new IllegalArgumentException("Not a Terra world! " + w.getGenerator());
if(!worlds.containsKey(w.getName())) { if(!worlds.containsKey(w.getName())) {
getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\""); getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\"");
return new TerraWorld(w, ((TerraChunkGenerator) w.getGenerator().getHandle()).getConfigPack(), this); return new TerraWorld(w, ((TerraChunkGenerator) w.getGenerator().getHandle()).getConfigPack(), this);
} }
return worldMap.computeIfAbsent(w, world -> new TerraWorld(w, worlds.get(w.getName()), this)); return worldMap.computeIfAbsent(w, w2 -> new TerraWorld(w, worlds.get(w.getName()), this));
} }
@Override @Override
@@ -52,7 +52,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener
} }
public static synchronized void fixChunk(Chunk c) { public static synchronized void fixChunk(Chunk c) {
if(!TerraWorld.isTerraWorld(c.getWorld())) throw new IllegalArgumentException(); if(!c.getWorld().isTerraWorld()) throw new IllegalArgumentException();
popMap.get(c.getWorld()).checkNeighbors(c.getX(), c.getZ(), c.getWorld()); popMap.get(c.getWorld()).checkNeighbors(c.getX(), c.getZ(), c.getWorld());
} }
@@ -44,7 +44,7 @@ public class CommonListener implements Listener {
public void onSaplingGrow(StructureGrowEvent e) { public void onSaplingGrow(StructureGrowEvent e) {
if(e.isCancelled()) return; if(e.isCancelled()) return;
World bukkit = BukkitAdapter.adapt(e.getWorld()); World bukkit = BukkitAdapter.adapt(e.getWorld());
if(!TerraWorld.isTerraWorld(bukkit)) return; if(!bukkit.isTerraWorld()) return;
TerraWorld tw = main.getWorld(bukkit); TerraWorld tw = main.getWorld(bukkit);
WorldConfig c = tw.getConfig(); WorldConfig c = tw.getConfig();
if(c.getTemplate().isDisableSaplings()) return; if(c.getTemplate().isDisableSaplings()) return;
@@ -18,7 +18,7 @@ public class PaperListener implements Listener {
@EventHandler @EventHandler
public void onStructureLocate(StructureLocateEvent e) { public void onStructureLocate(StructureLocateEvent e) {
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getWorld()))) return; if(!BukkitAdapter.adapt(e.getWorld()).isTerraWorld()) return;
e.setResult(null); // Assume no result. e.setResult(null); // Assume no result.
String name = "minecraft:" + e.getType().getName(); String name = "minecraft:" + e.getType().getName();
main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); main.getDebugLogger().info("Overriding structure location for \"" + name + "\"");
@@ -34,7 +34,7 @@ public class SpigotListener implements Listener {
Entity entity = e.getEntity(); Entity entity = e.getEntity();
if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) { if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) {
main.getDebugLogger().info("Detected Ender Signal..."); main.getDebugLogger().info("Detected Ender Signal...");
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return;
TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld())); TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld()));
EnderSignal signal = (EnderSignal) entity; EnderSignal signal = (EnderSignal) entity;
TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD")); TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD"));
@@ -53,7 +53,7 @@ public class SpigotListener implements Listener {
@EventHandler @EventHandler
public void onCartographerChange(VillagerAcquireTradeEvent e) { public void onCartographerChange(VillagerAcquireTradeEvent e) {
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return;
if(!(e.getEntity() instanceof Villager)) return; if(!(e.getEntity() instanceof Villager)) return;
if(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER)) { if(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER)) {
main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning."); main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning.");
@@ -65,7 +65,7 @@ public class SpigotListener implements Listener {
@EventHandler @EventHandler
public void onCartographerLevel(VillagerCareerChangeEvent e) { public void onCartographerLevel(VillagerCareerChangeEvent e) {
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return;
if(e.getProfession().equals(Villager.Profession.CARTOGRAPHER)) { if(e.getProfession().equals(Villager.Profession.CARTOGRAPHER)) {
main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning."); main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning.");
main.logger().severe("Please upgrade to Paper, which has a StructureLocateEvent that fixes this issue"); main.logger().severe("Please upgrade to Paper, which has a StructureLocateEvent that fixes this issue");
@@ -37,7 +37,6 @@ public class BukkitWorld implements World {
return new BukkitChunkGenerator(delegate.getGenerator()); return new BukkitChunkGenerator(delegate.getGenerator());
} }
@Override
public String getName() { public String getName() {
return delegate.getName(); return delegate.getName();
} }
@@ -40,11 +40,6 @@ public class FabricWorld implements World, FabricWorldHandle {
return delegate.generator; return delegate.generator;
} }
@Override
public String getName() {
return delegate.world.worldProperties.getLevelName();
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return (Chunk) delegate.world.getChunk(x, z); return (Chunk) delegate.world.getChunk(x, z);
@@ -39,11 +39,6 @@ public class FabricSeededWorldAccess implements World, FabricWorldHandle {
return (ChunkGenerator) handle.getGenerator(); return (ChunkGenerator) handle.getGenerator();
} }
@Override
public String getName() {
return handle.toString(); // TODO: implementation
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return null; return null;
@@ -38,11 +38,6 @@ public class FabricWorldAccess implements World, FabricWorldHandle {
return (ChunkGenerator) ((ServerWorldAccess) delegate).toServerWorld().getChunkManager().getChunkGenerator(); return (ChunkGenerator) ((ServerWorldAccess) delegate).toServerWorld().getChunkManager().getChunkGenerator();
} }
@Override
public String getName() {
return ((ServerWorldAccess) delegate).toServerWorld().worldProperties.getLevelName();
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return null; return null;
@@ -39,11 +39,6 @@ public class ForgeWorld implements World, ForgeWorldHandle {
return delegate.generator; return delegate.generator;
} }
@Override
public String getName() {
return delegate.world.toString();
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return new ForgeChunk(delegate.world.getChunk(x, z)); return new ForgeChunk(delegate.world.getChunk(x, z));
@@ -39,11 +39,6 @@ public class ForgeSeededWorldAccess implements World, ForgeWorldHandle {
return new ForgeChunkGenerator(handle.getGenerator()); return new ForgeChunkGenerator(handle.getGenerator());
} }
@Override
public String getName() {
return handle.toString(); // TODO: implementation
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return null; return null;
@@ -38,11 +38,6 @@ public class ForgeWorldAccess implements World, ForgeWorldHandle {
return new ForgeChunkGenerator(((IServerWorld) delegate).getLevel().getChunkSource().getGenerator()); return new ForgeChunkGenerator(((IServerWorld) delegate).getLevel().getChunkSource().getGenerator());
} }
@Override
public String getName() {
return ((IServerWorld) delegate).getLevel().toString();
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return null; return null;
@@ -45,11 +45,6 @@ public class DirectWorld implements World {
return generator; return generator;
} }
@Override
public String getName() {
return null;
}
@Override @Override
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
MCAFile file = compute(x, z); MCAFile file = compute(x, z);