Skip to content

Commit 125041f

Browse files
committed
Adjust placement code to check if the place event was canceled before actually placing any block
1 parent 1630960 commit 125041f

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

src/main/java/mrbysco/constructionstick/basics/StickUtil.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import net.minecraft.world.item.ItemStack;
2222
import net.minecraft.world.item.Items;
2323
import net.minecraft.world.level.Level;
24-
import net.minecraft.world.level.block.Block;
2524
import net.minecraft.world.level.block.state.BlockState;
2625
import net.minecraft.world.phys.AABB;
2726
import net.minecraft.world.phys.BlockHitResult;
@@ -109,31 +108,30 @@ public static boolean isTEAllowed(BlockState state) {
109108
}
110109

111110
public static boolean placeBlock(Level level, Player player, BlockState block, BlockPos pos, @Nullable BlockItem item) {
112-
if (!level.setBlockAndUpdate(pos, block)) {
113-
ConstructionStick.LOGGER.info("Block could not be placed");
114-
return false;
115-
}
116-
117111
// Remove block if placeEvent is canceled
118112
BlockSnapshot snapshot = BlockSnapshot.create(level.dimension(), level, pos);
119113
BlockEvent.EntityPlaceEvent placeEvent = new BlockEvent.EntityPlaceEvent(snapshot, block, player);
120114
NeoForge.EVENT_BUS.post(placeEvent);
121115
if (placeEvent.isCanceled()) {
122-
level.removeBlock(pos, false);
123116
return false;
124-
}
117+
} else {
118+
if (!level.setBlockAndUpdate(pos, block)) {
119+
ConstructionStick.LOGGER.info("Block could not be placed");
120+
return false;
121+
}
125122

126-
ItemStack stack;
127-
if (item == null) stack = new ItemStack(block.getBlock().asItem());
128-
else {
129-
stack = new ItemStack(item);
130-
player.awardStat(Stats.ITEM_USED.get(item));
131-
}
123+
ItemStack stack;
124+
if (item == null) stack = new ItemStack(block.getBlock().asItem());
125+
else {
126+
stack = new ItemStack(item);
127+
player.awardStat(Stats.ITEM_USED.get(item));
128+
}
132129

133-
// Call OnBlockPlaced method
134-
block.getBlock().setPlacedBy(level, pos, block, player, stack);
130+
// Call OnBlockPlaced method
131+
block.getBlock().setPlacedBy(level, pos, block, player, stack);
135132

136-
return true;
133+
return true;
134+
}
137135
}
138136

139137
public static boolean removeBlock(Level level, Player player, @Nullable BlockState block, BlockPos pos) {

0 commit comments

Comments
 (0)