Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-27 08:30:09 +01:00
Finish 23w51a, maybe
Dieser Commit ist enthalten in:
Ursprung
90781c9d27
Commit
2f8114abb1
@ -79,6 +79,8 @@ public interface MappingData {
|
||||
*/
|
||||
int getNewParticleId(int id);
|
||||
|
||||
int getNewAttributeId(int id);
|
||||
|
||||
/**
|
||||
* Returns a list of tags to send if present.
|
||||
*
|
||||
@ -105,6 +107,8 @@ public interface MappingData {
|
||||
|
||||
@Nullable Mappings getEnchantmentMappings();
|
||||
|
||||
@Nullable Mappings getAttributeMappings();
|
||||
|
||||
@Nullable FullMappings getEntityMappings();
|
||||
|
||||
@Nullable FullMappings getArgumentTypeMappings();
|
||||
|
@ -166,6 +166,11 @@ public class MappingDataBase implements MappingData {
|
||||
return checkValidity(id, particleMappings.getNewId(id), "particles");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNewAttributeId(final int id) {
|
||||
return checkValidity(id, attributeMappings.getNewId(id), "attributes");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable List<TagData> getTags(final RegistryType type) {
|
||||
return tags != null ? tags.get(type) : null;
|
||||
@ -216,6 +221,11 @@ public class MappingDataBase implements MappingData {
|
||||
return enchantmentMappings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Mappings getAttributeMappings() {
|
||||
return attributeMappings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable FullMappings getEntityMappings() {
|
||||
return entityMappings;
|
||||
|
@ -44,7 +44,7 @@ public class MappingData extends MappingDataBase {
|
||||
attributeMappings.put("generic.armorToughness", "minecraft:generic.armor_toughness");
|
||||
}
|
||||
|
||||
public BiMap<String, String> getAttributeMappings() {
|
||||
public BiMap<String, String> attributeIdentifierMappings() {
|
||||
return attributeMappings;
|
||||
}
|
||||
}
|
||||
|
@ -236,7 +236,7 @@ public class EntityPackets {
|
||||
for (int i = 0; i < size; i++) {
|
||||
// Attributes have been renamed and are now namespaced identifiers
|
||||
String key = wrapper.read(Type.STRING);
|
||||
String attributeIdentifier = protocol.getMappingData().getAttributeMappings().get(key);
|
||||
String attributeIdentifier = protocol.getMappingData().attributeIdentifierMappings().get(key);
|
||||
if (attributeIdentifier == null) {
|
||||
attributeIdentifier = Key.namespaced(key);
|
||||
if (!Key.isValid(attributeIdentifier)) {
|
||||
|
@ -244,8 +244,8 @@ public class InventoryPackets extends ItemRewriter<ClientboundPackets1_15, Serve
|
||||
attributeName = Key.namespaced(attributeName);
|
||||
}
|
||||
|
||||
String mappedAttribute = (inverse ? Protocol1_16To1_15_2.MAPPINGS.getAttributeMappings().inverse()
|
||||
: Protocol1_16To1_15_2.MAPPINGS.getAttributeMappings()).get(attributeName);
|
||||
String mappedAttribute = (inverse ? Protocol1_16To1_15_2.MAPPINGS.attributeIdentifierMappings().inverse()
|
||||
: Protocol1_16To1_15_2.MAPPINGS.attributeIdentifierMappings()).get(attributeName);
|
||||
if (mappedAttribute == null) return;
|
||||
|
||||
attributeNameTag.setValue(mappedAttribute);
|
||||
|
@ -17,20 +17,44 @@
|
||||
*/
|
||||
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
/**
|
||||
* String to/from int ID mappings for 1.20.3 attributes.
|
||||
*/
|
||||
public final class AttributeMappings {
|
||||
|
||||
private static final String[] ATTRIBUTES;
|
||||
private static final String[] ATTRIBUTES = {
|
||||
"generic.armor",
|
||||
"generic.armor_toughness",
|
||||
"generic.attack_damage",
|
||||
"generic.attack_knockback",
|
||||
"generic.attack_speed",
|
||||
"generic.flying_speed",
|
||||
"generic.follow_range",
|
||||
"horse.jump_strength",
|
||||
"generic.knockback_resistance",
|
||||
"generic.luck",
|
||||
"generic.max_absorption",
|
||||
"generic.max_health",
|
||||
"generic.movement_speed",
|
||||
"zombie.spawn_reinforcements"
|
||||
};
|
||||
private static final Object2IntMap<String> STRING_TO_ID = new Object2IntOpenHashMap<>();
|
||||
|
||||
static {
|
||||
|
||||
for (int i = 0; i < ATTRIBUTES.length; i++) {
|
||||
STRING_TO_ID.put(ATTRIBUTES[i], i);
|
||||
}
|
||||
}
|
||||
|
||||
public @Nullable String attribute(final int id) {
|
||||
public static @Nullable String attribute(final int id) {
|
||||
return id >= 0 && id < ATTRIBUTES.length ? ATTRIBUTES[id] : null;
|
||||
}
|
||||
|
||||
public int id(final String attribute) {
|
||||
public static int id(final String attribute) {
|
||||
return STRING_TO_ID.getOrDefault(attribute, -1);
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data.AttributeMappings;
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
import com.viaversion.viaversion.util.Key;
|
||||
|
||||
@ -37,9 +38,8 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
|
||||
@Override
|
||||
public void registerPackets() {
|
||||
// Tracks entities, applies metadata rewrites registered below, untracks entities
|
||||
registerTrackerWithData1_19(ClientboundPackets1_20_3.SPAWN_ENTITY, EntityTypes1_20_5.FALLING_BLOCK);
|
||||
registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_3.METADATA_LIST);
|
||||
registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, Types1_20_3.METADATA_LIST);
|
||||
registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES);
|
||||
|
||||
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() {
|
||||
@ -54,7 +54,7 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
protocol.registerClientbound(ClientboundPackets1_20_3.JOIN_GAME, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Type.INT); // Entity id
|
||||
map(Type.INT); // Entity ID
|
||||
map(Type.BOOLEAN); // Hardcore
|
||||
map(Type.STRING_ARRAY); // World List
|
||||
map(Type.VAR_INT); // Max players
|
||||
@ -79,8 +79,8 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_20_3.ENTITY_EFFECT, wrapper -> {
|
||||
wrapper.passthrough(Type.VAR_INT); // Entity id
|
||||
wrapper.passthrough(Type.VAR_INT); // Effect id
|
||||
wrapper.passthrough(Type.VAR_INT); // Entity ID
|
||||
wrapper.passthrough(Type.VAR_INT); // Effect ID
|
||||
wrapper.passthrough(Type.BYTE); // Amplifier
|
||||
wrapper.passthrough(Type.VAR_INT); // Duration
|
||||
wrapper.passthrough(Type.BYTE); // Flags
|
||||
@ -88,17 +88,19 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_20_3.ENTITY_PROPERTIES, wrapper -> {
|
||||
wrapper.passthrough(Type.VAR_INT); // Entity id
|
||||
wrapper.passthrough(Type.VAR_INT); // Entity ID
|
||||
|
||||
final int size = wrapper.passthrough(Type.VAR_INT);
|
||||
for (int i = 0; i < size; i++) {
|
||||
final String attributeIdentifier = Key.namespaced(wrapper.read(Type.STRING));
|
||||
wrapper.write(Type.VAR_INT, protocol.getMappingData());
|
||||
// From a string to a registry int ID
|
||||
final String attributeIdentifier = Key.stripMinecraftNamespace(wrapper.read(Type.STRING));
|
||||
final int id = AttributeMappings.id(attributeIdentifier);
|
||||
wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewAttributeId(id));
|
||||
|
||||
wrapper.passthrough(Type.DOUBLE); // Base
|
||||
final int modifierSize = wrapper.passthrough(Type.VAR_INT);
|
||||
for (int j = 0; j < modifierSize; j++) {
|
||||
wrapper.passthrough(Type.UUID); // Id
|
||||
wrapper.passthrough(Type.UUID); // ID
|
||||
wrapper.passthrough(Type.DOUBLE); // Amount
|
||||
wrapper.passthrough(Type.BYTE); // Operation
|
||||
}
|
||||
@ -108,15 +110,6 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
/* Uncomment if metatype classes changed
|
||||
filter().handler((event, meta) -> {
|
||||
int id = meta.metaType().typeId();
|
||||
if (id >= SomeAddedIndex) {
|
||||
id++;
|
||||
}
|
||||
meta.setMetaType(Types1_20_3.META_TYPES.byId(id));
|
||||
});*/
|
||||
|
||||
registerMetaTypeHandler(
|
||||
Types1_20_3.META_TYPES.itemType,
|
||||
Types1_20_3.META_TYPES.blockStateType,
|
||||
|
BIN
common/src/main/resources/assets/viaversion/data/identifiers-1.20.5.nbt
Normale Datei
BIN
common/src/main/resources/assets/viaversion/data/identifiers-1.20.5.nbt
Normale Datei
Binäre Datei nicht angezeigt.
Binäre Datei nicht angezeigt.
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren