Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-18 12:30:06 +01:00
SPIGOT-4503: Add API to insert complete ItemStack into Jukebox
Dieser Commit ist enthalten in:
Ursprung
fc1024944e
Commit
fe89a8c1bb
17
nms-patches/BlockJukeBox.patch
Normale Datei
17
nms-patches/BlockJukeBox.patch
Normale Datei
@ -0,0 +1,17 @@
|
|||||||
|
--- a/net/minecraft/server/BlockJukeBox.java
|
||||||
|
+++ b/net/minecraft/server/BlockJukeBox.java
|
||||||
|
@@ -24,7 +24,13 @@
|
||||||
|
TileEntity tileentity = generatoraccess.getTileEntity(blockposition);
|
||||||
|
|
||||||
|
if (tileentity instanceof TileEntityJukeBox) {
|
||||||
|
- ((TileEntityJukeBox) tileentity).setRecord(itemstack.cloneItemStack());
|
||||||
|
+ // CraftBukkit start - There can only be one
|
||||||
|
+ itemstack = itemstack.cloneItemStack();
|
||||||
|
+ if (!itemstack.isEmpty()) {
|
||||||
|
+ itemstack.setCount(1);
|
||||||
|
+ }
|
||||||
|
+ ((TileEntityJukeBox) tileentity).setRecord(itemstack);
|
||||||
|
+ // CraftBukkit end
|
||||||
|
generatoraccess.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockJukeBox.HAS_RECORD, true), 2);
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +0,0 @@
|
|||||||
--- a/net/minecraft/server/TileEntityJukeBox.java
|
|
||||||
+++ b/net/minecraft/server/TileEntityJukeBox.java
|
|
||||||
@@ -31,6 +31,11 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecord(ItemStack itemstack) {
|
|
||||||
+ // CraftBukkit start - There can only be one
|
|
||||||
+ if (!itemstack.isEmpty()) {
|
|
||||||
+ itemstack.setCount(1);
|
|
||||||
+ }
|
|
||||||
+ // CraftBukkit end
|
|
||||||
this.a = itemstack;
|
|
||||||
this.update();
|
|
||||||
}
|
|
@ -12,6 +12,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.Jukebox;
|
import org.bukkit.block.Jukebox;
|
||||||
import org.bukkit.craftbukkit.CraftWorld;
|
import org.bukkit.craftbukkit.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||||
|
|
||||||
public class CraftJukebox extends CraftBlockEntityState<TileEntityJukeBox> implements Jukebox {
|
public class CraftJukebox extends CraftBlockEntityState<TileEntityJukeBox> implements Jukebox {
|
||||||
@ -36,7 +37,7 @@ public class CraftJukebox extends CraftBlockEntityState<TileEntityJukeBox> imple
|
|||||||
} else {
|
} else {
|
||||||
world.getHandle().setTypeAndData(position, Blocks.JUKEBOX.getBlockData().set(BlockJukeBox.HAS_RECORD, true), 3);
|
world.getHandle().setTypeAndData(position, Blocks.JUKEBOX.getBlockData().set(BlockJukeBox.HAS_RECORD, true), 3);
|
||||||
}
|
}
|
||||||
world.playEffect(this.getLocation(), Effect.RECORD_PLAY, Item.getId(CraftMagicNumbers.getItem((Material) record)));
|
world.playEffect(this.getLocation(), Effect.RECORD_PLAY, record);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -44,11 +45,7 @@ public class CraftJukebox extends CraftBlockEntityState<TileEntityJukeBox> imple
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Material getPlaying() {
|
public Material getPlaying() {
|
||||||
ItemStack record = this.getSnapshot().getRecord();
|
return getRecord().getType();
|
||||||
if (record.isEmpty()) {
|
|
||||||
return Material.AIR;
|
|
||||||
}
|
|
||||||
return CraftMagicNumbers.getMaterial(record.getItem());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -57,8 +54,20 @@ public class CraftJukebox extends CraftBlockEntityState<TileEntityJukeBox> imple
|
|||||||
record = Material.AIR;
|
record = Material.AIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.getSnapshot().setRecord(new ItemStack(CraftMagicNumbers.getItem(record), 1));
|
setRecord(new org.bukkit.inventory.ItemStack(record));
|
||||||
if (record == Material.AIR) {
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public org.bukkit.inventory.ItemStack getRecord() {
|
||||||
|
ItemStack record = this.getSnapshot().getRecord();
|
||||||
|
return CraftItemStack.asBukkitCopy(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRecord(org.bukkit.inventory.ItemStack record) {
|
||||||
|
ItemStack nms = CraftItemStack.asNMSCopy(record);
|
||||||
|
this.getSnapshot().setRecord(nms);
|
||||||
|
if (nms.isEmpty()) {
|
||||||
getHandle().set(BlockJukeBox.HAS_RECORD, false);
|
getHandle().set(BlockJukeBox.HAS_RECORD, false);
|
||||||
} else {
|
} else {
|
||||||
getHandle().set(BlockJukeBox.HAS_RECORD, true);
|
getHandle().set(BlockJukeBox.HAS_RECORD, true);
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren