MaterialData is gone

This commit is contained in:
dfsek
2021-02-22 19:47:15 -07:00
parent a328ff2f2a
commit 358bd350b5
52 changed files with 266 additions and 365 deletions
@@ -19,7 +19,7 @@ public interface Block extends Handle {
Location getLocation(); Location getLocation();
MaterialData getType(); BlockType getType();
int getX(); int getX();
@@ -3,11 +3,14 @@ package com.dfsek.terra.api.platform.block;
import com.dfsek.terra.api.platform.Handle; import com.dfsek.terra.api.platform.Handle;
public interface BlockData extends Cloneable, Handle { public interface BlockData extends Cloneable, Handle {
MaterialData getMaterial();
boolean matches(MaterialData materialData); BlockType getBlockType();
boolean matches(BlockData other);
BlockData clone(); BlockData clone();
String getAsString(); String getAsString();
boolean isAir();
} }
@@ -0,0 +1,9 @@
package com.dfsek.terra.api.platform.block;
import com.dfsek.terra.api.platform.Handle;
public interface BlockType extends Handle {
BlockData getDefaultData();
boolean isSolid();
}
@@ -1,17 +0,0 @@
package com.dfsek.terra.api.platform.block;
import com.dfsek.terra.api.platform.Handle;
public interface MaterialData extends Handle {
boolean matches(MaterialData other);
boolean matches(BlockData other);
boolean isSolid();
boolean isAir();
double getMaxDurability();
BlockData createBlockData();
}
@@ -1,13 +1,13 @@
package com.dfsek.terra.api.platform.handle; package com.dfsek.terra.api.platform.handle;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.platform.inventory.item.Enchantment; import com.dfsek.terra.api.platform.inventory.item.Enchantment;
import java.util.Set; import java.util.Set;
public interface ItemHandle { public interface ItemHandle {
ItemStack newItemStack(MaterialData material, int amount);
Item createItem(String data);
Enchantment getEnchantment(String id); Enchantment getEnchantment(String id);
@@ -2,7 +2,6 @@ package 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.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.entity.EntityType; import com.dfsek.terra.api.platform.entity.EntityType;
/** /**
@@ -13,11 +12,7 @@ public interface WorldHandle {
BlockData getBlockData(Block block); BlockData getBlockData(Block block);
MaterialData getType(Block block);
BlockData createBlockData(String data); BlockData createBlockData(String data);
MaterialData createMaterialData(String data);
EntityType getEntity(String id); EntityType getEntity(String id);
} }
@@ -0,0 +1,12 @@
package com.dfsek.terra.api.platform.inventory;
import com.dfsek.terra.api.platform.Handle;
/**
* An inventory item.
*/
public interface Item extends Handle {
ItemStack newItemStack(int amount);
double getMaxDurability();
}
@@ -1,7 +1,6 @@
package com.dfsek.terra.api.platform.inventory; package com.dfsek.terra.api.platform.inventory;
import com.dfsek.terra.api.platform.Handle; import com.dfsek.terra.api.platform.Handle;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.inventory.item.ItemMeta; import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
public interface ItemStack extends Handle, Cloneable { public interface ItemStack extends Handle, Cloneable {
@@ -9,7 +8,7 @@ public interface ItemStack extends Handle, Cloneable {
void setAmount(int i); void setAmount(int i);
MaterialData getType(); Item getType();
ItemStack clone(); ItemStack clone();
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.structures.loot; package com.dfsek.terra.api.structures.loot;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.ItemStack; import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.structures.loot.functions.AmountFunction; import com.dfsek.terra.api.structures.loot.functions.AmountFunction;
import com.dfsek.terra.api.structures.loot.functions.DamageFunction; import com.dfsek.terra.api.structures.loot.functions.DamageFunction;
@@ -19,10 +19,9 @@ import java.util.Random;
* Representation of a single item entry within a Loot Table pool. * Representation of a single item entry within a Loot Table pool.
*/ */
public class Entry { public class Entry {
private final MaterialData item; private final Item item;
private final long weight; private final long weight;
private final List<LootFunction> functions = new GlueList<>(); private final List<LootFunction> functions = new GlueList<>();
private final TerraPlugin main;
/** /**
* Instantiates an Entry from a JSON representation. * Instantiates an Entry from a JSON representation.
@@ -30,9 +29,8 @@ public class Entry {
* @param entry The JSON Object to instantiate from. * @param entry The JSON Object to instantiate from.
*/ */
public Entry(JSONObject entry, TerraPlugin main) { public Entry(JSONObject entry, TerraPlugin main) {
this.main = main;
String id = entry.get("name").toString(); String id = entry.get("name").toString();
this.item = main.getWorldHandle().createMaterialData(id); this.item = main.getItemHandle().createItem(id);
long weight1; long weight1;
try { try {
@@ -85,7 +83,7 @@ public class Entry {
* @return ItemStack - The ItemStack with all functions applied. * @return ItemStack - The ItemStack with all functions applied.
*/ */
public ItemStack getItem(Random r) { public ItemStack getItem(Random r) {
ItemStack item = main.getItemHandle().newItemStack(this.item, 1); ItemStack item = this.item.newItemStack(1);
for(LootFunction f : functions) { for(LootFunction f : functions) {
item = f.apply(item, r); item = f.apply(item, r);
} }
@@ -1,27 +1,37 @@
package com.dfsek.terra.api.util.collections; package com.dfsek.terra.api.util.collections;
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.BlockType;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
public class MaterialSet extends HashSet<MaterialData> { public class MaterialSet extends HashSet<BlockType> {
private static final long serialVersionUID = 3056512763631017301L; private static final long serialVersionUID = 3056512763631017301L;
public static MaterialSet singleton(MaterialData material) { public static MaterialSet singleton(BlockType material) {
MaterialSet set = new MaterialSet(); MaterialSet set = new MaterialSet();
set.add(material); set.add(material);
return set; return set;
} }
public static MaterialSet get(MaterialData... materials) { public static MaterialSet get(BlockType... materials) {
MaterialSet set = new MaterialSet(); MaterialSet set = new MaterialSet();
set.addAll(Arrays.asList(materials)); set.addAll(Arrays.asList(materials));
return set; return set;
} }
public static MaterialSet get(BlockData... materials) {
MaterialSet set = new MaterialSet();
Arrays.stream(materials).forEach(set::add);
return set;
}
public static MaterialSet empty() {
return new MaterialSet();
}
private void add(BlockData data) { private void add(BlockData data) {
add(data.getMaterial()); add(data.getBlockType());
} }
} }
@@ -2,13 +2,12 @@ package com.dfsek.terra.api.world.tree;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.util.collections.MaterialSet;
import java.util.Random; import java.util.Random;
import java.util.Set;
public interface Tree { public interface Tree {
boolean plant(Location l, Random r); boolean plant(Location l, Random r);
Set<MaterialData> getSpawnable(); MaterialSet getSpawnable();
} }
@@ -11,8 +11,8 @@ import java.util.Random;
public class Cactus extends FractalTree { public class Cactus extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:sand"), return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:sand"),
main.getWorldHandle().createMaterialData("minecraft:red_sand")); main.getWorldHandle().createBlockData("minecraft:red_sand"));
} }
@@ -19,10 +19,10 @@ public class IceSpike extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:stone"), return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:stone"),
main.getWorldHandle().createMaterialData("minecraft:gravel"), main.getWorldHandle().createBlockData("minecraft:gravel"),
main.getWorldHandle().createMaterialData("minecraft:snow_block"), main.getWorldHandle().createBlockData("minecraft:snow_block"),
main.getWorldHandle().createMaterialData("minecraft:grass_block")); main.getWorldHandle().createBlockData("minecraft:grass_block"));
} }
/** /**
@@ -17,8 +17,8 @@ public class OakTree extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:podzol"), return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:podzol"),
main.getWorldHandle().createMaterialData("minecraft:grass_block")); main.getWorldHandle().createBlockData("minecraft:grass_block"));
} }
/** /**
@@ -12,7 +12,7 @@ public class ShatteredPillar extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone"));
} }
/** /**
@@ -20,7 +20,7 @@ public class ShatteredTree extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone"));
} }
/** /**
@@ -12,7 +12,7 @@ public class SmallShatteredPillar extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone"));
} }
/** /**
@@ -20,7 +20,7 @@ public class SmallShatteredTree extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone"));
} }
/** /**
@@ -16,8 +16,8 @@ public class SpruceTree extends FractalTree {
@Override @Override
public MaterialSet getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:podzol"), return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:podzol"),
main.getWorldHandle().createMaterialData("minecraft:grass_block")); main.getWorldHandle().createBlockData("minecraft:grass_block"));
} }
/** /**
@@ -1,7 +1,7 @@
package com.dfsek.terra.carving; package com.dfsek.terra.carving;
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.BlockType;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.util.collections.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollection;
@@ -29,7 +29,7 @@ public class CarverPalette {
return layers[y]; return layers[y];
} }
public boolean canReplace(MaterialData material) { public boolean canReplace(BlockType material) {
return blacklist != replace.contains(material); return blacklist != replace.contains(material);
} }
@@ -8,6 +8,7 @@ import com.dfsek.terra.api.math.GridSpawn;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.samplers.ImageSampler; import com.dfsek.terra.api.math.noise.samplers.ImageSampler;
import com.dfsek.terra.api.math.noise.samplers.noise.CellularSampler; import com.dfsek.terra.api.math.noise.samplers.noise.CellularSampler;
import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.util.collections.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.SourceSeeded;
@@ -92,6 +93,7 @@ public class GenericLoaders implements LoaderRegistrar {
.registerLoader(SourceSeeded.class, new SourceBuilderLoader()) .registerLoader(SourceSeeded.class, new SourceBuilderLoader())
.registerLoader(StageSeeded.class, new StageBuilderLoader()) .registerLoader(StageSeeded.class, new StageBuilderLoader())
.registerLoader(TerraAddon.class, main.getAddons()) .registerLoader(TerraAddon.class, main.getAddons())
.registerLoader(BlockType.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType())
.registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader())
.registerLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) .registerLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object))
.registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object)) .registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object))
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders;
import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@@ -18,7 +18,7 @@ public class MaterialSetLoader implements TypeLoader<MaterialSet> {
for(String string : stringData) { for(String string : stringData) {
try { try {
set.add(configLoader.loadClass(MaterialData.class, string)); set.add(configLoader.loadClass(BlockType.class, string));
} catch(NullPointerException e) { } catch(NullPointerException e) {
throw new LoadException("Invalid data identifier \"" + string + "\"", e); throw new LoadException("Invalid data identifier \"" + string + "\"", e);
} }
@@ -1,7 +1,6 @@
package com.dfsek.terra.config.loaders; package com.dfsek.terra.config.loaders;
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.util.collections.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.flora.Flora;
@@ -10,15 +9,12 @@ import com.dfsek.terra.api.world.tree.Tree;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* Class to hold Type instances for types with generics. * Class to hold Type instances for types with generics.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public final class Types { public final class Types {
public static final Type MATERIAL_SET_TYPE;
public static final Type MATERIAL_PROBABILITY_COLLECTION_TYPE;
public static final Type BLOCK_DATA_PALETTE_TYPE; public static final Type BLOCK_DATA_PALETTE_TYPE;
public static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; public static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE;
public static final Type FLORA_PROBABILITY_COLLECTION_TYPE; public static final Type FLORA_PROBABILITY_COLLECTION_TYPE;
@@ -27,8 +23,6 @@ public final class Types {
public static final Type TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP; public static final Type TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP;
static { static {
MATERIAL_SET_TYPE = getType("materialSet");
MATERIAL_PROBABILITY_COLLECTION_TYPE = getType("materialProbabilityCollection");
BLOCK_DATA_PALETTE_TYPE = getType("blockDataPalette"); BLOCK_DATA_PALETTE_TYPE = getType("blockDataPalette");
BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockDataProbabilityCollection"); BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockDataProbabilityCollection");
FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection"); FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection");
@@ -37,9 +31,7 @@ public final class Types {
TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap");
} }
private Set<MaterialData> materialSet;
private Palette<BlockData> blockDataPalette; private Palette<BlockData> blockDataPalette;
private ProbabilityCollection<MaterialData> materialProbabilityCollection;
private ProbabilityCollection<BlockData> blockDataProbabilityCollection; private ProbabilityCollection<BlockData> blockDataProbabilityCollection;
private ProbabilityCollection<Flora> floraProbabilityCollection; private ProbabilityCollection<Flora> floraProbabilityCollection;
private ProbabilityCollection<Tree> treeProbabilityCollection; private ProbabilityCollection<Tree> treeProbabilityCollection;
@@ -14,7 +14,7 @@ import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.BlankFunction;
import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction;
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.BlockType;
import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.api.util.collections.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollection;
@@ -158,12 +158,12 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf
@Value("slabs.palettes") @Value("slabs.palettes")
@Abstractable @Abstractable
@Default @Default
private Map<MaterialData, Palette<BlockData>> slabPalettes; private Map<BlockType, Palette<BlockData>> slabPalettes;
@Value("slabs.stair-palettes") @Value("slabs.stair-palettes")
@Abstractable @Abstractable
@Default @Default
private Map<MaterialData, Palette<BlockData>> stairPalettes; private Map<BlockType, Palette<BlockData>> stairPalettes;
@Value("slant.threshold") @Value("slant.threshold")
@Abstractable @Abstractable
@@ -237,11 +237,11 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf
return doSlabs; return doSlabs;
} }
public Map<MaterialData, Palette<BlockData>> getSlabPalettes() { public Map<BlockType, Palette<BlockData>> getSlabPalettes() {
return slabPalettes; return slabPalettes;
} }
public Map<MaterialData, Palette<BlockData>> getStairPalettes() { public Map<BlockType, Palette<BlockData>> getStairPalettes() {
return stairPalettes; return stairPalettes;
} }
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable;
import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.carving.CarverPalette;
@@ -104,7 +104,7 @@ public class CarverTemplate extends AbstractableTemplate {
@Value("shift") @Value("shift")
@Abstractable @Abstractable
@Default @Default
private Map<MaterialData, MaterialSet> shift = new HashMap<>(); private Map<BlockType, MaterialSet> shift = new HashMap<>();
@Value("update") @Value("update")
@Abstractable @Abstractable
@@ -187,7 +187,7 @@ public class CarverTemplate extends AbstractableTemplate {
return inner; return inner;
} }
public Map<MaterialData, MaterialSet> getShift() { public Map<BlockType, MaterialSet> getShift() {
return shift; return shift;
} }
@@ -2,7 +2,6 @@ package com.dfsek.terra.registry.config;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.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.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.OpenRegistry;
@@ -52,8 +51,8 @@ public class FloraRegistry extends OpenRegistry<Flora> {
addItem("BROWN_MUSHROOM", () -> new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:brown_mushroom")))); addItem("BROWN_MUSHROOM", () -> new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:brown_mushroom"))));
} }
private MaterialData create(String s) { private BlockData create(String s) {
return main.getWorldHandle().createMaterialData(s); return main.getWorldHandle().createBlockData(s);
} }
private void addItem(String id, Callable<ConstantFlora> flora) { private void addItem(String id, Callable<ConstantFlora> flora) {
@@ -3,7 +3,7 @@ package com.dfsek.terra.registry.config;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
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.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.api.world.tree.fractal.FractalTree; import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import com.dfsek.terra.api.world.tree.fractal.trees.Cactus; import com.dfsek.terra.api.world.tree.fractal.trees.Cactus;
@@ -19,7 +19,6 @@ import com.dfsek.terra.registry.OpenRegistry;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.Random; import java.util.Random;
import java.util.Set;
public class TreeRegistry extends OpenRegistry<Tree> { public class TreeRegistry extends OpenRegistry<Tree> {
private final TerraPlugin main; private final TerraPlugin main;
@@ -71,7 +70,7 @@ public class TreeRegistry extends OpenRegistry<Tree> {
} }
@Override @Override
public Set<MaterialData> getSpawnable() { public MaterialSet getSpawnable() {
return tree.getSpawnable(); return tree.getSpawnable();
} }
} }
@@ -5,7 +5,7 @@ import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData; 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.BlockType;
import com.dfsek.terra.api.platform.block.data.Bisected; import com.dfsek.terra.api.platform.block.data.Bisected;
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;
@@ -37,7 +37,7 @@ import java.util.Random;
public class DefaultChunkGenerator3D implements TerraChunkGenerator { public class DefaultChunkGenerator3D implements TerraChunkGenerator {
private final ConfigPack configPack; private final ConfigPack configPack;
private final TerraPlugin main; private final TerraPlugin main;
private final MaterialData water; private final BlockType water;
private final SinglePalette<BlockData> blank; private final SinglePalette<BlockData> blank;
private final Carver carver; private final Carver carver;
@@ -49,7 +49,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
this.configPack = c; this.configPack = c;
this.main = main; this.main = main;
carver = new NoiseCarver(new Range(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); carver = new NoiseCarver(new Range(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main);
water = main.getWorldHandle().createMaterialData("minecraft:water"); water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType();
blank = new SinglePalette<>(main.getWorldHandle().createBlockData("minecraft:air")); blank = new SinglePalette<>(main.getWorldHandle().createBlockData("minecraft:air"));
this.cache = cache; this.cache = cache;
} }
@@ -150,11 +150,11 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
} }
} }
private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map<MaterialData, Palette<BlockData>> slabs, private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map<BlockType, Palette<BlockData>> slabs,
Map<MaterialData, Palette<BlockData>> stairs, double thresh, Sampler sampler) { Map<BlockType, Palette<BlockData>> stairs, double thresh, Sampler sampler) {
if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) { if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) {
if(stairs != null) { if(stairs != null) {
Palette<BlockData> stairPalette = stairs.get(down.getMaterial()); Palette<BlockData> stairPalette = stairs.get(down.getBlockType());
if(stairPalette != null) { if(stairPalette != null) {
BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone();
if(stair instanceof Stairs) { if(stair instanceof Stairs) {
@@ -163,19 +163,19 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
} }
} }
} }
BlockData slab = slabs.getOrDefault(down.getMaterial(), blank).get(0, block.getX(), block.getY(), block.getZ()); BlockData slab = slabs.getOrDefault(down.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ());
if(slab instanceof Waterlogged) { if(slab instanceof Waterlogged) {
((Waterlogged) slab).setWaterlogged(orig.matches(water)); ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water));
} else if(orig.matches(water)) return; } else if(orig.getBlockType().equals(water)) return;
chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab);
} }
} }
private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map<MaterialData, Palette<BlockData>> slabs, private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map<BlockType, Palette<BlockData>> slabs,
Map<MaterialData, Palette<BlockData>> stairs, double thresh, Sampler sampler) { Map<BlockType, Palette<BlockData>> stairs, double thresh, Sampler sampler) {
if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) { if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) {
if(stairs != null) { if(stairs != null) {
Palette<BlockData> stairPalette = stairs.get(up.getMaterial()); Palette<BlockData> stairPalette = stairs.get(up.getBlockType());
if(stairPalette != null) { if(stairPalette != null) {
BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone();
if(stair instanceof Stairs) { if(stair instanceof Stairs) {
@@ -185,12 +185,12 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
} }
} }
} }
BlockData slab = slabs.getOrDefault(up.getMaterial(), blank).get(0, block.getX(), block.getY(), block.getZ()).clone(); BlockData slab = slabs.getOrDefault(up.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()).clone();
if(slab instanceof Bisected) ((Bisected) slab).setHalf(Bisected.Half.TOP); if(slab instanceof Bisected) ((Bisected) slab).setHalf(Bisected.Half.TOP);
if(slab instanceof Slab) ((Slab) slab).setType(Slab.Type.TOP); if(slab instanceof Slab) ((Slab) slab).setType(Slab.Type.TOP);
if(slab instanceof Waterlogged) { if(slab instanceof Waterlogged) {
((Waterlogged) slab).setWaterlogged(orig.matches(water)); ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water));
} else if(orig.matches(water)) return; // Only replace water if waterlogged. } else if(orig.getBlockType().equals(water)) return; // Only replace water if waterlogged.
chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab);
} }
} }
@@ -208,7 +208,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
stairNew.setFacing(BlockFace.EAST); stairNew.setFacing(BlockFace.EAST);
} else stairNew = null; } else stairNew = null;
if(stairNew != null) { if(stairNew != null) {
if(orig.matches(water)) stairNew.setWaterlogged(orig.matches(water)); if(orig.getBlockType().equals(water)) stairNew.setWaterlogged(orig.getBlockType().equals(water));
chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew); chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew);
return true; return true;
} }
@@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.Block; 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.BlockType;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
@@ -24,7 +24,7 @@ import java.util.Random;
import java.util.Set; import java.util.Set;
public class CavePopulator implements TerraBlockPopulator { public class CavePopulator implements TerraBlockPopulator {
private static final Map<MaterialData, BlockData> shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. private static final Map<BlockType, BlockData> shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time.
private final TerraPlugin main; private final TerraPlugin main;
public CavePopulator(TerraPlugin main) { public CavePopulator(TerraPlugin main) {
@@ -44,51 +44,52 @@ public class CavePopulator implements TerraBlockPopulator {
for(UserDefinedCarver c : config.getCarvers()) { for(UserDefinedCarver c : config.getCarvers()) {
CarverTemplate template = c.getConfig(); CarverTemplate template = c.getConfig();
Map<Location, MaterialData> shiftCandidate = new HashMap<>(); Map<Location, BlockData> shiftCandidate = new HashMap<>();
Set<Block> updateNeeded = new HashSet<>(); Set<Block> updateNeeded = new HashSet<>();
c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> {
Block b = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); Block b = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ());
MaterialData m = handle.getType(b); BlockData m = handle.getBlockData(b);
BlockType re = m.getBlockType();
switch(type) { switch(type) {
case CENTER: case CENTER:
if(template.getInner().canReplace(m)) { if(template.getInner().canReplace(re)) {
b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false); b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b); if(template.getUpdate().contains(re)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m);
} }
break; break;
case WALL: case WALL:
if(template.getOuter().canReplace(m)) { if(template.getOuter().canReplace(re)) {
b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false); b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b); if(template.getUpdate().contains(re)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m);
} }
break; break;
case TOP: case TOP:
if(template.getTop().canReplace(m)) { if(template.getTop().canReplace(re)) {
b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false); b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b); if(template.getUpdate().contains(re)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m);
} }
break; break;
case BOTTOM: case BOTTOM:
if(template.getBottom().canReplace(m)) { if(template.getBottom().canReplace(re)) {
b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false); b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b); if(template.getUpdate().contains(re)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m);
} }
break; break;
} }
}); });
for(Map.Entry<Location, MaterialData> entry : shiftCandidate.entrySet()) { for(Map.Entry<Location, BlockData> entry : shiftCandidate.entrySet()) {
Location l = entry.getKey(); Location l = entry.getKey();
Location mut = l.clone(); Location mut = l.clone();
MaterialData orig = handle.getType(l.getBlock()); BlockData orig = handle.getBlockData(l.getBlock());
do mut.subtract(0, 1, 0); do mut.subtract(0, 1, 0);
while(mut.getY() > 0 && handle.getType(mut.getBlock()).equals(orig)); while(mut.getY() > 0 && handle.getBlockData(mut.getBlock()).matches(orig));
try { try {
if(template.getShift().get(entry.getValue()).contains(mut.getBlock().getType())) { if(template.getShift().get(entry.getValue().getBlockType()).contains(mut.getBlock().getBlockData().getBlockType())) {
handle.setBlockData(mut.getBlock(), shiftStorage.computeIfAbsent(entry.getValue(), MaterialData::createBlockData), false); handle.setBlockData(mut.getBlock(), shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false);
} }
} catch(NullPointerException ignore) { } catch(NullPointerException ignore) {
} }
@@ -9,7 +9,6 @@ import com.dfsek.terra.api.addons.annotations.Version;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.TerraEventManager; import com.dfsek.terra.api.event.TerraEventManager;
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.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;
@@ -262,7 +261,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
public void register(TypeRegistry registry) { public void register(TypeRegistry registry) {
registry registry
.registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o)) .registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o))
.registerLoader(MaterialData.class, (t, o, l) -> handle.createMaterialData((String) o))
.registerLoader(Biome.class, (t, o, l) -> new BukkitBiome(org.bukkit.block.Biome.valueOf((String) o))) .registerLoader(Biome.class, (t, o, l) -> new BukkitBiome(org.bukkit.block.Biome.valueOf((String) o)))
.registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o));
genericLoaders.register(registry); genericLoaders.register(registry);
@@ -1,13 +1,11 @@
package com.dfsek.terra.bukkit.handles; package com.dfsek.terra.bukkit.handles;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.inventory.ItemStack; import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.item.Enchantment; import com.dfsek.terra.api.platform.inventory.item.Enchantment;
import com.dfsek.terra.bukkit.util.MinecraftUtils; import com.dfsek.terra.bukkit.util.MinecraftUtils;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData; import org.bukkit.Material;
import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import java.util.Arrays; import java.util.Arrays;
@@ -15,9 +13,10 @@ import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class BukkitItemHandle implements ItemHandle { public class BukkitItemHandle implements ItemHandle {
@Override @Override
public ItemStack newItemStack(MaterialData material, int amount) { public Item createItem(String data) {
return new BukkitItemStack(new org.bukkit.inventory.ItemStack(((BukkitMaterialData) material).getHandle(), amount)); return BukkitAdapter.adapt(Material.matchMaterial(data));
} }
@Override @Override
@@ -2,14 +2,11 @@ package com.dfsek.terra.bukkit.handles;
import com.dfsek.terra.api.platform.block.Block; 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.entity.EntityType; import com.dfsek.terra.api.platform.entity.EntityType;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
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 com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material;
public class BukkitWorldHandle implements WorldHandle { public class BukkitWorldHandle implements WorldHandle {
@Override @Override
@@ -22,22 +19,12 @@ public class BukkitWorldHandle implements WorldHandle {
return block.getBlockData(); return block.getBlockData();
} }
@Override
public MaterialData getType(Block block) {
return block.getType();
}
@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);
return BukkitBlockData.newInstance(bukkitData); return BukkitBlockData.newInstance(bukkitData);
} }
@Override
public MaterialData createMaterialData(String data) {
return new BukkitMaterialData(Material.matchMaterial(data));
}
@Override @Override
public EntityType getEntity(String id) { public EntityType getEntity(String id) {
return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id)); return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id));
@@ -6,11 +6,13 @@ import com.dfsek.terra.api.platform.CommandSender;
import com.dfsek.terra.api.platform.block.Axis; import com.dfsek.terra.api.platform.block.Axis;
import com.dfsek.terra.api.platform.block.BlockData; 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.BlockType;
import com.dfsek.terra.api.platform.block.data.Bisected; import com.dfsek.terra.api.platform.block.data.Bisected;
import com.dfsek.terra.api.platform.block.data.Rail; 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 com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.platform.inventory.item.Enchantment; import com.dfsek.terra.api.platform.inventory.item.Enchantment;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
@@ -18,9 +20,12 @@ import com.dfsek.terra.api.transform.MapTransform;
import com.dfsek.terra.api.transform.Transformer; import com.dfsek.terra.api.transform.Transformer;
import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.BukkitPlayer; import com.dfsek.terra.bukkit.BukkitPlayer;
import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack;
import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.TreeType; import org.bukkit.TreeType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
@@ -384,4 +389,20 @@ public final class BukkitAdapter {
public static com.dfsek.terra.api.platform.entity.Player adapt(Player player) { public static com.dfsek.terra.api.platform.entity.Player adapt(Player player) {
return new BukkitPlayer(player); return new BukkitPlayer(player);
} }
public static BukkitBlockTypeAndItem adapt(Material material) {
return new BukkitBlockTypeAndItem(material);
}
public static Material adapt(BlockType type) {
return ((BukkitBlockTypeAndItem) type).getHandle();
}
public static ItemStack adapt(org.bukkit.inventory.ItemStack in) {
return new BukkitItemStack(in);
}
public static org.bukkit.inventory.ItemStack adapt(ItemStack in) {
return ((BukkitItemStack) in).getHandle();
}
} }
@@ -2,14 +2,12 @@ package com.dfsek.terra.bukkit.world;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
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.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import org.bukkit.TreeType; import org.bukkit.TreeType;
import java.util.Random; 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;
@@ -26,18 +24,18 @@ public class BukkitTree implements Tree {
WorldHandle handle = main.getWorldHandle(); WorldHandle handle = main.getWorldHandle();
switch(type) { switch(type) {
case CRIMSON_FUNGUS: case CRIMSON_FUNGUS:
return MaterialSet.get(handle.createMaterialData("minecraft:crimson_nylium")); return MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium"));
case WARPED_FUNGUS: case WARPED_FUNGUS:
return MaterialSet.get(handle.createMaterialData("minecraft:warped_nylium")); return MaterialSet.get(handle.createBlockData("minecraft:warped_nylium"));
case BROWN_MUSHROOM: case BROWN_MUSHROOM:
case RED_MUSHROOM: case RED_MUSHROOM:
return MaterialSet.get(handle.createMaterialData("minecraft:mycelium"), handle.createMaterialData("minecraft:grass_block"), return MaterialSet.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"),
handle.createMaterialData("minecraft:podzol")); handle.createBlockData("minecraft:podzol"));
case CHORUS_PLANT: case CHORUS_PLANT:
return MaterialSet.get(handle.createMaterialData("minecraft:end_stone")); return MaterialSet.get(handle.createBlockData("minecraft:end_stone"));
default: default:
return MaterialSet.get(handle.createMaterialData("minecraft:grass_block"), handle.createMaterialData("minecraft:dirt"), return MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"),
handle.createMaterialData("minecraft:podzol")); handle.createBlockData("minecraft:podzol"));
} }
} }
@@ -47,7 +45,7 @@ public class BukkitTree implements Tree {
} }
@Override @Override
public Set<MaterialData> getSpawnable() { public MaterialSet getSpawnable() {
return spawnable; return spawnable;
} }
} }
@@ -4,7 +4,7 @@ import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.Block; 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.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.BlockType;
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.BukkitAdapter;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
@@ -53,8 +53,8 @@ public class BukkitBlock implements Block {
} }
@Override @Override
public MaterialData getType() { public BlockType getType() {
return new BukkitMaterialData(delegate.getType()); return BukkitAdapter.adapt(delegate.getType());
} }
@Override @Override
@@ -0,0 +1,52 @@
package com.dfsek.terra.bukkit.world.block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import org.bukkit.Material;
public class BukkitBlockTypeAndItem implements BlockType, Item {
private final Material delegate;
public BukkitBlockTypeAndItem(Material delegate) {
this.delegate = delegate;
}
@Override
public Material getHandle() {
return delegate;
}
@Override
public BlockData getDefaultData() {
return BukkitAdapter.adapt(delegate.createBlockData());
}
@Override
public boolean isSolid() {
return delegate.isSolid();
}
@Override
public ItemStack newItemStack(int amount) {
return BukkitAdapter.adapt(new org.bukkit.inventory.ItemStack(delegate, amount));
}
@Override
public double getMaxDurability() {
return delegate.getMaxDurability();
}
@Override
public int hashCode() {
return delegate.hashCode();
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof BukkitBlockTypeAndItem)) return false;
return delegate == ((BukkitBlockTypeAndItem) obj).delegate;
}
}
@@ -1,62 +0,0 @@
package com.dfsek.terra.bukkit.world.block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
import org.bukkit.Material;
public class BukkitMaterialData implements MaterialData {
private final Material delegate;
public BukkitMaterialData(Material delegate) {
this.delegate = delegate;
}
@Override
public boolean matches(MaterialData other) {
return ((BukkitMaterialData) other).getHandle().equals(delegate);
}
@Override
public boolean matches(BlockData other) {
return ((BukkitMaterialData) other.getMaterial()).getHandle().equals(delegate);
}
@Override
public boolean isSolid() {
return delegate.isSolid();
}
@Override
public boolean isAir() {
return delegate.isAir();
}
@Override
public double getMaxDurability() {
return delegate.getMaxDurability();
}
@Override
public BlockData createBlockData() {
return BukkitBlockData.newInstance(delegate.createBlockData());
}
@Override
public Material getHandle() {
return delegate;
}
@Override
public int hashCode() {
return delegate.hashCode();
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof BukkitMaterialData)) return false;
BukkitMaterialData other = (BukkitMaterialData) obj;
return other.getHandle().equals(this.delegate);
}
}
@@ -1,9 +1,9 @@
package com.dfsek.terra.bukkit.world.block.data; package com.dfsek.terra.bukkit.world.block.data;
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.BlockType;
import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import org.bukkit.block.data.AnaloguePowerable; import org.bukkit.block.data.AnaloguePowerable;
import org.bukkit.block.data.Directional; import org.bukkit.block.data.Directional;
import org.bukkit.block.data.MultipleFacing; import org.bukkit.block.data.MultipleFacing;
@@ -52,13 +52,13 @@ public class BukkitBlockData implements BlockData {
} }
@Override @Override
public MaterialData getMaterial() { public BlockType getBlockType() {
return new BukkitMaterialData(delegate.getMaterial()); return BukkitAdapter.adapt(delegate.getMaterial());
} }
@Override @Override
public boolean matches(MaterialData materialData) { public boolean matches(BlockData data) {
return delegate.getMaterial().equals(((BukkitMaterialData) materialData).getHandle()); return delegate.getMaterial() == ((BukkitBlockData) data).getHandle().getMaterial();
} }
@Override @Override
@@ -76,4 +76,9 @@ public class BukkitBlockData implements BlockData {
public String getAsString() { public String getAsString() {
return delegate.getAsString(false); return delegate.getAsString(false);
} }
@Override
public boolean isAir() {
return delegate.getMaterial().isAir();
}
} }
@@ -1,9 +1,9 @@
package com.dfsek.terra.bukkit.world.inventory; package com.dfsek.terra.bukkit.world.inventory;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.ItemStack; import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.platform.inventory.item.ItemMeta; import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData; import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitItemStack implements ItemStack { public class BukkitItemStack implements ItemStack {
private org.bukkit.inventory.ItemStack delegate; private org.bukkit.inventory.ItemStack delegate;
@@ -23,8 +23,8 @@ public class BukkitItemStack implements ItemStack {
} }
@Override @Override
public MaterialData getType() { public Item getType() {
return new BukkitMaterialData(delegate.getType()); return BukkitAdapter.adapt(delegate.getType());
} }
@Override @Override
@@ -6,7 +6,6 @@ import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.TerraEventManager; import com.dfsek.terra.api.event.TerraEventManager;
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.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;
@@ -216,7 +215,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
genericLoaders.register(registry); genericLoaders.register(registry);
registry registry
.registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o))
.registerLoader(MaterialData.class, (t, o, l) -> worldHandle.createMaterialData((String) o))
.registerLoader(com.dfsek.terra.api.platform.world.Biome.class, (t, o, l) -> new FabricBiome(biomeFixer.translate((String) o))); .registerLoader(com.dfsek.terra.api.platform.world.Biome.class, (t, o, l) -> new FabricBiome(biomeFixer.translate((String) o)));
} }
@@ -1,16 +1,16 @@
package com.dfsek.terra.fabric.inventory; package com.dfsek.terra.fabric.inventory;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.inventory.ItemStack; import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.item.Enchantment; import com.dfsek.terra.api.platform.inventory.item.Enchantment;
import java.util.Collections; import java.util.Collections;
import java.util.Set; import java.util.Set;
public class FabricItemHandle implements ItemHandle { public class FabricItemHandle implements ItemHandle {
@Override @Override
public ItemStack newItemStack(MaterialData material, int amount) { public Item createItem(String data) {
return null; return null;
} }
@@ -1,6 +1,6 @@
package com.dfsek.terra.fabric.inventory; package com.dfsek.terra.fabric.inventory;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.ItemStack; import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.platform.inventory.item.ItemMeta; import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
@@ -18,7 +18,7 @@ public class FabricItemStack implements ItemStack {
} }
@Override @Override
public MaterialData getType() { public Item getType() {
return null; return null;
} }
@@ -1,7 +1,6 @@
package com.dfsek.terra.fabric.world; package com.dfsek.terra.fabric.world;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
@@ -13,7 +12,6 @@ import net.minecraft.world.gen.chunk.ChunkGenerator;
import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.ConfiguredFeature;
import java.util.Random; import java.util.Random;
import java.util.Set;
public class FabricTree implements Tree { public class FabricTree implements Tree {
private final ConfiguredFeature<?, ?> delegate; private final ConfiguredFeature<?, ?> delegate;
@@ -30,8 +28,8 @@ public class FabricTree implements Tree {
} }
@Override @Override
public Set<MaterialData> getSpawnable() { public MaterialSet getSpawnable() {
return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createMaterialData("minecraft:grass_block"), return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"),
TerraFabricPlugin.getInstance().getWorldHandle().createMaterialData("minecraft:podzol")); TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"));
} }
} }
@@ -2,11 +2,9 @@ package com.dfsek.terra.fabric.world;
import com.dfsek.terra.api.platform.block.Block; 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.entity.EntityType; import com.dfsek.terra.api.platform.entity.EntityType;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
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.data.FabricMultipleFacing; import com.dfsek.terra.fabric.world.block.data.FabricMultipleFacing;
import com.dfsek.terra.fabric.world.block.data.FabricOrientable; import com.dfsek.terra.fabric.world.block.data.FabricOrientable;
import com.dfsek.terra.fabric.world.block.data.FabricSlab; import com.dfsek.terra.fabric.world.block.data.FabricSlab;
@@ -31,11 +29,6 @@ public class FabricWorldHandle implements WorldHandle {
return block.getBlockData(); return block.getBlockData();
} }
@Override
public MaterialData getType(Block block) {
return block.getType();
}
@Override @Override
public FabricBlockData createBlockData(String data) { public FabricBlockData createBlockData(String data) {
BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true); BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true);
@@ -58,11 +51,6 @@ public class FabricWorldHandle implements WorldHandle {
} }
} }
@Override
public MaterialData createMaterialData(String data) {
return new FabricMaterialData(createBlockData(data).getHandle().getBlock());
}
@Override @Override
public EntityType getEntity(String id) { public EntityType getEntity(String id) {
return null; return null;
@@ -4,7 +4,7 @@ import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.Block; 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.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.platform.block.state.BlockState; import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.fabric.world.FabricAdapters; import com.dfsek.terra.fabric.world.FabricAdapters;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess; import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess;
@@ -46,7 +46,7 @@ public class FabricBlock implements Block {
@Override @Override
public boolean isEmpty() { public boolean isEmpty() {
return getBlockData().getMaterial().isAir(); return false;
} }
@Override @Override
@@ -55,8 +55,8 @@ public class FabricBlock implements Block {
} }
@Override @Override
public MaterialData getType() { public BlockType getType() {
return getBlockData().getMaterial(); return getBlockData().getBlockType();
} }
@Override @Override
@@ -1,7 +1,7 @@
package com.dfsek.terra.fabric.world.block; package com.dfsek.terra.fabric.world.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.BlockType;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
public class FabricBlockData implements BlockData { public class FabricBlockData implements BlockData {
@@ -12,13 +12,13 @@ public class FabricBlockData implements BlockData {
} }
@Override @Override
public MaterialData getMaterial() { public BlockType getBlockType() {
return new FabricMaterialData(delegate.getBlock()); return null;
} }
@Override @Override
public boolean matches(MaterialData materialData) { public boolean matches(BlockData other) {
return ((FabricMaterialData) materialData).getHandle().is(delegate.getBlock()); return false;
} }
@Override @Override
@@ -35,6 +35,11 @@ public class FabricBlockData implements BlockData {
return delegate.toString(); return delegate.toString();
} }
@Override
public boolean isAir() {
return false;
}
@Override @Override
public BlockState getHandle() { public BlockState getHandle() {
return delegate; return delegate;
@@ -1,63 +0,0 @@
package com.dfsek.terra.fabric.world.block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
public class FabricMaterialData implements MaterialData {
private final Block delegate;
public FabricMaterialData(Block delegate) {
this.delegate = delegate;
}
@Override
public boolean matches(MaterialData other) {
return delegate.equals(((FabricMaterialData) other).getHandle());
}
@Override
public boolean matches(BlockData other) {
return delegate.equals(((FabricMaterialData) other.getMaterial()).getHandle());
}
@Override
public boolean isSolid() {
return !delegate.is(Blocks.AIR);
}
@Override
public boolean isAir() {
return delegate.is(Blocks.AIR); // TODO: better impl
}
@Override
public double getMaxDurability() {
return 0;
}
@Override
public BlockData createBlockData() {
return new FabricBlockData(delegate.getDefaultState());
}
@Override
public Block getHandle() {
return delegate;
}
@Override
public int hashCode() {
return delegate.asItem().hashCode();
}
@Override
public boolean equals(Object obj) {
if(obj instanceof FabricMaterialData) {
return ((FabricMaterialData) obj).matches(this);
}
return false;
}
}
@@ -6,7 +6,6 @@ import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.TerraEventManager; import com.dfsek.terra.api.event.TerraEventManager;
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.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;
@@ -123,7 +122,6 @@ public class StandalonePlugin implements TerraPlugin {
registry registry
.registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o))
.registerLoader(Biome.class, (t, o, l) -> new RawBiome(o.toString())) .registerLoader(Biome.class, (t, o, l) -> new RawBiome(o.toString()))
.registerLoader(MaterialData.class, (t, o, l) -> worldHandle.createMaterialData((String) o));
new GenericLoaders(this).register(registry); new GenericLoaders(this).register(registry);
} }
@@ -1,10 +1,10 @@
package com.dfsek.terra.platform; package com.dfsek.terra.platform;
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.BlockType;
import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.CompoundTag;
public class Data implements BlockData, MaterialData { public class Data implements BlockData, BlockType {
private final CompoundTag data; private final CompoundTag data;
private final String noProp; private final String noProp;
@@ -38,39 +38,20 @@ public class Data implements BlockData, MaterialData {
@Override @Override
public MaterialData getMaterial() { public BlockType getBlockType() {
return this; return this;
} }
@Override
public boolean matches(MaterialData materialData) {
return ((Data) materialData).noProp.equals(noProp);
}
@Override @Override
public boolean matches(BlockData other) { public boolean matches(BlockData other) {
return ((Data) other).noProp.equals(noProp); return ((Data) other).noProp.equals(noProp);
} }
@Override
public boolean isSolid() {
return !isAir(); //TODO: actual implementation
}
@Override @Override
public boolean isAir() { public boolean isAir() {
return noProp.equals("minecraft:air"); return noProp.equals("minecraft:air");
} }
@Override
public double getMaxDurability() {
return 0;
}
@Override
public BlockData createBlockData() {
return this;
}
@Override @Override
public BlockData clone() { public BlockData clone() {
@@ -101,4 +82,14 @@ public class Data implements BlockData, MaterialData {
if(!(obj instanceof Data)) return false; if(!(obj instanceof Data)) return false;
return ((Data) obj).noProp.equals(noProp); return ((Data) obj).noProp.equals(noProp);
} }
@Override
public BlockData getDefaultData() {
return this;
}
@Override
public boolean isSolid() {
return false;
}
} }
@@ -5,7 +5,7 @@ import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.Block; 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.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.platform.block.state.BlockState; import com.dfsek.terra.api.platform.block.state.BlockState;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -56,7 +56,7 @@ public class DirectBlock implements Block {
} }
@Override @Override
public MaterialData getType() { public BlockType getType() {
return new Data(world.getData(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ())); return new Data(world.getData(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()));
} }
@@ -1,12 +1,10 @@
package com.dfsek.terra.platform; package com.dfsek.terra.platform;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import java.util.Collections;
import java.util.Random; import java.util.Random;
import java.util.Set;
public class RawTree implements Tree { // TODO: implement public class RawTree implements Tree { // TODO: implement
@Override @Override
@@ -15,7 +13,7 @@ public class RawTree implements Tree { // TODO: implement
} }
@Override @Override
public Set<MaterialData> getSpawnable() { public MaterialSet getSpawnable() {
return Collections.emptySet(); return MaterialSet.empty();
} }
} }
@@ -2,7 +2,6 @@ package com.dfsek.terra.platform;
import com.dfsek.terra.api.platform.block.Block; 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.entity.EntityType; import com.dfsek.terra.api.platform.entity.EntityType;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
@@ -17,21 +16,11 @@ public class RawWorldHandle implements WorldHandle {
return null; return null;
} }
@Override
public MaterialData getType(Block block) {
return null;
}
@Override @Override
public BlockData createBlockData(String data) { public BlockData createBlockData(String data) {
return new Data(data); return new Data(data);
} }
@Override
public MaterialData createMaterialData(String data) {
return new Data(data);
}
@Override @Override
public EntityType getEntity(String id) { public EntityType getEntity(String id) {
return null; return null;