mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
reimplement ender eye redirection
This commit is contained in:
@@ -80,6 +80,7 @@ import java.util.zip.ZipFile;
|
|||||||
*/
|
*/
|
||||||
public class ConfigPack implements LoaderRegistrar {
|
public class ConfigPack implements LoaderRegistrar {
|
||||||
private final ConfigPackTemplate template = new ConfigPackTemplate();
|
private final ConfigPackTemplate template = new ConfigPackTemplate();
|
||||||
|
|
||||||
private final BiomeRegistry biomeRegistry = new BiomeRegistry();
|
private final BiomeRegistry biomeRegistry = new BiomeRegistry();
|
||||||
private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry(biomeRegistry);
|
private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry(biomeRegistry);
|
||||||
private final StructureRegistry structureRegistry = new StructureRegistry();
|
private final StructureRegistry structureRegistry = new StructureRegistry();
|
||||||
|
|||||||
@@ -57,12 +57,14 @@ public class ConfigPackTemplate implements ValidatedConfigTemplate {
|
|||||||
@Default
|
@Default
|
||||||
private int baseBlend = 4;
|
private int baseBlend = 4;
|
||||||
|
|
||||||
|
@Value("structures.locatable")
|
||||||
|
@Default
|
||||||
|
private Map<String, String> locatable = new HashMap<>();
|
||||||
|
|
||||||
@Value("blend.terrain.elevation")
|
@Value("blend.terrain.elevation")
|
||||||
@Default
|
@Default
|
||||||
private int elevationBlend = 4;
|
private int elevationBlend = 4;
|
||||||
|
|
||||||
|
|
||||||
@Value("erode.enable")
|
@Value("erode.enable")
|
||||||
@Default
|
@Default
|
||||||
private boolean erode = false;
|
private boolean erode = false;
|
||||||
@@ -263,6 +265,10 @@ public class ConfigPackTemplate implements ValidatedConfigTemplate {
|
|||||||
return elevationBlend;
|
return elevationBlend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getLocatable() {
|
||||||
|
return locatable;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate() throws ValidationException {
|
public boolean validate() throws ValidationException {
|
||||||
if(gridType.equals(TerraBiomeGrid.Type.RADIAL) && internalGrid == null)
|
if(gridType.equals(TerraBiomeGrid.Type.RADIAL) && internalGrid == null)
|
||||||
|
|||||||
+22
-10
@@ -1,7 +1,21 @@
|
|||||||
package com.dfsek.terra.bukkit.listeners;
|
package com.dfsek.terra.bukkit.listeners;
|
||||||
|
|
||||||
|
import com.dfsek.terra.TerraWorld;
|
||||||
import com.dfsek.terra.api.platform.TerraPlugin;
|
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.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.
|
* 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) {
|
public SpigotListener(TerraPlugin main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL)
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onEnderEye(EntitySpawnEvent e) {
|
public void onEnderEye(EntitySpawnEvent e) {
|
||||||
Entity entity = e.getEntity();
|
Entity entity = e.getEntity();
|
||||||
if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) {
|
if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) {
|
||||||
Debug.info("Detected Ender Signal...");
|
Debug.info("Detected Ender Signal...");
|
||||||
if(!TerraWorld.isTerraWorld(e.getEntity().getWorld())) return;
|
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return;
|
||||||
TerraWorld tw = main.getWorld(e.getEntity().getWorld());
|
TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld()));
|
||||||
EnderSignal signal = (EnderSignal) entity;
|
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) {
|
if(config != null) {
|
||||||
Debug.info("Overriding Ender Signal...");
|
Debug.info("Overriding Ender Signal...");
|
||||||
AsyncStructureFinder finder = new AsyncStructureFinder(tw.getGrid(), config, e.getLocation(), 0, 500, location -> {
|
AsyncStructureFinder finder = new AsyncStructureFinder(tw.getGrid(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> {
|
||||||
if(location != null) signal.setTargetLocation(location.toLocation(signal.getWorld()));
|
if(location != null)
|
||||||
|
signal.setTargetLocation(BukkitAdapter.adapt(location.toLocation(BukkitAdapter.adapt(signal.getWorld()))));
|
||||||
Debug.info("Location: " + location);
|
Debug.info("Location: " + location);
|
||||||
}, main);
|
}, main);
|
||||||
finder.run(); // Do this synchronously so eye doesn't change direction several ticks after spawning.
|
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
|
@EventHandler
|
||||||
public void onCartographerChange(VillagerAcquireTradeEvent e) {
|
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(!(e.getEntity() instanceof Villager)) return;
|
||||||
if(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER))
|
if(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER))
|
||||||
e.setCancelled(true); // Cancel leveling if the villager is a Cartographer, to prevent crashing server.
|
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
|
@EventHandler
|
||||||
public void onCartographerLevel(VillagerCareerChangeEvent e) {
|
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)) {
|
if(e.getProfession().equals(Villager.Profession.CARTOGRAPHER)) {
|
||||||
e.getEntity().setProfession(Villager.Profession.NITWIT); // Give villager new profession to prevent server crash.
|
e.getEntity().setProfession(Villager.Profession.NITWIT); // Give villager new profession to prevent server crash.
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user