diff --git a/core/src/main/java/nl/matsv/viabackwards/api/data/MappedItem.java b/core/src/main/java/nl/matsv/viabackwards/api/data/MappedItem.java new file mode 100644 index 00000000..f1488b3c --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/api/data/MappedItem.java @@ -0,0 +1,23 @@ +package nl.matsv.viabackwards.api.data; + +import net.md_5.bungee.api.ChatColor; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; + +public class MappedItem { + + private final int id; + private final String jsonName; + + public MappedItem(int id, String name) { + this.id = id; + this.jsonName = ChatRewriter.legacyTextToJson(ChatColor.RESET + name); + } + + public int getId() { + return id; + } + + public String getJsonName() { + return jsonName; + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/api/data/VBItemMappings.java b/core/src/main/java/nl/matsv/viabackwards/api/data/VBItemMappings.java new file mode 100644 index 00000000..845f36e8 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/api/data/VBItemMappings.java @@ -0,0 +1,41 @@ +package nl.matsv.viabackwards.api.data; + +import nl.matsv.viabackwards.ViaBackwards; +import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.data.MappingDataLoader; +import us.myles.viaversion.libs.gson.JsonElement; +import us.myles.viaversion.libs.gson.JsonObject; + +import java.util.HashMap; +import java.util.Map; + +/** + * Backwards mappings for newly (!) added items. + */ +public class VBItemMappings { + + private final Map itemMapping = new HashMap<>(); + + public VBItemMappings(JsonObject oldMapping, JsonObject newMapping, JsonObject diffMapping) { + for (Map.Entry entry : diffMapping.entrySet()) { + JsonObject object = entry.getValue().getAsJsonObject(); + String mappedIdName = object.getAsJsonPrimitive("id").getAsString(); + Map.Entry value = MappingDataLoader.findValue(newMapping, mappedIdName); + if (value == null) { + if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { + ViaBackwards.getPlatform().getLogger().warning("No key for " + mappedIdName + " :( "); + } + continue; + } + + int id = Integer.parseInt(MappingDataLoader.findValue(oldMapping, entry.getKey()).getKey()); + int mappedId = Integer.parseInt(value.getKey()); + String name = object.getAsJsonPrimitive("name").getAsString(); + itemMapping.put(id, new MappedItem(mappedId, name)); + } + } + + public MappedItem getMappedItem(int id) { + return itemMapping.get(id); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/ItemRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/ItemRewriter.java new file mode 100644 index 00000000..ecd0213c --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/ItemRewriter.java @@ -0,0 +1,62 @@ +package nl.matsv.viabackwards.api.rewriters; + +import nl.matsv.viabackwards.api.BackwardsProtocol; +import nl.matsv.viabackwards.api.data.MappedItem; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.rewriters.IdRewriteFunction; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; + +public abstract class ItemRewriter extends ItemRewriterBase { + + private final MappedItemFunction mappedItemFunction; + + protected ItemRewriter(T protocol, IdRewriteFunction oldRewriter, IdRewriteFunction newRewriter, MappedItemFunction mappedItemFunction) { + super(protocol, oldRewriter, newRewriter, true); + this.mappedItemFunction = mappedItemFunction; + } + + protected ItemRewriter(T protocol, MappedItemFunction mappedItemFunction) { + super(protocol, true); + this.mappedItemFunction = mappedItemFunction; + } + + @Override + public Item handleItemToClient(Item item) { + if (item == null) return null; + + MappedItem data = mappedItemFunction.get(item.getIdentifier()); + if (data == null) { + // Just rewrite the id + return super.handleItemToClient(item); + } + + if (item.getTag() == null) { + item.setTag(new CompoundTag("")); + } + + // Backup data for toServer + item.getTag().put(createViaNBT(item)); + + // Also includes the already mapped id + item.setIdentifier(data.getId()); + + // Set custom name + CompoundTag tag = item.getTag().get("display"); + if (tag == null) { + item.getTag().put(tag = new CompoundTag("display")); + } + // Only set name if there is no original one + if (!tag.contains("Name")) { + tag.put(new StringTag("Name", data.getJsonName())); + } + + return item; + } + + @FunctionalInterface + public interface MappedItemFunction { + + MappedItem get(int id); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/ItemRewriterBase.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/ItemRewriterBase.java new file mode 100644 index 00000000..23271336 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/ItemRewriterBase.java @@ -0,0 +1,84 @@ +package nl.matsv.viabackwards.api.rewriters; + +import nl.matsv.viabackwards.api.BackwardsProtocol; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.rewriters.IdRewriteFunction; +import us.myles.viaversion.libs.opennbt.conversion.builtin.CompoundTagConverter; +import us.myles.viaversion.libs.opennbt.tag.builtin.ByteTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.ShortTag; + +public abstract class ItemRewriterBase extends Rewriter { + + protected static final CompoundTagConverter CONVERTER = new CompoundTagConverter(); + protected final IdRewriteFunction oldRewriter; + protected final IdRewriteFunction newRewriter; + protected final String nbtTagName; + protected final boolean jsonNameFormat; + + protected ItemRewriterBase(T protocol, IdRewriteFunction oldRewriter, IdRewriteFunction newRewriter, boolean jsonNameFormat) { + super(protocol); + this.oldRewriter = oldRewriter; + this.newRewriter = newRewriter; + this.jsonNameFormat = jsonNameFormat; + nbtTagName = "ViaBackwards|" + protocol.getClass().getSimpleName(); + } + + protected ItemRewriterBase(T protocol, boolean jsonNameFormat) { + this(protocol, null, null, jsonNameFormat); + } + + public Item handleItemToClient(Item item) { + if (item == null) return null; + if (oldRewriter != null) { + item.setIdentifier(oldRewriter.rewrite(item.getIdentifier())); + } + return item; + } + + public Item handleItemToServer(Item item) { + if (item == null) return null; + + CompoundTag tag = item.getTag(); + if (tag == null) { + if (newRewriter != null) { + item.setIdentifier(newRewriter.rewrite(item.getIdentifier())); + } + return item; + } + + CompoundTag viaTag = tag.get(nbtTagName); + if (viaTag != null) { + short id = (short) viaTag.get("id").getValue(); + short data = (short) viaTag.get("data").getValue(); + byte amount = (byte) viaTag.get("amount").getValue(); + CompoundTag extras = viaTag.get("extras"); + + item.setIdentifier(id); + item.setData(data); + item.setAmount(amount); + if (extras != null) { + item.setTag(CONVERTER.convert("", CONVERTER.convert(extras))); + } + // Remove data tag + tag.remove(nbtTagName); + } else { + // Rewrite id normally + if (newRewriter != null) { + item.setIdentifier(newRewriter.rewrite(item.getIdentifier())); + } + } + return item; + } + + protected CompoundTag createViaNBT(Item item) { + CompoundTag tag = new CompoundTag(nbtTagName); + tag.put(new ShortTag("id", (short) item.getIdentifier())); + tag.put(new ShortTag("data", item.getData())); + tag.put(new ByteTag("amount", item.getAmount())); + if (item.getTag() != null) { + tag.put(CONVERTER.convert("extras", CONVERTER.convert(item.getTag()))); + } + return tag; + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/LegacyBlockItemRewriter.java similarity index 61% rename from core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java rename to core/src/main/java/nl/matsv/viabackwards/api/rewriters/LegacyBlockItemRewriter.java index 4db39228..78cecc59 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/LegacyBlockItemRewriter.java @@ -10,10 +10,6 @@ package nl.matsv.viabackwards.api.rewriters; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; import net.md_5.bungee.api.ChatColor; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.blockitem.BlockItemSettings; @@ -23,23 +19,26 @@ import nl.matsv.viabackwards.utils.ItemUtil; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.rewriters.IdRewriteFunction; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; -import us.myles.viaversion.libs.opennbt.conversion.builtin.CompoundTagConverter; -import us.myles.viaversion.libs.opennbt.tag.builtin.*; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; import java.util.HashMap; import java.util.Map; -public abstract class BlockItemRewriter extends Rewriter { +public abstract class LegacyBlockItemRewriter extends ItemRewriterBase { - private static final CompoundTagConverter converter = new CompoundTagConverter(); private final Map replacementData = new HashMap<>(); - protected String nbtTagName; - protected boolean jsonNameFormat = true; - protected BlockItemRewriter(T protocol) { - super(protocol); - nbtTagName = "ViaBackwards|" + protocol.getClass().getSimpleName(); + protected LegacyBlockItemRewriter(T protocol, IdRewriteFunction oldRewriter, IdRewriteFunction newRewriter) { + super(protocol, oldRewriter, newRewriter, false); + } + + protected LegacyBlockItemRewriter(T protocol) { + super(protocol, false); } protected BlockItemSettings rewrite(int itemId) { @@ -48,77 +47,64 @@ public abstract class BlockItemRewriter extends Rew return settings; } - public Item handleItemToClient(Item i) { - if (i == null) return null; + @Override + public Item handleItemToClient(Item item) { + if (item == null) return null; - BlockItemSettings data = replacementData.get(i.getIdentifier()); - if (data == null) return i; + BlockItemSettings data = replacementData.get(item.getIdentifier()); + if (data == null) { + // Just rewrite the id + return super.handleItemToClient(item); + } - Item original = ItemUtil.copyItem(i); + Item original = ItemUtil.copyItem(item); if (data.hasRepItem()) { - ItemUtil.copyItem(i, data.getRepItem()); - if (i.getTag() == null) { - i.setTag(new CompoundTag("")); - } else { - // Handle colors - CompoundTag tag = i.getTag().get("display"); - if (tag != null) { - StringTag nameTag = tag.get("Name"); - if (nameTag != null) { - String value = nameTag.getValue(); - if (value.contains("%vb_color%")) { - tag.put(new StringTag("Name", value.replace("%vb_color%", BlockColors.get(original.getData())))); - } + // Also includes the already mapped id + ItemUtil.copyItem(item, data.getRepItem()); + + if (item.getTag() == null) { + item.setTag(new CompoundTag("")); + } + + // Backup data for toServer + item.getTag().put(createViaNBT(original)); + + // Keep original data (aside from the name) + if (original.getTag() != null) { + for (Tag ai : original.getTag()) { + item.getTag().put(ai); + } + } + + // Handle colors + CompoundTag tag = item.getTag().get("display"); + if (tag != null) { + StringTag nameTag = tag.get("Name"); + if (nameTag != null) { + String value = nameTag.getValue(); + if (value.contains("%vb_color%")) { + tag.put(new StringTag("Name", value.replace("%vb_color%", BlockColors.get(original.getData())))); } } } - // Backup data for toServer - i.getTag().put(createViaNBT(original)); - - // Keep original data (aisde from the name) - if (original.getTag() != null) { - for (Tag ai : original.getTag()) { - i.getTag().put(ai); - } - } - - i.setAmount(original.getAmount()); + item.setAmount(original.getAmount()); // Keep original data when -1 - if (i.getData() == -1) { - i.setData(original.getData()); + if (item.getData() == -1) { + item.setData(original.getData()); } + } else { + // Set the mapped id if no custom item is defined + super.handleItemToClient(item); } + if (data.hasItemTagHandler()) { - if (!i.getTag().contains(nbtTagName)) { - i.getTag().put(createViaNBT(original)); + if (!item.getTag().contains(nbtTagName)) { + item.getTag().put(createViaNBT(original)); } - data.getItemHandler().handle(i); + data.getItemHandler().handle(item); } - return i; - } - - public Item handleItemToServer(Item item) { - if (item == null) return null; - if (item.getTag() == null) return item; - - CompoundTag tag = item.getTag(); - if (tag.contains(nbtTagName)) { - CompoundTag via = tag.get(nbtTagName); - - short id = (short) via.get("id").getValue(); - short data = (short) via.get("data").getValue(); - byte amount = (byte) via.get("amount").getValue(); - CompoundTag extras = via.get("extras"); - - item.setIdentifier(id); - item.setData(data); - item.setAmount(amount); - item.setTag(converter.convert("", converter.convert(extras))); - // Remove data tag - tag.remove(nbtTagName); - } return item; } @@ -189,7 +175,7 @@ public abstract class BlockItemRewriter extends Rew if (hasBlockEntityHandler) continue; BlockItemSettings settings = replacementData.get(btype); - if (section != null && settings.hasEntityHandler()) { + if (settings != null && settings.hasEntityHandler()) { hasBlockEntityHandler = true; } } @@ -225,33 +211,6 @@ public abstract class BlockItemRewriter extends Rew } } - protected boolean containsBlock(int block) { - final BlockItemSettings settings = replacementData.get(block); - return settings != null && settings.hasRepBlock(); - } - - protected boolean hasBlockEntityHandler(int block) { - final BlockItemSettings settings = replacementData.get(block); - return settings != null && settings.hasEntityHandler(); - } - - protected boolean hasItemTagHandler(int block) { - final BlockItemSettings settings = replacementData.get(block); - return settings != null && settings.hasItemTagHandler(); - } - - private CompoundTag createViaNBT(Item i) { - CompoundTag tag = new CompoundTag(nbtTagName); - tag.put(new ShortTag("id", (short) i.getIdentifier())); - tag.put(new ShortTag("data", i.getData())); - tag.put(new ByteTag("amount", i.getAmount())); - if (i.getTag() != null) { - tag.put(converter.convert("extras", converter.convert(i.getTag()))); - } else - tag.put(new CompoundTag("extras")); - return tag; - } - protected CompoundTag getNamedTag(String text) { CompoundTag tag = new CompoundTag(""); tag.put(new CompoundTag("display")); @@ -260,23 +219,49 @@ public abstract class BlockItemRewriter extends Rew return tag; } - protected CompoundTag getNamedJsonTag(String text) { - CompoundTag tag = new CompoundTag(""); - tag.put(new CompoundTag("display")); + private static final class Pos { - return tag; - } + private final int x, y, z; - private String getProtocolName() { - return getProtocol().getClass().getSimpleName(); - } + private Pos(final int x, final int y, final int z) { + this.x = x; + this.y = y; + this.z = z; + } - @Data - @AllArgsConstructor - @ToString - @EqualsAndHashCode - private static class Pos { + public int getX() { + return x; + } - private int x, y, z; + public int getY() { + return y; + } + + public int getZ() { + return z; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Pos pos = (Pos) o; + if (x != pos.x) return false; + if (y != pos.y) return false; + return z == pos.z; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + result = 31 * result + z; + return result; + } + + @Override + public String toString() { + return "Pos{" + "x=" + x + ", y=" + y + ", z=" + z + '}'; + } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/RecipeRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/RecipeRewriter.java index f25be98a..c7408b67 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/RecipeRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/RecipeRewriter.java @@ -4,9 +4,9 @@ import us.myles.ViaVersion.api.PacketWrapper; public abstract class RecipeRewriter { - protected final BlockItemRewriter rewriter; + protected final ItemRewriterBase rewriter; - protected RecipeRewriter(final BlockItemRewriter rewriter) { + protected RecipeRewriter(final ItemRewriterBase rewriter) { this.rewriter = rewriter; } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java index e9a0aebc..39dddeee 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java @@ -12,7 +12,7 @@ package nl.matsv.viabackwards.protocol.protocol1_10to1_11.packets; import net.md_5.bungee.api.ChatColor; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.api.rewriters.LegacyBlockItemRewriter; import nl.matsv.viabackwards.api.rewriters.LegacyEnchantmentRewriter; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.EntityTypeNames; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; @@ -41,7 +41,7 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import java.util.Arrays; import java.util.Optional; -public class BlockItemPackets1_11 extends BlockItemRewriter { +public class BlockItemPackets1_11 extends LegacyBlockItemRewriter { private LegacyEnchantmentRewriter enchantmentRewriter; @@ -51,7 +51,6 @@ public class BlockItemPackets1_11 extends BlockItemRewriter @Override protected void registerPackets() { - jsonNameFormat = false; ItemRewriter itemRewriter = new ItemRewriter(protocol, this::handleItemToClient, this::handleItemToServer); // Set slot packet diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java index e4289b0c..3934a608 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java @@ -10,7 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.api.rewriters.LegacyBlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.MapColorMapping; @@ -32,7 +32,7 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import java.util.Collections; -public class BlockItemPackets1_12 extends BlockItemRewriter { +public class BlockItemPackets1_12 extends LegacyBlockItemRewriter { public BlockItemPackets1_12(Protocol1_11_1To1_12 protocol) { super(protocol); @@ -40,7 +40,6 @@ public class BlockItemPackets1_12 extends BlockItemRewriter Stained clay? (Also got a new name Terracota?) - rewrite(251) - .repItem(new Item(159, (byte) 1, (short) -1, getNamedTag("1.12 %vb_color% Concrete"))) + rewrite(251).repItem(new Item(159, (byte) 1, (short) -1, getNamedTag("1.12 %vb_color% Concrete"))) .repBlock(new Block(159, -1)); // Concrete Powder -> Wool diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java index 8f73fb33..4e42bd0e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java @@ -10,7 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.packets; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.api.rewriters.LegacyBlockItemRewriter; import nl.matsv.viabackwards.api.rewriters.LegacyEnchantmentRewriter; import nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; import us.myles.ViaVersion.api.PacketWrapper; @@ -24,7 +24,7 @@ import us.myles.ViaVersion.packets.State; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; -public class ItemPackets1_11_1 extends BlockItemRewriter { +public class ItemPackets1_11_1 extends LegacyBlockItemRewriter { private LegacyEnchantmentRewriter enchantmentRewriter; @@ -34,7 +34,6 @@ public class ItemPackets1_11_1 extends BlockItemRewriter { @Override protected void registerPackets() { - jsonNameFormat = false; ItemRewriter itemRewriter = new ItemRewriter(protocol, this::handleItemToClient, this::handleItemToServer); // Set slot packet diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java index e269f9f8..b0a6cdd4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java @@ -11,6 +11,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.data.VBItemMappings; import nl.matsv.viabackwards.api.data.VBMappingDataLoader; import nl.matsv.viabackwards.api.data.VBMappings; import us.myles.ViaVersion.api.Via; @@ -31,6 +32,7 @@ public class BackwardsMappings { public static final Map translateMappings = new HashMap<>(); public static BlockMappingsShortArray blockMappings; public static Mappings soundMappings; + public static VBItemMappings itemMappings; public static void init() { JsonObject mapping1_12 = MappingDataLoader.loadData("mapping-1.12.json"); @@ -39,6 +41,7 @@ public class BackwardsMappings { ViaBackwards.getPlatform().getLogger().info("Loading 1.13 -> 1.12.2 block mapping..."); blockMappings = new BlockMappingsShortArray(mapping1_13.getAsJsonObject("blocks"), mapping1_12.getAsJsonObject("blocks"), mapping1_12_2to1_13.getAsJsonObject("blockstates")); + itemMappings = new VBItemMappings(mapping1_13.getAsJsonObject("items"), mapping1_12.getAsJsonObject("items"), mapping1_12_2to1_13.getAsJsonObject("items")); ViaBackwards.getPlatform().getLogger().info("Loading 1.13 -> 1.12.2 sound mapping..."); soundMappings = new VBMappings(mapping1_13.getAsJsonArray("sounds"), mapping1_12.getAsJsonArray("sounds"), mapping1_12_2to1_13.getAsJsonObject("sounds")); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java index 25957ff9..8fd4db9e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java @@ -12,7 +12,6 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; import com.google.common.primitives.Ints; import nl.matsv.viabackwards.ViaBackwards; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.api.rewriters.EnchantmentRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; @@ -44,13 +43,13 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.*; import java.util.*; -public class BlockItemPackets1_13 extends BlockItemRewriter { +public class BlockItemPackets1_13 extends nl.matsv.viabackwards.api.rewriters.ItemRewriter { private final Map enchantmentMappings = new HashMap<>(); private final String NBT_TAG_NAME; public BlockItemPackets1_13(Protocol1_12_2To1_13 protocol) { - super(protocol); + super(protocol, id -> BackwardsMappings.itemMappings.getMappedItem(id)); NBT_TAG_NAME = "ViaBackwards|" + protocol.getClass().getSimpleName() + "|Part2"; } @@ -479,133 +478,6 @@ public class BlockItemPackets1_13 extends BlockItemRewriter> 4) << 16 | item.getIdentifier() & 0xF; + // Take the newly added tag + if (tag == null) { + tag = item.getTag(); + } } - rawId = 0x10000; // Stone } item.setIdentifier(rawId >> 16); @@ -700,10 +588,11 @@ public class BlockItemPackets1_13 extends BlockItemRewriter 1.13.2 block mapping..."); blockStateMappings = new VBMappings(mapping1_14.getAsJsonObject("blockstates"), mapping1_13_2.getAsJsonObject("blockstates"), mapping1_13_2to1_14.getAsJsonObject("blockstates")); blockMappings = new VBMappings(mapping1_14.getAsJsonObject("blocks"), mapping1_13_2.getAsJsonObject("blocks"), mapping1_13_2to1_14.getAsJsonObject("blocks"), false); + itemMappings = new VBItemMappings(mapping1_14.getAsJsonObject("items"), mapping1_13_2.getAsJsonObject("items"), mapping1_13_2to1_14.getAsJsonObject("items")); soundMappings = new VBMappings(mapping1_14.getAsJsonArray("sounds"), mapping1_13_2.getAsJsonArray("sounds"), mapping1_13_2to1_14.getAsJsonObject("sounds")); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/RecipeRewriter1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/RecipeRewriter1_14.java index 6628e0e4..3eafcccf 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/RecipeRewriter1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/RecipeRewriter1_14.java @@ -1,6 +1,7 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.api.rewriters.ItemRewriterBase; +import nl.matsv.viabackwards.api.rewriters.LegacyBlockItemRewriter; import nl.matsv.viabackwards.api.rewriters.RecipeRewriter; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -8,7 +9,7 @@ import us.myles.ViaVersion.api.type.Type; public class RecipeRewriter1_14 extends RecipeRewriter { - public RecipeRewriter1_14(final BlockItemRewriter rewriter) { + public RecipeRewriter1_14(final ItemRewriterBase rewriter) { super(rewriter); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 814c9be7..7a33d50e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -3,10 +3,10 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; import com.google.common.collect.ImmutableSet; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.api.rewriters.EnchantmentRewriter; import nl.matsv.viabackwards.api.rewriters.RecipeRewriter; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.BackwardsMappings; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.RecipeRewriter1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; import us.myles.ViaVersion.api.PacketWrapper; @@ -43,12 +43,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -public class BlockItemPackets1_14 extends BlockItemRewriter { +public class BlockItemPackets1_14 extends nl.matsv.viabackwards.api.rewriters.ItemRewriter { private EnchantmentRewriter enchantmentRewriter; public BlockItemPackets1_14(Protocol1_13_2To1_14 protocol) { - super(protocol); + super(protocol, BlockItemPackets1_14::getOldItemId, BlockItemPackets1_14::getNewItemId, id -> BackwardsMappings.itemMappings.getMappedItem(id)); } @Override @@ -530,106 +530,6 @@ public class BlockItemPackets1_14 extends BlockItemRewriter 1.14.4 mappings..."); blockStateMappings = new VBMappings(mapping1_15.getAsJsonObject("blockstates"), mapping1_14.getAsJsonObject("blockstates"), mapping1_14to1_15.getAsJsonObject("blockstates")); blockMappings = new VBMappings(mapping1_15.getAsJsonObject("blocks"), mapping1_14.getAsJsonObject("blocks"), mapping1_14to1_15.getAsJsonObject("blocks"), false); + itemMappings = new VBItemMappings(mapping1_15.getAsJsonObject("items"), mapping1_14.getAsJsonObject("items"), mapping1_14to1_15.getAsJsonObject("items")); soundMappings = new VBMappings(mapping1_15.getAsJsonArray("sounds"), mapping1_14.getAsJsonArray("sounds"), mapping1_14to1_15.getAsJsonObject("sounds")); } } \ No newline at end of file diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/data/RecipeRewriter1_15.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/data/RecipeRewriter1_15.java index 3ddffc50..fc72f998 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/data/RecipeRewriter1_15.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/data/RecipeRewriter1_15.java @@ -1,6 +1,6 @@ package nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.data; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.api.rewriters.ItemRewriterBase; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.RecipeRewriter1_14; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -8,7 +8,7 @@ import us.myles.ViaVersion.api.type.Type; public class RecipeRewriter1_15 extends RecipeRewriter1_14 { - public RecipeRewriter1_15(final BlockItemRewriter rewriter) { + public RecipeRewriter1_15(final ItemRewriterBase rewriter) { super(rewriter); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java index b9ebd91c..fe4d2682 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java @@ -1,9 +1,9 @@ package nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.packets; import nl.matsv.viabackwards.ViaBackwards; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.api.rewriters.RecipeRewriter; import nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.Protocol1_14_4To1_15; +import nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.data.BackwardsMappings; import nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.data.ParticleMapping; import nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.data.RecipeRewriter1_15; import us.myles.ViaVersion.api.PacketWrapper; @@ -21,10 +21,10 @@ import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.data.MappingData; import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.types.Chunk1_15Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -public class BlockItemPackets1_15 extends BlockItemRewriter { +public class BlockItemPackets1_15 extends nl.matsv.viabackwards.api.rewriters.ItemRewriter { public BlockItemPackets1_15(Protocol1_14_4To1_15 protocol) { - super(protocol); + super(protocol, BlockItemPackets1_15::getOldItemId, BlockItemPackets1_15::getNewItemId, id -> BackwardsMappings.itemMappings.getMappedItem(id)); } @Override @@ -213,31 +213,8 @@ public class BlockItemPackets1_15 extends BlockItemRewriter { +public class BlockItemPackets1_10 extends LegacyBlockItemRewriter { public BlockItemPackets1_10(Protocol1_9_4To1_10 protocol) { super(protocol); @@ -34,7 +34,6 @@ public class BlockItemPackets1_10 extends BlockItemRewriter @Override protected void registerPackets() { - jsonNameFormat = false; ItemRewriter itemRewriter = new ItemRewriter(protocol, this::handleItemToClient, this::handleItemToServer); // Set slot packet diff --git a/core/src/main/resources/assets/viabackwards/data/legacy-item-mappings.json b/core/src/main/resources/assets/viabackwards/data/legacy-item-mappings.json new file mode 100644 index 00000000..9ca2c639 --- /dev/null +++ b/core/src/main/resources/assets/viabackwards/data/legacy-item-mappings.json @@ -0,0 +1,48 @@ +{ + "1.11": { + "218": { + "id": 23, + "name": "1.11 Observer" + }, + "449": { + "id": 32, + "name": "1.11 Totem of Undying" + }, + "450": { + "id": 433, + "name": "1.11 Shulker Shell" + }, + "219-234": { + "id": 158, + "name": "1.11 %color% Shulker Box" + } + }, + "1.10": { + "255": { + "id": 166, + "name": "1.10 Structure Block" + }, + "217": { + "id": 287, + "name": "1.10 Structure Void" + }, + "213": { + "id": 159, + "data": 1, + "name": "1.10 Magma Block" + }, + "214": { + "id": 159, + "data": 14, + "name": "1.10 Nether Wart Block" + }, + "215": { + "id": 112, + "name": "1.10 Red Nether Bricks" + }, + "216": { + "id": 155, + "name": "1.10 Bone Block" + } + } +} \ No newline at end of file diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index ada90f15..a0bd5b10 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -5436,6 +5436,416 @@ "minecraft:dragon_head[rotation=14]": "id:2305", "minecraft:dragon_head[rotation=15]": "id:2305" }, + "items": { + "minecraft:acacia_button": { + "id": "minecraft:oak_button", + "name": "1.13 Acacia Button" + }, + "minecraft:birch_button": { + "id": "minecraft:oak_button", + "name": "1.13 Birch Button" + }, + "minecraft:spruce_button": { + "id": "minecraft:oak_button", + "name": "1.13 Spruce Button" + }, + "minecraft:jungle_button": { + "id": "minecraft:oak_button", + "name": "1.13 Jungle Button" + }, + "minecraft:dark_oak_button": { + "id": "minecraft:oak_button", + "name": "1.13 Dark Oak Button" + }, + "minecraft:acacia_trapdoor": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Acacia Trapdoor" + }, + "minecraft:birch_trapdoor": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Birch Trapdoor" + }, + "minecraft:spruce_trapdoor": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Spruce Trapdoor" + }, + "minecraft:jungle_trapdoor": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Jungle Trapdoor" + }, + "minecraft:dark_oak_trapdoor": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Dark Oak Trapdoor" + }, + "minecraft:acacia_pressure_plate": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Acacia Pressure Plate" + }, + "minecraft:birch_pressure_plate": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Birch Pressure Plate" + }, + "minecraft:spruce_pressure_plate": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Spruce Pressure Plate" + }, + "minecraft:jungle_pressure_plate": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Jungle Pressure Plate" + }, + "minecraft:dark_oak_pressure_plate": { + "id": "minecraft:oak_trapdoor", + "name": "1.13 Dark Oak Pressure Plate" + }, + "minecraft:acacia_boat": { + "id": "minecraft:oak_boat", + "name": "1.13 Acacia Boat" + }, + "minecraft:birch_boat": { + "id": "minecraft:oak_boat", + "name": "1.13 Birch Boat" + }, + "minecraft:spruce_boat": { + "id": "minecraft:oak_boat", + "name": "1.13 Spruce Boat" + }, + "minecraft:jungle_boat": { + "id": "minecraft:oak_boat", + "name": "1.13 Jungle Boat" + }, + "minecraft:dark_oak_boat": { + "id": "minecraft:oak_boat", + "name": "1.13 Dark Oak Boat" + }, + "minecraft:blue_ice": { + "id": "minecraft:packed_ice", + "name": "1.13 Blue Ice" + }, + "minecraft:pufferfish_bucket": { + "id": "minecraft:water_bucket", + "name": "1.13 Bucket of Pufferfish" + }, + "minecraft:salmon_bucket": { + "id": "minecraft:water_bucket", + "name": "1.13 Bucket of Salmon" + }, + "minecraft:cod_bucket": { + "id": "minecraft:water_bucket", + "name": "1.13 Bucket of Cod" + }, + "minecraft:tropical_fish_bucket": { + "id": "minecraft:water_bucket", + "name": "1.13 Bucket of Tropical Fish" + }, + "minecraft:heart_of_the_sea": { + "id": "minecraft:snowball", + "name": "1.13 Heart of the Sea" + }, + "minecraft:nautilus_shell": { + "id": "minecraft:bone_meal", + "name": "1.13 Nautilus Shell" + }, + "minecraft:phantom_membrane": { + "id": "minecraft:leather", + "name": "1.13 Phantom Membrane" + }, + "minecraft:turtle_helmet": { + "id": "minecraft:leather_helmet", + "name": "1.13 Turtle Shell" + }, + "minecraft:turtle_egg": { + "id": "minecraft:egg", + "name": "1.13 Turtle Egg" + }, + "minecraft:scute": { + "id": "minecraft:lime_dye", + "name": "1.13 Scute" + }, + "minecraft:trident": { + "id": "minecraft:diamond_sword", + "name": "1.13 Trident" + }, + "minecraft:sea_pickle": { + "id": "minecraft:egg", + "name": "1.13 Sea Pickle" + }, + "minecraft:seagrass": { + "id": "minecraft:grass", + "name": "1.13 Seagrass" + }, + "minecraft:conduit": { + "id": "minecraft:beacon", + "name": "1.13 Conduit" + }, + "minecraft:kelp": { + "id": "minecraft:grass", + "name": "1.13 Kelp" + }, + "minecraft:dried_kelp": { + "id": "minecraft:wheat", + "name": "1.13 Dried Kelp" + }, + "minecraft:dried_kelp_block": { + "id": "minecraft:hay_block", + "name": "1.13 Dried Kelp Block" + }, + "minecraft:stripped_oak_log": { + "id": "minecraft:oak_log", + "name": "1.13 Stripped Oak Log" + }, + "minecraft:stripped_acacia_log": { + "id": "minecraft:acacia_log", + "name": "1.13 Stripped Acacia Log" + }, + "minecraft:stripped_birch_log": { + "id": "minecraft:birch_log", + "name": "1.13 Stripped Birch Log" + }, + "minecraft:stripped_spruce_log": { + "id": "minecraft:spruce_log", + "name": "1.13 Stripped Spruce Log" + }, + "minecraft:stripped_jungle_log": { + "id": "minecraft:jungle_log", + "name": "1.13 Stripped Jungle Log" + }, + "minecraft:stripped_dark_oak_log": { + "id": "minecraft:dark_oak_log", + "name": "1.13 Stripped Dark Oak Log" + }, + "minecraft:stripped_oak_wood": { + "id": "minecraft:oak_log", + "name": "1.13 Stripped Oak Wood" + }, + "minecraft:stripped_acacia_wood": { + "id": "minecraft:acacia_log", + "name": "1.13 Stripped Acacia Wood" + }, + "minecraft:stripped_birch_wood": { + "id": "minecraft:birch_log", + "name": "1.13 Stripped Birch Wood" + }, + "minecraft:stripped_spruce_wood": { + "id": "minecraft:spruce_log", + "name": "1.13 Stripped Spruce Wood" + }, + "minecraft:stripped_jungle_wood": { + "id": "minecraft:jungle_log", + "name": "1.13 Stripped Jungle Wood" + }, + "minecraft:stripped_dark_oak_wood": { + "id": "minecraft:dark_oak_log", + "name": "1.13 Stripped Dark Oak Wood" + }, + "minecraft:oak_wood": { + "id": "minecraft:oak_log", + "name": "1.13 Oak Wood" + }, + "minecraft:spruce_wood": { + "id": "minecraft:spruce_log", + "name": "1.13 Spruce Wood" + }, + "minecraft:birch_wood": { + "id": "minecraft:birch_log", + "name": "1.13 Birch Wood" + }, + "minecraft:jungle_wood": { + "id": "minecraft:jungle_log", + "name": "1.13 Jungle Wood" + }, + "minecraft:acacia_wood": { + "id": "minecraft:acacia_log", + "name": "1.13 Acacia Wood" + }, + "minecraft:dark_oak_wood": { + "id": "minecraft:dark_oak_log", + "name": "1.13 Dark Oak Wood" + }, + "minecraft:prismarine_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.13 Prismarine Slab" + }, + "minecraft:prismarine_brick_slab": { + "id": "minecraft:brick_slab", + "name": "1.13 Prismarine Brick Slab" + }, + "minecraft:dark_prismarine_slab": { + "id": "minecraft:stone_brick_slab", + "name": "1.13 Dark Prismarine Slab" + }, + "minecraft:prismarine_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.13 Prismarine Stairs" + }, + "minecraft:prismarine_brick_stairs": { + "id": "minecraft:brick_stairs", + "name": "1.13 Prismarine Brick Stairs" + }, + "minecraft:dark_prismarine_stairs": { + "id": "minecraft:stone_brick_stairs", + "name": "1.13 Dark Prismarine Brick Stairs" + }, + "minecraft:drowned_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Drowned Spawn Egg" + }, + "minecraft:phantom_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Phantom Spawn Egg" + }, + "minecraft:dolphin_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Dolphin Spawn Egg" + }, + "minecraft:turtle_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Turtle Spawn Egg" + }, + "minecraft:cod_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Cod Spawn Egg" + }, + "minecraft:salmon_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Salmon Spawn Egg" + }, + "minecraft:pufferfish_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Pufferfish Spawn Egg" + }, + "minecraft:tropical_fish_spawn_egg": { + "id": "minecraft:rabbit_spawn_egg", + "name": "1.13 Tropical Fish Spawn Egg" + }, + "minecraft:tube_coral": { + "id": "minecraft:blue_orchid", + "name": "1.13 Tube Coral" + }, + "minecraft:brain_coral": { + "id": "minecraft:pink_tulip", + "name": "1.13 Brain Coral" + }, + "minecraft:bubble_coral": { + "id": "minecraft:allium", + "name": "1.13 Bubble Coral" + }, + "minecraft:fire_coral": { + "id": "minecraft:red_tulip", + "name": "1.13 Fire Coral" + }, + "minecraft:horn_coral": { + "id": "minecraft:dandelion", + "name": "1.13 Horn Coral" + }, + "minecraft:tube_coral_fan": { + "id": "minecraft:blue_orchid", + "name": "1.13 Tube Coral Fan" + }, + "minecraft:brain_coral_fan": { + "id": "minecraft:pink_tulip", + "name": "1.13 Brain Coral Fan" + }, + "minecraft:bubble_coral_fan": { + "id": "minecraft:allium", + "name": "1.13 Bubble Coral Fan" + }, + "minecraft:fire_coral_fan": { + "id": "minecraft:red_tulip", + "name": "1.13 Fire Coral Fan" + }, + "minecraft:horn_coral_fan": { + "id": "minecraft:dandelion", + "name": "1.13 Horn Coral Fan" + }, + "minecraft:dead_tube_coral_fan": { + "id": "minecraft:dead_bush", + "name": "1.13 Dead Tube Coral Fan" + }, + "minecraft:dead_brain_coral_fan": { + "id": "minecraft:dead_bush", + "name": "1.13 Dead Brain Coral Fan" + }, + "minecraft:dead_bubble_coral_fan": { + "id": "minecraft:dead_bush", + "name": "1.13 Dead Bubble Coral Fan" + }, + "minecraft:dead_fire_coral_fan": { + "id": "minecraft:dead_bush", + "name": "1.13 Dead Fire Coral Fan" + }, + "minecraft:dead_horn_coral_fan": { + "id": "minecraft:dead_bush", + "name": "1.13 Dead Horn Coral Fan" + }, + "minecraft:dead_tube_coral_block": { + "id": "minecraft:light_gray_wool", + "name": "1.13 Dead Tube Coral Block" + }, + "minecraft:dead_brain_coral_block": { + "id": "minecraft:light_gray_wool", + "name": "1.13 Dead Brain Coral Block" + }, + "minecraft:dead_bubble_coral_block": { + "id": "minecraft:light_gray_wool", + "name": "1.13 Dead Bubble Coral Block" + }, + "minecraft:dead_fire_coral_block": { + "id": "minecraft:light_gray_wool", + "name": "1.13 Dead Fire Coral Block" + }, + "minecraft:dead_horn_coral_block": { + "id": "minecraft:light_gray_wool", + "name": "1.13 Dead Horn Coral Block" + }, + "minecraft:tube_coral_block": { + "id": "minecraft:blue_wool", + "name": "1.13 Tube Coral Block" + }, + "minecraft:brain_coral_block": { + "id": "minecraft:pink_wool", + "name": "1.13 Brain Coral Block" + }, + "minecraft:bubble_coral_block": { + "id": "minecraft:purple_wool", + "name": "1.13 Bubble Coral Block" + }, + "minecraft:fire_coral_block": { + "id": "minecraft:red_wool", + "name": "1.13 Fire Coral Block" + }, + "minecraft:horn_coral_block": { + "id": "minecraft:yellow_wool", + "name": "1.13 Horn Coral Block" + }, + "minecraft:smooth_quartz": { + "id": "minecraft:quartz", + "name": "1.13 Smooth Quartz" + }, + "minecraft:smooth_red_sandstone": { + "id": "minecraft:red_sandstone", + "name": "1.13 Smooth Red Sandstone" + }, + "minecraft:smooth_sandstone": { + "id": "minecraft:sandstone", + "name": "1.13 Smooth Sandstone" + }, + "minecraft:smooth_stone": { + "id": "minecraft:stone_slab", + "name": "1.13 Smooth Stone" + }, + "minecraft:pumpkin": { + "id": "minecraft:carved_pumpkin", + "name": "1.13 Carved Pumpkin" + }, + "minecraft:mushroom_stem": { + "id": "minecraft:light_gray_wool", + "name": "1.13 Mushroom Stem" + }, + "minecraft:debug_stick": { + "id": "minecraft:stick", + "name": "1.13 Debug Stick" + } + }, "sounds": { "ambient.underwater.enter": "block.water.ambient", "ambient.underwater.exit": "block.water.ambient", diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json index beaf3c41..a725e9fd 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -2659,6 +2659,356 @@ "minecraft:jigsaw[facing=up]": "minecraft:structure_block[mode=corner]", "minecraft:jigsaw[facing=down]": "minecraft:structure_block[mode=corner]" }, + "items": { + "minecraft:brick_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Brick Wall" + }, + "minecraft:prismarine_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Prismarine Wall" + }, + "minecraft:red_sandstone_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Red Sandstone Wall" + }, + "minecraft:mossy_stone_brick_wall": { + "id": "minecraft:mossy_cobblestone_wall", + "name": "1.14 Mossy Stone Brick Wall" + }, + "minecraft:granite_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Granite Wall" + }, + "minecraft:stone_brick_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Stone Brick Wall" + }, + "minecraft:nether_brick_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Nether Brick Wall" + }, + "minecraft:andesite_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Andesite Wall" + }, + "minecraft:red_nether_brick_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Red Nether Brick Wall" + }, + "minecraft:sandstone_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Sandstone Wall" + }, + "minecraft:end_stone_brick_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 End Stone Brick Wall" + }, + "minecraft:diorite_wall": { + "id": "minecraft:cobblestone_wall", + "name": "1.14 Diorite Wall" + }, + "minecraft:stone_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Stone Slab" + }, + "minecraft:cut_sandstone_slab": { + "id": "minecraft:sandstone_slab", + "name": "1.14 Cut Sandstone Slab" + }, + "minecraft:cut_red_sandstone_slab": { + "id": "minecraft:red_sandstone_slab", + "name": "1.14 Cut Red Sandstone Slab" + }, + "minecraft:polished_granite_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Polished Granite Slab" + }, + "minecraft:smooth_red_sandstone_slab": { + "id": "minecraft:red_sandstone_slab", + "name": "1.14 Smooth Red Sandstone Slab" + }, + "minecraft:mossy_stone_brick_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Mossy Stone Brick Slab" + }, + "minecraft:polished_diorite_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Polished Diorite Slab" + }, + "minecraft:mossy_cobblestone_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Mossy Cobblestone Slab" + }, + "minecraft:end_stone_brick_slab": { + "id": "minecraft:sandstone_slab", + "name": "1.14 End Stone Brick Slab" + }, + "minecraft:smooth_sandstone_slab": { + "id": "minecraft:sandstone_slab", + "name": "1.14 Smooth Cut Sandstone Slab" + }, + "minecraft:smooth_quartz_slab": { + "id": "minecraft:quartz_slab", + "name": "1.14 Smooth Quartz Slab" + }, + "minecraft:granite_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Granite Slab" + }, + "minecraft:andesite_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Andesite Slab" + }, + "minecraft:red_nether_brick_slab": { + "id": "minecraft:nether_brick_slab", + "name": "1.14 Red Nether Brick Slab" + }, + "minecraft:polished_andesite_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Polished Andesite Slab" + }, + "minecraft:diorite_slab": { + "id": "minecraft:cobblestone_slab", + "name": "1.14 Diorite Slab" + }, + "minecraft:polished_granite_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Polished Granite Stairs" + }, + "minecraft:smooth_red_sandstone_stairs": { + "id": "minecraft:red_sandstone_stairs", + "name": "1.14 Smooth Red Sandstone Stairs" + }, + "minecraft:mossy_stone_brick_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Mossy Stone Brick Stairs" + }, + "minecraft:polished_diorite_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Polished Diorite Stairs" + }, + "minecraft:mossy_cobblestone_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Mossy Cobblestone Stairs" + }, + "minecraft:end_stone_brick_stairs": { + "id": "minecraft:sandstone_stairs", + "name": "1.14 End Stone Brick Stairs" + }, + "minecraft:stone_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Stone Stairs" + }, + "minecraft:smooth_sandstone_stairs": { + "id": "minecraft:sandstone_stairs", + "name": "1.14 Smooth Sandstone Stairs" + }, + "minecraft:smooth_quartz_stairs": { + "id": "minecraft:quartz_stairs", + "name": "1.14 Smooth Quartz Stairs" + }, + "minecraft:granite_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Granite Stairs" + }, + "minecraft:andesite_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Andesite Stairs" + }, + "minecraft:red_nether_brick_stairs": { + "id": "minecraft:nether_brick_stairs", + "name": "1.14 Red Nether Brick Stairs" + }, + "minecraft:polished_andesite_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Polished Andesite Stairs" + }, + "minecraft:diorite_stairs": { + "id": "minecraft:cobblestone_stairs", + "name": "1.14 Diorite Stairs" + }, + "minecraft:cornflower": { + "id": "minecraft:brown_mushroom", + "name": "1.14 Cornflower" + }, + "minecraft:lily_of_the_valley": { + "id": "minecraft:white_tulip", + "name": "1.14 Lily of the Valley" + }, + "minecraft:wither_rose": { + "id": "minecraft:blue_orchid", + "name": "1.14 Wither Rose" + }, + "minecraft:bamboo": { + "id": "minecraft:sugar_cane", + "name": "1.14 Bamboo" + }, + "minecraft:suspicious_stew": { + "id": "minecraft:mushroom_stew", + "name": "1.14 Suspicious Stew" + }, + "minecraft:leather_horse_armor": { + "id": "minecraft:golden_horse_armor", + "name": "1.14 Leather Horse Armor" + }, + "minecraft:blue_dye": { + "id": "minecraft:lapis_lazuli", + "name": "1.14 Blue Dye" + }, + "minecraft:brown_dye": { + "id": "minecraft:cocoa_beans", + "name": "1.14 Brown Dye" + }, + "minecraft:black_dye": { + "id": "minecraft:ink_sac", + "name": "1.14 Black Dye" + }, + "minecraft:white_dye": { + "id": "minecraft:bone_meal", + "name": "1.14 White Dye" + }, + "minecraft:scaffolding": { + "id": "minecraft:hay_block", + "name": "1.14 Scaffolding" + }, + "minecraft:jigsaw": { + "id": "minecraft:structure_block", + "name": "1.14 Jigsaw Block" + }, + "minecraft:composter": { + "id": "minecraft:cauldron", + "name": "1.14 Composter" + }, + "minecraft:barrel": { + "id": "minecraft:chest", + "name": "1.14 Barrel" + }, + "minecraft:loom": { + "id": "minecraft:crafting_table", + "name": "1.14 Loom" + }, + "minecraft:smoker": { + "id": "minecraft:furnace", + "name": "1.14 Smoker" + }, + "minecraft:blast_furnace": { + "id": "minecraft:furnace", + "name": "1.14 Blast Furnace" + }, + "minecraft:cartography_table": { + "id": "minecraft:crafting_table", + "name": "1.14 Cartography Table" + }, + "minecraft:fletching_table": { + "id": "minecraft:crafting_table", + "name": "1.14 Fletching Table" + }, + "minecraft:grindstone": { + "id": "minecraft:anvil", + "name": "1.14 Grindstone" + }, + "minecraft:lectern": { + "id": "minecraft:bookshelf", + "name": "1.14 Lectern" + }, + "minecraft:smithing_table": { + "id": "minecraft:crafting_table", + "name": "1.14 Smithing Table" + }, + "minecraft:stonecutter": { + "id": "minecraft:crafting_table", + "name": "1.14 Stonecutter" + }, + "minecraft:flower_banner_pattern": { + "id": "minecraft:paper", + "name": "1.14 Flower Banner Pattern" + }, + "minecraft:creeper_banner_pattern": { + "id": "minecraft:paper", + "name": "1.14 Creeper Banner Pattern" + }, + "minecraft:skull_banner_pattern": { + "id": "minecraft:paper", + "name": "1.14 Skull Banner Pattern" + }, + "minecraft:mojang_banner_pattern": { + "id": "minecraft:paper", + "name": "1.14 Mojang Banner Pattern" + }, + "minecraft:globe_banner_pattern": { + "id": "minecraft:paper", + "name": "1.14 Globe Banner Pattern" + }, + "minecraft:bell": { + "id": "minecraft:gold_block", + "name": "1.14 Bell" + }, + "minecraft:lantern": { + "id": "minecraft:redstone_lamp", + "name": "1.14 Lantern" + }, + "minecraft:sweet_berries": { + "id": "minecraft:beetroot", + "name": "1.14 Sweet Berries" + }, + "minecraft:campfire": { + "id": "minecraft:torch", + "name": "1.14 Campfire" + }, + "minecraft:spruce_sign": { + "id": "minecraft:oak_sign", + "name": "1.14 Spruce Sign" + }, + "minecraft:birch_sign": { + "id": "minecraft:oak_sign", + "name": "1.14 Birch Sign" + }, + "minecraft:jungle_sign": { + "id": "minecraft:oak_sign", + "name": "1.14 Jungle Sign" + }, + "minecraft:acacia_sign": { + "id": "minecraft:oak_sign", + "name": "1.14 Acacia Sign" + }, + "minecraft:dark_oak_sign": { + "id": "minecraft:oak_sign", + "name": "1.14 Dark Oak Sign" + }, + "minecraft:crossbow": { + "id": "minecraft:bow", + "name": "1.14 Crossbow" + }, + "minecraft:cat_spawn_egg": { + "id": "minecraft:ocelot_spawn_egg", + "name": "1.14 Cat Spawn Egg" + }, + "minecraft:fox_spawn_egg": { + "id": "minecraft:pig_spawn_egg", + "name": "1.14 Fox Spawn Egg" + }, + "minecraft:panda_spawn_egg": { + "id": "minecraft:skeleton_spawn_egg", + "name": "1.14 Panda Spawn Egg" + }, + "minecraft:pillager_spawn_egg": { + "id": "minecraft:zombie_villager_spawn_egg", + "name": "1.14 Pillager Spawn Egg" + }, + "minecraft:ravager_spawn_egg": { + "id": "minecraft:silverfish_spawn_egg", + "name": "1.14 Ravager Spawn Egg" + }, + "minecraft:trader_llama_spawn_egg": { + "id": "minecraft:blaze_spawn_egg", + "name": "1.14 Trader Llama Spawn Egg" + }, + "minecraft:wandering_trader_spawn_egg": { + "id": "minecraft:squid_spawn_egg", + "name": "1.14 Wandering Trader Spawn Egg" + } + }, "sounds": { "block.bamboo.break": "block.grass.break", "block.bamboo.fall": "block.grass.fall", diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.14.4to1.15.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.14.4to1.15.json index d01cf0b9..ae2c5f35 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.14.4to1.15.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.14.4to1.15.json @@ -37,6 +37,36 @@ "minecraft:beehive": "minecraft:barrel[facing=up,open=false]", "minecraft:bee_nest": "minecraft:yellow_shulker_box[facing=up]" }, + "items": { + "minecraft:honey_bottle": { + "id": "minecraft:dragon_breath", + "name": "1.15 Honey Bottle" + }, + "minecraft:honeycomb": { + "id": "minecraft:sunflower", + "name": "1.15 Honeycomb" + }, + "minecraft:honeycomb_block": { + "id": "minecraft:horn_coral_block", + "name": "1.15 Honeycomb Block" + }, + "minecraft:bee_nest": { + "id": "minecraft:yellow_shulker_box", + "name": "1.15 Bee Nest" + }, + "minecraft:beehive": { + "id": "minecraft:barrel", + "name": "1.15 Beehive" + }, + "minecraft:honey_block": { + "id": "minecraft:slime_block", + "name": "1.15 Honey Block" + }, + "minecraft:bee_spawn_egg": { + "id": "minecraft:ocelot_spawn_egg", + "name": "1.15 Bee Spawn Egg" + } + }, "sounds": { "entity.bee.death": "entity.creeper.death", "entity.bee.hurt": "entity.bat.hurt",