Add permission nodes for silk spawners

This commit is contained in:
William Blake Galbreath 2019-05-19 06:50:35 -05:00
parent c1f1b14ecf
commit 56b5c660ce

View File

@ -1,4 +1,4 @@
From 3d81446a71c62cdc61ee17dfee17d1f4fb77132a Mon Sep 17 00:00:00 2001 From fd11f5a1efda406919f07995d24ab6cc97ac9ac1 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com> From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 9 May 2019 14:27:37 -0500 Date: Thu, 9 May 2019 14:27:37 -0500
Subject: [PATCH] Silk touch spawners Subject: [PATCH] Silk touch spawners
@ -7,9 +7,9 @@ Subject: [PATCH] Silk touch spawners
src/main/java/net/minecraft/server/Block.java | 1 + src/main/java/net/minecraft/server/Block.java | 1 +
.../net/minecraft/server/BlockMobSpawner.java | 35 +++++++++++++++++++ .../net/minecraft/server/BlockMobSpawner.java | 35 +++++++++++++++++++
.../net/minecraft/server/EntityTypes.java | 13 +++++++ .../net/minecraft/server/EntityTypes.java | 13 +++++++
.../net/minecraft/server/ItemSpawner.java | 20 +++++++++++ .../net/minecraft/server/ItemSpawner.java | 22 ++++++++++++
src/main/java/net/minecraft/server/Items.java | 2 +- src/main/java/net/minecraft/server/Items.java | 2 +-
5 files changed, 70 insertions(+), 1 deletion(-) 5 files changed, 72 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/net/minecraft/server/ItemSpawner.java create mode 100644 src/main/java/net/minecraft/server/ItemSpawner.java
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
@ -25,7 +25,7 @@ index 5b98c5255..b5c8f2cb3 100644
if (!world.isClientSide && !itemstack.isEmpty() && world.getGameRules().getBoolean("doTileDrops")) { if (!world.isClientSide && !itemstack.isEmpty() && world.getGameRules().getBoolean("doTileDrops")) {
float f = 0.5F; float f = 0.5F;
diff --git a/src/main/java/net/minecraft/server/BlockMobSpawner.java b/src/main/java/net/minecraft/server/BlockMobSpawner.java diff --git a/src/main/java/net/minecraft/server/BlockMobSpawner.java b/src/main/java/net/minecraft/server/BlockMobSpawner.java
index bb77d916a..01b7e10a7 100644 index bb77d916a..974a5d281 100644
--- a/src/main/java/net/minecraft/server/BlockMobSpawner.java --- a/src/main/java/net/minecraft/server/BlockMobSpawner.java
+++ b/src/main/java/net/minecraft/server/BlockMobSpawner.java +++ b/src/main/java/net/minecraft/server/BlockMobSpawner.java
@@ -11,6 +11,40 @@ public class BlockMobSpawner extends BlockTileEntity { @@ -11,6 +11,40 @@ public class BlockMobSpawner extends BlockTileEntity {
@ -35,7 +35,7 @@ index bb77d916a..01b7e10a7 100644
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity, ItemStack itemstack) { + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity, ItemStack itemstack) {
+ if (isSilkTouch(itemstack)) { + if (entityhuman.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(itemstack)) {
+ MinecraftKey type = ((TileEntityMobSpawner) tileentity).getSpawner().getMobName(); + MinecraftKey type = ((TileEntityMobSpawner) tileentity).getSpawner().getMobName();
+ if (type != null) { + if (type != null) {
+ ItemStack item = new ItemStack(Blocks.SPAWNER.getItem()); + ItemStack item = new ItemStack(Blocks.SPAWNER.getItem());
@ -117,10 +117,10 @@ index 77d4bbce1..fb0c6bce0 100644
this.bf = new ChatMessage(this.e(), new Object[0]); this.bf = new ChatMessage(this.e(), new Object[0]);
diff --git a/src/main/java/net/minecraft/server/ItemSpawner.java b/src/main/java/net/minecraft/server/ItemSpawner.java diff --git a/src/main/java/net/minecraft/server/ItemSpawner.java b/src/main/java/net/minecraft/server/ItemSpawner.java
new file mode 100644 new file mode 100644
index 000000000..17da40083 index 000000000..05dbc162f
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/ItemSpawner.java +++ b/src/main/java/net/minecraft/server/ItemSpawner.java
@@ -0,0 +1,20 @@ @@ -0,0 +1,22 @@
+package net.minecraft.server; +package net.minecraft.server;
+ +
+public class ItemSpawner extends ItemBlock { +public class ItemSpawner extends ItemBlock {
@ -131,11 +131,13 @@ index 000000000..17da40083
+ @Override + @Override
+ protected boolean a(BlockPosition blockposition, World world, EntityHuman entityhuman, ItemStack itemstack, IBlockData iblockdata) { + protected boolean a(BlockPosition blockposition, World world, EntityHuman entityhuman, ItemStack itemstack, IBlockData iblockdata) {
+ boolean handled = super.a(blockposition, world, entityhuman, itemstack, iblockdata); + boolean handled = super.a(blockposition, world, entityhuman, itemstack, iblockdata);
+ TileEntity te = world.getTileEntity(blockposition); + if (entityhuman.getBukkitEntity().hasPermission("purpur.place.spawners")) {
+ if (te instanceof TileEntityMobSpawner && itemstack.hasTag()) { + TileEntity te = world.getTileEntity(blockposition);
+ NBTTagCompound tag = itemstack.getTag(); + if (te instanceof TileEntityMobSpawner && itemstack.hasTag()) {
+ if (tag.hasKey("Purpur.mob_type")) { + NBTTagCompound tag = itemstack.getTag();
+ EntityTypes.a(tag.getString("Purpur.mob_type")).ifPresent(type -> ((TileEntityMobSpawner) te).getSpawner().setMobName(type)); + if (tag.hasKey("Purpur.mob_type")) {
+ EntityTypes.a(tag.getString("Purpur.mob_type")).ifPresent(type -> ((TileEntityMobSpawner) te).getSpawner().setMobName(type));
+ }
+ } + }
+ } + }
+ return handled; + return handled;