mirror of
https://hub.spigotmc.org/stash/scm/spigot/spigot.git
synced 2025-09-18 21:33:01 +00:00
64 lines
4.5 KiB
Diff
64 lines
4.5 KiB
Diff
From 00438973c10d8fa093d584abb59d0fd028cdd1bd 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 7a4ee6429..c34c635a8 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemBlock.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemBlock.java
|
|
@@ -166,7 +166,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 1ea133f67..519617ded 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemDebugStick.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemDebugStick.java
|
|
@@ -33,7 +33,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 0ae7423c1..58e89dd27 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -2254,7 +2254,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
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 6bea250b8..574aee621 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
|
|
@@ -11,6 +11,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", org.bukkit.permissions.PermissionDefault.OP, parent);
|
|
+ DefaultPermissions.registerPermission(ROOT + ".nbt.copy", "Gives the user the ability to copy NBT in creative", org.bukkit.permissions.PermissionDefault.TRUE, parent);
|
|
+ DefaultPermissions.registerPermission(ROOT + ".debugstick", "Gives the user the ability to use the debug stick creative", org.bukkit.permissions.PermissionDefault.OP, parent);
|
|
+ // Spigot end
|
|
parent.recalculatePermissibles();
|
|
}
|
|
}
|
|
--
|
|
2.20.1
|
|
|