From e32c6c76cbf2c9ec6d3181e546431ddf511adeca Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 22 Jul 2021 04:12:13 +0300 Subject: [PATCH] Simple WorldBlender crash fix, Pallidium blocks (WIP) --- .../java/ru/betterend/registry/EndBlocks.java | 4 +++ .../java/ru/betterend/util/BlockFixer.java | 21 ++++++++--- .../world/surface/SurfaceBuilders.java | 12 +++++++ .../world/surface/UmbraSurfaceBuilder.java | 33 ++++++++++-------- .../betterend/blockstates/pallidium.json | 10 ++++++ .../blockstates/pallidium_transition_1.json | 5 +++ .../blockstates/pallidium_transition_2.json | 5 +++ .../blockstates/pallidium_transition_3.json | 5 +++ .../betterend/models/block/pallidium.json | 12 +++++++ .../models/block/pallidium_transition_1.json | 12 +++++++ .../models/block/pallidium_transition_2.json | 12 +++++++ .../models/block/pallidium_transition_3.json | 12 +++++++ .../betterend/models/item/pallidium.json | 3 ++ .../textures/block/pallidium_side.png | Bin 0 -> 287 bytes .../textures/block/pallidium_top.png | Bin 0 -> 257 bytes .../block/pallidium_transition_1_top.png | Bin 0 -> 796 bytes .../block/pallidium_transition_2_top.png | Bin 0 -> 795 bytes .../block/pallidium_transition_3_top.png | Bin 0 -> 624 bytes 18 files changed, 126 insertions(+), 20 deletions(-) create mode 100644 src/main/resources/assets/betterend/blockstates/pallidium.json create mode 100644 src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json create mode 100644 src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json create mode 100644 src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json create mode 100644 src/main/resources/assets/betterend/models/block/pallidium.json create mode 100644 src/main/resources/assets/betterend/models/block/pallidium_transition_1.json create mode 100644 src/main/resources/assets/betterend/models/block/pallidium_transition_2.json create mode 100644 src/main/resources/assets/betterend/models/block/pallidium_transition_3.json create mode 100644 src/main/resources/assets/betterend/models/item/pallidium.json create mode 100644 src/main/resources/assets/betterend/textures/block/pallidium_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/pallidium_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/pallidium_transition_1_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/pallidium_transition_2_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/pallidium_transition_3_top.png diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 40b932a6..7ad20617 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -173,6 +173,10 @@ public class EndBlocks extends BlocksRegistry { ); public static final Block SANGNUM = registerBlock("sangnum", new EndTerrainBlock(MaterialColor.COLOR_RED)); public static final Block RUTISCUS = registerBlock("rutiscus", new EndTerrainBlock(MaterialColor.COLOR_ORANGE)); + public static final Block PALLIDIUM = registerBlock("pallidium", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); + public static final Block PALLIDIUM_TRANSITION_1 = registerBlock("pallidium_transition_1", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); + public static final Block PALLIDIUM_TRANSITION_2 = registerBlock("pallidium_transition_2", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); + public static final Block PALLIDIUM_TRANSITION_3 = registerBlock("pallidium_transition_3", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); // Roads // public static final Block END_MYCELIUM_PATH = registerBlock("end_mycelium_path", new BasePathBlock(END_MYCELIUM)); diff --git a/src/main/java/ru/betterend/util/BlockFixer.java b/src/main/java/ru/betterend/util/BlockFixer.java index 34f521c4..8e0b7a4c 100644 --- a/src/main/java/ru/betterend/util/BlockFixer.java +++ b/src/main/java/ru/betterend/util/BlockFixer.java @@ -1,13 +1,17 @@ package ru.betterend.util; import com.google.common.collect.Sets; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.dimension.DimensionType; import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.blocks.BaseVineBlock; import ru.bclib.blocks.StalactiteBlock; @@ -24,16 +28,23 @@ public class BlockFixer { private static final BlockState WATER = Blocks.WATER.defaultBlockState(); public static void fixBlocks(LevelAccessor world, BlockPos start, BlockPos end) { - Set doubleCheck = Sets.newConcurrentHashSet(); - int dx = end.getX() - start.getX() + 1; - int dz = end.getZ() - start.getZ() + 1; - int count = dx * dz; + Registry registry = world.registryAccess().registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY); + ResourceLocation dimKey = registry.getKey(world.dimensionType()); + if (dimKey.getNamespace().equals("world_blender")) { + return; + } + final Set doubleCheck = Sets.newConcurrentHashSet(); + final int dx = end.getX() - start.getX() + 1; + final int dz = end.getZ() - start.getZ() + 1; + final int count = dx * dz; + final int minY = Math.max(start.getY(), world.getMinBuildHeight()); + final int maxY = Math.min(end.getY(), world.getMaxBuildHeight()); IntStream.range(0, count).parallel().forEach(index -> { MutableBlockPos POS = new MutableBlockPos(); POS.setX((index % dx) + start.getX()); POS.setZ((index / dx) + start.getZ()); BlockState state; - for (int y = start.getY(); y <= end.getY(); y++) { + for (int y = minY; y <= maxY; y++) { POS.setY(y); state = world.getBlockState(POS); diff --git a/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java b/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java index c3e6aa5f..e1cc9197 100644 --- a/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java +++ b/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java @@ -14,6 +14,10 @@ public class SurfaceBuilders { public static final SurfaceBuilderBaseConfiguration BRIMSTONE_CONFIG = makeSimpleConfig(EndBlocks.BRIMSTONE); public static final SurfaceBuilderBaseConfiguration SULFURIC_ROCK_CONFIG = makeSimpleConfig(EndBlocks.SULPHURIC_ROCK.stone); public static final SurfaceBuilderBaseConfiguration UMBRA_SURFACE_CONFIG = makeSimpleConfig(EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM, EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_T1_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM_TRANSITION_1, EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_T2_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM_TRANSITION_2, EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_T3_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM_TRANSITION_3, EndBlocks.UMBRALITH.stone); public static final SurfaceBuilder SULPHURIC_SURFACE = register( "sulphuric_surface", @@ -33,6 +37,14 @@ public class SurfaceBuilders { return new SurfaceBuilderBaseConfiguration(state, state, state); } + private static SurfaceBuilderBaseConfiguration makeSurfaceConfig(Block surface, Block under) { + return new SurfaceBuilderBaseConfiguration( + surface.defaultBlockState(), + under.defaultBlockState(), + under.defaultBlockState() + ); + } + public static void register() { } } diff --git a/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java b/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java index 15b6ba54..d799740c 100644 --- a/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java +++ b/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java @@ -19,20 +19,23 @@ public class UmbraSurfaceBuilder extends SurfaceBuilder 0.3F) { + config = SurfaceBuilders.PALLIDIUM_SURFACE_CONFIG; + } + else if (grass > 0.1F) { + config = SurfaceBuilders.PALLIDIUM_T1_SURFACE_CONFIG; + } + else if (grass > -0.1) { + config = SurfaceBuilders.PALLIDIUM_T2_SURFACE_CONFIG; + } + else if (grass > -0.3F) { + config = SurfaceBuilders.PALLIDIUM_T3_SURFACE_CONFIG; + } + else { + config = SurfaceBuilders.UMBRA_SURFACE_CONFIG; + } + SurfaceBuilder.DEFAULT.apply(random, chunk, biome, x, z, height, noise + depth, defaultBlock, defaultFluid, seaLevel, seed, n, config); } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/pallidium.json b/src/main/resources/assets/betterend/blockstates/pallidium.json new file mode 100644 index 00000000..217268e6 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "betterend:block/pallidium" }, + { "model": "betterend:block/pallidium", "y": 90 }, + { "model": "betterend:block/pallidium", "y": 180 }, + { "model": "betterend:block/pallidium", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json b/src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json new file mode 100644 index 00000000..fb4e5c21 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/pallidium_transition_1" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json b/src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json new file mode 100644 index 00000000..923c3b41 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/pallidium_transition_2" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json b/src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json new file mode 100644 index 00000000..f452ff3e --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/pallidium_transition_3" } + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium.json b/src/main/resources/assets/betterend/models/block/pallidium.json new file mode 100644 index 00000000..7edfe854 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium_transition_1.json b/src/main/resources/assets/betterend/models/block/pallidium_transition_1.json new file mode 100644 index 00000000..ca7711fe --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium_transition_1.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_transition_1_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium_transition_2.json b/src/main/resources/assets/betterend/models/block/pallidium_transition_2.json new file mode 100644 index 00000000..a00ba90c --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium_transition_2.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_transition_2_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium_transition_3.json b/src/main/resources/assets/betterend/models/block/pallidium_transition_3.json new file mode 100644 index 00000000..c404adef --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium_transition_3.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_transition_3_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/item/pallidium.json b/src/main/resources/assets/betterend/models/item/pallidium.json new file mode 100644 index 00000000..4020b077 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/pallidium.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/pallidium" +} diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_side.png b/src/main/resources/assets/betterend/textures/block/pallidium_side.png new file mode 100644 index 0000000000000000000000000000000000000000..0e40e4d32fbd9af4ae37762aa5a9f7eb6b56eb59 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~l>na*S0K&K z!pp-UCdjWWEn}jg>u6x(>ku4YKVjzVwcFS4KXLHv)rS}Fqyp9Plmz(&GyF#Y&LaV8 zK=Fy5E{-7*Q&oGTnOqb(oI^#OW*dom>t_W z%2OtMa9EbA>g28PP-Bm)m(#W2O>3^4hzfV?wD~6V|MS(e^A+7|Hz#B=?f=Em)b^j@ X@?kci54?9kj$`n2^>bP0l+XkKy>WEk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_top.png b/src/main/resources/assets/betterend/textures/block/pallidium_top.png new file mode 100644 index 0000000000000000000000000000000000000000..69797f675a4847df848522968bbc24d0e3f7ebc7 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~(Ey(iS0Ejn zl$BlGQa@ql?6uq1?>}+y?9~OX`!@k4*h_-^f*JmU!P5F=zkx#So-U3d5>s{ix%-Y9 z@G#}t?fgIS{*K+NrdXL8l-$~L{i@a5>}5QjT7AbY%qG8$Res@@*T7Y2n yr`1XucI6lyiHrF3x5eDH&-TmWs2!cJ?#h2uVV-(8er`C>NerH@elF{r5}E*mscY5% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_transition_1_top.png b/src/main/resources/assets/betterend/textures/block/pallidium_transition_1_top.png new file mode 100644 index 0000000000000000000000000000000000000000..61d6540cf003bd6220a089df291ec4248d1b38bb GIT binary patch literal 796 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