diff --git a/common/src/main/java/com/dfsek/terra/config/base/ConfigPack.java b/common/src/main/java/com/dfsek/terra/config/base/ConfigPack.java index 8bb85e12f..1776a04ef 100644 --- a/common/src/main/java/com/dfsek/terra/config/base/ConfigPack.java +++ b/common/src/main/java/com/dfsek/terra/config/base/ConfigPack.java @@ -80,6 +80,7 @@ import java.util.zip.ZipFile; */ public class ConfigPack implements LoaderRegistrar { private final ConfigPackTemplate template = new ConfigPackTemplate(); + private final BiomeRegistry biomeRegistry = new BiomeRegistry(); private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry(biomeRegistry); private final StructureRegistry structureRegistry = new StructureRegistry(); diff --git a/common/src/main/java/com/dfsek/terra/config/base/ConfigPackTemplate.java b/common/src/main/java/com/dfsek/terra/config/base/ConfigPackTemplate.java index 23aecf693..fe0500817 100644 --- a/common/src/main/java/com/dfsek/terra/config/base/ConfigPackTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/base/ConfigPackTemplate.java @@ -57,12 +57,14 @@ public class ConfigPackTemplate implements ValidatedConfigTemplate { @Default private int baseBlend = 4; + @Value("structures.locatable") + @Default + private Map locatable = new HashMap<>(); @Value("blend.terrain.elevation") @Default private int elevationBlend = 4; - @Value("erode.enable") @Default private boolean erode = false; @@ -263,6 +265,10 @@ public class ConfigPackTemplate implements ValidatedConfigTemplate { return elevationBlend; } + public Map getLocatable() { + return locatable; + } + @Override public boolean validate() throws ValidationException { if(gridType.equals(TerraBiomeGrid.Type.RADIAL) && internalGrid == null) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index b35bc71a9..3c774e1b9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,7 +1,21 @@ package com.dfsek.terra.bukkit.listeners; +import com.dfsek.terra.TerraWorld; import com.dfsek.terra.api.platform.TerraPlugin; +import com.dfsek.terra.async.AsyncStructureFinder; +import com.dfsek.terra.bukkit.world.BukkitAdapter; +import com.dfsek.terra.debug.Debug; +import com.dfsek.terra.generation.items.TerraStructure; +import org.bukkit.entity.EnderSignal; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Villager; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.event.entity.VillagerAcquireTradeEvent; +import org.bukkit.event.entity.VillagerCareerChangeEvent; /** * Listener to load on Spigot servers, contains Villager crash prevention and hacky ender eye redirection. @@ -15,21 +29,21 @@ public class SpigotListener implements Listener { public SpigotListener(TerraPlugin main) { this.main = main; } - /* @EventHandler(priority = EventPriority.NORMAL) public void onEnderEye(EntitySpawnEvent e) { Entity entity = e.getEntity(); if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) { Debug.info("Detected Ender Signal..."); - if(!TerraWorld.isTerraWorld(e.getEntity().getWorld())) return; - TerraWorld tw = main.getWorld(e.getEntity().getWorld()); + if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; + TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld())); EnderSignal signal = (EnderSignal) entity; - TerraStructure config = tw.getConfig().getStructureLocatable(StructureTypeEnum.STRONGHOLD); + TerraStructure config = tw.getConfig().getStructure(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD")); if(config != null) { Debug.info("Overriding Ender Signal..."); - AsyncStructureFinder finder = new AsyncStructureFinder(tw.getGrid(), config, e.getLocation(), 0, 500, location -> { - if(location != null) signal.setTargetLocation(location.toLocation(signal.getWorld())); + AsyncStructureFinder finder = new AsyncStructureFinder(tw.getGrid(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> { + if(location != null) + signal.setTargetLocation(BukkitAdapter.adapt(location.toLocation(BukkitAdapter.adapt(signal.getWorld())))); Debug.info("Location: " + location); }, main); finder.run(); // Do this synchronously so eye doesn't change direction several ticks after spawning. @@ -40,7 +54,7 @@ public class SpigotListener implements Listener { @EventHandler public void onCartographerChange(VillagerAcquireTradeEvent e) { - if(!TerraWorld.isTerraWorld(e.getEntity().getWorld())) return; + if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; if(!(e.getEntity() instanceof Villager)) return; if(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER)) e.setCancelled(true); // Cancel leveling if the villager is a Cartographer, to prevent crashing server. @@ -48,12 +62,10 @@ public class SpigotListener implements Listener { @EventHandler public void onCartographerLevel(VillagerCareerChangeEvent e) { - if(!TerraWorld.isTerraWorld(e.getEntity().getWorld())) return; + if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; if(e.getProfession().equals(Villager.Profession.CARTOGRAPHER)) { e.getEntity().setProfession(Villager.Profession.NITWIT); // Give villager new profession to prevent server crash. e.setCancelled(true); } } - - */ }