From ecc4504f00ef0f52d192b95882d173370340e583 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 28 Dec 2021 17:04:47 -0700 Subject: [PATCH] add ore exposed option --- .../java/com/dfsek/terra/addons/ore/OreFactory.java | 2 +- .../com/dfsek/terra/addons/ore/OreTemplate.java | 8 ++++++++ .../com/dfsek/terra/addons/ore/ores/VanillaOre.java | 13 +++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java index 9c7a0a92b..af3955db1 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java @@ -18,6 +18,6 @@ public class OreFactory implements ConfigFactory { @Override public VanillaOre build(OreTemplate config, Platform platform) { BlockState m = config.getMaterial(); - return new VanillaOre(m, config.getSize(), config.getReplaceable(), config.doPhysics(), config.getMaterialOverrides()); + return new VanillaOre(m, config.getSize(), config.getReplaceable(), config.doPhysics(), config.isExposed(), config.getMaterialOverrides()); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index 1b51d68db..47174d287 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -44,6 +44,10 @@ public class OreTemplate implements AbstractableTemplate { @Value("size") private @Meta double size; + @Value("exposed") + @Default + private @Meta boolean exposed = true; + public boolean doPhysics() { return physics; } @@ -67,4 +71,8 @@ public class OreTemplate implements AbstractableTemplate { public Map getMaterialOverrides() { return materials; } + + public boolean isExposed() { + return exposed; + } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index 7ba230f10..13d338893 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -29,14 +29,16 @@ public class VanillaOre implements Structure { private final double size; private final MaterialSet replaceable; private final boolean applyGravity; + private final boolean exposed; private final Map materials; public VanillaOre(BlockState material, double size, MaterialSet replaceable, boolean applyGravity, - Map materials) { + boolean exposed, Map materials) { this.material = material; this.size = size; this.replaceable = replaceable; this.applyGravity = applyGravity; + this.exposed = exposed; this.materials = materials; } @@ -84,7 +86,14 @@ public class VanillaOre implements Structure { if(y >= world.getMaxHeight() || y < world.getMinHeight()) continue; BlockType block = world.getBlockState(x, y, z).getBlockType(); if((d13 * d13 + d14 * d14 + d15 * d15 < 1.0D) && getReplaceable().contains(block)) { - world.setBlockState(x, y, z, getMaterial(block), isApplyGravity()); + if(exposed || !(world.getBlockState(x, y, z - 1).isAir() || + world.getBlockState(x, y, z + 1).isAir() || + world.getBlockState(x, y - 1, z).isAir() || + world.getBlockState(x, y + 1, z).isAir() || + world.getBlockState(x - 1, y, z).isAir() || + world.getBlockState(x + 1, y, z).isAir())) { + world.setBlockState(x, y, z, getMaterial(block), isApplyGravity()); + } } } }