From 5615bddf9bfd6a67d494ce17c15150d06ffaa006 Mon Sep 17 00:00:00 2001 From: gnembon Date: Wed, 25 Nov 2020 00:14:46 -0400 Subject: [PATCH] returns false on 'set' when setblock fails. --- src/main/java/carpet/script/api/WorldAccess.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/carpet/script/api/WorldAccess.java b/src/main/java/carpet/script/api/WorldAccess.java index d0216e25..3b285911 100644 --- a/src/main/java/carpet/script/api/WorldAccess.java +++ b/src/main/java/carpet/script/api/WorldAccess.java @@ -739,11 +739,12 @@ public class WorldAccess { return (c_, t_) -> Value.FALSE; BlockState finalSourceBlockState = sourceBlockState; BlockPos targetPos = targetLocator.block.getPos(); + Boolean[] result = new Boolean[]{true}; cc.s.getMinecraftServer().submitAndJoin( () -> { Clearable.clear(world.getBlockEntity(targetPos)); - world.setBlockState(targetPos, finalSourceBlockState, 2); - if (finalData != null) + boolean success = world.setBlockState(targetPos, finalSourceBlockState, 2); + if (success && finalData != null) { BlockEntity be = world.getBlockEntity(targetPos); if (be != null) @@ -756,7 +757,9 @@ public class WorldAccess { be.markDirty(); } } + result[0] = success; }); + if (!result[0]) return LazyValue.FALSE; Value retval = new BlockValue(finalSourceBlockState, world, targetLocator.block.getPos()); return (c_, t_) -> retval; });