Mirror von
https://github.com/ViaVersion/ViaBackwards.git
synchronisiert 2024-10-03 00:50:05 +02:00
Keep original item data in LegacyBlockItemRewriter (#706)
Dieser Commit ist enthalten in:
Ursprung
ed52ef21ee
Commit
b438484dc7
@ -42,8 +42,11 @@ import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import com.viaversion.viaversion.libs.gson.JsonPrimitive;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ShortTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag;
|
||||
import com.viaversion.viaversion.util.ComponentUtil;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -150,20 +153,21 @@ public abstract class LegacyBlockItemRewriter<C extends ClientboundPacketType, S
|
||||
// Just rewrite the id
|
||||
return super.handleItemToClient(item);
|
||||
}
|
||||
if (item.tag() == null) {
|
||||
item.setTag(new CompoundTag());
|
||||
}
|
||||
|
||||
short originalData = item.data();
|
||||
item.tag().putInt(getNbtTagName() + "|id", item.identifier());
|
||||
item.setIdentifier(data.getId());
|
||||
// Keep original data if mapped data is set to -1
|
||||
if (data.getData() != -1) {
|
||||
item.setData(data.getData());
|
||||
item.tag().putShort(getNbtTagName() + "|data", originalData);
|
||||
}
|
||||
|
||||
// Set display name
|
||||
if (data.getName() != null) {
|
||||
if (item.tag() == null) {
|
||||
item.setTag(new CompoundTag());
|
||||
}
|
||||
|
||||
CompoundTag display = item.tag().getCompoundTag("display");
|
||||
if (display == null) {
|
||||
item.tag().put("display", display = new CompoundTag());
|
||||
@ -185,6 +189,23 @@ public abstract class LegacyBlockItemRewriter<C extends ClientboundPacketType, S
|
||||
return item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Item handleItemToServer(@Nullable final Item item) {
|
||||
if (item == null) return null;
|
||||
super.handleItemToServer(item);
|
||||
if (item.tag() != null) {
|
||||
Tag originalId = item.tag().remove(getNbtTagName() + "|id");
|
||||
if (originalId instanceof IntTag) {
|
||||
item.setIdentifier(((NumberTag) originalId).asInt());
|
||||
}
|
||||
Tag originalData = item.tag().remove(getNbtTagName() + "|data");
|
||||
if (originalData instanceof ShortTag) {
|
||||
item.setData(((NumberTag) originalData).asShort());
|
||||
}
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
public int handleBlockId(final int rawId) {
|
||||
final int id = Block.getId(rawId);
|
||||
final int data = Block.getData(rawId);
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren