Mirror von
https://github.com/ViaVersion/ViaBackwards.git
synchronisiert 2024-11-17 13:30:14 +01:00
Handle translation additions
Dieser Commit ist enthalten in:
Ursprung
9807eece72
Commit
3c749bd939
@ -57,8 +57,8 @@ import java.util.BitSet;
|
||||
public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol<ClientboundPackets1_19_3, ClientboundPackets1_19_1, ServerboundPackets1_19_3, ServerboundPackets1_19_1> {
|
||||
|
||||
public static final BackwardsMappings MAPPINGS = new BackwardsMappings();
|
||||
private static final ByteArrayType.OptionalByteArrayType OPTIONAL_SIGNATURE_BYTES_TYPE = new ByteArrayType.OptionalByteArrayType(256);
|
||||
private static final ByteArrayType SIGNATURE_BYTES_TYPE = new ByteArrayType(256);
|
||||
public static final ByteArrayType.OptionalByteArrayType OPTIONAL_SIGNATURE_BYTES_TYPE = new ByteArrayType.OptionalByteArrayType(256);
|
||||
public static final ByteArrayType SIGNATURE_BYTES_TYPE = new ByteArrayType(256);
|
||||
private final EntityPackets1_19_3 entityRewriter = new EntityPackets1_19_3(this);
|
||||
private final BlockItemPackets1_19_3 itemRewriter = new BlockItemPackets1_19_3(this);
|
||||
private final TranslatableRewriter<ClientboundPackets1_19_3> translatableRewriter = new TranslatableRewriter<>(this);
|
||||
|
@ -20,6 +20,7 @@ package com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4;
|
||||
import com.viaversion.viabackwards.api.BackwardsProtocol;
|
||||
import com.viaversion.viabackwards.api.data.BackwardsMappings;
|
||||
import com.viaversion.viabackwards.api.rewriters.SoundRewriter;
|
||||
import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.packets.BlockItemPackets1_19_4;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.packets.EntityPackets1_19_4;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
@ -43,6 +44,7 @@ public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol<ClientboundP
|
||||
public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.19.4", "1.19.3", Protocol1_19_4To1_19_3.class, true);
|
||||
private final EntityPackets1_19_4 entityRewriter = new EntityPackets1_19_4(this);
|
||||
private final BlockItemPackets1_19_4 itemRewriter = new BlockItemPackets1_19_4(this);
|
||||
private final TranslatableRewriter<ClientboundPackets1_19_4> translatableRewriter = new TranslatableRewriter<>(this);
|
||||
|
||||
public Protocol1_19_3To1_19_4() {
|
||||
super(ClientboundPackets1_19_4.class, ClientboundPackets1_19_3.class, ServerboundPackets1_19_4.class, ServerboundPackets1_19_3.class);
|
||||
@ -51,7 +53,6 @@ public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol<ClientboundP
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
// TODO fallback field in components
|
||||
// TODO TranslationRewriter
|
||||
executeAsyncAfterLoaded(Protocol1_19_4To1_19_3.class, () -> {
|
||||
MAPPINGS.load();
|
||||
entityRewriter.onMappingDataLoaded();
|
||||
@ -65,6 +66,18 @@ public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol<ClientboundP
|
||||
soundRewriter.register1_19_3Sound(ClientboundPackets1_19_4.SOUND);
|
||||
soundRewriter.registerSound(ClientboundPackets1_19_4.ENTITY_SOUND);
|
||||
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.ACTIONBAR);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.TITLE_TEXT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.TITLE_SUBTITLE);
|
||||
translatableRewriter.registerBossBar(ClientboundPackets1_19_4.BOSSBAR);
|
||||
translatableRewriter.registerDisconnect(ClientboundPackets1_19_4.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_19_4.TAB_LIST);
|
||||
translatableRewriter.registerOpenWindow(ClientboundPackets1_19_4.OPEN_WINDOW);
|
||||
translatableRewriter.registerCombatKill(ClientboundPackets1_19_4.COMBAT_KILL);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SYSTEM_CHAT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
new CommandRewriter<ClientboundPackets1_19_4>(this) {
|
||||
@Override
|
||||
public void handleArgument(final PacketWrapper wrapper, final String argumentType) throws Exception {
|
||||
|
@ -134,7 +134,7 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
|
||||
// Send as custom display name
|
||||
event.setIndex(2);
|
||||
meta.setMetaType(Types1_19_3.META_TYPES.optionalComponentType);
|
||||
event.createExtraMeta(new Metadata(3, Types1_19_4.META_TYPES.booleanType, true)); // Show custom name
|
||||
event.createExtraMeta(new Metadata(3, Types1_19_3.META_TYPES.booleanType, true)); // Show custom name
|
||||
}));
|
||||
filter().filterFamily(Entity1_19_4Types.DISPLAY).handler((event, meta) -> {
|
||||
// TODO Maybe spawn an extra entity to ride the armor stand for blocks and items
|
||||
@ -159,9 +159,9 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
|
||||
mapTypes();
|
||||
|
||||
final EntityData.MetaCreator displayMetaCreator = storage -> {
|
||||
storage.add(new Metadata(0, Types1_19_4.META_TYPES.byteType, (byte) 0x20)); // Invisible
|
||||
storage.add(new Metadata(5, Types1_19_4.META_TYPES.booleanType, true)); // No gravity
|
||||
storage.add(new Metadata(15, Types1_19_4.META_TYPES.byteType, (byte) (0x01 | 0x10))); // Small marker
|
||||
storage.add(new Metadata(0, Types1_19_3.META_TYPES.byteType, (byte) 0x20)); // Invisible
|
||||
storage.add(new Metadata(5, Types1_19_3.META_TYPES.booleanType, true)); // No gravity
|
||||
storage.add(new Metadata(15, Types1_19_3.META_TYPES.byteType, (byte) (0x01 | 0x10))); // Small marker
|
||||
};
|
||||
mapEntityTypeWithData(Entity1_19_4Types.TEXT_DISPLAY, Entity1_19_4Types.ARMOR_STAND).spawnMetadata(displayMetaCreator);
|
||||
mapEntityTypeWithData(Entity1_19_4Types.ITEM_DISPLAY, Entity1_19_4Types.ARMOR_STAND).spawnMetadata(displayMetaCreator);
|
||||
|
@ -1,4 +1,227 @@
|
||||
{
|
||||
"1.19.4": {
|
||||
"argument.time.tick_count_too_low": "Tick count must not be less than %s, found %s",
|
||||
"biome.minecraft.cherry_grove": "Cherry Grove",
|
||||
"block.minecraft.cherry_button": "Cherry Button",
|
||||
"block.minecraft.cherry_door": "Cherry Door",
|
||||
"block.minecraft.cherry_fence": "Cherry Fence",
|
||||
"block.minecraft.cherry_fence_gate": "Cherry Fence Gate",
|
||||
"block.minecraft.cherry_hanging_sign": "Cherry Hanging Sign",
|
||||
"block.minecraft.cherry_leaves": "Cherry Leaves",
|
||||
"block.minecraft.cherry_log": "Cherry Log",
|
||||
"block.minecraft.cherry_planks": "Cherry Planks",
|
||||
"block.minecraft.cherry_pressure_plate": "Cherry Pressure Plate",
|
||||
"block.minecraft.cherry_sapling": "Cherry Sapling",
|
||||
"block.minecraft.cherry_sign": "Cherry Sign",
|
||||
"block.minecraft.cherry_slab": "Cherry Slab",
|
||||
"block.minecraft.cherry_stairs": "Cherry Stairs",
|
||||
"block.minecraft.cherry_trapdoor": "Cherry Trapdoor",
|
||||
"block.minecraft.cherry_wall_hanging_sign": "Cherry Wall Hanging Sign",
|
||||
"block.minecraft.cherry_wall_sign": "Cherry Wall Sign",
|
||||
"block.minecraft.cherry_wood": "Cherry Wood",
|
||||
"block.minecraft.decorated_pot": "Decorated Pot",
|
||||
"block.minecraft.pink_petals": "Pink Petals",
|
||||
"block.minecraft.potted_cherry_sapling": "Potted Cherry Sapling",
|
||||
"block.minecraft.potted_torchflower": "Potted Torchflower",
|
||||
"block.minecraft.stripped_cherry_log": "Stripped Cherry Log",
|
||||
"block.minecraft.stripped_cherry_wood": "Stripped Cherry Wood",
|
||||
"block.minecraft.suspicious_sand": "Suspicious Sand",
|
||||
"block.minecraft.torchflower": "Torchflower",
|
||||
"block.minecraft.torchflower_crop": "Torchflower Crop",
|
||||
"commands.damage.invulnerable": "Target is invulnerable to the given damage type",
|
||||
"commands.damage.success": "Applied %s damage to %s",
|
||||
"commands.data.modify.expected_value": "Expected value, got: %s",
|
||||
"commands.ride.already_riding": "%s is already riding %s",
|
||||
"commands.ride.dismount.success": "%s stopped riding %s",
|
||||
"commands.ride.mount.failure.cant_ride_players": "Players can't be ridden",
|
||||
"commands.ride.mount.failure.generic": "%s couldn't start riding %s",
|
||||
"commands.ride.mount.failure.loop": "Can't mount entity on itself or any of its passengers",
|
||||
"commands.ride.mount.failure.wrong_dimension": "Can't mount entity in different dimension",
|
||||
"commands.ride.mount.success": "%s started riding %s",
|
||||
"commands.ride.not_riding": "%s is not riding any vehicle",
|
||||
"container.upgrade.error_tooltip": "Your item cannot be upgraded in this way",
|
||||
"container.upgrade.missing_template_tooltip": "Put a Smithing Template here",
|
||||
"controls.keybinds.duplicateKeybinds": "This key is also used for:\n%s",
|
||||
"createWorld.tab.game.title": "Game",
|
||||
"createWorld.tab.more.title": "More...",
|
||||
"createWorld.tab.world.title": "World",
|
||||
"dataPack.bundle.name": "Bundles",
|
||||
"dataPack.update_1_20.name": "Update 1.20",
|
||||
"effect.duration.infinite": "?",
|
||||
"entity.minecraft.block_display": "Block Display",
|
||||
"entity.minecraft.falling_block_type": "Falling %s",
|
||||
"entity.minecraft.interaction": "Interaction",
|
||||
"entity.minecraft.item_display": "Item Display",
|
||||
"entity.minecraft.sniffer": "Sniffer",
|
||||
"entity.minecraft.text_display": "Text Display",
|
||||
"gamerule.commandModificationBlockLimit": "Command Modification Block Limit",
|
||||
"gamerule.commandModificationBlockLimit.description": "Number of blocks that can be changed at once by one command, such as fill or clone.",
|
||||
"gamerule.doVinesSpread": "Vines spread",
|
||||
"gamerule.doVinesSpread.description": "Controls whether or not the Vines block spreads randomly to adjacent blocks. Does not affect other type of vine blocks such as Weeping Vines, Twisting Vines, etc.",
|
||||
"gui.banned.reason.defamation_impersonation_false_information": "Impersonation or sharing information to exploit or mislead others",
|
||||
"gui.banned.reason.drugs": "References to illegal drugs",
|
||||
"gui.banned.reason.extreme_violence_or_gore": "Depictions of real-life excessive violence or gore",
|
||||
"gui.banned.reason.false_reporting": "Excessive false or inaccurate reports",
|
||||
"gui.banned.reason.fraud": "Fraudulent acquisition or use of content",
|
||||
"gui.banned.reason.generic_violation": "Violating Community Standards",
|
||||
"gui.banned.reason.harassment_or_bullying": "Abusive language used in a directed, harmful manner",
|
||||
"gui.banned.reason.hate_speech": "Hate speech or discrimination",
|
||||
"gui.banned.reason.hate_terrorism_notorious_figure": "References to hate groups, terrorist organizations, or notorious figures",
|
||||
"gui.banned.reason.imminent_harm_to_person_or_property": "Intent to cause real-life harm to persons or property",
|
||||
"gui.banned.reason.nudity_or_pornography": "Displaying lewd or pornographic material",
|
||||
"gui.banned.reason.sexually_inappropriate": "Topics or content of a sexual nature",
|
||||
"gui.banned.reason.spam_or_advertising": "Spam or advertising",
|
||||
"gui.continue": "Continue",
|
||||
"gui.narrate.tab": "%s tab",
|
||||
"item.minecraft.brush": "Brush",
|
||||
"item.minecraft.cherry_boat": "Cherry Boat",
|
||||
"item.minecraft.cherry_chest_boat": "Cherry Boat with Chest",
|
||||
"item.minecraft.pottery_shard_archer": "Archer Pottery Shard",
|
||||
"item.minecraft.pottery_shard_arms_up": "Arms Up Pottery Shard",
|
||||
"item.minecraft.pottery_shard_prize": "Prize Pottery Shard",
|
||||
"item.minecraft.pottery_shard_skull": "Skull Pottery Shard",
|
||||
"item.minecraft.smithing_template": "Smithing Template",
|
||||
"item.minecraft.smithing_template.applies_to": "Applies to:",
|
||||
"item.minecraft.smithing_template.armor_trim.additions_slot_description": "Put an ingot or crystal here",
|
||||
"item.minecraft.smithing_template.armor_trim.applies_to": "Armor",
|
||||
"item.minecraft.smithing_template.armor_trim.base_slot_description": "Put a piece of armor here",
|
||||
"item.minecraft.smithing_template.armor_trim.ingredients": "Ingots & Crystals",
|
||||
"item.minecraft.smithing_template.ingredients": "Ingredients:",
|
||||
"item.minecraft.smithing_template.netherite_upgrade.additions_slot_description": "Put a Netherite Ingot here",
|
||||
"item.minecraft.smithing_template.netherite_upgrade.applies_to": "Diamond Equipment",
|
||||
"item.minecraft.smithing_template.netherite_upgrade.base_slot_description": "Put a piece of Diamond armor, weapon or tool here",
|
||||
"item.minecraft.smithing_template.netherite_upgrade.ingredients": "Netherite Ingot",
|
||||
"item.minecraft.smithing_template.upgrade": "Upgrade: ",
|
||||
"item.minecraft.sniffer_spawn_egg": "Sniffer Spawn Egg",
|
||||
"item.minecraft.torchflower_seeds": "Torchflower Seeds",
|
||||
"multiplayer.lan.server_found": "New server found: %s",
|
||||
"multiplayer.player.list.narration": "Online players: %s",
|
||||
"multiplayer.status.motd.narration": "Message of the day: %s",
|
||||
"multiplayer.status.online": "Online",
|
||||
"multiplayer.status.ping.narration": "Ping %s milliseconds",
|
||||
"multiplayer.status.player_count.narration": "%s out of %s players online",
|
||||
"multiplayer.status.version.narration": "Server version: %s",
|
||||
"narrator.ready_to_play": "Ready to play",
|
||||
"options.damageTiltStrength": "Damage Tilt",
|
||||
"options.damageTiltStrength.tooltip": "The amount of camera shake caused by being hurt.",
|
||||
"options.difficulty.easy.info": "Hostile mobs spawn but deal less damage. Hunger bar depletes and drains health down to 5 hearts.",
|
||||
"options.difficulty.hard.info": "Hostile mobs spawn and deal more damage. Hunger bar depletes and drains all health.",
|
||||
"options.difficulty.normal.info": "Hostile mobs spawn and deal standard damage. Hunger bar depletes and drains health down to half a heart.",
|
||||
"options.difficulty.peaceful.info": "No hostile mobs and only some neutral mobs spawn. Hunger bar doesn't deplete and health replenishes over time.",
|
||||
"options.glintSpeed": "Glint Speed",
|
||||
"options.glintSpeed.tooltip": "Controls how fast the visual glint shimmers across enchanted items.",
|
||||
"options.glintStrength": "Glint Strength",
|
||||
"options.glintStrength.tooltip": "Controls how transparent the visual glint is on enchanted items.",
|
||||
"options.multiplier": "%sx",
|
||||
"options.notifications.display_time": "Notification Time",
|
||||
"options.notifications.display_time.tooltip": "Affects the length of time that all notifications stay visible on the screen.",
|
||||
"painting.dimensions": "%sx%s",
|
||||
"painting.minecraft.alban.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.alban.title": "Albanian",
|
||||
"painting.minecraft.aztec.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.aztec.title": "de_aztec",
|
||||
"painting.minecraft.aztec2.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.aztec2.title": "de_aztec",
|
||||
"painting.minecraft.bomb.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.bomb.title": "Target Successfully Bombed",
|
||||
"painting.minecraft.burning_skull.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.burning_skull.title": "Skull On Fire",
|
||||
"painting.minecraft.bust.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.bust.title": "Bust",
|
||||
"painting.minecraft.courbet.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.courbet.title": "Bonjour Monsieur Courbet",
|
||||
"painting.minecraft.creebet.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.creebet.title": "Creebet",
|
||||
"painting.minecraft.donkey_kong.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.donkey_kong.title": "Kong",
|
||||
"painting.minecraft.earth.author": "Mojang",
|
||||
"painting.minecraft.earth.title": "Earth",
|
||||
"painting.minecraft.fighters.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.fighters.title": "Fighters",
|
||||
"painting.minecraft.fire.author": "Mojang",
|
||||
"painting.minecraft.fire.title": "Fire",
|
||||
"painting.minecraft.graham.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.graham.title": "Graham",
|
||||
"painting.minecraft.kebab.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.kebab.title": "Kebab med tre pepperoni",
|
||||
"painting.minecraft.match.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.match.title": "Match",
|
||||
"painting.minecraft.pigscene.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.pigscene.title": "Pigscene",
|
||||
"painting.minecraft.plant.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.plant.title": "Paradistr<74>d",
|
||||
"painting.minecraft.pointer.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.pointer.title": "Pointer",
|
||||
"painting.minecraft.pool.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.pool.title": "The Pool",
|
||||
"painting.minecraft.sea.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.sea.title": "Seaside",
|
||||
"painting.minecraft.skeleton.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.skeleton.title": "Mortal Coil",
|
||||
"painting.minecraft.skull_and_roses.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.skull_and_roses.title": "Skull and Roses",
|
||||
"painting.minecraft.stage.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.stage.title": "The Stage Is Set",
|
||||
"painting.minecraft.sunset.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.sunset.title": "sunset_dense",
|
||||
"painting.minecraft.void.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.void.title": "The void",
|
||||
"painting.minecraft.wanderer.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.wanderer.title": "Wanderer",
|
||||
"painting.minecraft.wasteland.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.wasteland.title": "Wasteland",
|
||||
"painting.minecraft.water.author": "Mojang",
|
||||
"painting.minecraft.water.title": "Water",
|
||||
"painting.minecraft.wind.author": "Mojang",
|
||||
"painting.minecraft.wind.title": "Wind",
|
||||
"painting.minecraft.wither.author": "Mojang",
|
||||
"painting.minecraft.wither.title": "Wither",
|
||||
"painting.random": "Random variant",
|
||||
"selectWorld.experiments": "Experiments",
|
||||
"selectWorld.experiments.info": "Experiments are potential new features. Be careful as things might break. Experiments can't be turned off after world creation.",
|
||||
"selectWorld.gameMode.adventure.info": "Same as Survival Mode, but blocks can't be added or removed",
|
||||
"selectWorld.gameMode.creative.info": "Create, build, and explore without limits. You can fly, have endless materials, and can't be hurt by monsters.",
|
||||
"selectWorld.gameMode.hardcore.info": "Survival mode locked to 'Hard' difficulty. You can't respawn if you die.",
|
||||
"selectWorld.gameMode.spectator.info": "You can look but don't touch",
|
||||
"selectWorld.gameMode.survival.info": "Explore a mysterious world where you build, collect, craft, and fight monsters.",
|
||||
"subtitles.block.decorated_pot.shatter": "Pot shatters",
|
||||
"subtitles.entity.sniffer.death": "Sniffer dies",
|
||||
"subtitles.entity.sniffer.digging": "Sniffer digs",
|
||||
"subtitles.entity.sniffer.digging_stop": "Sniffer stands up",
|
||||
"subtitles.entity.sniffer.drop_seed": "Sniffer drops seed",
|
||||
"subtitles.entity.sniffer.eat": "Sniffer eats",
|
||||
"subtitles.entity.sniffer.happy": "Sniffer delights",
|
||||
"subtitles.entity.sniffer.hurt": "Sniffer hurts",
|
||||
"subtitles.entity.sniffer.idle": "Sniffer grunts",
|
||||
"subtitles.entity.sniffer.scenting": "Sniffer scents",
|
||||
"subtitles.entity.sniffer.searching": "Sniffer searches",
|
||||
"subtitles.entity.sniffer.sniffing": "Sniffer sniffs",
|
||||
"subtitles.entity.sniffer.step": "Sniffer steps",
|
||||
"subtitles.item.brush.brush_sand_completed": "Brushing sand completed",
|
||||
"subtitles.item.brush.brushing": "Brushing",
|
||||
"trim_material.minecraft.amethyst": "Amethyst Material",
|
||||
"trim_material.minecraft.copper": "Copper Material",
|
||||
"trim_material.minecraft.diamond": "Diamond Material",
|
||||
"trim_material.minecraft.emerald": "Emerald Material",
|
||||
"trim_material.minecraft.gold": "Gold Material",
|
||||
"trim_material.minecraft.iron": "Iron Material",
|
||||
"trim_material.minecraft.lapis": "Lapis Material",
|
||||
"trim_material.minecraft.netherite": "Netherite Material",
|
||||
"trim_material.minecraft.quartz": "Quartz Material",
|
||||
"trim_material.minecraft.redstone": "Redstone Material",
|
||||
"trim_pattern.minecraft.coast": "Coast Armor Trim",
|
||||
"trim_pattern.minecraft.dune": "Dune Armor Trim",
|
||||
"trim_pattern.minecraft.eye": "Eye Armor Trim",
|
||||
"trim_pattern.minecraft.rib": "Rib Armor Trim",
|
||||
"trim_pattern.minecraft.sentry": "Sentry Armor Trim",
|
||||
"trim_pattern.minecraft.snout": "Snout Armor Trim",
|
||||
"trim_pattern.minecraft.spire": "Spire Armor Trim",
|
||||
"trim_pattern.minecraft.tide": "Tide Armor Trim",
|
||||
"trim_pattern.minecraft.vex": "Vex Armor Trim",
|
||||
"trim_pattern.minecraft.ward": "Ward Armor Trim",
|
||||
"trim_pattern.minecraft.wild": "Wild Armor Trim",
|
||||
"upgrade.minecraft.netherite_upgrade": "Netherite Upgrade"
|
||||
},
|
||||
"1.19.3": {
|
||||
"gui.chatReport.discard.draft": "Save as Draft",
|
||||
"gui.chatReport.draft.title": "Edit draft chat report?",
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren