diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/Block.java b/common/src/main/java/com/dfsek/terra/api/platform/block/Block.java index 47242d6e2..becb5d436 100644 --- a/common/src/main/java/com/dfsek/terra/api/platform/block/Block.java +++ b/common/src/main/java/com/dfsek/terra/api/platform/block/Block.java @@ -19,7 +19,7 @@ public interface Block extends Handle { Location getLocation(); - MaterialData getType(); + BlockType getType(); int getX(); diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java b/common/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java index d58979fa6..fc7df1172 100644 --- a/common/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java +++ b/common/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java @@ -3,11 +3,14 @@ package com.dfsek.terra.api.platform.block; import com.dfsek.terra.api.platform.Handle; public interface BlockData extends Cloneable, Handle { - MaterialData getMaterial(); - boolean matches(MaterialData materialData); + BlockType getBlockType(); + + boolean matches(BlockData other); BlockData clone(); String getAsString(); + + boolean isAir(); } diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java b/common/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java new file mode 100644 index 000000000..d7c6c160d --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java @@ -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(); +} diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/MaterialData.java b/common/src/main/java/com/dfsek/terra/api/platform/block/MaterialData.java deleted file mode 100644 index c5f3037b1..000000000 --- a/common/src/main/java/com/dfsek/terra/api/platform/block/MaterialData.java +++ /dev/null @@ -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(); -} diff --git a/common/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java b/common/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java index fe2fe39d0..1c76e225d 100644 --- a/common/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java +++ b/common/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.platform.handle; -import com.dfsek.terra.api.platform.block.MaterialData; -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 java.util.Set; public interface ItemHandle { - ItemStack newItemStack(MaterialData material, int amount); + + Item createItem(String data); Enchantment getEnchantment(String id); diff --git a/common/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java b/common/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java index 373d44f15..8e6f4e251 100644 --- a/common/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java +++ b/common/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java @@ -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.BlockData; -import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.entity.EntityType; /** @@ -13,11 +12,7 @@ public interface WorldHandle { BlockData getBlockData(Block block); - MaterialData getType(Block block); - BlockData createBlockData(String data); - MaterialData createMaterialData(String data); - EntityType getEntity(String id); } diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java b/common/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java new file mode 100644 index 000000000..4fa70ede3 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java @@ -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(); +} diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java b/common/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java index 95b1d299a..b480f6c5a 100644 --- a/common/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java +++ b/common/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.platform.inventory; import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.inventory.item.ItemMeta; public interface ItemStack extends Handle, Cloneable { @@ -9,7 +8,7 @@ public interface ItemStack extends Handle, Cloneable { void setAmount(int i); - MaterialData getType(); + Item getType(); ItemStack clone(); diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java b/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java index 4eb506c1d..81c48aab1 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.loot; 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.structures.loot.functions.AmountFunction; 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. */ public class Entry { - private final MaterialData item; + private final Item item; private final long weight; private final List functions = new GlueList<>(); - private final TerraPlugin main; /** * Instantiates an Entry from a JSON representation. @@ -30,9 +29,8 @@ public class Entry { * @param entry The JSON Object to instantiate from. */ public Entry(JSONObject entry, TerraPlugin main) { - this.main = main; String id = entry.get("name").toString(); - this.item = main.getWorldHandle().createMaterialData(id); + this.item = main.getItemHandle().createItem(id); long weight1; try { @@ -85,7 +83,7 @@ public class Entry { * @return ItemStack - The ItemStack with all functions applied. */ public ItemStack getItem(Random r) { - ItemStack item = main.getItemHandle().newItemStack(this.item, 1); + ItemStack item = this.item.newItemStack(1); for(LootFunction f : functions) { item = f.apply(item, r); } diff --git a/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java b/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java index 44b9b16f6..77099137e 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java +++ b/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java @@ -1,27 +1,37 @@ package com.dfsek.terra.api.util.collections; 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.HashSet; -public class MaterialSet extends HashSet { +public class MaterialSet extends HashSet { private static final long serialVersionUID = 3056512763631017301L; - public static MaterialSet singleton(MaterialData material) { + public static MaterialSet singleton(BlockType material) { MaterialSet set = new MaterialSet(); set.add(material); return set; } - public static MaterialSet get(MaterialData... materials) { + public static MaterialSet get(BlockType... materials) { MaterialSet set = new MaterialSet(); set.addAll(Arrays.asList(materials)); 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) { - add(data.getMaterial()); + add(data.getBlockType()); } } diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/Tree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/Tree.java index 47221fd20..0e14dd176 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/Tree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/Tree.java @@ -2,13 +2,12 @@ package com.dfsek.terra.api.world.tree; 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.Set; public interface Tree { boolean plant(Location l, Random r); - Set getSpawnable(); + MaterialSet getSpawnable(); } diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java index 5b56ea7f6..ef5f29197 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java @@ -11,8 +11,8 @@ import java.util.Random; public class Cactus extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:sand"), - main.getWorldHandle().createMaterialData("minecraft:red_sand")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:sand"), + main.getWorldHandle().createBlockData("minecraft:red_sand")); } diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java index dfa231326..716313df4 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java @@ -19,10 +19,10 @@ public class IceSpike extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:stone"), - main.getWorldHandle().createMaterialData("minecraft:gravel"), - main.getWorldHandle().createMaterialData("minecraft:snow_block"), - main.getWorldHandle().createMaterialData("minecraft:grass_block")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:stone"), + main.getWorldHandle().createBlockData("minecraft:gravel"), + main.getWorldHandle().createBlockData("minecraft:snow_block"), + main.getWorldHandle().createBlockData("minecraft:grass_block")); } /** diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java index c86a2620f..ced1db454 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java @@ -17,8 +17,8 @@ public class OakTree extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:podzol"), - main.getWorldHandle().createMaterialData("minecraft:grass_block")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:podzol"), + main.getWorldHandle().createBlockData("minecraft:grass_block")); } /** diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java index 225947dca..35c24bff6 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java @@ -12,7 +12,7 @@ public class ShatteredPillar extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone")); } /** diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java index 38425f989..06dded13b 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java @@ -20,7 +20,7 @@ public class ShatteredTree extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone")); } /** diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java index a1465ef05..35825e7fe 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java @@ -12,7 +12,7 @@ public class SmallShatteredPillar extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone")); } /** diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java index a5109ba9d..6148d78c4 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java @@ -20,7 +20,7 @@ public class SmallShatteredTree extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:end_stone")); } /** diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java index 5f2f91765..d0db1dea9 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java @@ -16,8 +16,8 @@ public class SpruceTree extends FractalTree { @Override public MaterialSet getSpawnable() { - return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:podzol"), - main.getWorldHandle().createMaterialData("minecraft:grass_block")); + return MaterialSet.get(main.getWorldHandle().createBlockData("minecraft:podzol"), + main.getWorldHandle().createBlockData("minecraft:grass_block")); } /** diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java index c0c942bcd..a15d1710c 100644 --- a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -1,7 +1,7 @@ package com.dfsek.terra.carving; 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.ProbabilityCollection; @@ -29,7 +29,7 @@ public class CarverPalette { return layers[y]; } - public boolean canReplace(MaterialData material) { + public boolean canReplace(BlockType material) { return blacklist != replace.contains(material); } diff --git a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java index b848f0fbb..0e3c7b635 100644 --- a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.noise.samplers.ImageSampler; 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.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.SourceSeeded; @@ -92,6 +93,7 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(SourceSeeded.class, new SourceBuilderLoader()) .registerLoader(StageSeeded.class, new StageBuilderLoader()) .registerLoader(TerraAddon.class, main.getAddons()) + .registerLoader(BlockType.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType()) .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) .registerLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) .registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object)) diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index d4d7b5c01..a98ca9837 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; 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 java.lang.reflect.Type; @@ -18,7 +18,7 @@ public class MaterialSetLoader implements TypeLoader { for(String string : stringData) { try { - set.add(configLoader.loadClass(MaterialData.class, string)); + set.add(configLoader.loadClass(BlockType.class, string)); } catch(NullPointerException e) { throw new LoadException("Invalid data identifier \"" + string + "\"", e); } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/src/main/java/com/dfsek/terra/config/loaders/Types.java index 9c91e598a..255c652c0 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -1,7 +1,6 @@ package com.dfsek.terra.config.loaders; 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.world.biome.TerraBiome; 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.util.Map; -import java.util.Set; /** * Class to hold Type instances for types with generics. */ @SuppressWarnings("unused") 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_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; static { - MATERIAL_SET_TYPE = getType("materialSet"); - MATERIAL_PROBABILITY_COLLECTION_TYPE = getType("materialProbabilityCollection"); BLOCK_DATA_PALETTE_TYPE = getType("blockDataPalette"); BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockDataProbabilityCollection"); FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection"); @@ -37,9 +31,7 @@ public final class Types { TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); } - private Set materialSet; private Palette blockDataPalette; - private ProbabilityCollection materialProbabilityCollection; private ProbabilityCollection blockDataProbabilityCollection; private ProbabilityCollection floraProbabilityCollection; private ProbabilityCollection treeProbabilityCollection; diff --git a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index a7aa92403..42bbdb452 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -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.defined.UserDefinedFunction; 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.util.GlueList; import com.dfsek.terra.api.util.collections.ProbabilityCollection; @@ -158,12 +158,12 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("slabs.palettes") @Abstractable @Default - private Map> slabPalettes; + private Map> slabPalettes; @Value("slabs.stair-palettes") @Abstractable @Default - private Map> stairPalettes; + private Map> stairPalettes; @Value("slant.threshold") @Abstractable @@ -237,11 +237,11 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return doSlabs; } - public Map> getSlabPalettes() { + public Map> getSlabPalettes() { return slabPalettes; } - public Map> getStairPalettes() { + public Map> getStairPalettes() { return stairPalettes; } diff --git a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java index 989fe3919..96cdbde03 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; 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.carving.CarverPalette; @@ -104,7 +104,7 @@ public class CarverTemplate extends AbstractableTemplate { @Value("shift") @Abstractable @Default - private Map shift = new HashMap<>(); + private Map shift = new HashMap<>(); @Value("update") @Abstractable @@ -187,7 +187,7 @@ public class CarverTemplate extends AbstractableTemplate { return inner; } - public Map getShift() { + public Map getShift() { return shift; } diff --git a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java index c06b8b0d4..5a3ce612b 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java @@ -2,7 +2,6 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; 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.world.flora.Flora; import com.dfsek.terra.registry.OpenRegistry; @@ -52,8 +51,8 @@ public class FloraRegistry extends OpenRegistry { addItem("BROWN_MUSHROOM", () -> new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:brown_mushroom")))); } - private MaterialData create(String s) { - return main.getWorldHandle().createMaterialData(s); + private BlockData create(String s) { + return main.getWorldHandle().createBlockData(s); } private void addItem(String id, Callable flora) { diff --git a/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java index 05a29d849..fe5cddc6d 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java @@ -3,7 +3,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; 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.fractal.FractalTree; 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.InvocationTargetException; import java.util.Random; -import java.util.Set; public class TreeRegistry extends OpenRegistry { private final TerraPlugin main; @@ -71,7 +70,7 @@ public class TreeRegistry extends OpenRegistry { } @Override - public Set getSpawnable() { + public MaterialSet getSpawnable() { return tree.getSpawnable(); } } diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 6fe999c4d..2f51165ec 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; 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.Slab; import com.dfsek.terra.api.platform.block.data.Stairs; @@ -37,7 +37,7 @@ import java.util.Random; public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - private final MaterialData water; + private final BlockType water; private final SinglePalette blank; private final Carver carver; @@ -49,7 +49,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { this.configPack = c; this.main = 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")); this.cache = cache; } @@ -150,11 +150,11 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map> slabs, - Map> stairs, double thresh, Sampler sampler) { + private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map> slabs, + Map> stairs, double thresh, Sampler sampler) { if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) { if(stairs != null) { - Palette stairPalette = stairs.get(down.getMaterial()); + Palette stairPalette = stairs.get(down.getBlockType()); if(stairPalette != null) { BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); 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) { - ((Waterlogged) slab).setWaterlogged(orig.matches(water)); - } else if(orig.matches(water)) return; + ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water)); + } else if(orig.getBlockType().equals(water)) return; chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); } } - private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map> slabs, - Map> stairs, double thresh, Sampler sampler) { + private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map> slabs, + Map> stairs, double thresh, Sampler sampler) { if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) { if(stairs != null) { - Palette stairPalette = stairs.get(up.getMaterial()); + Palette stairPalette = stairs.get(up.getBlockType()); if(stairPalette != null) { BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); 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 Slab) ((Slab) slab).setType(Slab.Type.TOP); if(slab instanceof Waterlogged) { - ((Waterlogged) slab).setWaterlogged(orig.matches(water)); - } else if(orig.matches(water)) return; // Only replace water if waterlogged. + ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water)); + } else if(orig.getBlockType().equals(water)) return; // Only replace water if waterlogged. chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); } } @@ -208,7 +208,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { stairNew.setFacing(BlockFace.EAST); } else 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); return true; } diff --git a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 38d5755fe..4b2e7c126 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.Block; 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.world.Chunk; import com.dfsek.terra.api.platform.world.World; @@ -24,7 +24,7 @@ import java.util.Random; import java.util.Set; public class CavePopulator implements TerraBlockPopulator { - private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. + private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. private final TerraPlugin main; public CavePopulator(TerraPlugin main) { @@ -44,51 +44,52 @@ public class CavePopulator implements TerraBlockPopulator { for(UserDefinedCarver c : config.getCarvers()) { CarverTemplate template = c.getConfig(); - Map shiftCandidate = new HashMap<>(); + Map shiftCandidate = new HashMap<>(); Set updateNeeded = new HashSet<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { 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) { case CENTER: - if(template.getInner().canReplace(m)) { + if(template.getInner().canReplace(re)) { b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(m)) updateNeeded.add(b); - if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); } break; case WALL: - if(template.getOuter().canReplace(m)) { + if(template.getOuter().canReplace(re)) { b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(m)) updateNeeded.add(b); - if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); } break; case TOP: - if(template.getTop().canReplace(m)) { + if(template.getTop().canReplace(re)) { b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(m)) updateNeeded.add(b); - if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); } break; case BOTTOM: - if(template.getBottom().canReplace(m)) { + if(template.getBottom().canReplace(re)) { b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(m)) updateNeeded.add(b); - if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); } break; } }); - for(Map.Entry entry : shiftCandidate.entrySet()) { + for(Map.Entry entry : shiftCandidate.entrySet()) { Location l = entry.getKey(); Location mut = l.clone(); - MaterialData orig = handle.getType(l.getBlock()); + BlockData orig = handle.getBlockData(l.getBlock()); 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 { - if(template.getShift().get(entry.getValue()).contains(mut.getBlock().getType())) { - handle.setBlockData(mut.getBlock(), shiftStorage.computeIfAbsent(entry.getValue(), MaterialData::createBlockData), false); + if(template.getShift().get(entry.getValue().getBlockType()).contains(mut.getBlock().getBlockData().getBlockType())) { + handle.setBlockData(mut.getBlock(), shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); } } catch(NullPointerException ignore) { } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 5f8e99ee5..785f85215 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -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.TerraEventManager; 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.WorldHandle; import com.dfsek.terra.api.platform.world.Biome; @@ -262,7 +261,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { public void register(TypeRegistry registry) { registry .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(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); genericLoaders.register(registry); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java index aa8531e67..f13783203 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java @@ -1,13 +1,11 @@ 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.inventory.ItemStack; +import com.dfsek.terra.api.platform.inventory.Item; import com.dfsek.terra.api.platform.inventory.item.Enchantment; import com.dfsek.terra.bukkit.util.MinecraftUtils; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.bukkit.world.block.BukkitMaterialData; -import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; +import org.bukkit.Material; import org.bukkit.NamespacedKey; import java.util.Arrays; @@ -15,9 +13,10 @@ import java.util.Set; import java.util.stream.Collectors; public class BukkitItemHandle implements ItemHandle { + @Override - public ItemStack newItemStack(MaterialData material, int amount) { - return new BukkitItemStack(new org.bukkit.inventory.ItemStack(((BukkitMaterialData) material).getHandle(), amount)); + public Item createItem(String data) { + return BukkitAdapter.adapt(Material.matchMaterial(data)); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 03beeabcb..8bf49a0d9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -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.BlockData; -import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.entity.EntityType; 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.entity.BukkitEntityType; import org.bukkit.Bukkit; -import org.bukkit.Material; public class BukkitWorldHandle implements WorldHandle { @Override @@ -22,22 +19,12 @@ public class BukkitWorldHandle implements WorldHandle { return block.getBlockData(); } - @Override - public MaterialData getType(Block block) { - return block.getType(); - } - @Override public BlockData createBlockData(String data) { org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData(data); return BukkitBlockData.newInstance(bukkitData); } - @Override - public MaterialData createMaterialData(String data) { - return new BukkitMaterialData(Material.matchMaterial(data)); - } - @Override public EntityType getEntity(String id) { return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id)); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 643488ccb..cd3e61b1d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -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.BlockData; 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.Rail; 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.Stairs; +import com.dfsek.terra.api.platform.inventory.ItemStack; import com.dfsek.terra.api.platform.inventory.item.Enchantment; import com.dfsek.terra.api.platform.world.Chunk; 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.bukkit.BukkitCommandSender; 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.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.entity.Player; 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) { 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(); + } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java index 69f1e578c..d4364a1b0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java @@ -2,14 +2,12 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; 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.util.collections.MaterialSet; import com.dfsek.terra.api.world.tree.Tree; import org.bukkit.TreeType; import java.util.Random; -import java.util.Set; public class BukkitTree implements Tree { private final TreeType delegate; @@ -26,18 +24,18 @@ public class BukkitTree implements Tree { WorldHandle handle = main.getWorldHandle(); switch(type) { case CRIMSON_FUNGUS: - return MaterialSet.get(handle.createMaterialData("minecraft:crimson_nylium")); + return MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium")); case WARPED_FUNGUS: - return MaterialSet.get(handle.createMaterialData("minecraft:warped_nylium")); + return MaterialSet.get(handle.createBlockData("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")); + return MaterialSet.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), + handle.createBlockData("minecraft:podzol")); case CHORUS_PLANT: - return MaterialSet.get(handle.createMaterialData("minecraft:end_stone")); + return MaterialSet.get(handle.createBlockData("minecraft:end_stone")); default: - return MaterialSet.get(handle.createMaterialData("minecraft:grass_block"), handle.createMaterialData("minecraft:dirt"), - handle.createMaterialData("minecraft:podzol")); + return MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), + handle.createBlockData("minecraft:podzol")); } } @@ -47,7 +45,7 @@ public class BukkitTree implements Tree { } @Override - public Set getSpawnable() { + public MaterialSet getSpawnable() { return spawnable; } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java index aaa5a9b47..dcf49acdd 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java @@ -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.BlockData; 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.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; @@ -53,8 +53,8 @@ public class BukkitBlock implements Block { } @Override - public MaterialData getType() { - return new BukkitMaterialData(delegate.getType()); + public BlockType getType() { + return BukkitAdapter.adapt(delegate.getType()); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java new file mode 100644 index 000000000..aeafa9823 --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -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; + } +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitMaterialData.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitMaterialData.java deleted file mode 100644 index e0bfba568..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitMaterialData.java +++ /dev/null @@ -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); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java index 6e198a53b..a742d0549 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world.block.data; 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.world.block.BukkitMaterialData; +import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.block.data.AnaloguePowerable; import org.bukkit.block.data.Directional; import org.bukkit.block.data.MultipleFacing; @@ -52,13 +52,13 @@ public class BukkitBlockData implements BlockData { } @Override - public MaterialData getMaterial() { - return new BukkitMaterialData(delegate.getMaterial()); + public BlockType getBlockType() { + return BukkitAdapter.adapt(delegate.getMaterial()); } @Override - public boolean matches(MaterialData materialData) { - return delegate.getMaterial().equals(((BukkitMaterialData) materialData).getHandle()); + public boolean matches(BlockData data) { + return delegate.getMaterial() == ((BukkitBlockData) data).getHandle().getMaterial(); } @Override @@ -76,4 +76,9 @@ public class BukkitBlockData implements BlockData { public String getAsString() { return delegate.getAsString(false); } + + @Override + public boolean isAir() { + return delegate.getMaterial().isAir(); + } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java index 5d94c45c5..28bbca8f9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java @@ -1,9 +1,9 @@ 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.item.ItemMeta; -import com.dfsek.terra.bukkit.world.block.BukkitMaterialData; +import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitItemStack implements ItemStack { private org.bukkit.inventory.ItemStack delegate; @@ -23,8 +23,8 @@ public class BukkitItemStack implements ItemStack { } @Override - public MaterialData getType() { - return new BukkitMaterialData(delegate.getType()); + public Item getType() { + return BukkitAdapter.adapt(delegate.getType()); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 3bb773ee3..6433f918b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.addons.TerraAddon; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.TerraEventManager; 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.WorldHandle; import com.dfsek.terra.api.platform.world.World; @@ -216,7 +215,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { genericLoaders.register(registry); registry .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))); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemHandle.java index 2c0596b5e..d487bd719 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemHandle.java @@ -1,16 +1,16 @@ 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.inventory.ItemStack; +import com.dfsek.terra.api.platform.inventory.Item; import com.dfsek.terra.api.platform.inventory.item.Enchantment; import java.util.Collections; import java.util.Set; public class FabricItemHandle implements ItemHandle { + @Override - public ItemStack newItemStack(MaterialData material, int amount) { + public Item createItem(String data) { return null; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemStack.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemStack.java index c6caae3e3..1db90510e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemStack.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/inventory/FabricItemStack.java @@ -1,6 +1,6 @@ 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.item.ItemMeta; @@ -18,7 +18,7 @@ public class FabricItemStack implements ItemStack { } @Override - public MaterialData getType() { + public Item getType() { return null; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java index 53d727461..f7480a57d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.world; 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.fabric.TerraFabricPlugin; @@ -13,7 +12,6 @@ import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.ConfiguredFeature; import java.util.Random; -import java.util.Set; public class FabricTree implements Tree { private final ConfiguredFeature delegate; @@ -30,8 +28,8 @@ public class FabricTree implements Tree { } @Override - public Set getSpawnable() { - return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createMaterialData("minecraft:grass_block"), - TerraFabricPlugin.getInstance().getWorldHandle().createMaterialData("minecraft:podzol")); + public MaterialSet getSpawnable() { + return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), + TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol")); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricWorldHandle.java index e06e8e780..5633b6546 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricWorldHandle.java @@ -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.BlockData; -import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.entity.EntityType; import com.dfsek.terra.api.platform.handle.WorldHandle; 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.FabricOrientable; import com.dfsek.terra.fabric.world.block.data.FabricSlab; @@ -31,11 +29,6 @@ public class FabricWorldHandle implements WorldHandle { return block.getBlockData(); } - @Override - public MaterialData getType(Block block) { - return block.getType(); - } - @Override public FabricBlockData createBlockData(String data) { 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 public EntityType getEntity(String id) { return null; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlock.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlock.java index 2b22b99ba..eab578d3a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlock.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlock.java @@ -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.BlockData; 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.fabric.world.FabricAdapters; import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess; @@ -46,7 +46,7 @@ public class FabricBlock implements Block { @Override public boolean isEmpty() { - return getBlockData().getMaterial().isAir(); + return false; } @Override @@ -55,8 +55,8 @@ public class FabricBlock implements Block { } @Override - public MaterialData getType() { - return getBlockData().getMaterial(); + public BlockType getType() { + return getBlockData().getBlockType(); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlockData.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlockData.java index f7fac5fb4..643a849a3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlockData.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricBlockData.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.world.block; 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; public class FabricBlockData implements BlockData { @@ -12,13 +12,13 @@ public class FabricBlockData implements BlockData { } @Override - public MaterialData getMaterial() { - return new FabricMaterialData(delegate.getBlock()); + public BlockType getBlockType() { + return null; } @Override - public boolean matches(MaterialData materialData) { - return ((FabricMaterialData) materialData).getHandle().is(delegate.getBlock()); + public boolean matches(BlockData other) { + return false; } @Override @@ -35,6 +35,11 @@ public class FabricBlockData implements BlockData { return delegate.toString(); } + @Override + public boolean isAir() { + return false; + } + @Override public BlockState getHandle() { return delegate; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricMaterialData.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricMaterialData.java deleted file mode 100644 index dd9941d03..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/FabricMaterialData.java +++ /dev/null @@ -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; - } -} diff --git a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java index d917f5fe9..68a686669 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.addons.TerraAddon; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.TerraEventManager; 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.WorldHandle; import com.dfsek.terra.api.platform.world.Biome; @@ -123,7 +122,6 @@ public class StandalonePlugin implements TerraPlugin { registry .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) .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); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java b/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java index 0ba30f150..98c3ee0ec 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java @@ -1,10 +1,10 @@ package com.dfsek.terra.platform; 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; -public class Data implements BlockData, MaterialData { +public class Data implements BlockData, BlockType { private final CompoundTag data; private final String noProp; @@ -38,39 +38,20 @@ public class Data implements BlockData, MaterialData { @Override - public MaterialData getMaterial() { + public BlockType getBlockType() { return this; } - @Override - public boolean matches(MaterialData materialData) { - return ((Data) materialData).noProp.equals(noProp); - } - @Override public boolean matches(BlockData other) { return ((Data) other).noProp.equals(noProp); } - @Override - public boolean isSolid() { - return !isAir(); //TODO: actual implementation - } - @Override public boolean isAir() { return noProp.equals("minecraft:air"); } - @Override - public double getMaxDurability() { - return 0; - } - - @Override - public BlockData createBlockData() { - return this; - } @Override public BlockData clone() { @@ -101,4 +82,14 @@ public class Data implements BlockData, MaterialData { if(!(obj instanceof Data)) return false; return ((Data) obj).noProp.equals(noProp); } + + @Override + public BlockData getDefaultData() { + return this; + } + + @Override + public boolean isSolid() { + return false; + } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java index 55372978b..3169d0667 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java @@ -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.BlockData; 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 net.jafama.FastMath; @@ -56,7 +56,7 @@ public class DirectBlock implements Block { } @Override - public MaterialData getType() { + public BlockType getType() { return new Data(world.getData(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ())); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index 867e1bd4a..b58efb7e0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,12 +1,10 @@ package com.dfsek.terra.platform; 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 java.util.Collections; import java.util.Random; -import java.util.Set; public class RawTree implements Tree { // TODO: implement @Override @@ -15,7 +13,7 @@ public class RawTree implements Tree { // TODO: implement } @Override - public Set getSpawnable() { - return Collections.emptySet(); + public MaterialSet getSpawnable() { + return MaterialSet.empty(); } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java index a6c487aa7..dcf094708 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java @@ -2,7 +2,6 @@ package com.dfsek.terra.platform; import com.dfsek.terra.api.platform.block.Block; 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.handle.WorldHandle; @@ -17,21 +16,11 @@ public class RawWorldHandle implements WorldHandle { return null; } - @Override - public MaterialData getType(Block block) { - return null; - } - @Override public BlockData createBlockData(String data) { return new Data(data); } - @Override - public MaterialData createMaterialData(String data) { - return new Data(data); - } - @Override public EntityType getEntity(String id) { return null;