Skip to content

Commit 9f179ad

Browse files
Fix CloudburstMC#1032 Prismarine Crystals rendering incorrectly in item frames
1 parent 773e24d commit 9f179ad

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

src/main/java/cn/nukkit/blockentity/BlockEntityItemFrame.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
import cn.nukkit.block.BlockID;
88
import cn.nukkit.entity.item.EntityItem;
99
import cn.nukkit.event.block.ItemFrameDropItemEvent;
10-
import cn.nukkit.item.Item;
11-
import cn.nukkit.item.ItemBlock;
12-
import cn.nukkit.item.MinecraftItemID;
10+
import cn.nukkit.item.*;
1311
import cn.nukkit.level.Level;
1412
import cn.nukkit.level.format.FullChunk;
1513
import cn.nukkit.nbt.NBTIO;
@@ -102,16 +100,28 @@ public CompoundTag getSpawnCompound() {
102100
if (!this.namedTag.contains("Item")) {
103101
this.setItem(new ItemBlock(Block.get(BlockID.AIR)), false);
104102
}
105-
CompoundTag item = namedTag.getCompound("Item").copy();
106-
item.setName("Item");
103+
Item item = getItem();
107104
CompoundTag tag = new CompoundTag()
108105
.putString("id", BlockEntity.ITEM_FRAME)
109106
.putInt("x", (int) this.x)
110107
.putInt("y", (int) this.y)
111108
.putInt("z", (int) this.z);
112109

113-
if (item.getShort("id") != Item.AIR) {
114-
tag.putCompound("Item", item)
110+
if (!item.isNull()) {
111+
CompoundTag itemTag = NBTIO.putItemHelper(item);
112+
int networkFullId = item.getNetworkFullId();
113+
int networkDamage = RuntimeItems.hasData(networkFullId)? RuntimeItems.getData(networkFullId)
114+
: item.hasMeta() && ! (item instanceof ItemDurable) ? item.getDamage()
115+
: 0 ;
116+
String namespacedId = RuntimeItems.getRuntimeMapping().getNamespacedIdByNetworkId(
117+
RuntimeItems.getNetworkId(networkFullId)
118+
);
119+
if (namespacedId != null) {
120+
itemTag.remove("id");
121+
itemTag.putShort("Damage", networkDamage);
122+
itemTag.putString("Name", namespacedId);
123+
}
124+
tag.putCompound("Item", itemTag)
115125
.putByte("ItemRotation", this.getItemRotation());
116126
}
117127
return tag;

src/main/java/cn/nukkit/item/Item.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,8 +1216,9 @@ public final int getNetworkId() throws UnknownNetworkIdException {
12161216
@PowerNukkitOnly
12171217
@Since("1.3.2.0-PN")
12181218
public String getNamespaceId() {
1219-
return RuntimeItems.getRuntimeMapping().getNamespacedIdByNetworkId(
1220-
RuntimeItems.getRuntimeMapping().getNetworkFullId(this)
1219+
RuntimeItemMapping runtimeMapping = RuntimeItems.getRuntimeMapping();
1220+
return runtimeMapping.getNamespacedIdByNetworkId(
1221+
RuntimeItems.getNetworkId(runtimeMapping.getNetworkFullId(this))
12211222
);
12221223
}
12231224

0 commit comments

Comments
 (0)