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

View File

@@ -19,8 +19,6 @@ public interface World extends Handle {
ChunkGenerator getGenerator();
String getName();
Chunk getChunkAt(int x, int z);
default Chunk getChunkAt(Location location) {

View File

@@ -30,11 +30,6 @@ public class DummyWorld implements World {
return () -> (GeneratorWrapper) () -> null;
}
@Override
public String getName() {
return "DUMMY";
}
@Override
public Chunk getChunkAt(int x, int z) {
throw new UnsupportedOperationException("Cannot get chunk in DummyWorld");

View File

@@ -34,6 +34,7 @@ import com.dfsek.terra.bukkit.listeners.SpigotListener;
import com.dfsek.terra.bukkit.listeners.TerraListener;
import com.dfsek.terra.bukkit.util.PaperUtil;
import com.dfsek.terra.bukkit.world.BukkitBiome;
import com.dfsek.terra.bukkit.world.BukkitWorld;
import com.dfsek.terra.commands.CommandUtil;
import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig;
@@ -268,14 +269,15 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
return checkedRegistry;
}
public TerraWorld getWorld(World w) {
if(!TerraWorld.isTerraWorld(w))
public TerraWorld getWorld(World world) {
BukkitWorld w = (BukkitWorld) world;
if(!w.isTerraWorld())
throw new IllegalArgumentException("Not a Terra world! " + w.getGenerator());
if(!worlds.containsKey(w.getName())) {
getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\"");
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

View File

@@ -52,7 +52,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener
}
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());
}

View File

@@ -44,7 +44,7 @@ public class CommonListener implements Listener {
public void onSaplingGrow(StructureGrowEvent e) {
if(e.isCancelled()) return;
World bukkit = BukkitAdapter.adapt(e.getWorld());
if(!TerraWorld.isTerraWorld(bukkit)) return;
if(!bukkit.isTerraWorld()) return;
TerraWorld tw = main.getWorld(bukkit);
WorldConfig c = tw.getConfig();
if(c.getTemplate().isDisableSaplings()) return;

View File

@@ -18,7 +18,7 @@ public class PaperListener implements Listener {
@EventHandler
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.
String name = "minecraft:" + e.getType().getName();
main.getDebugLogger().info("Overriding structure location for \"" + name + "\"");

View File

@@ -34,7 +34,7 @@ public class SpigotListener implements Listener {
Entity entity = e.getEntity();
if(e.getEntityType().equals(EntityType.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()));
EnderSignal signal = (EnderSignal) entity;
TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD"));
@@ -53,7 +53,7 @@ public class SpigotListener implements Listener {
@EventHandler
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(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER)) {
main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning.");
@@ -65,7 +65,7 @@ public class SpigotListener implements Listener {
@EventHandler
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)) {
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");

View File

@@ -37,7 +37,6 @@ public class BukkitWorld implements World {
return new BukkitChunkGenerator(delegate.getGenerator());
}
@Override
public String getName() {
return delegate.getName();
}

View File

@@ -40,11 +40,6 @@ public class FabricWorld implements World, FabricWorldHandle {
return delegate.generator;
}
@Override
public String getName() {
return delegate.world.worldProperties.getLevelName();
}
@Override
public Chunk getChunkAt(int x, int z) {
return (Chunk) delegate.world.getChunk(x, z);

View File

@@ -39,11 +39,6 @@ public class FabricSeededWorldAccess implements World, FabricWorldHandle {
return (ChunkGenerator) handle.getGenerator();
}
@Override
public String getName() {
return handle.toString(); // TODO: implementation
}
@Override
public Chunk getChunkAt(int x, int z) {
return null;

View File

@@ -38,11 +38,6 @@ public class FabricWorldAccess implements World, FabricWorldHandle {
return (ChunkGenerator) ((ServerWorldAccess) delegate).toServerWorld().getChunkManager().getChunkGenerator();
}
@Override
public String getName() {
return ((ServerWorldAccess) delegate).toServerWorld().worldProperties.getLevelName();
}
@Override
public Chunk getChunkAt(int x, int z) {
return null;

View File

@@ -39,11 +39,6 @@ public class ForgeWorld implements World, ForgeWorldHandle {
return delegate.generator;
}
@Override
public String getName() {
return delegate.world.toString();
}
@Override
public Chunk getChunkAt(int x, int z) {
return new ForgeChunk(delegate.world.getChunk(x, z));

View File

@@ -39,11 +39,6 @@ public class ForgeSeededWorldAccess implements World, ForgeWorldHandle {
return new ForgeChunkGenerator(handle.getGenerator());
}
@Override
public String getName() {
return handle.toString(); // TODO: implementation
}
@Override
public Chunk getChunkAt(int x, int z) {
return null;

View File

@@ -38,11 +38,6 @@ public class ForgeWorldAccess implements World, ForgeWorldHandle {
return new ForgeChunkGenerator(((IServerWorld) delegate).getLevel().getChunkSource().getGenerator());
}
@Override
public String getName() {
return ((IServerWorld) delegate).getLevel().toString();
}
@Override
public Chunk getChunkAt(int x, int z) {
return null;

View File

@@ -45,11 +45,6 @@ public class DirectWorld implements World {
return generator;
}
@Override
public String getName() {
return null;
}
@Override
public Chunk getChunkAt(int x, int z) {
MCAFile file = compute(x, z);