From a0829e07aeedc2352ba47a51bec1e9f2a675d1ce Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Fri, 19 Mar 2021 10:34:46 +0300 Subject: [PATCH] Spike feature fixes & custom pillars --- .../blocks/complex/MetalMaterial.java | 2 + .../blocks/complex/StoneMaterial.java | 2 + .../mixin/common/EndSpikeFeatureMixin.java | 126 ++++++++++++------ .../java/ru/betterend/registry/EndTags.java | 9 ++ .../world/generator/GeneratorOptions.java | 6 + .../structures/pillars/pillar_base_1.nbt | Bin 0 -> 1577 bytes .../structures/pillars/pillar_base_2.nbt | Bin 0 -> 3144 bytes .../structures/pillars/pillar_base_3.nbt | Bin 0 -> 2273 bytes .../structures/pillars/pillar_base_4.nbt | Bin 0 -> 2487 bytes .../structures/pillars/pillar_top_1.nbt | Bin 0 -> 2564 bytes .../structures/pillars/pillar_top_1_cage.nbt | Bin 0 -> 2878 bytes .../structures/pillars/pillar_top_2.nbt | Bin 0 -> 6241 bytes .../structures/pillars/pillar_top_2_cage.nbt | Bin 0 -> 8246 bytes .../structures/pillars/pillar_top_3.nbt | Bin 0 -> 4025 bytes .../structures/pillars/pillar_top_3_cage.nbt | Bin 0 -> 4762 bytes .../structures/pillars/pillar_top_4.nbt | Bin 0 -> 8976 bytes .../structures/pillars/pillar_top_4_cage.nbt | Bin 0 -> 10421 bytes 17 files changed, 107 insertions(+), 38 deletions(-) create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_base_1.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_base_2.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_base_3.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_base_4.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_1.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_1_cage.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_2.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_2_cage.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_3.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_3_cage.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_4.nbt create mode 100644 src/main/resources/data/betterend/structures/pillars/pillar_top_4_cage.nbt diff --git a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java index bb7f6041..7356e108 100644 --- a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java @@ -202,5 +202,7 @@ public class MetalMaterial { TagHelper.addTag(BlockTags.BEACON_BASE_BLOCKS, block); TagHelper.addTag(EndTags.IRON_INGOTS, ingot); TagHelper.addTag(ItemTags.BEACON_PAYMENT_ITEMS, ingot); + + TagHelper.addTag(EndTags.DRAGON_IMMUNE, ore, bars); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java index 08fde481..782ff4b0 100644 --- a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java @@ -98,5 +98,7 @@ public class StoneMaterial { TagHelper.addTag(BlockTags.SLABS, slab, brick_slab); TagHelper.addTags(pressure_plate, BlockTags.PRESSURE_PLATES, BlockTags.STONE_PRESSURE_PLATES); TagHelper.addTag(EndTags.END_STONES, stone); + + TagHelper.addTag(EndTags.DRAGON_IMMUNE, stone, stairs, slab, wall); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/mixin/common/EndSpikeFeatureMixin.java b/src/main/java/ru/betterend/mixin/common/EndSpikeFeatureMixin.java index 220a93c3..28be0c91 100644 --- a/src/main/java/ru/betterend/mixin/common/EndSpikeFeatureMixin.java +++ b/src/main/java/ru/betterend/mixin/common/EndSpikeFeatureMixin.java @@ -13,6 +13,8 @@ import net.minecraft.block.Blocks; import net.minecraft.block.PaneBlock; import net.minecraft.entity.EntityType; import net.minecraft.entity.decoration.EndCrystalEntity; +import net.minecraft.structure.Structure; +import net.minecraft.structure.StructurePlacementData; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos.Mutable; import net.minecraft.util.math.MathHelper; @@ -22,7 +24,9 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.EndSpikeFeature; import net.minecraft.world.gen.feature.EndSpikeFeatureConfig; +import ru.betterend.BetterEnd; import ru.betterend.util.BlocksHelper; +import ru.betterend.util.StructureHelper; import ru.betterend.world.generator.GeneratorOptions; @Mixin(EndSpikeFeature.class) @@ -39,50 +43,92 @@ public class EndSpikeFeatureMixin { int x = spike.getCenterX(); int z = spike.getCenterZ(); int radius = spike.getRadius(); - int minY = world.getChunk(spike.getCenterX() >> 4, spike.getCenterZ() >> 4).sampleHeightmap(Type.WORLD_SURFACE, spike.getCenterX() & 15, spike.getCenterZ() & 15) - 15; - int maxY = minY + spike.getHeight() - 50; + int minY = world.getChunk(x >> 4, z >> 4).sampleHeightmap(Type.WORLD_SURFACE, x & 15, z); + int maxY = minY + spike.getHeight() - 30; - int r2 = radius * radius + 1; - Mutable mut = new Mutable(); - for (int px = -radius; px <= radius; px++) { - mut.setX(x + px); - int x2 = px * px; - for (int pz = -radius; pz <= radius; pz++) { - mut.setZ(z + pz); - int z2 = pz * pz; - if (x2 + z2 <= r2) { - for (int py = minY; py < maxY; py++) { - mut.setY(py); - if (world.getBlockState(mut).getMaterial().isReplaceable()) { - BlocksHelper.setWithoutUpdate(world, mut, Blocks.OBSIDIAN); + if (GeneratorOptions.replacePillars() && be_radiusInRange(radius)) { + radius--; + Structure base = StructureHelper.readStructure(BetterEnd.makeID("pillars/pillar_base_" + radius)); + Structure top = StructureHelper.readStructure(BetterEnd.makeID("pillars/pillar_top_" + radius + (spike.isGuarded() ? "_cage" : ""))); + BlockPos side = base.getSize(); + BlockPos pos1 = new BlockPos(x - (side.getX() >> 1), minY - 3, z - (side.getZ() >> 1)); + minY = pos1.getY() + side.getY(); + side = top.getSize(); + BlockPos pos2 = new BlockPos(x - (side.getX() >> 1), maxY, z - (side.getZ() >> 1)); + maxY = pos2.getY(); + + StructurePlacementData data = new StructurePlacementData(); + base.place(world, pos1, data, random); + top.place(world, pos2, data, random); + + int r2 = radius * radius + 1; + Mutable mut = new Mutable(); + for (int px = -radius; px <= radius; px++) { + mut.setX(x + px); + int x2 = px * px; + for (int pz = -radius; pz <= radius; pz++) { + mut.setZ(z + pz); + int z2 = pz * pz; + if (x2 + z2 <= r2) { + for (int py = minY; py < maxY; py++) { + mut.setY(py); + if (world.getBlockState(mut).getMaterial().isReplaceable()) { + if ((px == radius || px == -radius || pz == radius || pz == -radius) && random.nextInt(24) == 0) { + BlocksHelper.setWithoutUpdate(world, mut, Blocks.CRYING_OBSIDIAN); + } + else { + BlocksHelper.setWithoutUpdate(world, mut, Blocks.OBSIDIAN); + } + } } } } } } - mut.setX(x); - mut.setZ(z); - mut.setY(maxY); - BlocksHelper.setWithoutUpdate(world, mut, Blocks.BEDROCK); - - EndCrystalEntity crystal = EntityType.END_CRYSTAL.create(world.toServerWorld()); - crystal.setBeamTarget(config.getPos()); - crystal.setInvulnerable(config.isCrystalInvulnerable()); - crystal.refreshPositionAndAngles(x + 0.5D, maxY + 1, z + 0.5D, random.nextFloat() * 360.0F, 0.0F); - world.spawnEntity(crystal); - - if (spike.isGuarded()) { - for (int px = -2; px <= 2; ++px) { - boolean bl = MathHelper.abs(px) == 2; - for (int pz = -2; pz <= 2; ++pz) { - boolean bl2 = MathHelper.abs(pz) == 2; - for (int py = 0; py <= 3; ++py) { - boolean bl3 = py == 3; - if (bl || bl2 || bl3) { - boolean bl4 = px == -2 || px == 2 || bl3; - boolean bl5 = pz == -2 || pz == 2 || bl3; - BlockState blockState = (BlockState) ((BlockState) ((BlockState) ((BlockState) Blocks.IRON_BARS.getDefaultState().with(PaneBlock.NORTH, bl4 && pz != -2)).with(PaneBlock.SOUTH, bl4 && pz != 2)).with(PaneBlock.WEST, bl5 && px != -2)).with(PaneBlock.EAST, bl5 && px != 2); - BlocksHelper.setWithoutUpdate(world, mut.set(spike.getCenterX() + px, maxY + py, spike.getCenterZ() + pz), blockState); + else { + minY -= 15; + int r2 = radius * radius + 1; + Mutable mut = new Mutable(); + for (int px = -radius; px <= radius; px++) { + mut.setX(x + px); + int x2 = px * px; + for (int pz = -radius; pz <= radius; pz++) { + mut.setZ(z + pz); + int z2 = pz * pz; + if (x2 + z2 <= r2) { + for (int py = minY; py < maxY; py++) { + mut.setY(py); + if (world.getBlockState(mut).getMaterial().isReplaceable()) { + BlocksHelper.setWithoutUpdate(world, mut, Blocks.OBSIDIAN); + } + } + } + } + } + mut.setX(x); + mut.setZ(z); + mut.setY(maxY); + BlocksHelper.setWithoutUpdate(world, mut, Blocks.BEDROCK); + + EndCrystalEntity crystal = EntityType.END_CRYSTAL.create(world.toServerWorld()); + crystal.setBeamTarget(config.getPos()); + crystal.setInvulnerable(config.isCrystalInvulnerable()); + crystal.refreshPositionAndAngles(x + 0.5D, maxY + 1, z + 0.5D, random.nextFloat() * 360.0F, 0.0F); + world.spawnEntity(crystal); + + if (spike.isGuarded()) { + for (int px = -2; px <= 2; ++px) { + boolean bl = MathHelper.abs(px) == 2; + for (int pz = -2; pz <= 2; ++pz) { + boolean bl2 = MathHelper.abs(pz) == 2; + for (int py = 0; py <= 3; ++py) { + boolean bl3 = py == 3; + if (bl || bl2 || bl3) { + boolean bl4 = px == -2 || px == 2 || bl3; + boolean bl5 = pz == -2 || pz == 2 || bl3; + BlockState blockState = (BlockState) ((BlockState) ((BlockState) ((BlockState) Blocks.IRON_BARS.getDefaultState().with(PaneBlock.NORTH, bl4 && pz != -2)).with(PaneBlock.SOUTH, bl4 && pz != 2)).with(PaneBlock.WEST, bl5 && px != -2)).with(PaneBlock.EAST, bl5 && px != 2); + BlocksHelper.setWithoutUpdate(world, mut.set(spike.getCenterX() + px, maxY + py, spike.getCenterZ() + pz), blockState); + } } } } @@ -91,4 +137,8 @@ public class EndSpikeFeatureMixin { info.cancel(); } + + private boolean be_radiusInRange(int radius) { + return radius > 1 && radius < 6; + } } diff --git a/src/main/java/ru/betterend/registry/EndTags.java b/src/main/java/ru/betterend/registry/EndTags.java index f2d5f2e6..c315e530 100644 --- a/src/main/java/ru/betterend/registry/EndTags.java +++ b/src/main/java/ru/betterend/registry/EndTags.java @@ -39,6 +39,7 @@ public class EndTags { public static final Tag.Identified PEDESTALS = makeBlockTag("pedestal"); public static final Tag.Identified BLOCK_CHEST = makeCommonBlockTag("chest"); public static final Tag.Identified END_STONES = makeCommonBlockTag("end_stones"); + public static final Tag.Identified DRAGON_IMMUNE = getMCBlockTag("dragon_immune"); // Item Tags public static final Tag.Identified ITEM_CHEST = makeCommonItemTag("chest"); @@ -70,6 +71,12 @@ public class EndTags { return tag == null ? (Identified) TagRegistry.item(id) : (Identified) tag; } + public static Tag.Identified getMCBlockTag(String name) { + Identifier id = new Identifier(name); + Tag tag = BlockTags.getTagGroup().getTag(id); + return tag == null ? (Identified) TagRegistry.block(id) : (Identified) tag; + } + public static void register() { addSurfaceBlock(Blocks.END_STONE); addSurfaceBlock(EndBlocks.THALLASIUM.ore); @@ -117,6 +124,8 @@ public class EndTags { TagHelper.addTag(BlockTags.BEACON_BASE_BLOCKS, EndBlocks.AETERNIUM_BLOCK); TagHelper.addTag(ItemTags.BEACON_PAYMENT_ITEMS, EndItems.AETERNIUM_INGOT); + + TagHelper.addTag(EndTags.DRAGON_IMMUNE, EndBlocks.ENDER_ORE); } public static void addSurfaceBlock(Block block) { diff --git a/src/main/java/ru/betterend/world/generator/GeneratorOptions.java b/src/main/java/ru/betterend/world/generator/GeneratorOptions.java index baee736f..e166410a 100644 --- a/src/main/java/ru/betterend/world/generator/GeneratorOptions.java +++ b/src/main/java/ru/betterend/world/generator/GeneratorOptions.java @@ -25,6 +25,7 @@ public class GeneratorOptions { private static BlockPos spawn; private static BlockPos portal = BlockPos.ORIGIN; private static boolean replacePortal; + private static boolean replacePillars; public static void init() { biomeSizeLand = Configs.GENERATOR_CONFIG.getInt("biomeMap", "biomeSizeLand", 256); @@ -50,6 +51,7 @@ public class GeneratorOptions { Configs.GENERATOR_CONFIG.getInt("spawn.point", "z", 0) ); replacePortal = Configs.GENERATOR_CONFIG.getBooleanRoot("customEndPortal", true); + replacePillars = Configs.GENERATOR_CONFIG.getBooleanRoot("customObsidianSpikes", true); } public static int getBiomeSizeLand() { @@ -123,4 +125,8 @@ public class GeneratorOptions { public static boolean replacePortal() { return replacePortal; } + + public static boolean replacePillars() { + return replacePillars; + } } diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_base_1.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_base_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a1a3869d8515d8cab34f6f033c80a7f82966b97b GIT binary patch literal 1577 zcmYjP3sllq9B!4QqUE#r9}8clHSAQ7uN2LRqovI<4Yk5Fk)_L0G<;h_=dq|p^931N zr>TiTW^Sqfax()|Qky9Al^I|i6;w<~iQFICqkDemp8I>;@B8j|uJslDRiDd zxtw<8>0fk(YKyyr2^~R?D7k#9#}E63_mn;Lagay8IWTrfH!+(CH8GIWVKJutbQDX547pyMAH^GMc*)HeVp-w3V}Oq!mJqAYM{tfe&_Da-iS{ zY~Dh~6*V^R+Feyyjt!}B0SkPwdW~h{_PRm!%AlU2*+kh9N(}?fMIVDMJe=+bB@+Sh z(H1yfflRpn*+2x~ei~D<$8j!Sy1h0?DH+Az4&p-;5YVz%U3l;Oa3;G;tfO@BG7vuTl)gw&fH@gNe?D3c^+} ziVwLtctuG7e~0%GWg%pAF(MdaU*Zqwc1}2y9D%+;eK-kfOx7IRlyaNJOp{L_RH~d} zM=*nrA{_6@(rZPT5HHOb<`5o1Faa`%!Gx%zvdq_B26$$tQ~g>|X2daO2BGY~fVC$m?hKXl0^tSH{W%^m+SJa_NM8 zA7{hVl_%&3{9Y4rc9gAXyd6ap-PN}?Y4nZ6aCcv8IqUvvP?*j+>@1RSZwlD3gB zTKyO%^`KEx=l95@aWZU#B(u~BgnT&hDp!eCnYH@s@3IARW-jB{2W0s;HVcff`Uwvt zwYYr4e#c(Q^-;s+vp8f~`_ZT#cN}vK!`QP|KkMmrQ9dTC#5~(=Fhl#cr!)KK!bEo7)mKkHQOqdI?GeMVPD` zB9B}<6-zUX+HA{zL8ccG4yCxO7s3uIKiuth4f?vwI9$V}H%v1S5ck`;BE!-$F^cq# zdS@=dMQ=Q#^z0b<#azM#-Ejl+@c~VG)27JC8s}hGZR9=)=*7vah!fP^(mW50b8K-{ z*J@H)ydO#g<1rtGkx#M!{>PrC-aG;(yVUD_Mz3?WdL%1DJM%^|J;nP`E6Jp|WiE71 zk|lz3nx~3l^9RX8-q*Cg>7~ooqiv(kBUd@RrG%+zNxXWm9D6~lIIHPf;!f>|X_uqt+EHZM$}zRed|p#dFoF FzX9x%8cqNJ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_base_2.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_base_2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7f8da56febea0bf41641e488d13c2350940e49ff GIT binary patch literal 3144 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_base_4.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_base_4.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9a1091fb73aefe9f6e9e49ab200a7403e74142fa GIT binary patch literal 2487 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 X9uG`)mrW1*VlDQH{h9X3%a;8QUS064 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_1.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..05805e9c73b5d8a2317833ee7d36e2a283bc1138 GIT binary patch literal 2564 zcmZ`(eLU0q9#3&RE!1eb$-sf z-6&I@IyxRU)?{fkz1B#K=3(Y>oEb3>_xq#sdfn6Ob@#`6-|y%5`+Pp{&*%O5{E)YF z)~)^6_uE3P_$JA9W5qw*X5O6GaTPwOQF$P9-8FA`9GZ%7-)YaBD760d+h%6yFI|;isjEGqs)^oI!0y&4V)-^y(y{g_8xXo48`T$DUectuX7{G~A?Y~%WcfcX+)ng25f zR|(O<@jYkK!FMZ)voe%TnO1LK>hHYL#mRliKBuz6?QR_{`P|a&)$KQ{QcZ=6i0qp2 zhV2iZB9hgkETKRBH}!mhvzmW&g`!d@8Wy{6A(t2Cu4KPj6m(BYvqDX4UkrUa86Y{I zh%>m=m76aZiSmrpJ|JMH`H%b0DfnZo36&^5_mJY*-!dbF1mDl6#O>o{m>~4FBcwZ+ zJv`D+Zr55yG_ph+j=US#M}yB?UA+w?V}_PnIvyBzc&77Y<;ER%MkXF0Bezsu1nsA90JQBh%}&AZ zV=#lz*fwJOfEJF}ekQ%sWPHrXtE#!dM#dl0>?!s$XT zx11RaK%orD|8isoE60E*Yto$kFPkO&D+C=tq#S-b_h)ZNv; zVj+OjSpHY91h4;O|8YAP1Wf0G#d@{1Rfh-q!LbH!6zw zcI{@Yxvee1=#Z6D`~bDkj!`h>Sbg&!bn#wMh-Ge|`kS@C=BB})jbQ3fvxT$?-ByHY z^^3=xhy!v>e^LZUH1S;soB2tgA0^dlbAEt*Ri0q=-fR>kcr)QOzo^0ExG}R9?c=CR z_?_gLq}P;h zi6oy8W5(;!HwSM*OP!GBM`>>8M~$Y}D%KBZHtXZ>lBdF!unJN{FL$v1ddvL!ETz`Y z;jw?7b0tM^8V8|q#g?Wt4)$X#3>Zul8ViV1>I=2;?uHD%<*O}2hHKWlpY-u>5zx5? zr-6U#$Y4gJu?k<0CP&k1Bz4&OG_2c@r`&8yok+2srbq4#Idq|yTfUSzzn(YiDii2% zXrBZ+6j~u)k5X#H*9`|<(d94;`T9^Y;Ony-!@Y-y_ev@|KINqggj&js)rMTzABOjX z(2Typat1XlUz=Zd(mD?woTQyZ2Hrw44e%Q>WY5K4kI;4-J9M{6# zEiB$VbCs-m8(|J(Ma#AWaI3#gR)yY-Mwj+}2c}P4XWbjVhYm)9s7E>OlCf#V)Pio( zPq3iFK~Lz2e#jdd{9P^{)^ZKr==~ul)3b_JM*#E~ZQdx(33)ewz)l%{cp5}MT0el_ z0Wz_TXYK%2a(jpspk@P6Lp4GEZB>XF&!qh0?Hj-#3St3|9Ec2Vm5dGO8f6Z2^{gU4 zh9CPQ$P{NQx7EUd6~BQwn;MvmaZeq%fgz?s-q1!r(F9d$gVfnd5`n!>0l<6JUs{7H z0GE{E{?p;Bwzo-@6hpSRu8bh`Ng}JvM{}$h1DN64U@=My`MQ)i+z2j!K3PE1x<2y% zQEtvLB%ck9fM=39dOR@&NO!q`2MvJpYNHK>zk>=CQXh^nZ#2QZ{$3KK1ds!4%!jRp zAa=JeBN{zUJ1SpV(j3sF-Zvq0N#ACVl-~bSep4_AsC>cUIsRf)@0ziW0SD?_PTd`%DUt0>y-TFZs z|34$!cF%gy<~2S*2~DP~Ze7^u$h);h%3X7=Vk zTYh8ARn<`>FxP#Oh6MEPp0KeOC#JarDEj0c2NugqvgPx5aYn)U*}i8V^A0L@9O5u6 zXHUebrd74eMZRUt(kZDrqtk!CcS7{MO8PK311V-D)<0r4OxD#E6(m~Ez3%B48+&OW zk(3ggXa);W(UBrQljT}sSZ)~Lt%lvcQAN3L_Ph=mdhK)dSaI~FPI^I2N>D9juDPc#-Sf%{299k0mlG}A-MeC& z-mc4tMWH9tc_l8k*sc-&jil}62#b?famG7g?w!c{{K?xss$y2mVeutvX1!eeYPPd| zr7vq@Fx*4_L<~?cI@L7#5wC`l8NdD)e~ZVpqq(6J+NFu?ttpmxbe& hkUG_b`qGqzj1vt$QI}4&9ULvns_h0<_Nd5o- literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_1_cage.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_1_cage.nbt new file mode 100644 index 0000000000000000000000000000000000000000..eb5a52de0b1e9795ac1e551b8d4e84f80ef33998 GIT binary patch literal 2878 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_2_cage.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_2_cage.nbt new file mode 100644 index 0000000000000000000000000000000000000000..97d401e6c072204cd82f8ca2432533c6782784cf GIT binary patch literal 8246 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 DSx6ww literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_3.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_3.nbt new file mode 100644 index 0000000000000000000000000000000000000000..81ffb032d13815b80c2e4f7f0b2d9b8f270c156c GIT binary patch literal 4025 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_3_cage.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_3_cage.nbt new file mode 100644 index 0000000000000000000000000000000000000000..aca9c04f48d45fa3b072a04c0d82da8e41bc3a75 GIT binary patch literal 4762 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_4.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_4.nbt new file mode 100644 index 0000000000000000000000000000000000000000..8a6c0a05a7af5fe3cc36a40ab2f5c368c341f196 GIT binary patch literal 8976 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 T3*OV9x&ojQ<*{ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/betterend/structures/pillars/pillar_top_4_cage.nbt b/src/main/resources/data/betterend/structures/pillars/pillar_top_4_cage.nbt new file mode 100644 index 0000000000000000000000000000000000000000..fffce784059a4d880a33d12d6a0a4de1740aaa25 GIT binary patch literal 10421 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 nq|(Toy`;