package net.moonleay.gimble.mixin; import net.minecraft.block.BlockState; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemPlacementContext; import net.moonleay.gimble.editor.ServerEditorManager; import net.moonleay.gimble.editor.state.mode.Capability; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.UUID; @Mixin(BlockItem.class) public class ForcePlaceMixin { @Inject(method = "canPlace", at = @At("HEAD"), cancellable = true) private void func(ItemPlacementContext context, BlockState state, CallbackInfoReturnable cir) { if (context.getPlayer() == null) { return; } UUID id = context.getPlayer().getGameProfile().getId(); if (!ServerEditorManager.INSTANCE.shouldPlayer(id, Capability.FORCE_PLACE)) { return; } cir.setReturnValue(true); cir.cancel(); } }