Readd item attribute fixes on protocol level

This commit is contained in:
RaphiMC 2024-04-23 20:25:26 +02:00
parent 6dd2cd6894
commit 39e8866548
No known key found for this signature in database
GPG Key ID: 0F6BB0657A03AC94
33 changed files with 429 additions and 73 deletions

View File

@ -3,10 +3,10 @@ org.gradle.jvmargs=-Xmx8G
org.gradle.parallel=true
# Minecraft/Fabric
minecraft_version=1.20.5-rc2
yarn_mappings=1.20.5-rc2+build.1
minecraft_version=1.20.5
yarn_mappings=1.20.5+build.1
loader_version=0.15.10
fabric_api_version=0.97.4+1.20.5
fabric_api_version=0.97.5+1.20.5
# Project Details
mod_version=3.2.0-SNAPSHOT
@ -14,7 +14,7 @@ maven_group=de.florianmichael
archives_base_name=ViaFabricPlus
# ViaVersion Libraries
viaversion_version=4.10.0-1.20.5-rc2-SNAPSHOT
viaversion_version=4.10.0-SNAPSHOT
viabackwards_version=4.10.0-24w09a-SNAPSHOT
vialegacy_version=2.2.22-SNAPSHOT
viaaprilfools_version=2.0.11-SNAPSHOT

View File

@ -52,7 +52,6 @@ import java.util.concurrent.CompletableFuture;
* - Test 1.20.1 riding offsets
* - EntityDimensionDiff: Add eye height and attachment point
* - Test bedrock transfer
* - Readd item fixes on protocol level: MixinSwordItem, MixinMiningToolItem
* - Readd item fixes: MixinItemStack, MixinDrawContext, MixinPacketByteBuf
* - Figure out how to fix 32k enchantments with codecs (MixinEnchantmentHelper)
*/

View File

@ -38,6 +38,7 @@ public class ResourcePackHeaderDiff {
private final static Map<ProtocolVersion, GameVersion> GAME_VERSION_DIFF = new HashMap<>();
static {
registerVersion(ProtocolVersion.v1_20_5, 32, "1.20.5");
registerVersion(ProtocolVersion.v1_20_3, 22, "1.20.4");
registerVersion(ProtocolVersion.v1_20_2, 18, "1.20.2");
registerVersion(ProtocolVersion.v1_20, 15, "1.20.1");

View File

@ -19,38 +19,29 @@
package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.item;
import com.google.common.base.Suppliers;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
import de.florianmichael.viafabricplus.settings.impl.DebugSettings;
import net.minecraft.component.type.AttributeModifiersComponent;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.world.World;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.function.Supplier;
@Mixin(ArmorItem.class)
public abstract class MixinArmorItem {
public abstract class MixinArmorItem extends Item {
@Shadow
@Final
private Supplier<AttributeModifiersComponent> attributeModifiers;
@Unique
private final Supplier<AttributeModifiersComponent> viaFabricPlus$AttributeModifiers_r1_8 = Suppliers.memoize(() -> AttributeModifiersComponent.DEFAULT);
public MixinArmorItem(Settings settings) {
super(settings);
}
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
private void disableRightClick(World world, PlayerEntity user, Hand hand, CallbackInfoReturnable<TypedActionResult<ItemStack>> cir) {
@ -59,12 +50,10 @@ public abstract class MixinArmorItem {
}
}
@Redirect(method = "getAttributeModifiers", at = @At(value = "FIELD", target = "Lnet/minecraft/item/ArmorItem;attributeModifiers:Ljava/util/function/Supplier;"))
private Supplier<AttributeModifiersComponent> changeAttributeModifiers(ArmorItem instance) {
if (DebugSettings.global().replaceAttributeModifiers.isEnabled()) {
return this.viaFabricPlus$AttributeModifiers_r1_8;
} else {
return this.attributeModifiers;
@Inject(method = "getAttributeModifiers", at = @At("HEAD"), cancellable = true)
private void changeAttributeModifiers(CallbackInfoReturnable<AttributeModifiersComponent> cir) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
cir.setReturnValue(super.getAttributeModifiers());
}
}

View File

@ -36,14 +36,6 @@ public abstract class MixinSwordItem extends ToolItem {
super(material, settings);
}
/*@Inject(method = "<init>", at = @At("RETURN"))
private void init1_8Fields(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings, CallbackInfo ci) {
this.viaFabricPlus$attackDamage_r1_8 = 4 + toolMaterial.getAttackDamage();
final ImmutableMultimap.Builder<EntityAttribute, EntityAttributeModifier> builder = ImmutableMultimap.builder();
builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE, new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER_ID, "Weapon modifier", this.viaFabricPlus$attackDamage_r1_8, EntityAttributeModifier.Operation.ADDITION));
this.viaFabricPlus$AttributeModifiers_r1_8 = builder.build();
}*/
@Override
public UseAction getUseAction(ItemStack stack) {
if (ProtocolTranslator.getTargetVersion().betweenInclusive(LegacyProtocolVersion.b1_8tob1_8_1, ProtocolVersion.v1_8)) {
@ -53,13 +45,4 @@ public abstract class MixinSwordItem extends ToolItem {
}
}
/*@Redirect(method = "getAttributeModifiers", at = @At(value = "FIELD", target = "Lnet/minecraft/item/SwordItem;attributeModifiers:Lcom/google/common/collect/Multimap;"))
private Multimap<EntityAttribute, EntityAttributeModifier> changeAttributeModifiers(SwordItem instance) {
if (DebugSettings.global().replaceAttributeModifiers.isEnabled()) {
return this.viaFabricPlus$AttributeModifiers_r1_8;
} else {
return this.attributeModifiers;
}
}*/
}

View File

@ -0,0 +1,129 @@
/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2024 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and RK_01/RaphiMC
* Copyright (C) 2023-2024 contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.item.data.ModifierData;
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap;
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap;
import com.viaversion.viaversion.libs.gson.JsonElement;
import com.viaversion.viaversion.libs.gson.JsonObject;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter;
import com.viaversion.viaversion.util.Pair;
import de.florianmichael.viafabricplus.protocoltranslator.impl.ViaFabricPlusMappingDataLoader;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Mixin(value = ItemRewriter.class, remap = false)
public abstract class MixinItemRewriter {
@Unique
private static final Int2ObjectMap<String> ITEM_IDENTIFIERS = new Int2ObjectOpenHashMap<>();
@Unique
private static final Map<String, Map<String, Pair<String, ModifierData>>> ITEM_ATTRIBUTES = new HashMap<>();
@Unique
private static final String TAG_NAME = "VV|AttributeFix";
@Inject(method = "<clinit>", at = @At("RETURN"))
private static void loadAdditionalData(CallbackInfo ci) {
final JsonObject itemIdentifiers = ViaFabricPlusMappingDataLoader.INSTANCE.loadData("item-identifiers-1.8.json");
for (Map.Entry<String, JsonElement> entry : itemIdentifiers.entrySet()) {
ITEM_IDENTIFIERS.put(entry.getValue().getAsInt(), entry.getKey());
}
final JsonObject itemAttributes = ViaFabricPlusMappingDataLoader.INSTANCE.loadData("item-attributes-1.8.json");
for (Map.Entry<String, JsonElement> itemEntry : itemAttributes.entrySet()) {
final String itemIdentifier = itemEntry.getKey();
final Map<String, Pair<String, ModifierData>> attributes = new HashMap<>();
for (Map.Entry<String, JsonElement> attributeEntry : itemEntry.getValue().getAsJsonObject().entrySet()) {
final String attribute = attributeEntry.getKey();
final JsonObject attributeData = attributeEntry.getValue().getAsJsonObject();
final ModifierData modifierData = new ModifierData(UUID.fromString(attributeData.get("id").getAsString()), attributeData.get("name").getAsString(), attributeData.get("amount").getAsDouble(), attributeData.get("operation").getAsInt());
final String slot = attributeData.get("slot").getAsString();
attributes.put(attribute, new Pair<>(slot, modifierData));
}
ITEM_ATTRIBUTES.put(itemIdentifier, attributes);
}
}
@Inject(method = "toClient", at = @At("RETURN"))
private static void addAttributeFixData(Item item, CallbackInfo ci) {
if (item == null) return;
final String identifier = ITEM_IDENTIFIERS.get(item.identifier());
if (identifier != null && ITEM_ATTRIBUTES.containsKey(identifier)) {
final Map<String, Pair<String, ModifierData>> attributes = ITEM_ATTRIBUTES.get(identifier);
final CompoundTag attributeFixTag = new CompoundTag();
CompoundTag tag = item.tag();
if (tag == null) {
tag = new CompoundTag();
item.setTag(tag);
attributeFixTag.putBoolean("RemoveTag", true);
}
tag.put(TAG_NAME, attributeFixTag);
ListTag<CompoundTag> attributeModifiers = tag.getListTag("AttributeModifiers", CompoundTag.class);
if (attributeModifiers == null) {
attributeModifiers = new ListTag<>(CompoundTag.class);
for (Map.Entry<String, Pair<String, ModifierData>> entry : attributes.entrySet()) {
final CompoundTag attributeModifier = new CompoundTag();
attributeModifier.putString("AttributeName", entry.getKey());
attributeModifier.putString("Name", entry.getValue().value().name());
attributeModifier.putDouble("Amount", entry.getValue().value().amount());
attributeModifier.putInt("Operation", entry.getValue().value().operation());
attributeModifier.putLong("UUIDMost", entry.getValue().value().uuid().getMostSignificantBits());
attributeModifier.putLong("UUIDLeast", entry.getValue().value().uuid().getLeastSignificantBits());
attributeModifier.putString("Slot", entry.getValue().key());
attributeModifiers.add(attributeModifier);
}
tag.put("AttributeModifiers", attributeModifiers);
attributeFixTag.putBoolean("RemoveAttributeModifiers", true);
}
}
}
@Inject(method = "toServer", at = @At("RETURN"))
private static void removeAttributeFixData(Item item, CallbackInfo ci) {
if (item == null) return;
final CompoundTag tag = item.tag();
if (tag == null) return;
final CompoundTag attributeFixTag = tag.removeUnchecked(TAG_NAME);
if (attributeFixTag == null) return;
if (attributeFixTag.contains("RemoveAttributeModifiers")) {
tag.remove("AttributeModifiers");
}
if (attributeFixTag.contains("RemoveTag")) {
item.setTag(null);
}
}
}

View File

@ -49,7 +49,6 @@ public class DebugSettings extends SettingGroup {
// 1.9 -> 1.8.x
public final VersionedBooleanSetting removeCooldowns = new VersionedBooleanSetting(this, Text.translatable("debug_settings.viafabricplus.remove_cooldowns"), VersionRange.andOlder(ProtocolVersion.v1_8));
public final VersionedBooleanSetting sendIdlePacket = new VersionedBooleanSetting(this, Text.translatable("debug_settings.viafabricplus.send_idle_packet"), VersionRange.andOlder(LegacyProtocolVersion.r1_2_4tor1_2_5).add(VersionRange.of(LegacyProtocolVersion.r1_4_2, ProtocolVersion.v1_8)));
public final VersionedBooleanSetting replaceAttributeModifiers = new VersionedBooleanSetting(this, Text.translatable("debug_settings.viafabricplus.replace_attribute_modifiers"), VersionRange.andOlder(ProtocolVersion.v1_8));
public final VersionedBooleanSetting preventEntityCramming = new VersionedBooleanSetting(this, Text.translatable("debug_settings.viafabricplus.prevent_entity_cramming"), VersionRange.andOlder(ProtocolVersion.v1_8));
// 1.8.x -> 1.7.6

View File

@ -0,0 +1,232 @@
{
"minecraft:wooden_axe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 3.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:stone_axe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 4.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:iron_axe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 5.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:golden_axe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 3.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:diamond_axe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 6.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:wooden_pickaxe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 2.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:stone_pickaxe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 3.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:iron_pickaxe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 4.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:golden_pickaxe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 2.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:diamond_pickaxe": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 5.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:wooden_shovel": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 1.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:stone_shovel": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 2.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:iron_shovel": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 3.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:golden_shovel": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 1.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:diamond_shovel": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Tool modifier",
"amount": 4.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:wooden_sword": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Weapon modifier",
"amount": 4.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:stone_sword": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Weapon modifier",
"amount": 5.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:iron_sword": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Weapon modifier",
"amount": 6.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:golden_sword": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Weapon modifier",
"amount": 4.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:diamond_sword": {
"generic.attackDamage": {
"id": "CB3F55D3-645C-4F38-A497-9C13A33DB5CF",
"name": "Weapon modifier",
"amount": 7.0,
"operation": 0,
"slot": "mainhand"
}
},
"minecraft:wooden_hoe": {
},
"minecraft:stone_hoe": {
},
"minecraft:iron_hoe": {
},
"minecraft:golden_hoe": {
},
"minecraft:diamond_hoe": {
},
"minecraft:leather_boots": {
},
"minecraft:leather_leggings": {
},
"minecraft:leather_chestplate": {
},
"minecraft:leather_helmet": {
},
"minecraft:chainmail_boots": {
},
"minecraft:chainmail_leggings": {
},
"minecraft:chainmail_chestplate": {
},
"minecraft:chainmail_helmet": {
},
"minecraft:iron_boots": {
},
"minecraft:iron_leggings": {
},
"minecraft:iron_chestplate": {
},
"minecraft:iron_helmet": {
},
"minecraft:golden_boots": {
},
"minecraft:golden_leggings": {
},
"minecraft:golden_chestplate": {
},
"minecraft:golden_helmet": {
},
"minecraft:diamond_boots": {
},
"minecraft:diamond_leggings": {
},
"minecraft:diamond_chestplate": {
},
"minecraft:diamond_helmet": {
}
}

View File

@ -0,0 +1,47 @@
{
"minecraft:wooden_axe": 271,
"minecraft:stone_axe": 275,
"minecraft:iron_axe": 258,
"minecraft:golden_axe": 286,
"minecraft:diamond_axe": 279,
"minecraft:wooden_pickaxe": 270,
"minecraft:stone_pickaxe": 274,
"minecraft:iron_pickaxe": 257,
"minecraft:golden_pickaxe": 285,
"minecraft:diamond_pickaxe": 278,
"minecraft:wooden_shovel": 269,
"minecraft:stone_shovel": 273,
"minecraft:iron_shovel": 256,
"minecraft:golden_shovel": 284,
"minecraft:diamond_shovel": 277,
"minecraft:wooden_sword": 268,
"minecraft:stone_sword": 272,
"minecraft:iron_sword": 267,
"minecraft:golden_sword": 283,
"minecraft:diamond_sword": 276,
"minecraft:wooden_hoe": 290,
"minecraft:stone_hoe": 291,
"minecraft:iron_hoe": 292,
"minecraft:golden_hoe": 294,
"minecraft:diamond_hoe": 293,
"minecraft:leather_boots": 301,
"minecraft:leather_leggings": 300,
"minecraft:leather_chestplate": 299,
"minecraft:leather_helmet": 298,
"minecraft:chainmail_boots": 305,
"minecraft:chainmail_leggings": 304,
"minecraft:chainmail_chestplate": 303,
"minecraft:chainmail_helmet": 302,
"minecraft:iron_boots": 309,
"minecraft:iron_leggings": 308,
"minecraft:iron_chestplate": 307,
"minecraft:iron_helmet": 306,
"minecraft:golden_boots": 317,
"minecraft:golden_leggings": 316,
"minecraft:golden_chestplate": 315,
"minecraft:golden_helmet": 314,
"minecraft:diamond_boots": 313,
"minecraft:diamond_leggings": 312,
"minecraft:diamond_chestplate": 311,
"minecraft:diamond_helmet": 310
}

View File

@ -29,7 +29,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Odesílat packet otevření inventáře",
"debug_settings.viafabricplus.remove_cooldowns": "Odstranit cooldowny",
"debug_settings.viafabricplus.send_idle_packet": "Odesílat idle packet",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Nahradit modifiery atributů",
"debug_settings.viafabricplus.replace_sneaking": "Nahradit plížení",
"debug_settings.viafabricplus.long_sneaking": "Dlouhé plížení",
"debug_settings.viafabricplus.legacy_mining_speeds": "Staré rychlosti těžení",

View File

@ -57,7 +57,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Öffnen des Inventars senden",
"debug_settings.viafabricplus.remove_cooldowns": "Abklingzeiten entfernen",
"debug_settings.viafabricplus.send_idle_packet": "Leerlauf-Paket senden",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Attributmodifikatoren ersetzen",
"debug_settings.viafabricplus.replace_sneaking": "Schleichen ersetzen",
"debug_settings.viafabricplus.long_sneaking": "Langes Schleichen",
"debug_settings.viafabricplus.legacy_mining_speeds": "Veraltete Abbaugeschwindigkeiten",

View File

@ -57,7 +57,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Send open inventory packet",
"debug_settings.viafabricplus.remove_cooldowns": "Remove cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Send idle packet",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Replace attribute modifiers",
"debug_settings.viafabricplus.replace_sneaking": "Replace sneaking",
"debug_settings.viafabricplus.long_sneaking": "Long sneaking",
"debug_settings.viafabricplus.legacy_mining_speeds": "Legacy mining speeds",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Enviar paquete de abrir inventario",
"debug_settings.viafabricplus.remove_cooldowns": "Eliminar Cooldowns",
"debug_settings.viafabricplus.send_idle_packet": "Enviar paquete inactivo",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Reemplazar modificadores de atributos",
"debug_settings.viafabricplus.replace_sneaking": "Reemplazar agacharse",
"debug_settings.viafabricplus.long_sneaking": "Agachado largo",
"debug_settings.viafabricplus.legacy_mining_speeds": "Velocidades de mineria legacy",

View File

@ -31,7 +31,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Lähetä avoin-tavaraluettelo -paketti",
"debug_settings.viafabricplus.remove_cooldowns": "Poista jäähyt",
"debug_settings.viafabricplus.send_idle_packet": "Lähetä idle -paketti",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Vaihda attribuutin muuttujat",
"debug_settings.viafabricplus.replace_sneaking": "Vaihda kyykky",
"debug_settings.viafabricplus.long_sneaking": "Pitkä kyykky",
"debug_settings.viafabricplus.legacy_mining_speeds": "Perinteiset louhintanopeudet",

View File

@ -30,7 +30,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Envoyer le paquet d'inventaire ouvert",
"debug_settings.viafabricplus.remove_cooldowns": "Supprimer les temps de recharge",
"debug_settings.viafabricplus.send_idle_packet": "Envoyer le paquet d'inactivité",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Remplacer les modificateurs d'attribut",
"debug_settings.viafabricplus.replace_sneaking": "Remplacer le sneaking",
"debug_settings.viafabricplus.long_sneaking": "Sneaking prolongé",
"debug_settings.viafabricplus.legacy_mining_speeds": "Vitesses d'exploitation minière héritées",

View File

@ -54,7 +54,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Felszerelést kinyitó adatcsomagok küldése",
"debug_settings.viafabricplus.remove_cooldowns": "Lehűlések eltávolítása",
"debug_settings.viafabricplus.send_idle_packet": "Tétlen adatcsomagok küldése",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Attribútum kicserélése",
"debug_settings.viafabricplus.replace_sneaking": "Lopakodás kicserélése",
"debug_settings.viafabricplus.long_sneaking": "Hosszú lopakodás",
"debug_settings.viafabricplus.legacy_mining_speeds": "Régi bányászati sebességek",

View File

@ -26,7 +26,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "インベントリが開いたことをパケット送信",
"debug_settings.viafabricplus.remove_cooldowns": "クールダウンを削除",
"debug_settings.viafabricplus.send_idle_packet": "無操作パケットを送信",
"debug_settings.viafabricplus.replace_attribute_modifiers": "属性修飾子を置換",
"debug_settings.viafabricplus.replace_sneaking": "スニークの置換",
"debug_settings.viafabricplus.long_sneaking": "長いスニーク",
"debug_settings.viafabricplus.legacy_mining_speeds": "従来の採掘速度",

View File

@ -23,7 +23,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Inventory-Open Paket schecken",
"debug_settings.viafabricplus.remove_cooldowns": "Cooldowns entfernen",
"debug_settings.viafabricplus.send_idle_packet": "IDLE-Paket schecken",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Attribute-Modifier entfernen",
"debug_settings.viafabricplus.replace_sneaking": "Sneaken Unpassen",
"debug_settings.viafabricplus.long_sneaking": "LUnges Sneaken",
"debug_settings.viafabricplus.legacy_mining_speeds": "Legacy Abbaugeschwindigkeiten",

View File

@ -57,7 +57,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Wysyłaj pakiety otwierania ekwipunku",
"debug_settings.viafabricplus.remove_cooldowns": "Usuń odstępy pomiędzy uderzeniami",
"debug_settings.viafabricplus.send_idle_packet": "Wysyłaj pakiety bezczynności",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Zamień modyfikatory atrybutów",
"debug_settings.viafabricplus.replace_sneaking": "Zamień kucanie",
"debug_settings.viafabricplus.long_sneaking": "Długie kucanie",
"debug_settings.viafabricplus.legacy_mining_speeds": "Stare prędkości kopania",

View File

@ -57,7 +57,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Отправлять пакет открытия инвентаря",
"debug_settings.viafabricplus.remove_cooldowns": "Убрать задержку атаки",
"debug_settings.viafabricplus.send_idle_packet": "Отправлять пакет бездействия",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Заменять модификаторы атрибутов",
"debug_settings.viafabricplus.replace_sneaking": "Заменять приседание",
"debug_settings.viafabricplus.long_sneaking": "Долгое приседание",
"debug_settings.viafabricplus.legacy_mining_speeds": "Старая скорость добычи блоков",

View File

@ -23,7 +23,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "ส่งแพคเกจเปิดช่องเก็บของ",
"debug_settings.viafabricplus.remove_cooldowns": "ลบคูลดาวน์",
"debug_settings.viafabricplus.send_idle_packet": "ส่งแพคเกจ idle",
"debug_settings.viafabricplus.replace_attribute_modifiers": "แทนที่ตัวดัดแปลงแอตทริบิวต์",
"debug_settings.viafabricplus.replace_sneaking": "แทนที่การย่อง",
"debug_settings.viafabricplus.long_sneaking": "ย่องยาว",
"debug_settings.viafabricplus.legacy_mining_speeds": "ความเร็วการขุดแบบดั้งเดิม",

View File

@ -52,7 +52,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "Відправляти пакет відкривання інвентарю",
"debug_settings.viafabricplus.remove_cooldowns": "Прибрати кулдауни",
"debug_settings.viafabricplus.send_idle_packet": "Надіслави пакет неактивності",
"debug_settings.viafabricplus.replace_attribute_modifiers": "Замінити атрибути модифікаторів",
"debug_settings.viafabricplus.replace_sneaking": "Замінювати підкрадання",
"debug_settings.viafabricplus.long_sneaking": "Довге підкрадання",
"debug_settings.viafabricplus.legacy_mining_speeds": "Стара швидкість копання",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "发送“打开物品栏”数据包",
"debug_settings.viafabricplus.remove_cooldowns": "移除攻击冷却",
"debug_settings.viafabricplus.send_idle_packet": "发送“空闲”数据包",
"debug_settings.viafabricplus.replace_attribute_modifiers": "替换属性修饰符样式",
"debug_settings.viafabricplus.replace_sneaking": "替换潜行样式",
"debug_settings.viafabricplus.long_sneaking": "长时间潜行",
"debug_settings.viafabricplus.legacy_mining_speeds": "远古版本挖掘速度",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "發送 “打開物品欄” 數據包",
"debug_settings.viafabricplus.remove_cooldowns": "移除攻擊冷卻",
"debug_settings.viafabricplus.send_idle_packet": "發送 “空閒” 數據包",
"debug_settings.viafabricplus.replace_attribute_modifiers": "替換屬性修飾符為舊版本樣式",
"debug_settings.viafabricplus.replace_sneaking": "替換潛行樣式",
"debug_settings.viafabricplus.long_sneaking": "長時潛行",
"debug_settings.viafabricplus.legacy_mining_speeds": "舊版本挖掘速度",

View File

@ -56,7 +56,6 @@
"debug_settings.viafabricplus.send_open_inventory_packet": "發送開啟物品欄封包",
"debug_settings.viafabricplus.remove_cooldowns": "移除冷卻時間",
"debug_settings.viafabricplus.send_idle_packet": "發送閒置封包",
"debug_settings.viafabricplus.replace_attribute_modifiers": "替換屬性修飾符",
"debug_settings.viafabricplus.replace_sneaking": "替換潛行",
"debug_settings.viafabricplus.long_sneaking": "長時間潛行",
"debug_settings.viafabricplus.legacy_mining_speeds": "舊版挖礦速度",

View File

@ -54,7 +54,7 @@
"fabric-lifecycle-events-v1": ">=2.2.28",
"fabric-particles-v1": ">=1.1.6",
"fabric-registry-sync-v0": ">=4.0.13",
"minecraft": ">=1.20.3",
"minecraft": ">=1.20.5",
"java": ">=17"
},
"breaks": {

View File

@ -111,6 +111,7 @@
"fixes.minecraft.entity.MixinSquidEntity",
"fixes.minecraft.entity.MixinWolfEntity",
"fixes.minecraft.item.MixinArmorItem",
"fixes.minecraft.item.MixinAxeItem",
"fixes.minecraft.item.MixinBlockItem",
"fixes.minecraft.item.MixinBowItem",
"fixes.minecraft.item.MixinBrushItem",
@ -123,6 +124,8 @@
"fixes.minecraft.item.MixinItemGroups",
"fixes.minecraft.item.MixinItemPlacementContext",
"fixes.minecraft.item.MixinItemRenderer",
"fixes.minecraft.item.MixinShovelItem",
"fixes.minecraft.item.MixinSwordItem",
"fixes.minecraft.network.MixinChatMessageC2SPacket",
"fixes.minecraft.network.MixinClientCommonNetworkHandler",
"fixes.minecraft.network.MixinClientConfigurationNetworkHandler",
@ -170,6 +173,7 @@
"fixes.viaversion.MixinInventoryPackets1_13",
"fixes.viaversion.MixinInventoryPackets1_17",
"fixes.viaversion.MixinInventoryTracker1_16",
"fixes.viaversion.MixinItemRewriter",
"fixes.viaversion.MixinMappingDataBase",
"fixes.viaversion.MixinMetadataRewriter1_15To1_14_4",
"fixes.viaversion.MixinMetadataRewriter1_9To1_8",
@ -195,10 +199,5 @@
},
"overwrites": {
"requireAnnotations": true
},
"mixins": [
"fixes.minecraft.item.MixinAxeItem",
"fixes.minecraft.item.MixinShovelItem",
"fixes.minecraft.item.MixinSwordItem"
]
}
}