mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-25 13:30:10 +00:00
Rotation & tree stuff
This commit is contained in:
1 parent
15100caf32
commit
27dbd494bd
14 files changed
+149
-17
No files matched your search
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.api.gaea.tree.fractal;
|
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.gaea.util.GlueList;
|
||||||
import com.dfsek.terra.api.generic.Entity;
|
import com.dfsek.terra.api.generic.Entity;
|
||||||
import com.dfsek.terra.api.generic.TerraPlugin;
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
@@ -12,10 +13,11 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
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 Map<Location, BlockData> treeAssembler = new HashMap<>();
|
||||||
private final List<EntitySpawnHolder> entities = new GlueList<>();
|
private final List<EntitySpawnHolder> entities = new GlueList<>();
|
||||||
private final Location origin;
|
private final Location origin;
|
||||||
@@ -110,5 +112,13 @@ public abstract class FractalTree {
|
|||||||
return treeAssembler.getOrDefault(l, main.getWorldHandle().createBlockData("minecraft:air")).getMaterial();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dfsek.terra.api.generic;
|
package com.dfsek.terra.api.generic;
|
||||||
|
|
||||||
public interface Tree extends Handle {
|
public interface Tree extends Handle, com.dfsek.terra.api.gaea.tree.Tree {
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.api.generic.world;
|
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.Block;
|
||||||
import com.dfsek.terra.api.generic.world.block.BlockData;
|
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||||
@@ -17,4 +18,6 @@ public interface WorldHandle {
|
|||||||
BlockData createBlockData(String data);
|
BlockData createBlockData(String data);
|
||||||
|
|
||||||
MaterialData createMaterialData(String data);
|
MaterialData createMaterialData(String data);
|
||||||
|
|
||||||
|
Tree getTree(String id);
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ public class ConfigPack implements LoaderRegistrar {
|
|||||||
private final PaletteRegistry paletteRegistry;
|
private final PaletteRegistry paletteRegistry;
|
||||||
private final FloraRegistry floraRegistry;
|
private final FloraRegistry floraRegistry;
|
||||||
private final OreRegistry oreRegistry = new OreRegistry();
|
private final OreRegistry oreRegistry = new OreRegistry();
|
||||||
private final TreeRegistry treeRegistry = new TreeRegistry();
|
private final TreeRegistry treeRegistry;
|
||||||
|
|
||||||
private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
|
private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
|
||||||
private final ConfigLoader selfLoader = new ConfigLoader();
|
private final ConfigLoader selfLoader = new ConfigLoader();
|
||||||
@@ -88,7 +88,8 @@ public class ConfigPack implements LoaderRegistrar {
|
|||||||
public ConfigPack(File folder, TerraPlugin main) throws ConfigException {
|
public ConfigPack(File folder, TerraPlugin main) throws ConfigException {
|
||||||
long l = System.nanoTime();
|
long l = System.nanoTime();
|
||||||
floraRegistry = new FloraRegistry(main);
|
floraRegistry = new FloraRegistry(main);
|
||||||
paletteRegistry = new PaletteRegistry(main);
|
paletteRegistry = new PaletteRegistry(main);
|
||||||
|
treeRegistry = new TreeRegistry(main);
|
||||||
register(abstractConfigLoader);
|
register(abstractConfigLoader);
|
||||||
|
|
||||||
main.register(selfLoader);
|
main.register(selfLoader);
|
||||||
@@ -108,7 +109,8 @@ public class ConfigPack implements LoaderRegistrar {
|
|||||||
public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException {
|
public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException {
|
||||||
long l = System.nanoTime();
|
long l = System.nanoTime();
|
||||||
floraRegistry = new FloraRegistry(main);
|
floraRegistry = new FloraRegistry(main);
|
||||||
paletteRegistry = new PaletteRegistry(main);
|
paletteRegistry = new PaletteRegistry(main);
|
||||||
|
treeRegistry = new TreeRegistry(main);
|
||||||
register(abstractConfigLoader);
|
register(abstractConfigLoader);
|
||||||
|
|
||||||
main.register(selfLoader);
|
main.register(selfLoader);
|
||||||
|
|||||||
@@ -1,9 +1,20 @@
|
|||||||
package com.dfsek.terra.registry;
|
package com.dfsek.terra.registry;
|
||||||
|
|
||||||
import com.dfsek.terra.api.gaea.tree.Tree;
|
import com.dfsek.terra.api.gaea.tree.Tree;
|
||||||
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
|
|
||||||
public class TreeRegistry extends TerraRegistry<Tree> {
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,59 @@
|
|||||||
package com.dfsek.terra.bukkit;
|
package com.dfsek.terra.bukkit;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
import com.dfsek.terra.api.generic.Tree;
|
import com.dfsek.terra.api.generic.Tree;
|
||||||
|
import com.dfsek.terra.api.generic.world.WorldHandle;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||||
|
import com.dfsek.terra.api.generic.world.vector.Location;
|
||||||
|
import com.dfsek.terra.bukkit.util.BukkitConversions;
|
||||||
|
import com.dfsek.terra.util.MaterialSet;
|
||||||
import org.bukkit.TreeType;
|
import org.bukkit.TreeType;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class BukkitTree implements Tree {
|
public class BukkitTree implements Tree {
|
||||||
private final TreeType delegate;
|
private final TreeType delegate;
|
||||||
|
private final MaterialSet spawnable;
|
||||||
|
private final TerraPlugin main;
|
||||||
|
|
||||||
public BukkitTree(TreeType delegate) {
|
public BukkitTree(TreeType delegate, TerraPlugin main) {
|
||||||
this.delegate = delegate;
|
this.delegate = delegate;
|
||||||
|
this.main = main;
|
||||||
|
this.spawnable = getSpawnable(delegate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MaterialSet getSpawnable(TreeType type) {
|
||||||
|
WorldHandle handle = main.getWorldHandle();
|
||||||
|
switch(type) {
|
||||||
|
case CRIMSON_FUNGUS:
|
||||||
|
return MaterialSet.get(handle.createMaterialData("minecraft:crimson_nylium"));
|
||||||
|
case WARPED_FUNGUS:
|
||||||
|
return MaterialSet.get(handle.createMaterialData("minecraft:warped_nylium"));
|
||||||
|
case BROWN_MUSHROOM:
|
||||||
|
case RED_MUSHROOM:
|
||||||
|
return MaterialSet.get(handle.createMaterialData("minecraft:mycelium"), handle.createMaterialData("minecraft:grass_block"),
|
||||||
|
handle.createMaterialData("minecraft:podzol"));
|
||||||
|
case CHORUS_PLANT:
|
||||||
|
return MaterialSet.get(handle.createMaterialData("minecraft:end_stone"));
|
||||||
|
default:
|
||||||
|
return MaterialSet.get(handle.createMaterialData("minecraft:grass_block"), handle.createMaterialData("minecraft:dirt"),
|
||||||
|
handle.createMaterialData("minecraft:podzol"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TreeType getHandle() {
|
public TreeType getHandle() {
|
||||||
return delegate;
|
return delegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean plant(Location l, Random r) {
|
||||||
|
return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitConversions.toBukkitLocation(l), delegate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<MaterialData> getSpawnable() {
|
||||||
|
return spawnable;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,29 @@
|
|||||||
package com.dfsek.terra.bukkit;
|
package com.dfsek.terra.bukkit;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.generic.Tree;
|
||||||
import com.dfsek.terra.api.generic.world.WorldHandle;
|
import com.dfsek.terra.api.generic.world.WorldHandle;
|
||||||
import com.dfsek.terra.api.generic.world.block.Block;
|
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.BlockData;
|
||||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||||
import com.dfsek.terra.api.generic.world.block.data.Waterlogged;
|
|
||||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||||
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
|
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
|
||||||
|
import com.dfsek.terra.bukkit.world.block.data.BukkitMultipleFacing;
|
||||||
import com.dfsek.terra.bukkit.world.block.data.BukkitStairs;
|
import com.dfsek.terra.bukkit.world.block.data.BukkitStairs;
|
||||||
import com.dfsek.terra.bukkit.world.block.data.BukkitWaterlogged;
|
import com.dfsek.terra.bukkit.world.block.data.BukkitWaterlogged;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.TreeType;
|
||||||
|
import org.bukkit.block.data.MultipleFacing;
|
||||||
|
import org.bukkit.block.data.Waterlogged;
|
||||||
import org.bukkit.block.data.type.Stairs;
|
import org.bukkit.block.data.type.Stairs;
|
||||||
|
|
||||||
public class BukkitWorldHandle implements WorldHandle {
|
public class BukkitWorldHandle implements WorldHandle {
|
||||||
|
private final TerraPlugin main;
|
||||||
|
|
||||||
|
public BukkitWorldHandle(TerraPlugin main) {
|
||||||
|
this.main = main;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBlockData(Block block, BlockData data, boolean physics) {
|
public void setBlockData(Block block, BlockData data, boolean physics) {
|
||||||
@@ -33,8 +43,9 @@ public class BukkitWorldHandle implements WorldHandle {
|
|||||||
@Override
|
@Override
|
||||||
public BlockData createBlockData(String data) {
|
public BlockData createBlockData(String data) {
|
||||||
org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData(data);
|
org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData(data);
|
||||||
if(bukkitData instanceof Stairs) return new BukkitStairs(bukkitData);
|
if(bukkitData instanceof MultipleFacing) return new BukkitMultipleFacing((MultipleFacing) bukkitData);
|
||||||
if(bukkitData instanceof Waterlogged) return new BukkitWaterlogged(bukkitData);
|
if(bukkitData instanceof Stairs) return new BukkitStairs((Stairs) bukkitData);
|
||||||
|
if(bukkitData instanceof Waterlogged) return new BukkitWaterlogged((Waterlogged) bukkitData);
|
||||||
return new BukkitBlockData(Bukkit.createBlockData(data));
|
return new BukkitBlockData(Bukkit.createBlockData(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,4 +53,9 @@ public class BukkitWorldHandle implements WorldHandle {
|
|||||||
public MaterialData createMaterialData(String data) {
|
public MaterialData createMaterialData(String data) {
|
||||||
return new BukkitMaterialData(Material.matchMaterial(data));
|
return new BukkitMaterialData(Material.matchMaterial(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tree getTree(String id) {
|
||||||
|
return new BukkitTree(TreeType.valueOf(id), main);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,8 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
private final Map<String, ConfigPack> worlds = new HashMap<>();
|
private final Map<String, ConfigPack> worlds = new HashMap<>();
|
||||||
private final ConfigRegistry registry = new ConfigRegistry();
|
private final ConfigRegistry registry = new ConfigRegistry();
|
||||||
private final PluginConfig config = new PluginConfig();
|
private final PluginConfig config = new PluginConfig();
|
||||||
private WorldHandle handle = new BukkitWorldHandle();
|
private final ItemHandle itemHandle = new BukkitItemHandle();
|
||||||
|
private WorldHandle handle = new BukkitWorldHandle(this);
|
||||||
private final GenericLoaders genericLoaders = new GenericLoaders(this);
|
private final GenericLoaders genericLoaders = new GenericLoaders(this);
|
||||||
|
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemHandle getItemHandle() {
|
public ItemHandle getItemHandle() {
|
||||||
return null;
|
return itemHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHandle(WorldHandle handle) {
|
public void setHandle(WorldHandle handle) {
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
package com.dfsek.terra.bukkit.util;
|
package com.dfsek.terra.bukkit.util;
|
||||||
|
|
||||||
import com.dfsek.terra.api.generic.world.vector.Vector3;
|
import com.dfsek.terra.api.generic.world.vector.Vector3;
|
||||||
|
import com.dfsek.terra.bukkit.BukkitWorld;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public final class BukkitConversions {
|
public final class BukkitConversions {
|
||||||
public static Vector3 toTerraVector(Vector bukkit) {
|
public static Vector3 toTerraVector(Vector bukkit) {
|
||||||
return new Vector3(bukkit.getX(), bukkit.getY(), bukkit.getZ());
|
return new Vector3(bukkit.getX(), bukkit.getY(), bukkit.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Location toBukkitLocation(com.dfsek.terra.api.generic.world.vector.Location terra) {
|
||||||
|
return new Location(((BukkitWorld) terra.getWorld()).getHandle(), terra.getX(), terra.getY(), terra.getZ());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
@@ -5,6 +5,9 @@ import com.dfsek.terra.api.generic.world.block.BlockFace;
|
|||||||
import com.dfsek.terra.api.generic.world.block.data.Bisected;
|
import com.dfsek.terra.api.generic.world.block.data.Bisected;
|
||||||
import com.dfsek.terra.api.generic.world.block.data.Stairs;
|
import com.dfsek.terra.api.generic.world.block.data.Stairs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class to adapt Bukkit enums to Terra enums.
|
||||||
|
*/
|
||||||
public final class BukkitEnumAdapter {
|
public final class BukkitEnumAdapter {
|
||||||
public static Stairs.Shape fromBukkitStair(org.bukkit.block.data.type.Stairs.Shape shape) {
|
public static Stairs.Shape fromBukkitStair(org.bukkit.block.data.type.Stairs.Shape shape) {
|
||||||
switch(shape) {
|
switch(shape) {
|
||||||
|
|||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
package com.dfsek.terra.bukkit.world.block.data;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.data.MultipleFacing;
|
||||||
|
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class BukkitMultipleFacing extends BukkitBlockData implements MultipleFacing {
|
||||||
|
private final org.bukkit.block.data.MultipleFacing delegate;
|
||||||
|
|
||||||
|
public BukkitMultipleFacing(org.bukkit.block.data.MultipleFacing delegate) {
|
||||||
|
super(delegate);
|
||||||
|
this.delegate = delegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<BlockFace> getFaces() {
|
||||||
|
return delegate.getFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFace(BlockFace face, boolean facing) {
|
||||||
|
delegate.setFace(TerraEnumAdapter.fromTerraBlockFace(face), facing);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<BlockFace> getAllowedFaces() {
|
||||||
|
return delegate.getAllowedFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasFace(BlockFace f) {
|
||||||
|
return delegate.hasFace(TerraEnumAdapter.fromTerraBlockFace(f));
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-3
@@ -3,14 +3,13 @@ package com.dfsek.terra.bukkit.world.block.data;
|
|||||||
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
||||||
import com.dfsek.terra.api.generic.world.block.data.Stairs;
|
import com.dfsek.terra.api.generic.world.block.data.Stairs;
|
||||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||||
import org.bukkit.block.data.BlockData;
|
|
||||||
|
|
||||||
public class BukkitStairs extends BukkitBlockData implements Stairs {
|
public class BukkitStairs extends BukkitBlockData implements Stairs {
|
||||||
private final org.bukkit.block.data.type.Stairs stairs;
|
private final org.bukkit.block.data.type.Stairs stairs;
|
||||||
|
|
||||||
public BukkitStairs(BlockData delegate) {
|
public BukkitStairs(org.bukkit.block.data.type.Stairs delegate) {
|
||||||
super(delegate);
|
super(delegate);
|
||||||
this.stairs = (org.bukkit.block.data.type.Stairs) delegate;
|
this.stairs = delegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-2
@@ -2,12 +2,11 @@ package com.dfsek.terra.bukkit.world.block.data;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.generic.world.block.data.Waterlogged;
|
import com.dfsek.terra.api.generic.world.block.data.Waterlogged;
|
||||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||||
import org.bukkit.block.data.BlockData;
|
|
||||||
|
|
||||||
public class BukkitWaterlogged extends BukkitBlockData implements Waterlogged {
|
public class BukkitWaterlogged extends BukkitBlockData implements Waterlogged {
|
||||||
private boolean waterlogged;
|
private boolean waterlogged;
|
||||||
|
|
||||||
public BukkitWaterlogged(BlockData delegate) {
|
public BukkitWaterlogged(org.bukkit.block.data.Waterlogged delegate) {
|
||||||
super(delegate);
|
super(delegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
@@ -5,6 +5,9 @@ import com.dfsek.terra.api.generic.world.block.BlockFace;
|
|||||||
import org.bukkit.block.data.Bisected;
|
import org.bukkit.block.data.Bisected;
|
||||||
import org.bukkit.block.data.type.Stairs;
|
import org.bukkit.block.data.type.Stairs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class to adapt Terra enums to Bukkit enums
|
||||||
|
*/
|
||||||
public final class TerraEnumAdapter {
|
public final class TerraEnumAdapter {
|
||||||
public static Stairs.Shape fromTerraStair(com.dfsek.terra.api.generic.world.block.data.Stairs.Shape shape) {
|
public static Stairs.Shape fromTerraStair(com.dfsek.terra.api.generic.world.block.data.Stairs.Shape shape) {
|
||||||
switch(shape) {
|
switch(shape) {
|
||||||
|
|||||||
Reference in new issue
Block a user