mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-25 21:40:08 +00:00
Predefined Flora
This commit is contained in:
1 parent
5c9c47d078
commit
7ee1d2c391
4 files changed
+134
-103
No files matched your search
@@ -1,88 +0,0 @@
|
|||||||
package com.dfsek.terra.api.gaea.world;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.gaea.math.Range;
|
|
||||||
import com.dfsek.terra.api.gaea.util.GlueList;
|
|
||||||
import com.dfsek.terra.api.generic.world.Chunk;
|
|
||||||
import com.dfsek.terra.api.generic.world.block.Block;
|
|
||||||
import com.dfsek.terra.api.generic.world.block.BlockData;
|
|
||||||
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
|
||||||
import com.dfsek.terra.api.generic.world.vector.Location;
|
|
||||||
import com.dfsek.terra.api.implementations.bukkit.world.block.BukkitBlockData;
|
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public enum FloraType implements Flora {
|
|
||||||
TALL_GRASS(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:tall_grass[half=lower]"), Bukkit.createBlockData("minecraft:tall_grass[half=upper]")),
|
|
||||||
TALL_FERN(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:large_fern[half=lower]"), Bukkit.createBlockData("minecraft:large_fern[half=upper]")),
|
|
||||||
SUNFLOWER(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:sunflower[half=lower]"), Bukkit.createBlockData("minecraft:sunflower[half=upper]")),
|
|
||||||
ROSE_BUSH(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:rose_bush[half=lower]"), Bukkit.createBlockData("minecraft:rose_bush[half=upper]")),
|
|
||||||
LILAC(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:lilac[half=lower]"), Bukkit.createBlockData("minecraft:lilac[half=upper]")),
|
|
||||||
PEONY(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:peony[half=lower]"), Bukkit.createBlockData("minecraft:peony[half=upper]")),
|
|
||||||
GRASS(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:grass")),
|
|
||||||
FERN(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:fern")),
|
|
||||||
AZURE_BLUET(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:azure_bluet")),
|
|
||||||
LILY_OF_THE_VALLEY(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:lily_of_the_valley")),
|
|
||||||
BLUE_ORCHID(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:blue_orchid")),
|
|
||||||
POPPY(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:poppy")),
|
|
||||||
DANDELION(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:dandelion")),
|
|
||||||
WITHER_ROSE(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:wither_rose")),
|
|
||||||
DEAD_BUSH(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL, Material.SAND, Material.RED_SAND,
|
|
||||||
Material.TERRACOTTA, Material.BLACK_TERRACOTTA, Material.BLUE_TERRACOTTA, Material.BROWN_TERRACOTTA, Material.CYAN_TERRACOTTA, Material.GRAY_TERRACOTTA,
|
|
||||||
Material.GREEN_TERRACOTTA, Material.LIGHT_BLUE_TERRACOTTA, Material.LIGHT_GRAY_TERRACOTTA, Material.LIME_TERRACOTTA, Material.MAGENTA_TERRACOTTA,
|
|
||||||
Material.ORANGE_TERRACOTTA, Material.PINK_TERRACOTTA, Material.PURPLE_TERRACOTTA, Material.RED_TERRACOTTA, Material.RED_TERRACOTTA, Material.WHITE_TERRACOTTA,
|
|
||||||
Material.YELLOW_TERRACOTTA), Bukkit.createBlockData("minecraft:dead_bush")),
|
|
||||||
RED_TULIP(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:red_tulip")),
|
|
||||||
ORANGE_TULIP(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:orange_tulip")),
|
|
||||||
WHITE_TULIP(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:white_tulip")),
|
|
||||||
PINK_TULIP(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:pink_tulip")),
|
|
||||||
OXEYE_DAISY(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:oxeye_daisy")),
|
|
||||||
ALLIUM(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:allium")),
|
|
||||||
CORNFLOWER(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL), Bukkit.createBlockData("minecraft:cornflower")),
|
|
||||||
LILY_PAD(Sets.newHashSet(Material.WATER), Bukkit.createBlockData("minecraft:lily_pad")),
|
|
||||||
RED_MUSHROOM(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL, Material.DIRT, Material.STONE, Material.NETHERRACK, Material.MYCELIUM), Bukkit.createBlockData("minecraft:red_mushroom")),
|
|
||||||
BROWN_MUSHROOM(Sets.newHashSet(Material.GRASS_BLOCK, Material.PODZOL, Material.DIRT, Material.STONE, Material.NETHERRACK, Material.MYCELIUM), Bukkit.createBlockData("minecraft:brown_mushroom")),
|
|
||||||
;
|
|
||||||
|
|
||||||
private final List<BlockData> data = new GlueList<>();
|
|
||||||
|
|
||||||
private final Set<Material> spawns;
|
|
||||||
|
|
||||||
FloraType(Set<Material> validSpawns, org.bukkit.block.data.BlockData... type) {
|
|
||||||
data.addAll(Arrays.stream(type).map(BukkitBlockData::new).collect(Collectors.toList()));
|
|
||||||
this.spawns = validSpawns;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Block> getValidSpawnsAt(Chunk chunk, int x, int z, Range check) {
|
|
||||||
List<Block> blocks = new GlueList<>();
|
|
||||||
for(int y : check) {
|
|
||||||
Block block = chunk.getBlock(x, y, z);
|
|
||||||
if(spawns.contains(block.getType()) && valid(block)) {
|
|
||||||
blocks.add(chunk.getBlock(x, y, z));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return blocks;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean valid(Block block) {
|
|
||||||
for(int i = 1; i < data.size() + 1; i++) {
|
|
||||||
block = block.getRelative(BlockFace.UP);
|
|
||||||
if(!block.isEmpty()) return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean plant(Location l) {
|
|
||||||
for(int i = 1; i < data.size() + 1; i++) {
|
|
||||||
l.clone().add(0, i, 0).getBlock().setBlockData(data.get(i - 1), false);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,8 @@ import com.dfsek.tectonic.abstraction.AbstractConfigLoader;
|
|||||||
import com.dfsek.tectonic.exception.ConfigException;
|
import com.dfsek.tectonic.exception.ConfigException;
|
||||||
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.TypeRegistry;
|
||||||
|
import com.dfsek.terra.api.LoaderRegistrar;
|
||||||
import com.dfsek.terra.api.gaea.biome.Biome;
|
import com.dfsek.terra.api.gaea.biome.Biome;
|
||||||
import com.dfsek.terra.api.gaea.structures.loot.LootTable;
|
import com.dfsek.terra.api.gaea.structures.loot.LootTable;
|
||||||
import com.dfsek.terra.api.gaea.tree.Tree;
|
import com.dfsek.terra.api.gaea.tree.Tree;
|
||||||
@@ -74,14 +76,14 @@ import java.util.zip.ZipFile;
|
|||||||
/**
|
/**
|
||||||
* Represents a Terra configuration pack.
|
* Represents a Terra configuration pack.
|
||||||
*/
|
*/
|
||||||
public class ConfigPack {
|
public class ConfigPack implements LoaderRegistrar {
|
||||||
private final ConfigPackTemplate template = new ConfigPackTemplate();
|
private final ConfigPackTemplate template = new ConfigPackTemplate();
|
||||||
private final BiomeRegistry biomeRegistry = new BiomeRegistry();
|
private final BiomeRegistry biomeRegistry = new BiomeRegistry();
|
||||||
private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry(biomeRegistry);
|
private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry(biomeRegistry);
|
||||||
private final StructureRegistry structureRegistry = new StructureRegistry();
|
private final StructureRegistry structureRegistry = new StructureRegistry();
|
||||||
private final CarverRegistry carverRegistry = new CarverRegistry();
|
private final CarverRegistry carverRegistry = new CarverRegistry();
|
||||||
private final PaletteRegistry paletteRegistry = new PaletteRegistry();
|
private final PaletteRegistry paletteRegistry = new PaletteRegistry();
|
||||||
private final FloraRegistry floraRegistry = new FloraRegistry();
|
private final FloraRegistry floraRegistry;
|
||||||
private final OreRegistry oreRegistry = new OreRegistry();
|
private final OreRegistry oreRegistry = new OreRegistry();
|
||||||
private final TreeRegistry treeRegistry = new TreeRegistry();
|
private final TreeRegistry treeRegistry = new TreeRegistry();
|
||||||
|
|
||||||
@@ -91,19 +93,11 @@ public class ConfigPack {
|
|||||||
|
|
||||||
private final Map<StructureTypeEnum, TerraStructure> structureMap = new HashMap<>();
|
private final Map<StructureTypeEnum, TerraStructure> structureMap = new HashMap<>();
|
||||||
|
|
||||||
{
|
|
||||||
abstractConfigLoader
|
|
||||||
.registerLoader(Palette.class, paletteRegistry)
|
|
||||||
.registerLoader(Biome.class, biomeRegistry)
|
|
||||||
.registerLoader(UserDefinedCarver.class, carverRegistry)
|
|
||||||
.registerLoader(Flora.class, floraRegistry)
|
|
||||||
.registerLoader(Ore.class, oreRegistry)
|
|
||||||
.registerLoader(Tree.class, treeRegistry)
|
|
||||||
.registerLoader(TerraStructure.class, structureRegistry);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConfigPack(File folder, TerraPlugin main) throws ConfigException {
|
public ConfigPack(File folder, TerraPlugin main) throws ConfigException {
|
||||||
long l = System.nanoTime();
|
long l = System.nanoTime();
|
||||||
|
floraRegistry = new FloraRegistry(main);
|
||||||
|
register(abstractConfigLoader);
|
||||||
|
|
||||||
main.register(selfLoader);
|
main.register(selfLoader);
|
||||||
main.register(abstractConfigLoader);
|
main.register(abstractConfigLoader);
|
||||||
@@ -121,6 +115,8 @@ public class ConfigPack {
|
|||||||
|
|
||||||
public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException {
|
public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException {
|
||||||
long l = System.nanoTime();
|
long l = System.nanoTime();
|
||||||
|
floraRegistry = new FloraRegistry(main);
|
||||||
|
register(abstractConfigLoader);
|
||||||
|
|
||||||
main.register(selfLoader);
|
main.register(selfLoader);
|
||||||
main.register(abstractConfigLoader);
|
main.register(abstractConfigLoader);
|
||||||
@@ -234,4 +230,16 @@ public class ConfigPack {
|
|||||||
public TerraStructure getStructureLocatable(StructureTypeEnum type) {
|
public TerraStructure getStructureLocatable(StructureTypeEnum type) {
|
||||||
return structureMap.get(type);
|
return structureMap.get(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(TypeRegistry registry) {
|
||||||
|
registry
|
||||||
|
.registerLoader(Palette.class, paletteRegistry)
|
||||||
|
.registerLoader(Biome.class, biomeRegistry)
|
||||||
|
.registerLoader(UserDefinedCarver.class, carverRegistry)
|
||||||
|
.registerLoader(Flora.class, floraRegistry)
|
||||||
|
.registerLoader(Ore.class, oreRegistry)
|
||||||
|
.registerLoader(Tree.class, treeRegistry)
|
||||||
|
.registerLoader(TerraStructure.class, structureRegistry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package com.dfsek.terra.generation.items.flora;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.gaea.math.Range;
|
||||||
|
import com.dfsek.terra.api.gaea.util.GlueList;
|
||||||
|
import com.dfsek.terra.api.gaea.world.Flora;
|
||||||
|
import com.dfsek.terra.api.generic.world.Chunk;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.Block;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
||||||
|
import com.dfsek.terra.api.generic.world.vector.Location;
|
||||||
|
import com.dfsek.terra.util.MaterialSet;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConstantFlora implements Flora {
|
||||||
|
private final List<BlockData> data;
|
||||||
|
|
||||||
|
private final MaterialSet spawns;
|
||||||
|
|
||||||
|
public ConstantFlora(MaterialSet spawns, List<BlockData> data) {
|
||||||
|
this.data = data;
|
||||||
|
this.spawns = spawns;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Block> getValidSpawnsAt(Chunk chunk, int x, int z, Range check) {
|
||||||
|
List<Block> blocks = new GlueList<>();
|
||||||
|
for(int y : check) {
|
||||||
|
Block block = chunk.getBlock(x, y, z);
|
||||||
|
if(spawns.contains(block.getType()) && valid(block)) {
|
||||||
|
blocks.add(chunk.getBlock(x, y, z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return blocks;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean valid(Block block) {
|
||||||
|
for(int i = 1; i < data.size() + 1; i++) {
|
||||||
|
block = block.getRelative(BlockFace.UP);
|
||||||
|
if(!block.isEmpty()) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean plant(Location l) {
|
||||||
|
for(int i = 1; i < data.size() + 1; i++) {
|
||||||
|
l.clone().add(0, i, 0).getBlock().setBlockData(data.get(i - 1), false);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,13 +1,72 @@
|
|||||||
package com.dfsek.terra.registry;
|
package com.dfsek.terra.registry;
|
||||||
|
|
||||||
import com.dfsek.terra.api.gaea.world.Flora;
|
import com.dfsek.terra.api.gaea.world.Flora;
|
||||||
import com.dfsek.terra.api.gaea.world.FloraType;
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||||
|
import com.dfsek.terra.generation.items.flora.ConstantFlora;
|
||||||
|
import com.dfsek.terra.util.MaterialSet;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
public class FloraRegistry extends TerraRegistry<Flora> {
|
public class FloraRegistry extends TerraRegistry<Flora> {
|
||||||
public FloraRegistry() {
|
private final TerraPlugin main;
|
||||||
for(FloraType f : FloraType.values()) add(f.toString(), f);
|
|
||||||
|
public FloraRegistry(TerraPlugin main) {
|
||||||
|
this.main = main;
|
||||||
|
MaterialSet grassy = MaterialSet.get(create("minecraft:grass_block"), create("minecraft:podzol"));
|
||||||
|
addItem("TALL_GRASS", new ConstantFlora(grassy, Arrays.asList(data("minecraft:tall_grass[half=lower]"), data("minecraft:tall_grass[half=upper]"))));
|
||||||
|
addItem("TALL_FERN", new ConstantFlora(grassy, Arrays.asList(data("minecraft:large_fern[half=lower]"), data("minecraft:large_fern[half=upper]"))));
|
||||||
|
addItem("SUNFLOWER", new ConstantFlora(grassy, Arrays.asList(data("minecraft:sunflower[half=lower]"), data("minecraft:sunflower[half=upper]"))));
|
||||||
|
addItem("ROSE_BUSH", new ConstantFlora(grassy, Arrays.asList(data("minecraft:rose_bush[half=lower]"), data("minecraft:rose_bush[half=upper]"))));
|
||||||
|
addItem("LILAC", new ConstantFlora(grassy, Arrays.asList(data("minecraft:lilac[half=lower]"), data("minecraft:lilac[half=upper]"))));
|
||||||
|
addItem("PEONY", new ConstantFlora(grassy, Arrays.asList(data("minecraft:peony[half=lower]"), data("minecraft:peony[half=upper]"))));
|
||||||
|
addItem("GRASS", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:grass"))));
|
||||||
|
addItem("FERN", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:fern"))));
|
||||||
|
addItem("AZURE_BLUET", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:azure_bluet"))));
|
||||||
|
addItem("LILY_OF_THE_VALLEY", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:lily_of_the_valley"))));
|
||||||
|
addItem("BLUE_ORCHID", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:blue_orchid"))));
|
||||||
|
addItem("POPPY", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:poppy"))));
|
||||||
|
addItem("DANDELION", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:dandelion"))));
|
||||||
|
addItem("WITHER_ROSE", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:wither_rose"))));
|
||||||
|
addItem("DEAD_BUSH", new ConstantFlora(MaterialSet.get(create("minecraft:terracotta"), create("minecraft:black_terracotta"),
|
||||||
|
create("minecraft:blue_terracotta"), create("minecraft:brown_terracotta"), create("minecraft:cyan_terracotta"),
|
||||||
|
create("minecraft:gray_terracotta"), create("minecraft:green_terracotta"), create("minecraft:light_blue_terracotta"),
|
||||||
|
create("minecraft:light_gray_terracotta"), create("minecraft:lime_terracotta"), create("minecraft:magenta_terracotta"),
|
||||||
|
create("minecraft:orange_terracotta"), create("minecraft:pink_terracotta"), create("minecraft:purple_terracotta"),
|
||||||
|
create("minecraft:red_terracotta"), create("minecraft:white_terracotta"), create("minecraft:yellow_terracotta"),
|
||||||
|
create("minecraft:red_sand"), create("minecraft:sand")), Collections.singletonList(data("minecraft:dead_bush"))));
|
||||||
|
addItem("RED_TULIP", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:red_tulip"))));
|
||||||
|
addItem("ORANGE_TULIP", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:orange_tulip"))));
|
||||||
|
addItem("WHITE_TULIP", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:white_tulip"))));
|
||||||
|
addItem("PINK_TULIP", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:pink_tulip"))));
|
||||||
|
addItem("OXEYE_DAISY", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:oxeye_daisy"))));
|
||||||
|
addItem("ALLIUM", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:allium"))));
|
||||||
|
addItem("CORNFLOWER", new ConstantFlora(grassy, Collections.singletonList(data("minecraft:cornflower"))));
|
||||||
|
addItem("LILY_PAD", new ConstantFlora(MaterialSet.get(create("minecraft:water")), Collections.singletonList(data("minecraft:lily_pad"))));
|
||||||
|
MaterialSet mushroom = MaterialSet.get(create("minecraft:grass_block"), create("minecraft:stone"), create("minecraft:podzol"), create("minecraft:netherrack"), create("minecraft:mycelium"));
|
||||||
|
addItem("RED_MUSHROOM", new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:red_mushroom"))));
|
||||||
|
addItem("BROWN_MUSHROOM", new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:brown_mushroom"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MaterialData create(String s) {
|
||||||
|
return main.getHandle().createMaterialData(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addItem(String id, ConstantFlora flora) {
|
||||||
|
try {
|
||||||
|
add(id, flora);
|
||||||
|
} catch(IllegalArgumentException e) {
|
||||||
|
main.getLogger().warning("Failed to load Flora item: " + id + ": " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private BlockData data(String s) {
|
||||||
|
return main.getHandle().createBlockData(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Flora get(String id) {
|
public Flora get(String id) {
|
||||||
return super.get(id);
|
return super.get(id);
|
||||||
|
|||||||
Reference in new issue
Block a user