2021-11-25 08:00:00 +11:00
From 2c3e674c18db3f2438d0b1c2d9c166835735099e Mon Sep 17 00:00:00 2001
2019-02-25 19:27:27 +11:00
From: md_5 <git@md-5.net>
Date: Mon, 25 Feb 2019 19:26:56 +1100
Subject: [PATCH] Add creative mode NBT permissions
2021-03-16 09:00:00 +11:00
diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java
2021-11-22 09:00:00 +11:00
index c29075bcb..93a9f095a 100644
2021-03-16 09:00:00 +11:00
--- a/src/main/java/net/minecraft/server/network/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java
2021-11-22 09:00:00 +11:00
@@ -2552,7 +2552,7 @@ public class PlayerConnection implements ServerPlayerConnection, PacketListenerP
ItemStack itemstack = packetplayinsetcreativeslot.getItem();
NBTTagCompound nbttagcompound = ItemBlock.getBlockEntityData(itemstack);
2021-03-16 09:00:00 +11:00
2021-11-22 09:00:00 +11:00
- if (!itemstack.isEmpty() && nbttagcompound != null && nbttagcompound.contains("x") && nbttagcompound.contains("y") && nbttagcompound.contains("z")) {
+ if (!itemstack.isEmpty() && nbttagcompound != null && nbttagcompound.contains("x") && nbttagcompound.contains("y") && nbttagcompound.contains("z") && this.player.getBukkitEntity().hasPermission("minecraft.nbt.copy")) { // Spigot
BlockPosition blockposition = TileEntity.getPosFromTag(nbttagcompound);
TileEntity tileentity = this.player.level.getBlockEntity(blockposition);
2021-03-16 09:00:00 +11:00
diff --git a/src/main/java/net/minecraft/world/item/ItemBlock.java b/src/main/java/net/minecraft/world/item/ItemBlock.java
2021-11-25 08:00:00 +11:00
index b9ac3f598..8d08cf83c 100644
2021-03-16 09:00:00 +11:00
--- a/src/main/java/net/minecraft/world/item/ItemBlock.java
+++ b/src/main/java/net/minecraft/world/item/ItemBlock.java
2021-11-25 08:00:00 +11:00
@@ -228,7 +228,7 @@ public class ItemBlock extends Item {
2021-11-22 09:00:00 +11:00
TileEntity tileentity = world.getBlockEntity(blockposition);
2019-02-25 19:27:27 +11:00
if (tileentity != null) {
2021-11-22 09:00:00 +11:00
- if (!world.isClientSide && tileentity.onlyOpCanSetNbt() && (entityhuman == null || !entityhuman.canUseGameMasterBlocks())) {
+ if (!world.isClientSide && tileentity.onlyOpCanSetNbt() && (entityhuman == null || !(entityhuman.canUseGameMasterBlocks() || (entityhuman.getAbilities().instabuild && entityhuman.getBukkitEntity().hasPermission("minecraft.nbt.place"))))) { // Spigot - add permission
2019-02-25 19:27:27 +11:00
return false;
}
2021-03-16 09:00:00 +11:00
diff --git a/src/main/java/net/minecraft/world/item/ItemDebugStick.java b/src/main/java/net/minecraft/world/item/ItemDebugStick.java
2021-11-22 09:00:00 +11:00
index 1456a0518..4ca3132e2 100644
2021-03-16 09:00:00 +11:00
--- a/src/main/java/net/minecraft/world/item/ItemDebugStick.java
+++ b/src/main/java/net/minecraft/world/item/ItemDebugStick.java
2021-06-11 15:00:00 +10:00
@@ -59,7 +59,7 @@ public class ItemDebugStick extends Item {
2019-02-26 21:13:44 +11:00
}
2021-11-22 09:00:00 +11:00
private boolean handleInteraction(EntityHuman entityhuman, IBlockData iblockdata, GeneratorAccess generatoraccess, BlockPosition blockposition, boolean flag, ItemStack itemstack) {
- if (!entityhuman.canUseGameMasterBlocks()) {
+ if (!entityhuman.canUseGameMasterBlocks() && !(entityhuman.getAbilities().instabuild && entityhuman.getBukkitEntity().hasPermission("minecraft.debugstick")) && !entityhuman.getBukkitEntity().hasPermission("minecraft.debugstick.always")) { // Spigot
2021-06-11 15:00:00 +10:00
return false;
} else {
2019-02-26 21:13:44 +11:00
Block block = iblockdata.getBlock();
2019-02-25 19:27:27 +11:00
diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
2020-05-09 18:48:11 +10:00
index 75f8d47a2..525ebf961 100644
2019-02-25 19:27:27 +11:00
--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
2019-12-17 12:27:25 +11:00
@@ -11,6 +11,12 @@ public final class CraftDefaultPermissions {
2019-02-25 19:27:27 +11:00
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
2019-04-23 15:12:43 +10:00
+ 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);
2019-12-17 12:27:25 +11:00
+ DefaultPermissions.registerPermission(ROOT + ".debugstick", "Gives the user the ability to use the debug stick in creative", org.bukkit.permissions.PermissionDefault.OP, parent);
+ DefaultPermissions.registerPermission(ROOT + ".debugstick.always", "Gives the user the ability to use the debug stick in all game modes", org.bukkit.permissions.PermissionDefault.FALSE, parent);
2019-02-25 19:27:27 +11:00
+ // Spigot end
parent.recalculatePermissibles();
}
}
--
2020-05-09 18:48:11 +10:00
2.25.1
2019-02-25 19:27:27 +11:00