mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: b75eeca0 Boost light task priority to ensure it doesnt hold up chunk loads 3d2bc848 Ensure VillagerTrades doesn't load async - fixes #3495 e470f1ef Add more information to Timing Reports f4a47db6 Improve Thread Pool usage to allow single threads for single cpu servers a4fe910f Fix sounds when using worldedit regen command 70ad51a8 Updated Upstream (Bukkit/CraftBukkit) d7cfa4fa Improve legacy format serialization more
87 lines
4.3 KiB
Diff
87 lines
4.3 KiB
Diff
From e566feaf03a63249eef301206503eaf5a3226a17 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Sat, 8 Feb 2020 23:30:17 -0600
|
|
Subject: [PATCH] Add getPlacementBlockData to World
|
|
|
|
---
|
|
.../net/minecraft/server/BlockMobSpawner.java | 1 +
|
|
.../net/minecraft/server/ItemSpawner.java | 23 +++++++++++++++++++
|
|
src/main/java/net/minecraft/server/Items.java | 2 +-
|
|
.../org/bukkit/craftbukkit/CraftWorld.java | 5 ++++
|
|
4 files changed, 30 insertions(+), 1 deletion(-)
|
|
create mode 100644 src/main/java/net/minecraft/server/ItemSpawner.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockMobSpawner.java b/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
|
index 69d04f6cbf..901d45f284 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
|
@@ -57,6 +57,7 @@ public class BlockMobSpawner extends BlockTileEntity {
|
|
|
|
@Override
|
|
public int getExpDrop(IBlockData iblockdata, World world, BlockPosition blockposition, ItemStack itemstack) {
|
|
+ if (isSilkTouch(itemstack)) return 0; // Purpur
|
|
int i = 15 + world.random.nextInt(15) + world.random.nextInt(15);
|
|
|
|
return i;
|
|
diff --git a/src/main/java/net/minecraft/server/ItemSpawner.java b/src/main/java/net/minecraft/server/ItemSpawner.java
|
|
new file mode 100644
|
|
index 0000000000..7dc68ffe92
|
|
--- /dev/null
|
|
+++ b/src/main/java/net/minecraft/server/ItemSpawner.java
|
|
@@ -0,0 +1,23 @@
|
|
+package net.minecraft.server;
|
|
+
|
|
+public class ItemSpawner extends ItemBlock {
|
|
+ public ItemSpawner(Block block, Info info) {
|
|
+ super(block, info);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected boolean a(BlockPosition blockposition, World world, EntityHuman entityhuman, ItemStack itemstack, IBlockData iblockdata) {
|
|
+ boolean handled = super.a(blockposition, world, entityhuman, itemstack, iblockdata);
|
|
+ if (entityhuman.getBukkitEntity().hasPermission("purpur.place.spawners")) {
|
|
+ TileEntity spawner = world.getTileEntity(blockposition);
|
|
+ if (spawner instanceof TileEntityMobSpawner && itemstack.hasTag()) {
|
|
+ NBTTagCompound tag = itemstack.getTag();
|
|
+ if (tag.hasKey("Purpur.mob_type")) {
|
|
+ EntityTypes.getType(tag.getString("Purpur.mob_type")).ifPresent(type ->
|
|
+ ((TileEntityMobSpawner) spawner).getSpawner().setMobName(type));
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ return handled;
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/net/minecraft/server/Items.java b/src/main/java/net/minecraft/server/Items.java
|
|
index 9c9b93f280..74a722cce5 100644
|
|
--- a/src/main/java/net/minecraft/server/Items.java
|
|
+++ b/src/main/java/net/minecraft/server/Items.java
|
|
@@ -155,7 +155,7 @@ public class Items {
|
|
public static final Item bU = a(Blocks.PURPUR_BLOCK, CreativeModeTab.b);
|
|
public static final Item bV = a(Blocks.PURPUR_PILLAR, CreativeModeTab.b);
|
|
public static final Item bW = a(Blocks.PURPUR_STAIRS, CreativeModeTab.b);
|
|
- public static final Item bX = a(Blocks.SPAWNER);
|
|
+ public static final Item bX = a(Blocks.SPAWNER, new ItemSpawner(Blocks.SPAWNER, new Item.Info().a(EnumItemRarity.EPIC))); // Purpur
|
|
public static final Item bY = a(Blocks.OAK_STAIRS, CreativeModeTab.b);
|
|
public static final Item bZ = a(Blocks.CHEST, CreativeModeTab.c);
|
|
public static final Item ca = a(Blocks.DIAMOND_ORE, CreativeModeTab.b);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index 66f3e9393e..414fc4baf9 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -2468,6 +2468,11 @@ public class CraftWorld implements World {
|
|
public net.pl3x.purpur.MoonPhase getMoonPhase() {
|
|
return net.pl3x.purpur.MoonPhase.getPhase(getFullTime() / 24000L);
|
|
}
|
|
+
|
|
+ public BlockData getPlacementBlockData(BlockData blockdata, Location location) {
|
|
+ IBlockData validData = net.minecraft.server.Block.getValidBlockForPosition(((CraftBlockData) blockdata).getState(), getHandle(), net.minecraft.server.MCUtil.toBlockPosition(location));
|
|
+ return CraftBlockData.fromData(validData == null ? Blocks.AIR.getBlockData() : validData);
|
|
+ }
|
|
// Purpur end
|
|
|
|
// Paper start
|
|
--
|
|
2.24.0
|
|
|