From 330a13271b58aa3e2945598a355aab44bf0a1aca Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Tue, 11 Mar 2025 05:26:36 +0800 Subject: [PATCH] fix unbreakable warded glass (#37) fix https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/18849 @Ruling-0 since your glass refactor is slightly related to this --------- Signed-off-by: Glease <4586901+Glease@users.noreply.github.com> --- .../structure/StructureUtility.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java index f44e3095..5a92ec46 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java @@ -333,18 +333,24 @@ public class StructureUtility { int itemMeta = itemBlock instanceof ISpecialItemBlock ? ((ISpecialItemBlock) itemBlock).getItemMetaFromBlockMeta(block, meta) : meta; - if (!s.takeOne(new ItemStack(itemBlock, 1, itemMeta), false)) { + ItemStack stack = new ItemStack(itemBlock, 1, itemMeta); + if (!s.takeOne(stack, true)) { if (chatter != null) chatter.accept( new ChatComponentTranslation( "structurelib.autoplace.error.no_simple_block", - new ItemStack(itemBlock, 1, itemMeta).func_151000_E())); + stack.func_151000_E())); return PlaceResult.REJECT; } if (block instanceof ICustomBlockSetting) { - ICustomBlockSetting block2 = (ICustomBlockSetting) block; - block2.setBlock(world, x, y, z, meta); - } else { - world.setBlock(x, y, z, block, meta, 2); + ICustomBlockSetting blockCustom = (ICustomBlockSetting) block; + blockCustom.setBlock(world, x, y, z, meta); + } else if (!stack.copy() + .tryPlaceItemIntoWorld(actor, world, x, y, z, ForgeDirection.UP.ordinal(), 0.5f, 0.5f, 0.5f)) { + return PlaceResult.REJECT; + } + if (!s.takeOne(stack, false)) { + // rollback + world.setBlockToAir(x, y, z); } return PlaceResult.ACCEPT; }