Rotation & tree stuff

This commit is contained in:
dfsek
2020-12-11 19:31:25 -07:00
parent 15100caf32
commit 27dbd494bd
14 changed files with 149 additions and 17 deletions

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.api.gaea.tree.fractal;
import com.dfsek.terra.api.gaea.tree.Tree;
import com.dfsek.terra.api.gaea.util.GlueList;
import com.dfsek.terra.api.generic.Entity;
import com.dfsek.terra.api.generic.TerraPlugin;
@@ -12,10 +13,11 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
import java.util.Set;
import java.util.function.Consumer;
public abstract class FractalTree {
public abstract class FractalTree implements Tree {
private final Map<Location, BlockData> treeAssembler = new HashMap<>();
private final List<EntitySpawnHolder> entities = new GlueList<>();
private final Location origin;
@@ -110,5 +112,13 @@ public abstract class FractalTree {
return treeAssembler.getOrDefault(l, main.getWorldHandle().createBlockData("minecraft:air")).getMaterial();
}
@Override
public boolean plant(Location l, Random r) {
return false;
}
@Override
public Set<MaterialData> getSpawnable() {
return null;
}
}

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.api.generic;
public interface Tree extends Handle {
public interface Tree extends Handle, com.dfsek.terra.api.gaea.tree.Tree {
}

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.api.generic.world;
import com.dfsek.terra.api.generic.Tree;
import com.dfsek.terra.api.generic.world.block.Block;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.block.MaterialData;
@@ -17,4 +18,6 @@ public interface WorldHandle {
BlockData createBlockData(String data);
MaterialData createMaterialData(String data);
Tree getTree(String id);
}

View File

@@ -77,7 +77,7 @@ public class ConfigPack implements LoaderRegistrar {
private final PaletteRegistry paletteRegistry;
private final FloraRegistry floraRegistry;
private final OreRegistry oreRegistry = new OreRegistry();
private final TreeRegistry treeRegistry = new TreeRegistry();
private final TreeRegistry treeRegistry;
private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
private final ConfigLoader selfLoader = new ConfigLoader();
@@ -88,7 +88,8 @@ public class ConfigPack implements LoaderRegistrar {
public ConfigPack(File folder, TerraPlugin main) throws ConfigException {
long l = System.nanoTime();
floraRegistry = new FloraRegistry(main);
paletteRegistry = new PaletteRegistry(main);
paletteRegistry = new PaletteRegistry(main);
treeRegistry = new TreeRegistry(main);
register(abstractConfigLoader);
main.register(selfLoader);
@@ -108,7 +109,8 @@ public class ConfigPack implements LoaderRegistrar {
public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException {
long l = System.nanoTime();
floraRegistry = new FloraRegistry(main);
paletteRegistry = new PaletteRegistry(main);
paletteRegistry = new PaletteRegistry(main);
treeRegistry = new TreeRegistry(main);
register(abstractConfigLoader);
main.register(selfLoader);

View File

@@ -1,9 +1,20 @@
package com.dfsek.terra.registry;
import com.dfsek.terra.api.gaea.tree.Tree;
import com.dfsek.terra.api.generic.TerraPlugin;
public class TreeRegistry extends TerraRegistry<Tree> {
public TreeRegistry() {
private final TerraPlugin main;
public TreeRegistry(TerraPlugin main) {
this.main = main;
}
private void addTree(String id) {
try {
add(id, main.getWorldHandle().getTree(id));
} catch(IllegalArgumentException e) {
main.getLogger().warning("Unable to load tree " + id + ": " + e.getMessage());
}
}
}