spigot/CraftBukkit-Patches/0118-Add-creative-mode-NBT-permissions.patch
2019-03-17 11:48:53 +11:00

64 lines
4.4 KiB
Diff

From 4285e8c2898847e2b600289a76defe33034f5345 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 25 Feb 2019 19:26:56 +1100
Subject: [PATCH] Add creative mode NBT permissions
diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java
index 85d364b8f..f27d565e1 100644
--- a/src/main/java/net/minecraft/server/ItemBlock.java
+++ b/src/main/java/net/minecraft/server/ItemBlock.java
@@ -96,7 +96,7 @@ public class ItemBlock extends Item {
TileEntity tileentity = world.getTileEntity(blockposition);
if (tileentity != null) {
- if (!world.isClientSide && tileentity.isFilteredNBT() && (entityhuman == null || !entityhuman.isCreativeAndOp())) {
+ if (!world.isClientSide && tileentity.isFilteredNBT() && (entityhuman == null || !(entityhuman.isCreativeAndOp() || (entityhuman.abilities.canInstantlyBuild && entityhuman.getBukkitEntity().hasPermission("minecraft.nbt.place"))))) { // Spigot - add permission
return false;
}
diff --git a/src/main/java/net/minecraft/server/ItemDebugStick.java b/src/main/java/net/minecraft/server/ItemDebugStick.java
index b9e9c6774..9095d582e 100644
--- a/src/main/java/net/minecraft/server/ItemDebugStick.java
+++ b/src/main/java/net/minecraft/server/ItemDebugStick.java
@@ -31,7 +31,7 @@ public class ItemDebugStick extends Item {
}
private void a(EntityHuman entityhuman, IBlockData iblockdata, GeneratorAccess generatoraccess, BlockPosition blockposition, boolean flag, ItemStack itemstack) {
- if (entityhuman.isCreativeAndOp()) {
+ if (entityhuman.isCreativeAndOp() || (entityhuman.abilities.canInstantlyBuild && entityhuman.getBukkitEntity().hasPermission("minecraft.debugstick"))) {
Block block = iblockdata.getBlock();
BlockStateList<Block, IBlockData> blockstatelist = block.getStates();
Collection<IBlockState<?>> collection = blockstatelist.d();
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index b84e1dff4..330e74bb9 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2230,7 +2230,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
ItemStack itemstack = packetplayinsetcreativeslot.getItemStack();
NBTTagCompound nbttagcompound = itemstack.b("BlockEntityTag");
- if (!itemstack.isEmpty() && nbttagcompound != null && nbttagcompound.hasKey("x") && nbttagcompound.hasKey("y") && nbttagcompound.hasKey("z")) {
+ if (!itemstack.isEmpty() && nbttagcompound != null && nbttagcompound.hasKey("x") && nbttagcompound.hasKey("y") && nbttagcompound.hasKey("z") && this.player.getBukkitEntity().hasPermission("minecraft.nbt.copy")) { // Spigot
BlockPosition blockposition = new BlockPosition(nbttagcompound.getInt("x"), nbttagcompound.getInt("y"), nbttagcompound.getInt("z"));
TileEntity tileentity = this.player.world.getTileEntity(blockposition);
diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
index c54d3efd6..69fe84213 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
@@ -12,6 +12,11 @@ public final class CraftDefaultPermissions {
public static void registerCorePermissions() {
Permission parent = DefaultPermissions.registerPermission(ROOT, "Gives the user the ability to use all vanilla utilities and commands");
CommandPermissions.registerPermissions(parent);
+ // Spigot start
+ DefaultPermissions.registerPermission(ROOT + ".nbt.place", "Gives the user the ability to place restricted blocks with NBT in creative", PermissionDefault.OP, parent);
+ DefaultPermissions.registerPermission(ROOT + ".nbt.copy", "Gives the user the ability to copy NBT in creative", PermissionDefault.TRUE, parent);
+ DefaultPermissions.registerPermission(ROOT + ".debugstick", "Gives the user the ability to use the debug stick creative", PermissionDefault.OP, parent);
+ // Spigot end
parent.recalculatePermissibles();
}
}
--
2.19.1