bukkit pass 2

This commit is contained in:
dfsek
2021-06-23 15:56:41 -07:00
parent 2906a4f891
commit 918ff28ed4
34 changed files with 111 additions and 70 deletions

View File

@@ -38,4 +38,6 @@ public interface ConfigPack extends LoaderRegistrar {
Map<String, String> getLocatable();
boolean doBetaCarvers();
boolean vanillaFlora();
}

View File

@@ -1,10 +1,12 @@
package com.dfsek.terra.api.config;
import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.ProbabilityCollection;
import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.SamplerCache;
import java.util.Map;
import java.util.Set;
public interface WorldConfig {
@@ -34,4 +36,8 @@ public interface WorldConfig {
String getAuthor();
String getVersion();
Map<String, String> getLocatable();
boolean isDisableSaplings();
}

View File

@@ -2,12 +2,15 @@ package com.dfsek.terra.api.entity;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.api.Handle;
import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.api.world.World;
public interface Entity extends Handle, CommandSender {
Location getLocation();
Vector3 position();
void setLocation(Location location);
void position(Vector3 position);
World getWorld();
void world(World world);
World world();
}

View File

@@ -4,6 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.event.events.PackEvent;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.api.vector.Vector3;
/**
* Called when an entity is spawned.
@@ -11,12 +12,10 @@ import com.dfsek.terra.api.vector.Location;
public class EntitySpawnEvent implements PackEvent {
private final ConfigPack pack;
private final Entity entity;
private final Location location;
public EntitySpawnEvent(ConfigPack pack, Entity entity, Location location) {
public EntitySpawnEvent(ConfigPack pack, Entity entity) {
this.pack = pack;
this.entity = entity;
this.location = location;
}
@Override
@@ -32,13 +31,4 @@ public class EntitySpawnEvent implements PackEvent {
public Entity getEntity() {
return entity;
}
/**
* Get the location of the entity.
*
* @return Location of the entity.
*/
public Location getLocation() {
return location;
}
}

View File

@@ -64,7 +64,7 @@ public class TerraCommandManager implements CommandManager {
return;
}
if(commandClass.isAnnotationPresent(WorldCommand.class) && (!(sender instanceof Player) || !(((Player) sender).getWorld()).isTerraWorld())) {
if(commandClass.isAnnotationPresent(WorldCommand.class) && (!(sender instanceof Player) || !(((Player) sender).world()).isTerraWorld())) {
sender.sendMessage("Command must be executed in a Terra world.");
return;
}

View File

@@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent;
import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType;
@@ -21,6 +20,6 @@ public class BufferedEntity implements BufferedItem {
@Override
public void paste(Location origin) {
Entity entity = origin.clone().add(0.5, 0, 0.5).getWorld().spawnEntity(origin, type);
main.getEventManager().callEvent(new EntitySpawnEvent(entity.getWorld().getTerraGenerator().getConfigPack(), entity, entity.getLocation()));
main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getTerraGenerator().getConfigPack(), entity));
}
}

View File

@@ -23,6 +23,6 @@ public class GetBlockCommand implements CommandTemplate {
@Override
public void execute(CommandSender sender) {
Player player = (Player) sender;
sender.sendMessage("Block: " + main.getWorld(player.getWorld()).getUngeneratedBlock(player.getLocation()).getAsString());
sender.sendMessage("Block: " + main.getWorld(player.world()).getUngeneratedBlock(player.position()).getAsString());
}
}

View File

@@ -38,8 +38,8 @@ public class BiomeCommand implements CommandTemplate {
public void execute(CommandSender sender) {
Player player = (Player) sender;
BiomeProvider provider = main.getWorld(player.getWorld()).getBiomeProvider();
UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.getLocation());
BiomeProvider provider = main.getWorld(player.world()).getBiomeProvider();
UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position());
LangUtil.send("command.biome.in", sender, biome.getID());
}
}

View File

@@ -65,11 +65,11 @@ public class BiomeLocateCommand implements CommandTemplate {
Player player = (Player) sender;
new Thread(new AsyncBiomeFinder(main.getWorld(player.getWorld()).getBiomeProvider(), biome, player.getLocation().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), 0, radius, location -> {
new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())).toLocation(player.world()), 0, radius, location -> {
if(location != null) {
sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector())));
sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position())));
if(teleport) {
main.runPossiblyUnsafeTask(() -> player.setLocation(new LocationImpl(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ())));
main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ())));
}
} else LangUtil.send("command.biome.unable-to-locate", sender);
}, main), "Biome Location Thread").start();

View File

@@ -14,6 +14,6 @@ public class BiomeArgumentParser implements ArgumentParser<TerraBiome> {
@Override
public TerraBiome parse(CommandSender sender, String arg) {
Player player = (Player) sender;
return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).get(arg);
return main.getWorld(player.world()).getConfig().getRegistry(TerraBiome.class).get(arg);
}
}

View File

@@ -17,6 +17,6 @@ public class BiomeTabCompleter implements TabCompleter {
@Override
public List<String> complete(CommandSender sender) {
Player player = (Player) sender;
return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList());
return main.getWorld(player.world()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList());
}
}

View File

@@ -8,6 +8,7 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand;
import com.dfsek.terra.api.command.annotation.type.WorldCommand;
import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.entity.Player;
@@ -34,14 +35,14 @@ public class SpawnCommand implements CommandTemplate {
@Override
public void execute(CommandSender sender) {
Player player = (Player) sender;
Location p = player.getLocation();
Vector3 p = player.position();
int x = p.getBlockX();
int y = p.getBlockY();
int z = p.getBlockZ();
Position dummy = new Position(0, 0);
String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer(
new LocationImpl(player.getWorld(), x, y, z)
new LocationImpl(player.world(), x, y, z)
), Rotation.NONE, new FastRandom(), 0), new HashMap<>());
sender.sendMessage("Found: " + check);

View File

@@ -79,9 +79,9 @@ public class StructureLoadCommand implements CommandTemplate {
return;
}
if(this.chunk) {
script.generate(player.getLocation(), player.getWorld().getChunkAt(player.getLocation()), random, r);
script.generate(player.position().toLocation(player.world()), player.world().getChunkAt(player.position().toLocation(player.world())), random, r);
} else {
script.generate(player.getLocation(), random, r);
script.generate(player.position().toLocation(player.world()), random, r);
}
long l = System.nanoTime() - t;

View File

@@ -63,11 +63,11 @@ public class StructureLocateCommand implements CommandTemplate {
public void execute(CommandSender sender) {
Player player = (Player) sender;
new Thread(new AsyncStructureFinder(main.getWorld(player.getWorld()).getBiomeProvider(), structure, player.getLocation().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), 0, radius, location -> {
new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())).toLocation(player.world()), 0, radius, location -> {
if(location != null) {
sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector())));
sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position())));
if(teleport) {
main.runPossiblyUnsafeTask(() -> player.setLocation(new LocationImpl(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ())));
main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ())));
}
} else LangUtil.send("command.biome.unable-to-locate", sender);
}, main), "Biome Location Thread").start();

View File

@@ -14,6 +14,6 @@ public class ScriptArgumentParser implements ArgumentParser<Structure> {
@Override
public Structure parse(CommandSender sender, String arg) {
return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).get(arg);
return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).get(arg);
}
}

View File

@@ -13,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser<TerraStructure> {
@Override
public TerraStructure parse(CommandSender sender, String arg) {
return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(TerraStructure.class).get(arg);
return main.getWorld(((Player) sender).world()).getConfig().getRegistry(TerraStructure.class).get(arg);
}
}

View File

@@ -17,6 +17,6 @@ public class ScriptCompleter implements TabCompleter {
@Override
public List<String> complete(CommandSender sender) {
return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList());
return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList());
}
}

View File

@@ -17,6 +17,6 @@ public class StructureCompleter implements TabCompleter {
@Override
public List<String> complete(CommandSender sender) {
Player player = (Player) sender;
return new ArrayList<>(main.getWorld(player.getWorld()).getConfig().getRegistry(TerraStructure.class).keys());
return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(TerraStructure.class).keys());
}
}

View File

@@ -368,4 +368,9 @@ public class ConfigPackImpl implements ConfigPack {
public boolean doBetaCarvers() {
return template.doBetaCarvers();
}
@Override
public boolean vanillaFlora() {
return template.vanillaDecorations();
}
}

View File

@@ -109,6 +109,16 @@ public class WorldConfigImpl implements WorldConfig {
return pack.getVersion();
}
@Override
public Map<String, String> getLocatable() {
return pack.getLocatable();
}
@Override
public boolean isDisableSaplings() {
return getTemplate().isDisableSaplings();
}
public Set<TerraStructure> getStructures() {
return new HashSet<>(getRegistry(TerraStructure.class).entries());
}