mirror of
https://github.com/ViaVersion/ViaVersion.git
synced 2026-11-04 08:52:10 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4738945a7a | ||
|
|
4c55ef9cab | ||
|
|
a66dbf77aa | ||
|
|
c6cc380c3c | ||
|
|
cd3f146781 | ||
|
|
d0da13edd8 | ||
|
|
ec1f570f4b | ||
|
|
e41e216903 | ||
|
|
43ee417e20 | ||
|
|
4dc57e3d53 | ||
|
|
31f257fee1 | ||
|
|
cda72574fc | ||
|
|
ef1b6a10ea |
No files matched your search
@@ -15,7 +15,7 @@ jobs:
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # 5.0.1
|
||||
uses: gradle/actions/setup-gradle@39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f # 6.0.1
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 5.2.0
|
||||
with:
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
- name: Upload Artifacts to GitHub
|
||||
# Only upload on the preview repository as there is no CI job for it.
|
||||
if: ${{ github.repository == 'ViaVersion/ViaVersionDev' && github.ref_name == 'preview' }}
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # 6.0.0
|
||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # 7.0.0
|
||||
with:
|
||||
name: Artifacts
|
||||
path: build/libs/
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up Gradle
|
||||
uses: gradle/actions/setup-gradle@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # 5.0.1
|
||||
uses: gradle/actions/setup-gradle@39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f # 6.0.1
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 5.2.0
|
||||
with:
|
||||
|
||||
@@ -19,6 +19,8 @@ classes/
|
||||
*.ipr
|
||||
*.iws
|
||||
|
||||
benchmark/
|
||||
|
||||
# VSCode
|
||||
|
||||
.settings/
|
||||
|
||||
@@ -37,6 +37,7 @@ public interface ViaVersionCommand {
|
||||
/**
|
||||
* Removes a subcommand by name, can be used to unload default subcommands which are not supported
|
||||
* on the platform.
|
||||
*
|
||||
* @param name Subcommand name
|
||||
*/
|
||||
void removeSubCommand(String name);
|
||||
|
||||
@@ -31,8 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
* Represents an animal variant (e.g. for cows, pigs, chickens).
|
||||
*
|
||||
* @param modelType model type id
|
||||
* @param texture texture path
|
||||
* @param biomes biomes this variant can spawn in, if limited to specific biomes
|
||||
* @param texture texture path
|
||||
* @param biomes biomes this variant can spawn in, if limited to specific biomes
|
||||
*/
|
||||
public record AnimalVariant(int modelType, String texture, @Nullable HolderSet biomes) {
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public interface EitherHolder<T> {
|
||||
/**
|
||||
* Returns an indirect holder via the resource key.
|
||||
*
|
||||
* @param key the resource key
|
||||
* @param key the resource key
|
||||
* @param <T> the type of the value
|
||||
* @return a new holder with the given resource key
|
||||
*/
|
||||
|
||||
+2
-2
@@ -163,7 +163,7 @@ public final class DataPaletteImpl implements DataPalette {
|
||||
}
|
||||
}
|
||||
|
||||
private class ByteChunkData implements ChunkData {
|
||||
private final class ByteChunkData implements ChunkData {
|
||||
private final byte[] data;
|
||||
|
||||
public ByteChunkData(int size) {
|
||||
@@ -187,7 +187,7 @@ public final class DataPaletteImpl implements DataPalette {
|
||||
}
|
||||
}
|
||||
|
||||
private static class ShortChunkData implements ChunkData {
|
||||
private static final class ShortChunkData implements ChunkData {
|
||||
private final short[] data;
|
||||
|
||||
public ShortChunkData(byte[] data) {
|
||||
|
||||
@@ -53,7 +53,7 @@ public interface CodecContext {
|
||||
* Returns the key for a stored mapping type and its numeric id.
|
||||
*
|
||||
* @param mappingType mapping type
|
||||
* @param id numeric id
|
||||
* @param id numeric id
|
||||
* @return the key
|
||||
*/
|
||||
Key key(MappingData.MappingType mappingType, int id);
|
||||
@@ -62,7 +62,7 @@ public interface CodecContext {
|
||||
* Returns the numeric id for a stored mapping type and its identifier.
|
||||
*
|
||||
* @param mappingType mapping type
|
||||
* @param identifier identifier
|
||||
* @param identifier identifier
|
||||
* @return the numeric id, or -1 if not found
|
||||
*/
|
||||
int id(MappingData.MappingType mappingType, String identifier);
|
||||
@@ -75,7 +75,7 @@ public interface CodecContext {
|
||||
* Returns the key for a client-synchronized registry element.
|
||||
*
|
||||
* @param registry registry key
|
||||
* @param id numeric id
|
||||
* @param id numeric id
|
||||
* @return the key
|
||||
*/
|
||||
Key registryKey(String registry, int id);
|
||||
|
||||
@@ -81,12 +81,12 @@ public interface Ops {
|
||||
/**
|
||||
* Writes the given value or default value if the value is null.
|
||||
*
|
||||
* @param key map key
|
||||
* @param type type of the value
|
||||
* @param key map key
|
||||
* @param type type of the value
|
||||
* @param value the value to write, or null
|
||||
* @param def default value to write if the value is null
|
||||
* @param def default value to write if the value is null
|
||||
* @param <V> value type
|
||||
* @return self
|
||||
* @param <V> value type
|
||||
*/
|
||||
default <V> MapSerializer write(final String key, final Type<V> type, @Nullable final V value, final V def) {
|
||||
write(Types.STRING, key, type, value != null ? value : def);
|
||||
@@ -96,11 +96,11 @@ public interface Ops {
|
||||
/**
|
||||
* Writes the given value if it is not null.
|
||||
*
|
||||
* @param key map key
|
||||
* @param type type of the value
|
||||
* @param key map key
|
||||
* @param type type of the value
|
||||
* @param value the value to write, or null
|
||||
* @param <V> value type
|
||||
* @return self
|
||||
* @param <V> value type
|
||||
*/
|
||||
default <V> MapSerializer writeOptional(final String key, final Type<V> type, @Nullable final V value) {
|
||||
if (value != null) {
|
||||
@@ -112,12 +112,12 @@ public interface Ops {
|
||||
/**
|
||||
* Writes the given value if it is not null and not equal to the default value.
|
||||
*
|
||||
* @param key map key
|
||||
* @param type type of the value
|
||||
* @param key map key
|
||||
* @param type type of the value
|
||||
* @param value the value to write, or null
|
||||
* @param def default value to compare against
|
||||
* @param def default value to compare against
|
||||
* @param <V> value type
|
||||
* @return self
|
||||
* @param <V> value type
|
||||
*/
|
||||
default <V> MapSerializer writeOptional(final String key, final Type<V> type, @Nullable final V value, final V def) {
|
||||
if (value != null && !Objects.deepEquals(value, def)) {
|
||||
|
||||
+1
-1
@@ -145,13 +145,13 @@ public enum EntityTypes1_14 implements EntityType {
|
||||
SHEEP(ABSTRACT_ANIMAL),
|
||||
TURTLE(ABSTRACT_ANIMAL),
|
||||
FOX(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -146,13 +146,13 @@ public enum EntityTypes1_15 implements EntityType {
|
||||
BEE(ABSTRACT_ANIMAL),
|
||||
TURTLE(ABSTRACT_ANIMAL),
|
||||
FOX(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -148,13 +148,13 @@ public enum EntityTypes1_16 implements EntityType {
|
||||
FOX(ABSTRACT_ANIMAL),
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -148,13 +148,13 @@ public enum EntityTypes1_16_2 implements EntityType {
|
||||
FOX(ABSTRACT_ANIMAL),
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -154,13 +154,13 @@ public enum EntityTypes1_17 implements EntityType {
|
||||
GOAT(ABSTRACT_ANIMAL),
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -158,13 +158,13 @@ public enum EntityTypes1_19 implements EntityType {
|
||||
GOAT(ABSTRACT_ANIMAL),
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -158,13 +158,13 @@ public enum EntityTypes1_19_3 implements EntityType {
|
||||
GOAT(ABSTRACT_ANIMAL),
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -165,13 +165,13 @@ public enum EntityTypes1_19_4 implements EntityType {
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -166,13 +166,13 @@ public enum EntityTypes1_20_3 implements EntityType {
|
||||
HOGLIN(ABSTRACT_ANIMAL),
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -171,13 +171,13 @@ public enum EntityTypes1_20_5 implements EntityType {
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -185,6 +185,7 @@ public enum EntityTypes1_21_11 implements EntityType {
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
HAPPY_GHAST(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
ABSTRACT_COW(ABSTRACT_ANIMAL, null),
|
||||
COW(ABSTRACT_COW),
|
||||
@@ -192,7 +193,6 @@ public enum EntityTypes1_21_11 implements EntityType {
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -176,13 +176,13 @@ public enum EntityTypes1_21_2 implements EntityType {
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -176,13 +176,13 @@ public enum EntityTypes1_21_4 implements EntityType {
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
COW(ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(COW),
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -179,6 +179,7 @@ public enum EntityTypes1_21_5 implements EntityType {
|
||||
STRIDER(ABSTRACT_ANIMAL),
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
ABSTRACT_COW(ABSTRACT_ANIMAL, null),
|
||||
COW(ABSTRACT_COW),
|
||||
@@ -186,7 +187,6 @@ public enum EntityTypes1_21_5 implements EntityType {
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -180,6 +180,7 @@ public enum EntityTypes1_21_6 implements EntityType {
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
HAPPY_GHAST(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
ABSTRACT_COW(ABSTRACT_ANIMAL, null),
|
||||
COW(ABSTRACT_COW),
|
||||
@@ -187,7 +188,6 @@ public enum EntityTypes1_21_6 implements EntityType {
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+1
-1
@@ -185,6 +185,7 @@ public enum EntityTypes1_21_9 implements EntityType {
|
||||
SNIFFER(ABSTRACT_ANIMAL),
|
||||
ARMADILLO(ABSTRACT_ANIMAL),
|
||||
HAPPY_GHAST(ABSTRACT_ANIMAL),
|
||||
OCELOT(ABSTRACT_ANIMAL),
|
||||
|
||||
ABSTRACT_COW(ABSTRACT_ANIMAL, null),
|
||||
COW(ABSTRACT_COW),
|
||||
@@ -192,7 +193,6 @@ public enum EntityTypes1_21_9 implements EntityType {
|
||||
|
||||
TAMABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||
CAT(TAMABLE_ANIMAL),
|
||||
OCELOT(TAMABLE_ANIMAL),
|
||||
WOLF(TAMABLE_ANIMAL),
|
||||
PARROT(TAMABLE_ANIMAL),
|
||||
|
||||
|
||||
+4
@@ -43,6 +43,10 @@ public abstract class AbstractEntityDataTypes implements EntityDataTypes {
|
||||
return values;
|
||||
}
|
||||
|
||||
public Class<? extends EntityDataType> getDataTypeClass() {
|
||||
return byId(0).getClass();
|
||||
}
|
||||
|
||||
protected EntityDataType add(final int typeId, final Type<?> type) {
|
||||
if (values[typeId] != null) {
|
||||
throw new IllegalArgumentException("Entity data type ID " + typeId + " is already registered as " + values[typeId]);
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ public class ProtocolVersion implements Comparable<ProtocolVersion> {
|
||||
public static final ProtocolVersion v1_21_7 = register(772, "1.21.7-1.21.8", new SubVersionRange("1.21", 7, 8));
|
||||
public static final ProtocolVersion v1_21_9 = register(773, "1.21.9-1.21.10", new SubVersionRange("1.21", 9, 10));
|
||||
public static final ProtocolVersion v1_21_11 = register(774, "1.21.11");
|
||||
public static final ProtocolVersion v26_1 = register(775, "26.1-26.1.1", new SubVersionRange("26.1", 0, 1));
|
||||
public static final ProtocolVersion v26_1 = register(775, "26.1-26.1.2", new SubVersionRange("26.1", 0, 2));
|
||||
public static final ProtocolVersion unknown = new ProtocolVersion(VersionType.SPECIAL, -1, -1, "UNKNOWN", null);
|
||||
|
||||
static {
|
||||
|
||||
@@ -40,10 +40,7 @@ public interface EntityRewriter<T extends Protocol<?, ?, ?, ?>> extends Rewriter
|
||||
*/
|
||||
EntityType typeFromId(int type);
|
||||
|
||||
default @Nullable EntityType typeFromId(final String type) {
|
||||
final int id = protocol().getMappingData().getEntityMappings().id(type);
|
||||
return id == -1 ? null : typeFromId(id);
|
||||
}
|
||||
@Nullable EntityType typeFromId(String type);
|
||||
|
||||
/**
|
||||
* Returns the entity type from the given id.
|
||||
@@ -76,9 +73,9 @@ public interface EntityRewriter<T extends Protocol<?, ?, ?, ?>> extends Rewriter
|
||||
/**
|
||||
* Handles and transforms entity data of an entity.
|
||||
*
|
||||
* @param entityId entity id
|
||||
* @param dataList full, mutable list of entity data
|
||||
* @param connection user connection
|
||||
* @param entityId entity id
|
||||
* @param dataList full, mutable list of entity data
|
||||
* @param connection user connection
|
||||
*/
|
||||
void handleEntityData(int entityId, List<EntityData> dataList, UserConnection connection);
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
package com.viaversion.viaversion.api.rewriter;
|
||||
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.util.KeyMappings;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
|
||||
+2
-2
@@ -40,7 +40,7 @@ public class BlockEntityType1_20_2 extends Type<BlockEntity> {
|
||||
final byte xz = buffer.readByte();
|
||||
final short y = buffer.readShort();
|
||||
final int typeId = Types.VAR_INT.readPrimitive(buffer);
|
||||
final CompoundTag tag = Types.COMPOUND_TAG.read(buffer);
|
||||
final CompoundTag tag = Types.TRUSTED_COMPOUND_TAG.read(buffer);
|
||||
return new BlockEntityImpl(xz, y, typeId, tag);
|
||||
}
|
||||
|
||||
@@ -49,6 +49,6 @@ public class BlockEntityType1_20_2 extends Type<BlockEntity> {
|
||||
buffer.writeByte(entity.packedXZ());
|
||||
buffer.writeShort(entity.y());
|
||||
Types.VAR_INT.writePrimitive(buffer, entity.typeId());
|
||||
Types.COMPOUND_TAG.write(buffer, entity.tag());
|
||||
Types.TRUSTED_COMPOUND_TAG.write(buffer, entity.tag());
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ public final class Key {
|
||||
* Creates a new key with the given namespace and path.
|
||||
*
|
||||
* @param namespace the namespace of the identifier
|
||||
* @param path the path of the identifier
|
||||
* @param path the path of the identifier
|
||||
* @return a new key with the given namespace and path
|
||||
*/
|
||||
public static Key of(final String namespace, final String path) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||
import com.viaversion.viaversion.api.data.item.ItemHasher;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.Direction;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketType;
|
||||
@@ -37,6 +38,8 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.rewriter.MappingDataListener;
|
||||
import com.viaversion.viaversion.api.rewriter.Rewriter;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.exception.CancelException;
|
||||
import com.viaversion.viaversion.exception.InformativeException;
|
||||
import com.viaversion.viaversion.protocol.shared_registration.SharedRegistrations;
|
||||
@@ -277,10 +280,21 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
|
||||
}
|
||||
}
|
||||
|
||||
protected void addEntityTracker(UserConnection connection) {
|
||||
final EntityType playerEntityType = getEntityRewriter().typeFromId("player");
|
||||
Preconditions.checkNotNull(playerEntityType, "Player entity type not found");
|
||||
connection.addEntityTracker(this.getClass(), new EntityTrackerBase(connection, playerEntityType));
|
||||
}
|
||||
|
||||
protected void addEntityTracker(UserConnection connection, EntityTracker tracker) {
|
||||
connection.addEntityTracker(this.getClass(), tracker);
|
||||
}
|
||||
|
||||
protected void addItemHasher(UserConnection connection) {
|
||||
connection.addItemHasher(this.getClass(), new ItemHasherBase(this, connection));
|
||||
}
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
protected void addItemHasher(UserConnection connection, ItemHasher hasher) {
|
||||
connection.addItemHasher(this.getClass(), hasher);
|
||||
}
|
||||
@@ -512,31 +526,6 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
|
||||
return logger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable TagRewriter<CU> getTagRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable ComponentRewriterBase<CU> getComponentRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public com.viaversion.viaversion.rewriter.@Nullable ParticleRewriter<CU> getParticleRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public com.viaversion.viaversion.rewriter.@Nullable EntityRewriter<CU, ?> getEntityRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public com.viaversion.viaversion.rewriter.@Nullable ItemRewriter<CU, SU, ?> getItemRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public com.viaversion.viaversion.rewriter.@Nullable BlockRewriter<CU> getBlockRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import io.netty.channel.ChannelFuture;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.handler.codec.CodecException;
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
@@ -52,7 +53,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.function.Function;
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
public class UserConnectionImpl implements UserConnection {
|
||||
|
||||
@@ -34,8 +34,6 @@ import com.viaversion.viaversion.codec.CodecRegistryContext;
|
||||
import com.viaversion.viaversion.codec.hash.HashFunction;
|
||||
import com.viaversion.viaversion.codec.hash.HashOps;
|
||||
import it.unimi.dsi.fastutil.ints.Int2IntMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
@@ -58,7 +56,7 @@ public class ItemHasherBase implements ItemHasher {
|
||||
/**
|
||||
* Returns the hashed item for the given item. Not all data may be successfully hashed.
|
||||
*
|
||||
* @param item the item to hash
|
||||
* @param item the item to hash
|
||||
* @param mapped whether the item is mapped to the client version
|
||||
* @return the hashed item
|
||||
*/
|
||||
@@ -83,7 +81,7 @@ public class ItemHasherBase implements ItemHasher {
|
||||
/**
|
||||
* Tracks the data for the given data container, storing the original hashes via the now transformed data hashes.
|
||||
*
|
||||
* @param customData custom_data tag
|
||||
* @param customData custom_data tag
|
||||
* @param originalHashedItem the original (pre-transformed) hashed item
|
||||
*/
|
||||
public void trackOriginalHashedItem(final CompoundTag customData, final HashedItem originalHashedItem) {
|
||||
@@ -97,7 +95,7 @@ public class ItemHasherBase implements ItemHasher {
|
||||
* Returns a copy of the original hashed item for a given custom_data hash.
|
||||
*
|
||||
* @param customDataHash custom_data hash
|
||||
* @param clientItem the hashed item from the client that the original should be retrieved for
|
||||
* @param clientItem the hashed item from the client that the original should be retrieved for
|
||||
* @return the original hashed item, or null if not found
|
||||
*/
|
||||
public @Nullable HashedItem originalHashedItem(final int customDataHash, final HashedItem clientItem) {
|
||||
|
||||
+1
-1
@@ -91,6 +91,6 @@ final class EntityRegistrations {
|
||||
|
||||
|
||||
static @Nullable <CU extends ClientboundPacketType, SU extends ServerboundPacketType> EntityRewriter<CU, ?> entity(final RegistrationContext<CU, SU> ctx) {
|
||||
return ctx.protocol().getEntityRewriter();
|
||||
return (EntityRewriter<CU, ?>) ctx.protocol().getEntityRewriter();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -176,7 +176,7 @@ final class ItemRegistrations {
|
||||
}
|
||||
|
||||
static @Nullable <CU extends ClientboundPacketType, SU extends ServerboundPacketType> ItemRewriter<CU, SU, ?> item(final RegistrationContext<CU, SU> ctx) {
|
||||
return ctx.protocol().getItemRewriter();
|
||||
return (ItemRewriter<CU, SU, ?>) ctx.protocol().getItemRewriter();
|
||||
}
|
||||
|
||||
static @Nullable <CU extends ClientboundPacketType, SU extends ServerboundPacketType> StructuredItemRewriter<CU, SU, ?> structuredItem(final RegistrationContext<CU, SU> ctx) {
|
||||
|
||||
+1
-1
@@ -69,6 +69,6 @@ final class ParticleRegistrations {
|
||||
}
|
||||
|
||||
static @Nullable <CU extends ClientboundPacketType, SU extends ServerboundPacketType> ParticleRewriter<CU> particle(final RegistrationContext<CU, SU> ctx) {
|
||||
return ctx.protocol().getParticleRewriter();
|
||||
return (ParticleRewriter<CU>) ctx.protocol().getParticleRewriter();
|
||||
}
|
||||
}
|
||||
+8
-5
@@ -36,18 +36,21 @@ import com.viaversion.viaversion.rewriter.AttributeRewriter;
|
||||
import com.viaversion.viaversion.rewriter.RecipeDisplayRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
|
||||
final class RegistryRegistrations {
|
||||
|
||||
static <CU extends ClientboundPacketType> void registerTags1_17_1(final RegistrationContext<CU, ?> ctx) {
|
||||
if (ctx.protocol().getTagRewriter() == null) return;
|
||||
ctx.clientbound(ClientboundPackets1_17_1.UPDATE_TAGS, ctx.protocol().getTagRewriter()::registerGeneric);
|
||||
if (ctx.protocol().getTagRewriter() instanceof final TagRewriter tagRewriter) {
|
||||
ctx.clientbound(ClientboundPackets1_17_1.UPDATE_TAGS, tagRewriter::registerGeneric);
|
||||
}
|
||||
}
|
||||
|
||||
static <CU extends ClientboundPacketType> void registerTags1_20_2(final RegistrationContext<CU, ?> ctx) {
|
||||
if (ctx.protocol().getTagRewriter() == null) return;
|
||||
ctx.clientbound(ClientboundPackets1_20_2.UPDATE_TAGS, ctx.protocol().getTagRewriter()::registerGeneric);
|
||||
ctx.clientbound(ClientboundConfigurationPackets1_20_2.UPDATE_TAGS, ctx.protocol().getTagRewriter()::registerGeneric, PacketBound.ADDED_AT_MIN);
|
||||
if (ctx.protocol().getTagRewriter() instanceof final TagRewriter tagRewriter) {
|
||||
ctx.clientbound(ClientboundPackets1_20_2.UPDATE_TAGS, tagRewriter::registerGeneric);
|
||||
ctx.clientbound(ClientboundConfigurationPackets1_20_2.UPDATE_TAGS, tagRewriter::registerGeneric, PacketBound.ADDED_AT_MIN);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -184,7 +184,7 @@ final class TextComponentRegistrations {
|
||||
}
|
||||
|
||||
static @Nullable <CU extends ClientboundPacketType, SU extends ServerboundPacketType> ComponentRewriterBase<CU> text(final RegistrationContext<CU, SU> ctx) {
|
||||
return ctx.protocol().getComponentRewriter();
|
||||
return (ComponentRewriterBase<CU>) ctx.protocol().getComponentRewriter();
|
||||
}
|
||||
|
||||
|
||||
|
||||
+8
-11
@@ -25,8 +25,6 @@ import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPack
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ServerboundPacket1_21_9;
|
||||
import com.viaversion.viaversion.rewriter.StructuredItemRewriter;
|
||||
|
||||
// To replace if needed:
|
||||
// RecipeDisplayRewriter
|
||||
final class BlockItemPacketRewriter99_1 extends StructuredItemRewriter<ClientboundPacket26_1, ServerboundPacket1_21_9, Protocol98_1To99_1> {
|
||||
|
||||
public BlockItemPacketRewriter99_1(final Protocol98_1To99_1 protocol) {
|
||||
@@ -36,9 +34,7 @@ final class BlockItemPacketRewriter99_1 extends StructuredItemRewriter<Clientbou
|
||||
@Override
|
||||
public void registerPackets() {
|
||||
// Common block, item, recipe, and entity registrations are handled by SharedRegistrations
|
||||
|
||||
// registerOpenScreen(ClientboundPackets26_1.OPEN_SCREEN); If a new container type was added; also remove from the component rewriter registration
|
||||
// OR add new serializers to RecipeDisplayRewriter, or extend the last one for changes
|
||||
// If recipe serializers changed: add new serializers to RecipeDisplayRewriter, or extend the last one for changes
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,20 +45,21 @@ final class BlockItemPacketRewriter99_1 extends StructuredItemRewriter<Clientbou
|
||||
|
||||
@Override
|
||||
protected void handleItemDataComponentsToClient(final UserConnection connection, final Item item, final StructuredDataContainer container) {
|
||||
upgradeData(item, container);
|
||||
upgradeData(container);
|
||||
super.handleItemDataComponentsToClient(connection, item, container);
|
||||
}
|
||||
|
||||
public static void upgradeData(final Item item, final StructuredDataContainer container) { // public for VB
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleItemDataComponentsToServer(final UserConnection connection, final Item item, final StructuredDataContainer container) {
|
||||
downgradeData(item, container);
|
||||
downgradeData(container);
|
||||
super.handleItemDataComponentsToServer(connection, item, container);
|
||||
}
|
||||
|
||||
public static void downgradeData(final Item item, final StructuredDataContainer container) {
|
||||
// public for VB
|
||||
public static void upgradeData(final StructuredDataContainer container) {
|
||||
}
|
||||
|
||||
public static void downgradeData(final StructuredDataContainer container) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+8
-12
@@ -24,7 +24,6 @@ import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPack
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
|
||||
// Replace if needed
|
||||
// VersionedTypes
|
||||
// EntityTypes1_21_11
|
||||
final class EntityPacketRewriter99_1 extends EntityRewriter<ClientboundPacket26_1, Protocol98_1To99_1> {
|
||||
|
||||
@@ -34,22 +33,19 @@ final class EntityPacketRewriter99_1 extends EntityRewriter<ClientboundPacket26_
|
||||
|
||||
@Override
|
||||
public void registerPackets() {
|
||||
// Common entity registrations (SET_ENTITY_DATA, REMOVE_ENTITIES, PLAYER_ABILITIES,
|
||||
// GAME_EVENT, LOGIN, RESPAWN) are handled by SharedRegistrations.
|
||||
// Common entity registrations (including LOGIN, RESPAWN) are handled by SharedRegistrations.
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
final EntityDataTypes26_1 entityDataTypes = protocol.mappedTypes().entityDataTypes();
|
||||
filter().mapDataType(entityDataTypes::byId);
|
||||
/* ... or something this if entity data classes changed
|
||||
filter().mapDataType(typeId -> {
|
||||
int id = typeId;
|
||||
if (id >= SomeAddedIndex) {
|
||||
id++;
|
||||
}
|
||||
return entityDataTypes.byId(id);
|
||||
});*/
|
||||
dataTypeMapper().register();
|
||||
/* ... or like this for additions and removals that are not at the very end
|
||||
dataTypeMapper()
|
||||
.added(entityDataTypes.catSoundVariant)
|
||||
.removed(entityDataTypes.cowSoundVariant)
|
||||
.skip(entityDataTypes.pigSoundVariant) // if neither removed nor added, but the value type has to be changed separately
|
||||
.register();*/
|
||||
|
||||
// Registers registry type id changes
|
||||
registerEntityDataTypeHandler(
|
||||
|
||||
+5
-27
@@ -21,16 +21,13 @@ import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.MappingData;
|
||||
import com.viaversion.viaversion.api.data.MappingDataBase;
|
||||
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_11;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes26_1;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType26_1;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPacket26_1;
|
||||
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPackets26_1;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ServerboundPackets1_21_6;
|
||||
@@ -49,7 +46,6 @@ import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap;
|
||||
// Placeholders to replace (in the entire package):
|
||||
// ClientboundPacket26_1
|
||||
// ServerboundPacket1_21_9
|
||||
// EntityDataTypes26_1 (MAPPED type)
|
||||
// VersionedTypes.V26_1
|
||||
// ChunkType26_1::new
|
||||
// 98.1, 99.1
|
||||
@@ -96,26 +92,8 @@ final class Protocol98_1To99_1 extends AbstractProtocol<ClientboundPacket26_1, C
|
||||
// Uncomment this if the entity types enum has been newly added specifically for this Protocol
|
||||
// EntityTypes1_21_11.initialize(this);
|
||||
|
||||
// Uncomment if a new particle was added = ids shifted; requires a new Types_ class copied from the last
|
||||
/*mappedTypes().particle.filler(this)
|
||||
.reader("block", ParticleType.Readers.BLOCK)
|
||||
.reader("block_marker", ParticleType.Readers.BLOCK)
|
||||
.reader("dust_pillar", ParticleType.Readers.BLOCK)
|
||||
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
||||
.reader("block_crumble", ParticleType.Readers.BLOCK)
|
||||
.reader("dust", ParticleType.Readers.DUST1_21_2)
|
||||
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION1_21_2)
|
||||
.reader("vibration", ParticleType.Readers.VIBRATION1_20_3)
|
||||
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
||||
.reader("shriek", ParticleType.Readers.SHRIEK)
|
||||
.reader("entity_effect", ParticleType.Readers.COLOR)
|
||||
.reader("tinted_leaves", ParticleType.Readers.COLOR)
|
||||
.reader("trail", ParticleType.Readers.TRAIL1_21_4)
|
||||
.reader("dragon_breath", ParticleType.Readers.POWER)
|
||||
.reader("effect", ParticleType.Readers.SPELL)
|
||||
.reader("instant_effect", ParticleType.Readers.SPELL)
|
||||
.reader("flash", ParticleType.Readers.COLOR)
|
||||
.reader("item", ParticleType.Readers.item(itemRewriter.mappedItemTemplateType()));*/
|
||||
// Uncomment if versioned types changed
|
||||
// ParticleType.Fillers.fill1_21_9(this);
|
||||
|
||||
super.onMappingDataLoaded(); // Calls load methods on rewriters. Last in case the rewriters access the above filled data
|
||||
}
|
||||
@@ -123,8 +101,8 @@ final class Protocol98_1To99_1 extends AbstractProtocol<ClientboundPacket26_1, C
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
// Register the entity tracker - used for entity id/entity data rewriting AND for tracking world data sent to the client (then used for chunk data rewriting)
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_11.PLAYER));
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
addEntityTracker(connection);
|
||||
addItemHasher(connection);
|
||||
}
|
||||
|
||||
// Overriding these methods is important as they are relied on various rewriter classes
|
||||
|
||||
+6
-7
@@ -64,7 +64,6 @@ import com.viaversion.viaversion.protocols.v1_12_2to1_13.storage.BlockStorage;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.storage.TabCompleteTracker;
|
||||
import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1;
|
||||
import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.util.ChatColorUtil;
|
||||
import com.viaversion.viaversion.util.ComponentUtil;
|
||||
import com.viaversion.viaversion.util.GsonUtil;
|
||||
@@ -678,7 +677,7 @@ public class Protocol1_12_2To1_13 extends AbstractProtocol<ClientboundPackets1_1
|
||||
|
||||
String stringMode = mode == 0 ? "SEQUENCE"
|
||||
: mode == 1 ? "AUTO"
|
||||
: "REDSTONE";
|
||||
: "REDSTONE";
|
||||
|
||||
wrapper.write(Types.BOOLEAN, (flags & 0x1) != 0); // Track output
|
||||
wrapper.write(Types.STRING, stringMode);
|
||||
@@ -719,8 +718,8 @@ public class Protocol1_12_2To1_13 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public String transform(PacketWrapper wrapper, Integer mode) {
|
||||
return mode == 0 ? "SAVE"
|
||||
: mode == 1 ? "LOAD"
|
||||
: mode == 2 ? "CORNER"
|
||||
: "DATA";
|
||||
: mode == 2 ? "CORNER"
|
||||
: "DATA";
|
||||
}
|
||||
});
|
||||
map(Types.STRING); // Name
|
||||
@@ -735,7 +734,7 @@ public class Protocol1_12_2To1_13 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public String transform(PacketWrapper wrapper, Integer mirror) {
|
||||
return mirror == 0 ? "NONE"
|
||||
: mirror == 1 ? "LEFT_RIGHT"
|
||||
: "FRONT_BACK";
|
||||
: "FRONT_BACK";
|
||||
}
|
||||
});
|
||||
map(Types.VAR_INT, new ValueTransformer<>(Types.STRING) { // Rotation
|
||||
@@ -743,8 +742,8 @@ public class Protocol1_12_2To1_13 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public String transform(PacketWrapper wrapper, Integer rotation) {
|
||||
return rotation == 0 ? "NONE"
|
||||
: rotation == 1 ? "CLOCKWISE_90"
|
||||
: rotation == 2 ? "CLOCKWISE_180"
|
||||
: "COUNTERCLOCKWISE_90";
|
||||
: rotation == 2 ? "CLOCKWISE_180"
|
||||
: "COUNTERCLOCKWISE_90";
|
||||
}
|
||||
});
|
||||
map(Types.STRING);
|
||||
|
||||
-1
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.Protocol1_16_1To1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
-2
@@ -18,11 +18,9 @@
|
||||
package com.viaversion.viaversion.protocols.v1_20_3to1_20_5.data;
|
||||
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.nbt.tag.StringTag;
|
||||
import com.viaversion.viaversion.api.data.MappingDataBase;
|
||||
import com.viaversion.viaversion.api.data.MappingDataLoader;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5;
|
||||
import com.viaversion.viaversion.util.KeyMappings;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||
|
||||
+6
-1
@@ -267,7 +267,8 @@ public final class StructuredDataConverter {
|
||||
|
||||
final CompoundTag propertiesTag = new CompoundTag();
|
||||
for (final GameProfile.Property property : data.properties()) {
|
||||
final ListTag<CompoundTag> values = new ListTag<>(CompoundTag.class);
|
||||
ListTag<CompoundTag> values = propertiesTag.getListTag(property.name(), CompoundTag.class);
|
||||
if (values == null) values = new ListTag<>(CompoundTag.class);
|
||||
final CompoundTag propertyTag = new CompoundTag();
|
||||
propertyTag.putString("Value", property.value());
|
||||
if (property.signature() != null) {
|
||||
@@ -655,6 +656,10 @@ public final class StructuredDataConverter {
|
||||
getBackupTag(tag).putInt("ominous_bottle_amplifier", data);
|
||||
}
|
||||
});
|
||||
register(StructuredDataKey.MAP_POST_PROCESSING, (data, tag) -> {
|
||||
});
|
||||
register(StructuredDataKey.CREATIVE_SLOT_LOCK, (data, tag) -> {
|
||||
});
|
||||
}
|
||||
|
||||
private int unmappedItemId(final int id) {
|
||||
|
||||
-2
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.minecraft.item.data.AttributeModifiers1_21;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.Enchantments;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.rewriter.RecipeRewriter1_20_3;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5;
|
||||
@@ -39,7 +38,6 @@ import com.viaversion.viaversion.protocols.v1_20_5to1_21.Protocol1_20_5To1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.data.AttributeModifierMappings1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.storage.EfficiencyAttributeStorage;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.storage.PlayerPositionStorage;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StructuredItemRewriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
+11
-12
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.minecraft.PaintingVariant;
|
||||
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
@@ -177,17 +176,17 @@ public final class EntityPacketRewriter1_21 extends EntityRewriter<ClientboundPa
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
filter().handler((event, data) -> {
|
||||
final EntityDataType type = data.dataType();
|
||||
if (type == VersionedTypes.V1_20_5.entityDataTypes.wolfVariantType) {
|
||||
final int variant = data.value();
|
||||
data.setTypeAndValue(VersionedTypes.V1_21.entityDataTypes.wolfVariantType, Holder.of(variant));
|
||||
} else if (type == VersionedTypes.V1_20_5.entityDataTypes.paintingVariantType) {
|
||||
final int variant = data.value();
|
||||
data.setTypeAndValue(VersionedTypes.V1_21.entityDataTypes.paintingVariantType, Holder.of(variant));
|
||||
} else {
|
||||
data.setDataType(VersionedTypes.V1_21.entityDataTypes.byId(type.typeId()));
|
||||
}
|
||||
dataTypeMapper()
|
||||
.skip(VersionedTypes.V1_20_5.entityDataTypes.wolfVariantType)
|
||||
.skip(VersionedTypes.V1_20_5.entityDataTypes.paintingVariantType)
|
||||
.register();
|
||||
filter().dataType(VersionedTypes.V1_20_5.entityDataTypes.paintingVariantType).handler((event, data) -> {
|
||||
final int variant = data.value();
|
||||
data.setTypeAndValue(VersionedTypes.V1_21.entityDataTypes.paintingVariantType, Holder.of(variant));
|
||||
});
|
||||
filter().dataType(VersionedTypes.V1_20_5.entityDataTypes.wolfVariantType).handler((event, data) -> {
|
||||
final int variant = data.value();
|
||||
data.setTypeAndValue(VersionedTypes.V1_21.entityDataTypes.wolfVariantType, Holder.of(variant));
|
||||
});
|
||||
registerEntityDataTypeHandler(
|
||||
VersionedTypes.V1_21.entityDataTypes.itemType,
|
||||
|
||||
+1
-2
@@ -40,7 +40,6 @@ import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.protocols.v1_21_11to26_1.data.MappingData26_1;
|
||||
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPacket26_1;
|
||||
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPackets26_1;
|
||||
@@ -278,7 +277,7 @@ public final class Protocol1_21_11To26_1 extends AbstractProtocol<ClientboundPac
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_11.PLAYER));
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
addItemHasher(connection);
|
||||
connection.put(new PlayerSneaking());
|
||||
}
|
||||
|
||||
|
||||
+7
-3
@@ -58,9 +58,13 @@ public final class BlockItemPacketRewriter26_1 extends StructuredItemRewriter<Cl
|
||||
protocol.replaceClientbound(ClientboundPackets1_21_11.LEVEL_CHUNK_WITH_LIGHT, wrapper -> {
|
||||
final Chunk chunk = protocol.getBlockRewriter().handleChunk1_18(wrapper);
|
||||
for (final ChunkSection section : chunk.getSections()) {
|
||||
if (section.getNonAirBlocksCount() == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
final DataPalette blockPalette = section.palette(PaletteType.BLOCKS);
|
||||
for (int i = 0; i < blockPalette.size(); i++) {
|
||||
final int id = blockPalette.idByIndex(i);
|
||||
for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
|
||||
final int id = blockPalette.idAt(idx);
|
||||
if (Protocol1_21_11To26_1.MAPPINGS.fluidBlockStates().contains(id)) {
|
||||
// Needed for certain client-side fluid interactions
|
||||
section.setFluidCount(section.getFluidCount() + 1);
|
||||
@@ -78,7 +82,7 @@ public final class BlockItemPacketRewriter26_1 extends StructuredItemRewriter<Cl
|
||||
}
|
||||
|
||||
public static void upgradeData(final Protocol<?, ?, ?, ?> protocol, final StructuredDataKeys1_21_11 dataKeys, final StructuredDataContainer container) {
|
||||
container.replace(StructuredDataKey.JUKEBOX_PLAYABLE1_21_5, StructuredDataKey.JUKEBOX_PLAYABLE26_1, jukeboxPlayable -> upgradeHolder(protocol, jukeboxPlayable.song(), "jukebox_playable"));
|
||||
container.replace(StructuredDataKey.JUKEBOX_PLAYABLE1_21_5, StructuredDataKey.JUKEBOX_PLAYABLE26_1, jukeboxPlayable -> upgradeHolder(protocol, jukeboxPlayable.song(), "jukebox_song"));
|
||||
container.replace(StructuredDataKey.INSTRUMENT1_21_5, StructuredDataKey.INSTRUMENT26_1, instrument -> upgradeHolder(protocol, instrument, "instrument"));
|
||||
container.replace(StructuredDataKey.PROVIDES_TRIM_MATERIAL1_21_5, StructuredDataKey.PROVIDES_TRIM_MATERIAL26_1, providesTrimMaterial -> upgradeHolder(protocol, providesTrimMaterial.material(), "trim_material"));
|
||||
container.replace(StructuredDataKey.CHICKEN_VARIANT1_21_5, StructuredDataKey.CHICKEN_VARIANT26_1, chickenVariant -> upgradeEitherVariant(protocol, chickenVariant, "chicken_variant"));
|
||||
|
||||
+6
-16
@@ -80,22 +80,12 @@ public final class EntityPacketRewriter26_1 extends EntityRewriter<ClientboundPa
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
final EntityDataTypes26_1 entityDataTypes = protocol.mappedTypes().entityDataTypes();
|
||||
filter().mapDataType(id -> {
|
||||
int mappedId = id;
|
||||
if (mappedId >= entityDataTypes.catSoundVariant.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
if (mappedId >= entityDataTypes.cowSoundVariant.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
if (mappedId >= entityDataTypes.pigSoundVariant.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
if (mappedId >= entityDataTypes.chickenSoundVariant.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
return entityDataTypes.byId(mappedId);
|
||||
});
|
||||
dataTypeMapper()
|
||||
.added(entityDataTypes.catSoundVariant)
|
||||
.added(entityDataTypes.cowSoundVariant)
|
||||
.added(entityDataTypes.pigSoundVariant)
|
||||
.added(entityDataTypes.chickenSoundVariant)
|
||||
.register();
|
||||
registerEntityDataTypeHandler(
|
||||
entityDataTypes.itemType,
|
||||
entityDataTypes.blockStateType,
|
||||
|
||||
+1
-1
@@ -24,6 +24,7 @@ import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_4;
|
||||
import com.viaversion.viaversion.api.platform.providers.ViaProviders;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
@@ -31,7 +32,6 @@ import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypesHolder;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundConfigurationPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfigurationPackets1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.packet.ServerboundPacket1_21_4;
|
||||
|
||||
+1
-3
@@ -23,12 +23,10 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_4;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfigurationPackets1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.Protocol1_21_2To1_21_4;
|
||||
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.packet.ServerboundPackets1_21_4;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
|
||||
|
||||
public final class EntityPacketRewriter1_21_4 extends EntityRewriter<ClientboundPacket1_21_2, Protocol1_21_2To1_21_4> {
|
||||
|
||||
@@ -67,7 +65,7 @@ public final class EntityPacketRewriter1_21_4 extends EntityRewriter<Clientbound
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
filter().mapDataType(VersionedTypes.V1_21_4.entityDataTypes::byId);
|
||||
dataTypeMapper().register();
|
||||
|
||||
registerEntityDataTypeHandler(
|
||||
VersionedTypes.V1_21_4.entityDataTypes.itemType,
|
||||
|
||||
+1
-1
@@ -197,7 +197,7 @@ public final class Protocol1_21_4To1_21_5 extends AbstractProtocol<ClientboundPa
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_4.PLAYER));
|
||||
addItemHasher(connection, new ItemHashStorage1_21_5(this));
|
||||
connection.addItemHasher(this.getClass(), new ItemHashStorage1_21_5(this));
|
||||
connection.put(new MessageIndexStorage());
|
||||
}
|
||||
|
||||
|
||||
-5
@@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.data.MappingData;
|
||||
import com.viaversion.viaversion.api.data.Mappings;
|
||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||
import com.viaversion.viaversion.api.minecraft.EitherHolder;
|
||||
import com.viaversion.viaversion.api.minecraft.Holder;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_21_5;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
|
||||
@@ -42,7 +41,6 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.minecraft.item.StructuredItem;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.AdventureModePredicate;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.ArmorTrim;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.ArmorTrimPattern;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.AttributeModifiers1_21;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.BlockPredicate;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.BlocksAttacks;
|
||||
@@ -62,15 +60,12 @@ import com.viaversion.viaversion.api.type.types.chunk.ChunkBiomesType1_21_5;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_21_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.protocol.packet.PacketWrapperImpl;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.Protocol1_21_4To1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.packet.ServerboundPacket1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.packet.ServerboundPackets1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.storage.ItemHashStorage1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPackets1_21_2;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import com.viaversion.viaversion.rewriter.RecipeDisplayRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StructuredItemRewriter;
|
||||
import com.viaversion.viaversion.util.Key;
|
||||
import com.viaversion.viaversion.util.Limit;
|
||||
|
||||
+10
-22
@@ -186,28 +186,16 @@ public final class EntityPacketRewriter1_21_5 extends EntityRewriter<Clientbound
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
filter().handler((event, data) -> {
|
||||
final int id = data.dataType().typeId();
|
||||
if (id == VersionedTypes.V1_21_4.entityDataTypes.wolfVariantType.typeId()) {
|
||||
final Holder<WolfVariant> wolfVariant = data.value();
|
||||
data.setTypeAndValue(VersionedTypes.V1_21_5.entityDataTypes.wolfVariantType, wolfVariant.hasId() ? wolfVariant.id() : 0);
|
||||
return;
|
||||
}
|
||||
|
||||
int mappedId = id;
|
||||
if (mappedId >= VersionedTypes.V1_21_5.entityDataTypes.cowVariantType.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
if (mappedId >= VersionedTypes.V1_21_5.entityDataTypes.wolfSoundVariantType.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
if (mappedId >= VersionedTypes.V1_21_5.entityDataTypes.pigVariantType.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
if (mappedId >= VersionedTypes.V1_21_5.entityDataTypes.chickenVariantType.typeId()) {
|
||||
mappedId++;
|
||||
}
|
||||
data.setDataType(VersionedTypes.V1_21_5.entityDataTypes.byId(mappedId));
|
||||
dataTypeMapper()
|
||||
.added(VersionedTypes.V1_21_5.entityDataTypes.cowVariantType)
|
||||
.added(VersionedTypes.V1_21_5.entityDataTypes.wolfSoundVariantType)
|
||||
.added(VersionedTypes.V1_21_5.entityDataTypes.pigVariantType)
|
||||
.added(VersionedTypes.V1_21_5.entityDataTypes.chickenVariantType)
|
||||
.skip(VersionedTypes.V1_21_4.entityDataTypes.wolfVariantType)
|
||||
.register();
|
||||
filter().dataType(VersionedTypes.V1_21_4.entityDataTypes.wolfVariantType).handler((event, data) -> {
|
||||
final Holder<WolfVariant> wolfVariant = data.value();
|
||||
data.setTypeAndValue(VersionedTypes.V1_21_5.entityDataTypes.wolfVariantType, wolfVariant.hasId() ? wolfVariant.id() : 0);
|
||||
});
|
||||
|
||||
registerEntityDataTypeHandler(
|
||||
|
||||
+1
-2
@@ -32,7 +32,6 @@ import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypesHolder;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundConfigurationPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfigurationPackets1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.packet.ClientboundPacket1_21_5;
|
||||
@@ -148,7 +147,7 @@ public final class Protocol1_21_5To1_21_6 extends AbstractProtocol<ClientboundPa
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_6.PLAYER));
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
addItemHasher(connection);
|
||||
connection.put(new SneakStorage());
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ public final class EntityPacketRewriter1_21_6 extends EntityRewriter<Clientbound
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
final EntityDataTypes1_21_5 entityDataTypes = VersionedTypes.V1_21_6.entityDataTypes;
|
||||
filter().mapDataType(entityDataTypes::byId);
|
||||
dataTypeMapper().register();
|
||||
registerEntityDataTypeHandler(
|
||||
entityDataTypes.itemType,
|
||||
entityDataTypes.blockStateType,
|
||||
|
||||
+2
-3
@@ -23,14 +23,13 @@ import com.viaversion.viaversion.api.data.MappingDataBase;
|
||||
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_5;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_6;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_5;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_21_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.rewriter.RecipeDisplayRewriter1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ClientboundConfigurationPackets1_21_6;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ClientboundPacket1_21_6;
|
||||
@@ -71,7 +70,7 @@ public final class Protocol1_21_6To1_21_7 extends AbstractProtocol<ClientboundPa
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_6.PLAYER));
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
addItemHasher(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-3
@@ -25,6 +25,7 @@ import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_9;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_5;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_9;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
@@ -33,8 +34,6 @@ import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.rewriter.RecipeDisplayRewriter1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ClientboundConfigurationPackets1_21_6;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ClientboundPacket1_21_6;
|
||||
@@ -163,7 +162,7 @@ public final class Protocol1_21_7To1_21_9 extends AbstractProtocol<ClientboundPa
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_9.PLAYER));
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
addItemHasher(connection);
|
||||
connection.put(new DimensionScaleStorage());
|
||||
}
|
||||
|
||||
|
||||
-1
@@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ClientboundPacket1_21_6;
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.Protocol1_21_7To1_21_9;
|
||||
import com.viaversion.viaversion.rewriter.text.NBTComponentRewriter;
|
||||
import com.viaversion.viaversion.util.TagUtil;
|
||||
|
||||
public final class ComponentRewriter1_21_9 extends NBTComponentRewriter<ClientboundPacket1_21_6> {
|
||||
|
||||
|
||||
+5
-18
@@ -103,24 +103,11 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
protected void registerRewrites() {
|
||||
final EntityDataTypes1_21_5 unmappedEntityDataTypes = protocol.types().entityDataTypes();
|
||||
final EntityDataTypes1_21_9 entityDataTypes = protocol.mappedTypes().entityDataTypes();
|
||||
filter().handler((event, data) -> {
|
||||
int id = data.dataType().typeId();
|
||||
if (id == unmappedEntityDataTypes.compoundTagType.typeId()) {
|
||||
if (event.entityType() == null) {
|
||||
// Remove unhandled data from bad packets here
|
||||
event.cancel();
|
||||
}
|
||||
return; // Handled below
|
||||
}
|
||||
if (id > unmappedEntityDataTypes.compoundTagType.typeId()) {
|
||||
id--;
|
||||
}
|
||||
if (id > entityDataTypes.armadilloState.typeId()) {
|
||||
id += 2; // copper golem and weathering copper state
|
||||
}
|
||||
data.setDataType(entityDataTypes.byId(id));
|
||||
});
|
||||
|
||||
dataTypeMapper()
|
||||
.added(entityDataTypes.copperGolemState)
|
||||
.added(entityDataTypes.weatheringCopperState)
|
||||
.removed(unmappedEntityDataTypes.compoundTagType)
|
||||
.register();
|
||||
registerEntityDataTypeHandler(
|
||||
entityDataTypes.itemType,
|
||||
entityDataTypes.blockStateType,
|
||||
|
||||
+3
-4
@@ -34,6 +34,7 @@ import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_11;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_9;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
@@ -43,8 +44,6 @@ import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.rewriter.RecipeDisplayRewriter1_21_5;
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ServerboundPackets1_21_6;
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundConfigurationPackets1_21_9;
|
||||
@@ -55,9 +54,9 @@ import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ServerboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.data.MappingData1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.packet.ClientboundPacket1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.packet.ClientboundPackets1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.rewriter.BlockItemPacketRewriter1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.rewriter.ComponentRewriter1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.rewriter.EntityPacketRewriter1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.rewriter.BlockItemPacketRewriter1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.storage.GameTimeStorage;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
@@ -323,7 +322,7 @@ public final class Protocol1_21_9To1_21_11 extends AbstractProtocol<ClientboundP
|
||||
@Override
|
||||
public void init(final UserConnection connection) {
|
||||
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_11.PLAYER));
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
addItemHasher(connection);
|
||||
connection.put(new GameTimeStorage());
|
||||
}
|
||||
|
||||
|
||||
+1
-6
@@ -53,12 +53,7 @@ public final class EntityPacketRewriter1_21_11 extends EntityRewriter<Clientboun
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
final EntityDataTypes1_21_11 entityDataTypes = protocol.mappedTypes().entityDataTypes();
|
||||
filter().mapDataType(id -> {
|
||||
if (id >= entityDataTypes.zombieNautilusVariantType.typeId()) {
|
||||
id++;
|
||||
}
|
||||
return entityDataTypes.byId(id);
|
||||
});
|
||||
dataTypeMapper().added(entityDataTypes.zombieNautilusVariantType).register();
|
||||
registerEntityDataTypeHandler(
|
||||
entityDataTypes.itemType,
|
||||
entityDataTypes.blockStateType,
|
||||
|
||||
+1
-1
@@ -24,6 +24,7 @@ import com.viaversion.viaversion.api.data.MappingDataBase;
|
||||
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_2;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
@@ -34,7 +35,6 @@ import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypesHolder;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundConfigurationPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPacket1_20_5;
|
||||
|
||||
+1
-1
@@ -475,7 +475,7 @@ public final class EntityPacketRewriter1_21_2 extends EntityRewriter<Clientbound
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
filter().mapDataType(VersionedTypes.V1_21_2.entityDataTypes::byId);
|
||||
dataTypeMapper().register();
|
||||
|
||||
registerEntityDataTypeHandler(
|
||||
VersionedTypes.V1_21_2.entityDataTypes.itemType,
|
||||
|
||||
-1
@@ -48,7 +48,6 @@ import com.viaversion.viaversion.protocols.v1_8to1_9.provider.CommandBlockProvid
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.provider.HandItemProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.storage.ClientWorld1_9;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.storage.EntityTracker1_9;
|
||||
import com.viaversion.viaversion.util.ComponentUtil;
|
||||
import com.viaversion.viaversion.util.Key;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.rewriter;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.viaversion.viaversion.api.data.FullMappings;
|
||||
import com.viaversion.viaversion.api.data.Mappings;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
|
||||
@@ -91,6 +91,19 @@ public abstract class EntityRewriter<C extends ClientboundPacketType, T extends
|
||||
return new EntityDataFilter.Builder(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a first-pass handler to remap entity data types via {@code rewriter.protocol().mappedTypes().entityDataTypes().byId(typeId)}
|
||||
* <p>
|
||||
* Removed source types are intentionally left untouched during the initial handler, so entity-specific handlers can
|
||||
* still manually remap them before the final cancellation runs (unless something sent invalid packets for untracked entities).
|
||||
*
|
||||
* @return configurable type remapper
|
||||
*/
|
||||
public EntityDataFilter.DataTypeMapper dataTypeMapper() {
|
||||
Preconditions.checkNotNull(protocol.mappedTypes(), "Protocol does not override mappedTypes, use filter().mapDataType instead");
|
||||
return new EntityDataFilter.DataTypeMapper(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an entity data filter.
|
||||
* Note that {@link EntityDataFilter.Builder#register()} already calls this method.
|
||||
@@ -177,6 +190,13 @@ public abstract class EntityRewriter<C extends ClientboundPacketType, T extends
|
||||
return identifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable EntityType typeFromId(final String type) {
|
||||
final FullMappings mappings = protocol().getMappingData().getEntityMappings();
|
||||
final int id = trackMappedType ? mappings.mappedId(type) : mappings.id(type);
|
||||
return id == -1 ? null : typeFromId(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps an entity type.
|
||||
*
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.data.FullMappings;
|
||||
import com.viaversion.viaversion.api.data.MappingData;
|
||||
import com.viaversion.viaversion.api.data.Mappings;
|
||||
import com.viaversion.viaversion.api.minecraft.HolderSet;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
|
||||
+117
-1
@@ -22,8 +22,14 @@ import com.google.common.base.Preconditions;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.AbstractEntityDataTypes;
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction;
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||
import it.unimi.dsi.fastutil.ints.IntArraySet;
|
||||
import it.unimi.dsi.fastutil.ints.IntComparators;
|
||||
import it.unimi.dsi.fastutil.ints.IntList;
|
||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||
import java.util.Objects;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
@@ -34,6 +40,10 @@ public record EntityDataFilter(@Nullable EntityType type, boolean filterFamily,
|
||||
Preconditions.checkNotNull(handler, "EntityDataHandler cannot be null");
|
||||
}
|
||||
|
||||
public EntityDataFilter(final EntityDataHandler handler) {
|
||||
this(null, true, null, -1, handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the entity data index to filter, or -1.
|
||||
*
|
||||
@@ -82,7 +92,7 @@ public record EntityDataFilter(@Nullable EntityType type, boolean filterFamily,
|
||||
/**
|
||||
* Returns whether if the entity data should be handled by this filter.
|
||||
*
|
||||
* @param type entity type
|
||||
* @param type entity type
|
||||
* @param entityData entityData
|
||||
* @return whether the data should be filtered
|
||||
*/
|
||||
@@ -211,6 +221,7 @@ public record EntityDataFilter(@Nullable EntityType type, boolean filterFamily,
|
||||
register();
|
||||
}
|
||||
|
||||
// Mainly for pre-1.20.5 use
|
||||
public void mapDataType(Int2ObjectFunction<EntityDataType> updateFunction) {
|
||||
handler((event, data) -> {
|
||||
EntityDataType mappedType = updateFunction.apply(data.dataType().typeId());
|
||||
@@ -293,7 +304,112 @@ public record EntityDataFilter(@Nullable EntityType type, boolean filterFamily,
|
||||
* @return created data filter
|
||||
*/
|
||||
public EntityDataFilter build() {
|
||||
Preconditions.checkNotNull(handler, "EntityDataHandler cannot be null");
|
||||
return new EntityDataFilter(type, filterFamily, dataType, index, handler);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class DataTypeMapper {
|
||||
private final IntList addedTypeIds = new IntArrayList();
|
||||
private final IntList removedTypeIds = new IntArrayList();
|
||||
private final IntSet skippedTypeIds = new IntArraySet();
|
||||
private final EntityRewriter<?, ?> rewriter;
|
||||
private final AbstractEntityDataTypes mappedDataTypes;
|
||||
|
||||
public DataTypeMapper(final EntityRewriter<?, ?> rewriter) {
|
||||
this.rewriter = rewriter;
|
||||
this.mappedDataTypes = rewriter.protocol().mappedTypes().entityDataTypes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks a mapped entity data type as added.
|
||||
*
|
||||
* @param dataType added mapped entity data type
|
||||
* @return self
|
||||
*/
|
||||
public DataTypeMapper added(final EntityDataType dataType) {
|
||||
Preconditions.checkArgument(dataType.getClass() == mappedDataTypes.getDataTypeClass());
|
||||
this.addedTypeIds.add(dataType.typeId());
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks an unmapped entity data type as removed.
|
||||
* <p>
|
||||
* Matching unmapped types are left untouched for the regular handlers to process and must be canceled or updated manually.
|
||||
*
|
||||
* @param dataType removed unmapped entity data type
|
||||
* @return self
|
||||
*/
|
||||
public DataTypeMapper removed(final EntityDataType dataType) {
|
||||
Preconditions.checkArgument(dataType.getClass() == rewriter.protocol().types().entityDataTypes().getDataTypeClass());
|
||||
this.removedTypeIds.add(dataType.typeId());
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skips automatic remapping for an unmapped entity data type so another handler can process it later.
|
||||
*
|
||||
* @param dataType unmapped entity data type to leave untouched
|
||||
* @return self
|
||||
*/
|
||||
public DataTypeMapper skip(final EntityDataType dataType) {
|
||||
Preconditions.checkArgument(dataType.getClass() == rewriter.protocol().types().entityDataTypes().getDataTypeClass());
|
||||
this.skippedTypeIds.add(dataType.typeId());
|
||||
return this;
|
||||
}
|
||||
|
||||
public void register() {
|
||||
if (addedTypeIds.isEmpty() && removedTypeIds.isEmpty() && skippedTypeIds.isEmpty()) {
|
||||
// Simple handler
|
||||
rewriter.filter().handler((event, data) -> {
|
||||
final EntityDataType dataType = mappedDataTypes.byId(data.dataType().typeId());
|
||||
data.setDataType(dataType);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
this.addedTypeIds.sort(IntComparators.NATURAL_COMPARATOR);
|
||||
this.removedTypeIds.sort(IntComparators.OPPOSITE_COMPARATOR);
|
||||
|
||||
rewriter.registerFilter(new EntityDataFilter((event, data) -> {
|
||||
// Do not cancel removed elements yet so that filters can handle them (unless something sent an invalid packet for untracked entities)
|
||||
final EntityDataType mappedType = mappedType(data.dataType());
|
||||
if (mappedType != null) {
|
||||
data.setDataType(mappedType);
|
||||
} else if (event.entityType() == null) {
|
||||
event.cancel();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private @Nullable EntityDataType mappedType(final EntityDataType dataType) {
|
||||
if (skippedTypeIds.contains(dataType.typeId()) || shouldCancel(dataType)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final int mappedId = mappedTypeId(dataType.typeId());
|
||||
return mappedDataTypes.byId(mappedId);
|
||||
}
|
||||
|
||||
private boolean shouldCancel(final EntityDataType dataType) {
|
||||
return !removedTypeIds.isEmpty() && removedTypeIds.contains(dataType.typeId());
|
||||
}
|
||||
|
||||
private int mappedTypeId(int typeId) {
|
||||
// Starts with the highest removed
|
||||
for (final int removedTypeId : removedTypeIds) {
|
||||
if (typeId > removedTypeId) {
|
||||
typeId--;
|
||||
}
|
||||
}
|
||||
// Starts with the first added
|
||||
for (final int addedTypeId : addedTypeIds) {
|
||||
if (typeId >= addedTypeId) {
|
||||
typeId++;
|
||||
}
|
||||
}
|
||||
return typeId;
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
+3
-3
@@ -1,9 +1,9 @@
|
||||
# Project properties - we put these here so they can be modified without causing a recompile of the build scripts
|
||||
projectVersion=5.9.0-SNAPSHOT
|
||||
projectVersion=5.9.0
|
||||
|
||||
# Smile emoji (note that modrinth may not have added the version on release yet)
|
||||
mcVersions=26.1, 1.21.11, 1.21.10, 1.21.9, 1.21.8, 1.21.7, 1.21.6, 1.21.5, 1.21.4, 1.21.3, 1.21.2, 1.21.1, 1.21, 1.20.6, 1.20.5, 1.20.4, 1.20.3, 1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10, 1.9.4, 1.9.3, 1.9.2, 1.9.1, 1.9, 1.8.9
|
||||
mcVersionRange=1.8-26.1.1
|
||||
mcVersions=26.1.2, 26.1.1, 26.1, 1.21.11, 1.21.10, 1.21.9, 1.21.8, 1.21.7, 1.21.6, 1.21.5, 1.21.4, 1.21.3, 1.21.2, 1.21.1, 1.21, 1.20.6, 1.20.5, 1.20.4, 1.20.3, 1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10, 1.9.4, 1.9.3, 1.9.2, 1.9.1, 1.9, 1.8.9
|
||||
mcVersionRange=1.8-26.1.2
|
||||
velocityVersion=3.4-3.5
|
||||
|
||||
# Gradle properties
|
||||
|
||||
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
gson = "2.13.2"
|
||||
snakeYaml = "2.5"
|
||||
snakeYaml = "2.6"
|
||||
fastutil = "8.5.15"
|
||||
vianbt = "5.2.0"
|
||||
mcstructs = "5-3.3.1-SNAPSHOT"
|
||||
@@ -14,7 +14,7 @@ guava = "17.0"
|
||||
|
||||
junit = "6.0.3"
|
||||
platformLauncher = "6.0.3"
|
||||
checkerQual = "3.53.1"
|
||||
checkerQual = "3.54.0"
|
||||
|
||||
# Platforms
|
||||
paper = "1.20.4-R0.1-SNAPSHOT"
|
||||
|
||||
Reference in new issue
Block a user