cleanup & add entity support

This commit is contained in:
dfsek
2021-01-01 01:50:01 -07:00
parent 8da2b63f31
commit 044aa738a3
36 changed files with 135 additions and 92 deletions
@@ -1,4 +0,0 @@
package com.dfsek.terra.api.platform;
public interface Entity extends Handle {
}
@@ -3,7 +3,6 @@ package com.dfsek.terra.api.platform;
import com.dfsek.terra.TerraWorld; import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.LoaderRegistrar;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.lang.Language;
import com.dfsek.terra.api.platform.handle.EntityHandle;
import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
@@ -37,6 +36,4 @@ public interface TerraPlugin extends LoaderRegistrar {
ItemHandle getItemHandle(); ItemHandle getItemHandle();
void saveDefaultConfig(); void saveDefaultConfig();
EntityHandle getEntityHandle();
} }
@@ -1,4 +0,0 @@
package com.dfsek.terra.api.platform.handle;
public interface EntityHandle {
}
@@ -4,6 +4,7 @@ import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.entity.EntityType;
/** /**
* Interface to be implemented for world manipulation. * Interface to be implemented for world manipulation.
@@ -20,4 +21,6 @@ public interface WorldHandle {
MaterialData createMaterialData(String data); MaterialData createMaterialData(String data);
Tree getTree(String id); Tree getTree(String id);
EntityType getEntity(String id);
} }
@@ -1,14 +1,14 @@
package com.dfsek.terra.api.platform.world; package com.dfsek.terra.api.platform.world;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity;
import com.dfsek.terra.api.platform.Handle; import com.dfsek.terra.api.platform.Handle;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.generator.ChunkGenerator; import com.dfsek.terra.api.platform.generator.ChunkGenerator;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public interface World extends Handle { public interface World extends Handle {
long getSeed(); long getSeed();
@@ -31,7 +31,7 @@ public interface World extends Handle {
Block getBlockAt(Location l); Block getBlockAt(Location l);
boolean generateTree(Location l, Tree vanillaTreeType); // TODO: Bukkit treetype is bad boolean generateTree(Location l, Tree vanillaTreeType);
void spawn(Location location, Class<Entity> entity, Consumer<Entity> consumer); // TODO: Bukkit Entity is bad Entity spawnEntity(Location location, EntityType entityType);
} }
@@ -0,0 +1,6 @@
package com.dfsek.terra.api.platform.world.entity;
import com.dfsek.terra.api.platform.Handle;
public interface Entity extends Handle {
}
@@ -0,0 +1,6 @@
package com.dfsek.terra.api.platform.world.entity;
import com.dfsek.terra.api.platform.Handle;
public interface EntityType extends Handle {
}
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.tree.fractal; package com.dfsek.terra.api.world.tree.fractal;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity; import com.dfsek.terra.api.platform.world.entity.Entity;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -1,9 +1,10 @@
package com.dfsek.terra.api.world.tree.fractal; package com.dfsek.terra.api.world.tree.fractal;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.util.MaterialSet;
import java.util.Random; import java.util.Random;
@@ -41,7 +42,7 @@ public abstract class FractalTree {
*/ */
public abstract void grow(Location origin, Random random); public abstract void grow(Location origin, Random random);
public void spawnEntity(Location spawn, Class<Entity> clazz, Consumer<Entity> consumer) { public void spawnEntity(Location spawn, EntityType type, Consumer<Entity> consumer) {
spawn.getWorld().spawn(spawn, clazz, consumer); consumer.accept(spawn.getWorld().spawnEntity(spawn, type));
} }
} }
@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit; package com.dfsek.terra.bukkit;
import com.dfsek.terra.api.platform.Entity; import com.dfsek.terra.api.platform.world.entity.Entity;
public class BukkitEntity implements Entity { public class BukkitEntity implements Entity {
private final org.bukkit.entity.Entity entity; private final org.bukkit.entity.Entity entity;
@@ -7,7 +7,6 @@ import com.dfsek.terra.api.lang.Language;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.EntityHandle;
import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.platform.world.Biome;
@@ -74,11 +73,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
return itemHandle; return itemHandle;
} }
@Override
public EntityHandle getEntityHandle() {
return null;
}
public void setHandle(WorldHandle handle) { public void setHandle(WorldHandle handle) {
getLogger().warning("|-------------------------------------------------------|"); getLogger().warning("|-------------------------------------------------------|");
getLogger().warning("A third-party addon has injected a custom WorldHandle!"); getLogger().warning("A third-party addon has injected a custom WorldHandle!");
@@ -17,7 +17,7 @@ public class FixChunkCommand extends WorldCommand {
@Override @Override
public boolean execute(@NotNull Player player, @NotNull Command command, @NotNull String s, @NotNull String[] strings, World world) { public boolean execute(@NotNull Player player, @NotNull Command command, @NotNull String s, @NotNull String[] strings, World world) {
//TerraChunkGenerator.fixChunk(player.getLocation().getChunk()); //MasterChunkGenerator.fixChunk(player.getLocation().getChunk());
return true; return true;
} }
@@ -1,11 +1,11 @@
package com.dfsek.terra.bukkit.command.command.structure; package com.dfsek.terra.bukkit.command.command.structure;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.async.AsyncStructureFinder; import com.dfsek.terra.async.AsyncStructureFinder;
import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.command.WorldCommand; import com.dfsek.terra.bukkit.command.WorldCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.bukkit.world.BukkitWorld;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.generation.items.TerraStructure;
@@ -53,7 +53,7 @@ public class LocateCommand extends WorldCommand {
//LangUtil.send("command.structure.invalid", sender, id); //LangUtil.send("command.structure.invalid", sender, id);
return true; return true;
} }
Bukkit.getScheduler().runTaskAsynchronously((TerraBukkitPlugin) getMain(), new AsyncStructureFinder(getMain().getWorld(new BukkitWorld(world)).getGrid(), s, new Location(new BukkitWorld(sender.getWorld()), sender.getLocation().getX(), sender.getLocation().getY(), sender.getLocation().getZ()), 0, maxRadius, (location) -> { Bukkit.getScheduler().runTaskAsynchronously((TerraBukkitPlugin) getMain(), new AsyncStructureFinder(getMain().getWorld(new BukkitWorld(world)).getGrid(), s, BukkitAdapter.adapt(sender.getLocation()), 0, maxRadius, (location) -> {
if(sender.isOnline()) { if(sender.isOnline()) {
if(location != null) { if(location != null) {
ComponentBuilder cm = new ComponentBuilder(String.format("The nearest %s is at ", id.toLowerCase())) ComponentBuilder cm = new ComponentBuilder(String.format("The nearest %s is at ", id.toLowerCase()))
@@ -23,9 +23,7 @@ public class LoadCommand extends PlayerCommand implements DebugCommand {
List<String> names = new ArrayList<>(); List<String> names = new ArrayList<>();
TerraWorld terraWorld = getMain().getWorld(world); TerraWorld terraWorld = getMain().getWorld(world);
terraWorld.getConfig().getScriptRegistry().forEach(script -> { terraWorld.getConfig().getScriptRegistry().forEach(script -> names.add(script.getId()));
names.add(script.getId());
});
return names; return names;
} }
@@ -1,10 +1,10 @@
package com.dfsek.terra.bukkit.command.command.structure.load; package com.dfsek.terra.bukkit.command.command.structure.load;
import com.dfsek.terra.TerraWorld; import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.bukkit.command.DebugCommand; import com.dfsek.terra.bukkit.command.DebugCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitChunk; import com.dfsek.terra.bukkit.world.BukkitChunk;
import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.bukkit.world.BukkitWorld;
import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.util.PopulationUtil;
@@ -33,9 +33,9 @@ public class LoadFullCommand extends LoadCommand implements DebugCommand {
FastRandom chunk = PopulationUtil.getRandom(new BukkitChunk(sender.getLocation().getChunk())); FastRandom chunk = PopulationUtil.getRandom(new BukkitChunk(sender.getLocation().getChunk()));
if(this.chunk) { if(this.chunk) {
terraWorld.getConfig().getScriptRegistry().get(args[0]).execute(new Location(new BukkitWorld(sender.getWorld()), sender.getLocation().getX(), sender.getLocation().getY(), sender.getLocation().getZ()), new BukkitChunk(sender.getLocation().getChunk()), chunk, Rotation.fromDegrees(90 * chunk.nextInt(4))); terraWorld.getConfig().getScriptRegistry().get(args[0]).execute(BukkitAdapter.adapt(sender.getLocation()), new BukkitChunk(sender.getLocation().getChunk()), chunk, Rotation.fromDegrees(90 * chunk.nextInt(4)));
} else { } else {
terraWorld.getConfig().getScriptRegistry().get(args[0]).execute(new Location(new BukkitWorld(sender.getWorld()), sender.getLocation().getX(), sender.getLocation().getY(), sender.getLocation().getZ()), chunk, Rotation.fromDegrees(90 * chunk.nextInt(4))); terraWorld.getConfig().getScriptRegistry().get(args[0]).execute(BukkitAdapter.adapt(sender.getLocation()), chunk, Rotation.fromDegrees(90 * chunk.nextInt(4)));
} }
long l = System.nanoTime() - t; long l = System.nanoTime() - t;
@@ -1,10 +1,10 @@
package com.dfsek.terra.bukkit.command.command.structure.load; package com.dfsek.terra.bukkit.command.command.structure.load;
import com.dfsek.terra.TerraWorld; import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.bukkit.command.DebugCommand; import com.dfsek.terra.bukkit.command.DebugCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitChunk; import com.dfsek.terra.bukkit.world.BukkitChunk;
import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.bukkit.world.BukkitWorld;
import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.util.PopulationUtil;
@@ -40,7 +40,7 @@ public class LoadRawCommand extends LoadCommand implements DebugCommand {
long t = System.nanoTime(); long t = System.nanoTime();
FastRandom chunk = PopulationUtil.getRandom(new BukkitChunk(sender.getLocation().getChunk())); FastRandom chunk = PopulationUtil.getRandom(new BukkitChunk(sender.getLocation().getChunk()));
boolean success = terraWorld.getConfig().getScriptRegistry().get(args[0]).execute(new Location(new BukkitWorld(sender.getWorld()), sender.getLocation().getX(), sender.getLocation().getY(), sender.getLocation().getZ()), chunk, Rotation.fromDegrees(90 * chunk.nextInt(4))); boolean success = terraWorld.getConfig().getScriptRegistry().get(args[0]).execute(BukkitAdapter.adapt(sender.getLocation()), chunk, Rotation.fromDegrees(90 * chunk.nextInt(4)));
long l = System.nanoTime() - t; long l = System.nanoTime() - t;
sender.sendMessage("Took " + ((double) l) / 1000000 + "ms. Success: " + success); sender.sendMessage("Took " + ((double) l) / 1000000 + "ms. Success: " + success);
@@ -6,9 +6,11 @@ import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.api.transform.Transformer; import com.dfsek.terra.api.transform.Transformer;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData; import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
import com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
@@ -52,4 +54,9 @@ public class BukkitWorldHandle implements WorldHandle {
public Tree getTree(String id) { public Tree getTree(String id) {
return treeTransformer.translate(id); return treeTransformer.translate(id);
} }
@Override
public EntityType getEntity(String id) {
return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id));
}
} }
@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.world.block.data; package com.dfsek.terra.bukkit.world;
import com.dfsek.terra.api.platform.block.Axis; import com.dfsek.terra.api.platform.block.Axis;
@@ -8,12 +8,13 @@ import com.dfsek.terra.api.platform.block.data.Rail;
import com.dfsek.terra.api.platform.block.data.RedstoneWire; import com.dfsek.terra.api.platform.block.data.RedstoneWire;
import com.dfsek.terra.api.platform.block.data.Slab; import com.dfsek.terra.api.platform.block.data.Slab;
import com.dfsek.terra.api.platform.block.data.Stairs; import com.dfsek.terra.api.platform.block.data.Stairs;
import org.bukkit.Location;
import org.bukkit.block.data.type.Wall; import org.bukkit.block.data.type.Wall;
/** /**
* Utility class to adapt Bukkit enums to Terra enums. * Utility class to adapt Bukkit enums to Terra enums.
*/ */
public final class BukkitEnumAdapter { public final class BukkitAdapter {
public static Stairs.Shape adapt(org.bukkit.block.data.type.Stairs.Shape shape) { public static Stairs.Shape adapt(org.bukkit.block.data.type.Stairs.Shape shape) {
switch(shape) { switch(shape) {
case STRAIGHT: case STRAIGHT:
@@ -318,4 +319,12 @@ public final class BukkitEnumAdapter {
throw new IllegalStateException(); throw new IllegalStateException();
} }
} }
public static Location adapt(com.dfsek.terra.api.math.vector.Location location) {
return new Location(((BukkitWorld) location.getWorld()).getHandle(), location.getX(), location.getY(), location.getZ());
}
public static com.dfsek.terra.api.math.vector.Location adapt(Location location) {
return new com.dfsek.terra.api.math.vector.Location(new BukkitWorld(location.getWorld()), location.getX(), location.getY(), location.getZ());
}
} }
@@ -6,8 +6,12 @@ import com.dfsek.terra.api.platform.generator.ChunkGenerator;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.bukkit.BukkitEntity;
import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator; import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator;
import com.dfsek.terra.bukkit.world.block.BukkitBlock; import com.dfsek.terra.bukkit.world.block.BukkitBlock;
import com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
@@ -75,7 +79,8 @@ public class BukkitWorld implements World {
} }
@Override @Override
public void spawn(Location l, Class<com.dfsek.terra.api.platform.Entity> entity, java.util.function.Consumer<com.dfsek.terra.api.platform.Entity> consumer) { public Entity spawnEntity(Location location, EntityType entityType) {
return new BukkitEntity(delegate.spawnEntity(BukkitAdapter.adapt(location), ((BukkitEntityType) entityType).getHandle()));
} }
@Override @Override
@@ -6,9 +6,9 @@ import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.block.state.BlockState; import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.bukkit.world.BukkitWorld;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
import com.dfsek.terra.bukkit.world.block.data.BukkitEnumAdapter;
import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState; import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState;
public class BukkitBlock implements Block { public class BukkitBlock implements Block {
@@ -35,12 +35,12 @@ public class BukkitBlock implements Block {
@Override @Override
public Block getRelative(BlockFace face) { public Block getRelative(BlockFace face) {
return new BukkitBlock(delegate.getRelative(BukkitEnumAdapter.adapt(face))); return new BukkitBlock(delegate.getRelative(BukkitAdapter.adapt(face)));
} }
@Override @Override
public Block getRelative(BlockFace face, int len) { public Block getRelative(BlockFace face, int len) {
return new BukkitBlock(delegate.getRelative(BukkitEnumAdapter.adapt(face), len)); return new BukkitBlock(delegate.getRelative(BukkitAdapter.adapt(face), len));
} }
@Override @Override
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.Directional; import com.dfsek.terra.api.platform.block.data.Directional;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitDirectional extends BukkitBlockData implements Directional { public class BukkitDirectional extends BukkitBlockData implements Directional {
public BukkitDirectional(org.bukkit.block.data.Directional delegate) { public BukkitDirectional(org.bukkit.block.data.Directional delegate) {
@@ -10,11 +11,11 @@ public class BukkitDirectional extends BukkitBlockData implements Directional {
@Override @Override
public BlockFace getFacing() { public BlockFace getFacing() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Directional) getHandle()).getFacing()); return BukkitAdapter.adapt(((org.bukkit.block.data.Directional) getHandle()).getFacing());
} }
@Override @Override
public void setFacing(BlockFace facing) { public void setFacing(BlockFace facing) {
((org.bukkit.block.data.Directional) getHandle()).setFacing(BukkitEnumAdapter.adapt(facing)); ((org.bukkit.block.data.Directional) getHandle()).setFacing(BukkitAdapter.adapt(facing));
} }
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.MultipleFacing; import com.dfsek.terra.api.platform.block.data.MultipleFacing;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -14,21 +15,21 @@ public class BukkitMultipleFacing extends BukkitBlockData implements MultipleFac
@Override @Override
public Set<BlockFace> getFaces() { public Set<BlockFace> getFaces() {
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getFaces().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet()); return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getFaces().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet());
} }
@Override @Override
public void setFace(BlockFace face, boolean facing) { public void setFace(BlockFace face, boolean facing) {
((org.bukkit.block.data.MultipleFacing) super.getHandle()).setFace(BukkitEnumAdapter.adapt(face), facing); ((org.bukkit.block.data.MultipleFacing) super.getHandle()).setFace(BukkitAdapter.adapt(face), facing);
} }
@Override @Override
public Set<BlockFace> getAllowedFaces() { public Set<BlockFace> getAllowedFaces() {
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getAllowedFaces().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet()); return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getAllowedFaces().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet());
} }
@Override @Override
public boolean hasFace(BlockFace f) { public boolean hasFace(BlockFace f) {
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).hasFace(BukkitEnumAdapter.adapt(f)); return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).hasFace(BukkitAdapter.adapt(f));
} }
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.Axis; import com.dfsek.terra.api.platform.block.Axis;
import com.dfsek.terra.api.platform.block.data.Orientable; import com.dfsek.terra.api.platform.block.data.Orientable;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -14,16 +15,16 @@ public class BukkitOrientable extends BukkitBlockData implements Orientable {
@Override @Override
public Set<Axis> getAxes() { public Set<Axis> getAxes() {
return ((org.bukkit.block.data.Orientable) getHandle()).getAxes().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet()); return ((org.bukkit.block.data.Orientable) getHandle()).getAxes().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet());
} }
@Override @Override
public Axis getAxis() { public Axis getAxis() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Orientable) getHandle()).getAxis()); return BukkitAdapter.adapt(((org.bukkit.block.data.Orientable) getHandle()).getAxis());
} }
@Override @Override
public void setAxis(Axis axis) { public void setAxis(Axis axis) {
((org.bukkit.block.data.Orientable) getHandle()).setAxis(BukkitEnumAdapter.adapt(axis)); ((org.bukkit.block.data.Orientable) getHandle()).setAxis(BukkitAdapter.adapt(axis));
} }
} }
@@ -1,6 +1,7 @@
package com.dfsek.terra.bukkit.world.block.data; package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.data.Rail; import com.dfsek.terra.api.platform.block.data.Rail;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitRail extends BukkitBlockData implements Rail { public class BukkitRail extends BukkitBlockData implements Rail {
public BukkitRail(org.bukkit.block.data.Rail delegate) { public BukkitRail(org.bukkit.block.data.Rail delegate) {
@@ -9,11 +10,11 @@ public class BukkitRail extends BukkitBlockData implements Rail {
@Override @Override
public Shape getShape() { public Shape getShape() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Rail) getHandle()).getShape()); return BukkitAdapter.adapt(((org.bukkit.block.data.Rail) getHandle()).getShape());
} }
@Override @Override
public void setShape(Shape newShape) { public void setShape(Shape newShape) {
((org.bukkit.block.data.Rail) getHandle()).setShape(BukkitEnumAdapter.adapt(newShape)); ((org.bukkit.block.data.Rail) getHandle()).setShape(BukkitAdapter.adapt(newShape));
} }
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.RedstoneWire; import com.dfsek.terra.api.platform.block.data.RedstoneWire;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -13,16 +14,16 @@ public class BukkitRedstoneWire extends BukkitAnaloguePowerable implements Redst
@Override @Override
public Set<BlockFace> getAllowedFaces() { public Set<BlockFace> getAllowedFaces() {
return ((org.bukkit.block.data.type.RedstoneWire) getHandle()).getAllowedFaces().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet()); return ((org.bukkit.block.data.type.RedstoneWire) getHandle()).getAllowedFaces().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet());
} }
@Override @Override
public Connection getFace(BlockFace face) { public Connection getFace(BlockFace face) {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.RedstoneWire) getHandle()).getFace(BukkitEnumAdapter.adapt(face))); return BukkitAdapter.adapt(((org.bukkit.block.data.type.RedstoneWire) getHandle()).getFace(BukkitAdapter.adapt(face)));
} }
@Override @Override
public void setFace(BlockFace face, Connection connection) { public void setFace(BlockFace face, Connection connection) {
((org.bukkit.block.data.type.RedstoneWire) getHandle()).setFace(BukkitEnumAdapter.adapt(face), BukkitEnumAdapter.adapt(connection)); ((org.bukkit.block.data.type.RedstoneWire) getHandle()).setFace(BukkitAdapter.adapt(face), BukkitAdapter.adapt(connection));
} }
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.Rotatable; import com.dfsek.terra.api.platform.block.data.Rotatable;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitRotatable extends BukkitBlockData implements Rotatable { public class BukkitRotatable extends BukkitBlockData implements Rotatable {
public BukkitRotatable(org.bukkit.block.data.Rotatable delegate) { public BukkitRotatable(org.bukkit.block.data.Rotatable delegate) {
@@ -10,11 +11,11 @@ public class BukkitRotatable extends BukkitBlockData implements Rotatable {
@Override @Override
public BlockFace getRotation() { public BlockFace getRotation() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Rotatable) getHandle()).getRotation()); return BukkitAdapter.adapt(((org.bukkit.block.data.Rotatable) getHandle()).getRotation());
} }
@Override @Override
public void setRotation(BlockFace face) { public void setRotation(BlockFace face) {
((org.bukkit.block.data.Rotatable) getHandle()).setRotation(BukkitEnumAdapter.adapt(face)); ((org.bukkit.block.data.Rotatable) getHandle()).setRotation(BukkitAdapter.adapt(face));
} }
} }
@@ -1,6 +1,7 @@
package com.dfsek.terra.bukkit.world.block.data; package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.data.Slab; import com.dfsek.terra.api.platform.block.data.Slab;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitSlab extends BukkitWaterlogged implements Slab { public class BukkitSlab extends BukkitWaterlogged implements Slab {
public BukkitSlab(org.bukkit.block.data.type.Slab delegate) { public BukkitSlab(org.bukkit.block.data.type.Slab delegate) {
@@ -9,11 +10,11 @@ public class BukkitSlab extends BukkitWaterlogged implements Slab {
@Override @Override
public Type getType() { public Type getType() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Slab) getHandle()).getType()); return BukkitAdapter.adapt(((org.bukkit.block.data.type.Slab) getHandle()).getType());
} }
@Override @Override
public void setType(Type type) { public void setType(Type type) {
((org.bukkit.block.data.type.Slab) getHandle()).setType(BukkitEnumAdapter.adapt(type)); ((org.bukkit.block.data.type.Slab) getHandle()).setType(BukkitAdapter.adapt(type));
} }
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.Stairs; import com.dfsek.terra.api.platform.block.data.Stairs;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitStairs extends BukkitBlockData implements Stairs { public class BukkitStairs extends BukkitBlockData implements Stairs {
@@ -11,32 +12,32 @@ public class BukkitStairs extends BukkitBlockData implements Stairs {
@Override @Override
public Shape getShape() { public Shape getShape() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getShape()); return BukkitAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getShape());
} }
@Override @Override
public void setShape(Shape shape) { public void setShape(Shape shape) {
((org.bukkit.block.data.type.Stairs) super.getHandle()).setShape(BukkitEnumAdapter.adapt(shape)); ((org.bukkit.block.data.type.Stairs) super.getHandle()).setShape(BukkitAdapter.adapt(shape));
} }
@Override @Override
public Half getHalf() { public Half getHalf() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getHalf()); return BukkitAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getHalf());
} }
@Override @Override
public void setHalf(Half half) { public void setHalf(Half half) {
((org.bukkit.block.data.type.Stairs) super.getHandle()).setHalf(BukkitEnumAdapter.adapt(half)); ((org.bukkit.block.data.type.Stairs) super.getHandle()).setHalf(BukkitAdapter.adapt(half));
} }
@Override @Override
public BlockFace getFacing() { public BlockFace getFacing() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getFacing()); return BukkitAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getFacing());
} }
@Override @Override
public void setFacing(BlockFace facing) { public void setFacing(BlockFace facing) {
((org.bukkit.block.data.type.Stairs) super.getHandle()).setFacing(BukkitEnumAdapter.adapt(facing)); ((org.bukkit.block.data.type.Stairs) super.getHandle()).setFacing(BukkitAdapter.adapt(facing));
} }
@Override @Override
@@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.Wall; import com.dfsek.terra.api.platform.block.data.Wall;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitWall extends BukkitWaterlogged implements Wall { public class BukkitWall extends BukkitWaterlogged implements Wall {
public BukkitWall(org.bukkit.block.data.type.Wall delegate) { public BukkitWall(org.bukkit.block.data.type.Wall delegate) {
@@ -20,11 +21,11 @@ public class BukkitWall extends BukkitWaterlogged implements Wall {
@Override @Override
public void setHeight(BlockFace face, Height height) { public void setHeight(BlockFace face, Height height) {
((org.bukkit.block.data.type.Wall) getHandle()).setHeight(BukkitEnumAdapter.adapt(face), BukkitEnumAdapter.adapt(height)); ((org.bukkit.block.data.type.Wall) getHandle()).setHeight(BukkitAdapter.adapt(face), BukkitAdapter.adapt(height));
} }
@Override @Override
public Height getHeight(BlockFace face) { public Height getHeight(BlockFace face) {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Wall) getHandle()).getHeight(BukkitEnumAdapter.adapt(face))); return BukkitAdapter.adapt(((org.bukkit.block.data.type.Wall) getHandle()).getHeight(BukkitAdapter.adapt(face)));
} }
} }
@@ -0,0 +1,16 @@
package com.dfsek.terra.bukkit.world.entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
public class BukkitEntityType implements EntityType {
private final org.bukkit.entity.EntityType delegate;
public BukkitEntityType(org.bukkit.entity.EntityType delegate) {
this.delegate = delegate;
}
@Override
public org.bukkit.entity.EntityType getHandle() {
return delegate;
}
}
@@ -7,7 +7,6 @@ import com.dfsek.terra.api.lang.Language;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.EntityHandle;
import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
@@ -178,11 +177,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
} }
} }
@Override
public EntityHandle getEntityHandle() {
return null;
}
Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>() Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>()
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>()) .addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>())
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build(); .addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build();
@@ -5,6 +5,7 @@ import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.api.transform.Transformer; import com.dfsek.terra.api.transform.Transformer;
import com.dfsek.terra.fabric.world.block.FabricBlockData; import com.dfsek.terra.fabric.world.block.FabricBlockData;
import com.dfsek.terra.fabric.world.block.FabricMaterialData; import com.dfsek.terra.fabric.world.block.FabricMaterialData;
@@ -75,4 +76,9 @@ public class FabricWorldHandle implements WorldHandle {
public Tree getTree(String id) { public Tree getTree(String id) {
return new FabricTree(treeTransformer.translate(id)); return new FabricTree(treeTransformer.translate(id));
} }
@Override
public EntityType getEntity(String id) {
return null;
}
} }
@@ -1,12 +1,13 @@
package com.dfsek.terra.fabric.world.handles; package com.dfsek.terra.fabric.world.handles;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.generator.ChunkGenerator; import com.dfsek.terra.api.platform.generator.ChunkGenerator;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.handles.chunk.FabricChunk; import com.dfsek.terra.fabric.world.handles.chunk.FabricChunk;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
@@ -14,7 +15,6 @@ import net.minecraft.util.math.BlockPos;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public class FabricWorld implements World { public class FabricWorld implements World {
@@ -92,8 +92,8 @@ public class FabricWorld implements World {
} }
@Override @Override
public void spawn(Location location, Class<Entity> entity, Consumer<Entity> consumer) { public Entity spawnEntity(Location location, EntityType entityType) {
return null;
} }
@Override @Override
@@ -101,7 +101,7 @@ public class FabricWorld implements World {
return null; return null;
} }
private final class Handle { private static final class Handle {
private final ServerWorld world; private final ServerWorld world;
private final ChunkGenerator generator; private final ChunkGenerator generator;
@@ -1,12 +1,13 @@
package com.dfsek.terra.fabric.world.handles.world; package com.dfsek.terra.fabric.world.handles.world;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.generator.ChunkGenerator; import com.dfsek.terra.api.platform.generator.ChunkGenerator;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator; import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -14,7 +15,6 @@ import net.minecraft.world.WorldAccess;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public class FabricSeededWorldAccess implements World { public class FabricSeededWorldAccess implements World {
@@ -81,8 +81,8 @@ public class FabricSeededWorldAccess implements World {
} }
@Override @Override
public void spawn(Location location, Class<Entity> entity, Consumer<Entity> consumer) { public Entity spawnEntity(Location location, EntityType entityType) {
return null;
} }
@Override @Override
@@ -1,12 +1,13 @@
package com.dfsek.terra.fabric.world.handles.world; package com.dfsek.terra.fabric.world.handles.world;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.generator.ChunkGenerator; import com.dfsek.terra.api.platform.generator.ChunkGenerator;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator; import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -16,7 +17,6 @@ import net.minecraft.world.WorldAccess;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public class FabricWorldAccess implements World { public class FabricWorldAccess implements World {
private final WorldAccess delegate; private final WorldAccess delegate;
@@ -82,8 +82,8 @@ public class FabricWorldAccess implements World {
} }
@Override @Override
public void spawn(Location location, Class<Entity> entity, Consumer<Entity> consumer) { public Entity spawnEntity(Location location, EntityType entityType) {
return null;
} }
@Override @Override
@@ -1,12 +1,13 @@
package com.dfsek.terra.fabric.world.handles.world; package com.dfsek.terra.fabric.world.handles.world;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Entity;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.generator.ChunkGenerator; import com.dfsek.terra.api.platform.generator.ChunkGenerator;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.entity.Entity;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator; import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -14,7 +15,6 @@ import net.minecraft.world.ChunkRegion;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer;
public class FabricWorldChunkRegion implements World { public class FabricWorldChunkRegion implements World {
private final Handle delegate; private final Handle delegate;
@@ -91,8 +91,8 @@ public class FabricWorldChunkRegion implements World {
} }
@Override @Override
public void spawn(Location location, Class<Entity> entity, Consumer<Entity> consumer) { public Entity spawnEntity(Location location, EntityType entityType) {
return null;
} }
@Override @Override