From dbdf6cacbf42e7cd87cc4fb068e3086ac9462942 Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Sun, 21 Dec 2014 19:04:01 +0000 Subject: [PATCH] Only allow command blocks to be placed by op'd players --- nms-patches/PlayerInteractManager.patch | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nms-patches/PlayerInteractManager.patch b/nms-patches/PlayerInteractManager.patch index f5662ce37d..8debad8da3 100644 --- a/nms-patches/PlayerInteractManager.patch +++ b/nms-patches/PlayerInteractManager.patch @@ -1,5 +1,5 @@ ---- ../work/decompile-8eb82bde//net/minecraft/server/PlayerInteractManager.java 2014-12-09 12:19:57.555618161 +0000 -+++ src/main/java/net/minecraft/server/PlayerInteractManager.java 2014-12-09 12:16:26.307622849 +0000 +--- ../work/decompile-8eb82bde/net/minecraft/server/PlayerInteractManager.java 2014-12-21 19:03:39.124516788 +0000 ++++ src/main/java/net/minecraft/server/PlayerInteractManager.java 2014-12-21 19:03:39.128516787 +0000 @@ -1,5 +1,13 @@ package net.minecraft.server; @@ -216,7 +216,7 @@ if (this.gamemode == EnumGamemode.SPECTATOR) { TileEntity tileentity = world.getTileEntity(blockposition); -@@ -312,6 +444,68 @@ +@@ -312,6 +444,72 @@ return itemstack.placeItem(entityhuman, world, blockposition, enumdirection, f, f1, f2); } } @@ -229,7 +229,11 @@ + if (this.gamemode == EnumGamemode.SPECTATOR) { + TileEntity tileentity = world.getTileEntity(blockposition); + cancelledBlock = !(tileentity instanceof ITileInventory || tileentity instanceof IInventory); -+ } ++ } ++ ++ if (!entityhuman.getBukkitEntity().isOp() && itemstack != null && Block.asBlock(itemstack.getItem()) instanceof BlockCommand) { ++ cancelledBlock = true; ++ } + + PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(entityhuman, Action.RIGHT_CLICK_BLOCK, blockposition, enumdirection, itemstack, cancelledBlock); + firedInteract = true;