Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-27 08:30:09 +01:00
Start working on 23w51a
Dieser Commit ist enthalten in:
Ursprung
9b1716b662
Commit
90781c9d27
@ -53,6 +53,7 @@ public class MappingDataBase implements MappingData {
|
|||||||
protected Mappings enchantmentMappings;
|
protected Mappings enchantmentMappings;
|
||||||
protected Mappings paintingMappings;
|
protected Mappings paintingMappings;
|
||||||
protected Mappings menuMappings;
|
protected Mappings menuMappings;
|
||||||
|
protected Mappings attributeMappings;
|
||||||
protected Map<RegistryType, List<TagData>> tags;
|
protected Map<RegistryType, List<TagData>> tags;
|
||||||
|
|
||||||
public MappingDataBase(final String unmappedVersion, final String mappedVersion) {
|
public MappingDataBase(final String unmappedVersion, final String mappedVersion) {
|
||||||
@ -75,6 +76,7 @@ public class MappingDataBase implements MappingData {
|
|||||||
menuMappings = loadMappings(data, "menus");
|
menuMappings = loadMappings(data, "menus");
|
||||||
enchantmentMappings = loadMappings(data, "enchantments");
|
enchantmentMappings = loadMappings(data, "enchantments");
|
||||||
paintingMappings = loadMappings(data, "paintings");
|
paintingMappings = loadMappings(data, "paintings");
|
||||||
|
attributeMappings = loadMappings(data, "attributes");
|
||||||
itemMappings = loadBiMappings(data, "items");
|
itemMappings = loadBiMappings(data, "items");
|
||||||
|
|
||||||
final CompoundTag unmappedIdentifierData = MappingDataLoader.loadNBT("identifiers-" + unmappedVersion + ".nbt", true);
|
final CompoundTag unmappedIdentifierData = MappingDataLoader.loadNBT("identifiers-" + unmappedVersion + ".nbt", true);
|
||||||
|
@ -0,0 +1,284 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2016-2023 ViaVersion and contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package com.viaversion.viaversion.api.minecraft.entities;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||||
|
import com.viaversion.viaversion.util.EntityTypeUtil;
|
||||||
|
import java.util.Locale;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
|
public enum EntityTypes1_20_5 implements EntityType {
|
||||||
|
|
||||||
|
ENTITY(null, null),
|
||||||
|
|
||||||
|
AREA_EFFECT_CLOUD(ENTITY),
|
||||||
|
END_CRYSTAL(ENTITY),
|
||||||
|
EVOKER_FANGS(ENTITY),
|
||||||
|
EXPERIENCE_ORB(ENTITY),
|
||||||
|
EYE_OF_ENDER(ENTITY),
|
||||||
|
FALLING_BLOCK(ENTITY),
|
||||||
|
FIREWORK_ROCKET(ENTITY),
|
||||||
|
ITEM(ENTITY),
|
||||||
|
LLAMA_SPIT(ENTITY),
|
||||||
|
TNT(ENTITY),
|
||||||
|
SHULKER_BULLET(ENTITY),
|
||||||
|
FISHING_BOBBER(ENTITY),
|
||||||
|
|
||||||
|
LIVINGENTITY(ENTITY, null),
|
||||||
|
ARMOR_STAND(LIVINGENTITY),
|
||||||
|
MARKER(ENTITY),
|
||||||
|
PLAYER(LIVINGENTITY),
|
||||||
|
|
||||||
|
DISPLAY(ENTITY, null),
|
||||||
|
BLOCK_DISPLAY(DISPLAY),
|
||||||
|
ITEM_DISPLAY(DISPLAY),
|
||||||
|
TEXT_DISPLAY(DISPLAY),
|
||||||
|
INTERACTION(ENTITY),
|
||||||
|
|
||||||
|
ABSTRACT_INSENTIENT(LIVINGENTITY, null),
|
||||||
|
ENDER_DRAGON(ABSTRACT_INSENTIENT),
|
||||||
|
|
||||||
|
BEE(ABSTRACT_INSENTIENT),
|
||||||
|
|
||||||
|
ABSTRACT_CREATURE(ABSTRACT_INSENTIENT, null),
|
||||||
|
|
||||||
|
ABSTRACT_AGEABLE(ABSTRACT_CREATURE, null),
|
||||||
|
VILLAGER(ABSTRACT_AGEABLE),
|
||||||
|
WANDERING_TRADER(ABSTRACT_AGEABLE),
|
||||||
|
|
||||||
|
// Animals
|
||||||
|
ABSTRACT_ANIMAL(ABSTRACT_AGEABLE, null),
|
||||||
|
AXOLOTL(ABSTRACT_ANIMAL),
|
||||||
|
DOLPHIN(ABSTRACT_INSENTIENT),
|
||||||
|
CHICKEN(ABSTRACT_ANIMAL),
|
||||||
|
COW(ABSTRACT_ANIMAL),
|
||||||
|
MOOSHROOM(COW),
|
||||||
|
PANDA(ABSTRACT_INSENTIENT),
|
||||||
|
PIG(ABSTRACT_ANIMAL),
|
||||||
|
POLAR_BEAR(ABSTRACT_ANIMAL),
|
||||||
|
RABBIT(ABSTRACT_ANIMAL),
|
||||||
|
SHEEP(ABSTRACT_ANIMAL),
|
||||||
|
TURTLE(ABSTRACT_ANIMAL),
|
||||||
|
FOX(ABSTRACT_ANIMAL),
|
||||||
|
FROG(ABSTRACT_ANIMAL),
|
||||||
|
GOAT(ABSTRACT_ANIMAL),
|
||||||
|
SNIFFER(ABSTRACT_ANIMAL),
|
||||||
|
ARMADILLO(ABSTRACT_ANIMAL),
|
||||||
|
|
||||||
|
ABSTRACT_TAMEABLE_ANIMAL(ABSTRACT_ANIMAL, null),
|
||||||
|
CAT(ABSTRACT_TAMEABLE_ANIMAL),
|
||||||
|
OCELOT(ABSTRACT_TAMEABLE_ANIMAL),
|
||||||
|
WOLF(ABSTRACT_TAMEABLE_ANIMAL),
|
||||||
|
|
||||||
|
ABSTRACT_PARROT(ABSTRACT_TAMEABLE_ANIMAL, null),
|
||||||
|
PARROT(ABSTRACT_PARROT),
|
||||||
|
|
||||||
|
// Horses
|
||||||
|
ABSTRACT_HORSE(ABSTRACT_ANIMAL, null),
|
||||||
|
CHESTED_HORSE(ABSTRACT_HORSE, null),
|
||||||
|
DONKEY(CHESTED_HORSE),
|
||||||
|
MULE(CHESTED_HORSE),
|
||||||
|
LLAMA(CHESTED_HORSE),
|
||||||
|
TRADER_LLAMA(CHESTED_HORSE),
|
||||||
|
HORSE(ABSTRACT_HORSE),
|
||||||
|
SKELETON_HORSE(ABSTRACT_HORSE),
|
||||||
|
ZOMBIE_HORSE(ABSTRACT_HORSE),
|
||||||
|
CAMEL(ABSTRACT_HORSE),
|
||||||
|
|
||||||
|
// Golem
|
||||||
|
ABSTRACT_GOLEM(ABSTRACT_CREATURE, null),
|
||||||
|
SNOW_GOLEM(ABSTRACT_GOLEM),
|
||||||
|
IRON_GOLEM(ABSTRACT_GOLEM),
|
||||||
|
SHULKER(ABSTRACT_GOLEM),
|
||||||
|
|
||||||
|
// Fish
|
||||||
|
ABSTRACT_FISHES(ABSTRACT_CREATURE, null),
|
||||||
|
COD(ABSTRACT_FISHES),
|
||||||
|
PUFFERFISH(ABSTRACT_FISHES),
|
||||||
|
SALMON(ABSTRACT_FISHES),
|
||||||
|
TROPICAL_FISH(ABSTRACT_FISHES),
|
||||||
|
|
||||||
|
// Monsters
|
||||||
|
ABSTRACT_MONSTER(ABSTRACT_CREATURE, null),
|
||||||
|
BLAZE(ABSTRACT_MONSTER),
|
||||||
|
CREEPER(ABSTRACT_MONSTER),
|
||||||
|
ENDERMITE(ABSTRACT_MONSTER),
|
||||||
|
ENDERMAN(ABSTRACT_MONSTER),
|
||||||
|
GIANT(ABSTRACT_MONSTER),
|
||||||
|
SILVERFISH(ABSTRACT_MONSTER),
|
||||||
|
VEX(ABSTRACT_MONSTER),
|
||||||
|
WITCH(ABSTRACT_MONSTER),
|
||||||
|
WITHER(ABSTRACT_MONSTER),
|
||||||
|
RAVAGER(ABSTRACT_MONSTER),
|
||||||
|
BREEZE(ABSTRACT_MONSTER),
|
||||||
|
|
||||||
|
ABSTRACT_PIGLIN(ABSTRACT_MONSTER, null),
|
||||||
|
|
||||||
|
PIGLIN(ABSTRACT_PIGLIN),
|
||||||
|
PIGLIN_BRUTE(ABSTRACT_PIGLIN),
|
||||||
|
|
||||||
|
HOGLIN(ABSTRACT_ANIMAL),
|
||||||
|
STRIDER(ABSTRACT_ANIMAL),
|
||||||
|
TADPOLE(ABSTRACT_FISHES),
|
||||||
|
ZOGLIN(ABSTRACT_MONSTER),
|
||||||
|
WARDEN(ABSTRACT_MONSTER),
|
||||||
|
|
||||||
|
// Illagers
|
||||||
|
ABSTRACT_ILLAGER_BASE(ABSTRACT_MONSTER, null),
|
||||||
|
ABSTRACT_EVO_ILLU_ILLAGER(ABSTRACT_ILLAGER_BASE, null),
|
||||||
|
EVOKER(ABSTRACT_EVO_ILLU_ILLAGER),
|
||||||
|
ILLUSIONER(ABSTRACT_EVO_ILLU_ILLAGER),
|
||||||
|
VINDICATOR(ABSTRACT_ILLAGER_BASE),
|
||||||
|
PILLAGER(ABSTRACT_ILLAGER_BASE),
|
||||||
|
|
||||||
|
// Skeletons
|
||||||
|
ABSTRACT_SKELETON(ABSTRACT_MONSTER, null),
|
||||||
|
SKELETON(ABSTRACT_SKELETON),
|
||||||
|
STRAY(ABSTRACT_SKELETON),
|
||||||
|
WITHER_SKELETON(ABSTRACT_SKELETON),
|
||||||
|
|
||||||
|
// Guardians
|
||||||
|
GUARDIAN(ABSTRACT_MONSTER),
|
||||||
|
ELDER_GUARDIAN(GUARDIAN),
|
||||||
|
|
||||||
|
// Spiders
|
||||||
|
SPIDER(ABSTRACT_MONSTER),
|
||||||
|
CAVE_SPIDER(SPIDER),
|
||||||
|
|
||||||
|
// Zombies
|
||||||
|
ZOMBIE(ABSTRACT_MONSTER),
|
||||||
|
DROWNED(ZOMBIE),
|
||||||
|
HUSK(ZOMBIE),
|
||||||
|
ZOMBIFIED_PIGLIN(ZOMBIE),
|
||||||
|
ZOMBIE_VILLAGER(ZOMBIE),
|
||||||
|
|
||||||
|
// Flying entities
|
||||||
|
ABSTRACT_FLYING(ABSTRACT_INSENTIENT, null),
|
||||||
|
GHAST(ABSTRACT_FLYING),
|
||||||
|
PHANTOM(ABSTRACT_FLYING),
|
||||||
|
|
||||||
|
ABSTRACT_AMBIENT(ABSTRACT_INSENTIENT, null),
|
||||||
|
BAT(ABSTRACT_AMBIENT),
|
||||||
|
ALLAY(ABSTRACT_CREATURE),
|
||||||
|
|
||||||
|
ABSTRACT_WATERMOB(ABSTRACT_INSENTIENT, null),
|
||||||
|
SQUID(ABSTRACT_WATERMOB),
|
||||||
|
GLOW_SQUID(SQUID),
|
||||||
|
|
||||||
|
// Slimes
|
||||||
|
SLIME(ABSTRACT_INSENTIENT),
|
||||||
|
MAGMA_CUBE(SLIME),
|
||||||
|
|
||||||
|
// Hangable objects
|
||||||
|
ABSTRACT_HANGING(ENTITY, null),
|
||||||
|
LEASH_KNOT(ABSTRACT_HANGING),
|
||||||
|
ITEM_FRAME(ABSTRACT_HANGING),
|
||||||
|
GLOW_ITEM_FRAME(ITEM_FRAME),
|
||||||
|
PAINTING(ABSTRACT_HANGING),
|
||||||
|
|
||||||
|
ABSTRACT_LIGHTNING(ENTITY, null),
|
||||||
|
LIGHTNING_BOLT(ABSTRACT_LIGHTNING),
|
||||||
|
|
||||||
|
// Arrows
|
||||||
|
ABSTRACT_ARROW(ENTITY, null),
|
||||||
|
ARROW(ABSTRACT_ARROW),
|
||||||
|
SPECTRAL_ARROW(ABSTRACT_ARROW),
|
||||||
|
TRIDENT(ABSTRACT_ARROW),
|
||||||
|
|
||||||
|
// Fireballs
|
||||||
|
ABSTRACT_FIREBALL(ENTITY, null),
|
||||||
|
DRAGON_FIREBALL(ABSTRACT_FIREBALL),
|
||||||
|
FIREBALL(ABSTRACT_FIREBALL),
|
||||||
|
SMALL_FIREBALL(ABSTRACT_FIREBALL),
|
||||||
|
WITHER_SKULL(ABSTRACT_FIREBALL),
|
||||||
|
|
||||||
|
// Projectiles
|
||||||
|
PROJECTILE_ABSTRACT(ENTITY, null),
|
||||||
|
SNOWBALL(PROJECTILE_ABSTRACT),
|
||||||
|
ENDER_PEARL(PROJECTILE_ABSTRACT),
|
||||||
|
EGG(PROJECTILE_ABSTRACT),
|
||||||
|
POTION(PROJECTILE_ABSTRACT),
|
||||||
|
EXPERIENCE_BOTTLE(PROJECTILE_ABSTRACT),
|
||||||
|
WIND_CHARGE(PROJECTILE_ABSTRACT),
|
||||||
|
|
||||||
|
// Vehicles
|
||||||
|
MINECART_ABSTRACT(ENTITY, null),
|
||||||
|
CHESTED_MINECART_ABSTRACT(MINECART_ABSTRACT, null),
|
||||||
|
CHEST_MINECART(CHESTED_MINECART_ABSTRACT),
|
||||||
|
HOPPER_MINECART(CHESTED_MINECART_ABSTRACT),
|
||||||
|
MINECART(MINECART_ABSTRACT),
|
||||||
|
FURNACE_MINECART(MINECART_ABSTRACT),
|
||||||
|
COMMAND_BLOCK_MINECART(MINECART_ABSTRACT),
|
||||||
|
TNT_MINECART(MINECART_ABSTRACT),
|
||||||
|
SPAWNER_MINECART(MINECART_ABSTRACT),
|
||||||
|
BOAT(ENTITY),
|
||||||
|
CHEST_BOAT(BOAT);
|
||||||
|
|
||||||
|
private static final EntityType[] TYPES = EntityTypeUtil.createSizedArray(values());
|
||||||
|
private final EntityType parent;
|
||||||
|
private final String identifier;
|
||||||
|
private int id = -1;
|
||||||
|
|
||||||
|
EntityTypes1_20_5(final EntityType parent) {
|
||||||
|
this.parent = parent;
|
||||||
|
this.identifier = "minecraft:" + name().toLowerCase(Locale.ROOT);
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityTypes1_20_5(final EntityType parent, @Nullable final String identifier) {
|
||||||
|
this.parent = parent;
|
||||||
|
this.identifier = identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
if (id == -1) {
|
||||||
|
throw new IllegalStateException("Ids have not been initialized yet (type " + name() + ")");
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String identifier() {
|
||||||
|
Preconditions.checkArgument(identifier != null, "Called identifier method on abstract type");
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable EntityType getParent() {
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAbstractType() {
|
||||||
|
return identifier == null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EntityType getTypeFromId(final int typeId) {
|
||||||
|
return EntityTypeUtil.getTypeFromId(TYPES, typeId, ENTITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initialize(final Protocol<?, ?, ?, ?> protocol) {
|
||||||
|
EntityTypeUtil.initialize(values(), TYPES, protocol, (type, id) -> type.id = id);
|
||||||
|
}
|
||||||
|
}
|
@ -86,6 +86,7 @@ public class ProtocolVersion {
|
|||||||
public static final ProtocolVersion v1_20 = register(763, "1.20/1.20.1", new VersionRange("1.20", 0, 1));
|
public static final ProtocolVersion v1_20 = register(763, "1.20/1.20.1", new VersionRange("1.20", 0, 1));
|
||||||
public static final ProtocolVersion v1_20_2 = register(764, "1.20.2");
|
public static final ProtocolVersion v1_20_2 = register(764, "1.20.2");
|
||||||
public static final ProtocolVersion v1_20_3 = register(765, "1.20.3/1.20.4", new VersionRange("1.20", 3, 4));
|
public static final ProtocolVersion v1_20_3 = register(765, "1.20.3/1.20.4", new VersionRange("1.20", 3, 4));
|
||||||
|
public static final ProtocolVersion v1_20_5 = register(766, 169, "1.20.5");
|
||||||
public static final ProtocolVersion unknown = register(-1, "UNKNOWN");
|
public static final ProtocolVersion unknown = register(-1, "UNKNOWN");
|
||||||
|
|
||||||
public static ProtocolVersion register(int version, String name) {
|
public static ProtocolVersion register(int version, String name) {
|
||||||
|
@ -142,6 +142,7 @@ public abstract class Type<T> implements ByteBufReader<T>, ByteBufWriter<T> {
|
|||||||
public static final Type<Quaternion> QUATERNION = new QuaternionType();
|
public static final Type<Quaternion> QUATERNION = new QuaternionType();
|
||||||
|
|
||||||
public static final Type<CompoundTag> NAMED_COMPOUND_TAG = new NamedCompoundTagType();
|
public static final Type<CompoundTag> NAMED_COMPOUND_TAG = new NamedCompoundTagType();
|
||||||
|
public static final Type<CompoundTag> OPTIONAL_NAMED_COMPOUND_TAG = new NamedCompoundTagType.OptionalNamedCompoundTagType();
|
||||||
public static final Type<CompoundTag[]> NAMED_COMPOUND_TAG_ARRAY = new ArrayType<>(Type.NAMED_COMPOUND_TAG);
|
public static final Type<CompoundTag[]> NAMED_COMPOUND_TAG_ARRAY = new ArrayType<>(Type.NAMED_COMPOUND_TAG);
|
||||||
public static final Type<CompoundTag> COMPOUND_TAG = new CompoundTagType();
|
public static final Type<CompoundTag> COMPOUND_TAG = new CompoundTagType();
|
||||||
public static final Type<CompoundTag> OPTIONAL_COMPOUND_TAG = new CompoundTagType.OptionalCompoundTagType();
|
public static final Type<CompoundTag> OPTIONAL_COMPOUND_TAG = new CompoundTagType.OptionalCompoundTagType();
|
||||||
|
@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.misc;
|
|||||||
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
|
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
|
||||||
import com.github.steveice10.opennbt.tag.builtin.Tag;
|
import com.github.steveice10.opennbt.tag.builtin.Tag;
|
||||||
import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
|
import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
|
||||||
|
import com.viaversion.viaversion.api.type.OptionalType;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.buffer.ByteBufInputStream;
|
import io.netty.buffer.ByteBufInputStream;
|
||||||
@ -83,4 +84,11 @@ public class NamedCompoundTagType extends Type<CompoundTag> {
|
|||||||
}
|
}
|
||||||
tag.write(out);
|
tag.write(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final class OptionalNamedCompoundTagType extends OptionalType<CompoundTag> {
|
||||||
|
|
||||||
|
public OptionalNamedCompoundTagType() {
|
||||||
|
super(Type.NAMED_COMPOUND_TAG);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.Protocol1_20_2To1_20;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.Protocol1_20_2To1_20;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
|
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9_1to1_9.Protocol1_9_1To1_9;
|
import com.viaversion.viaversion.protocols.protocol1_9_1to1_9.Protocol1_9_1To1_9;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.Protocol1_9_3To1_9_1_2;
|
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.Protocol1_9_3To1_9_1_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
||||||
@ -82,10 +83,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap;
|
||||||
import java.util.logging.Level;
|
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
|
||||||
import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -106,6 +103,9 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.concurrent.locks.ReadWriteLock;
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
|
||||||
|
|
||||||
public class ProtocolManagerImpl implements ProtocolManager {
|
public class ProtocolManagerImpl implements ProtocolManager {
|
||||||
private static final Protocol BASE_PROTOCOL = new BaseProtocol();
|
private static final Protocol BASE_PROTOCOL = new BaseProtocol();
|
||||||
@ -185,6 +185,7 @@ public class ProtocolManagerImpl implements ProtocolManager {
|
|||||||
registerProtocol(new Protocol1_20To1_19_4(), ProtocolVersion.v1_20, ProtocolVersion.v1_19_4);
|
registerProtocol(new Protocol1_20To1_19_4(), ProtocolVersion.v1_20, ProtocolVersion.v1_19_4);
|
||||||
registerProtocol(new Protocol1_20_2To1_20(), ProtocolVersion.v1_20_2, ProtocolVersion.v1_20);
|
registerProtocol(new Protocol1_20_2To1_20(), ProtocolVersion.v1_20_2, ProtocolVersion.v1_20);
|
||||||
registerProtocol(new Protocol1_20_3To1_20_2(), ProtocolVersion.v1_20_3, ProtocolVersion.v1_20_2);
|
registerProtocol(new Protocol1_20_3To1_20_2(), ProtocolVersion.v1_20_3, ProtocolVersion.v1_20_2);
|
||||||
|
registerProtocol(new Protocol1_20_5To1_20_3(), ProtocolVersion.v1_20_5, ProtocolVersion.v1_20_3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -187,7 +187,7 @@ public final class EntityPackets extends EntityRewriter<ClientboundPackets1_18,
|
|||||||
map(Type.BYTE); // Amplifier
|
map(Type.BYTE); // Amplifier
|
||||||
map(Type.VAR_INT); // Duration
|
map(Type.VAR_INT); // Duration
|
||||||
map(Type.BYTE); // Flags
|
map(Type.BYTE); // Flags
|
||||||
create(Type.BOOLEAN, false); // No factor data
|
create(Type.OPTIONAL_COMPOUND_TAG, null); // No factor data
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -161,9 +161,7 @@ public final class EntityPacketRewriter1_20_2 extends EntityRewriter<Clientbound
|
|||||||
wrapper.passthrough(Type.BYTE); // Amplifier
|
wrapper.passthrough(Type.BYTE); // Amplifier
|
||||||
wrapper.passthrough(Type.VAR_INT); // Duration
|
wrapper.passthrough(Type.VAR_INT); // Duration
|
||||||
wrapper.passthrough(Type.BYTE); // Flags
|
wrapper.passthrough(Type.BYTE); // Flags
|
||||||
if (wrapper.passthrough(Type.BOOLEAN)) {
|
wrapper.write(Type.OPTIONAL_COMPOUND_TAG, wrapper.read(Type.OPTIONAL_NAMED_COMPOUND_TAG)); // Factor data
|
||||||
wrapper.write(Type.COMPOUND_TAG, wrapper.read(Type.NAMED_COMPOUND_TAG)); // Factor data
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
protocol.registerClientbound(ClientboundPackets1_19_4.REMOVE_ENTITY_EFFECT, wrapper -> {
|
protocol.registerClientbound(ClientboundPackets1_19_4.REMOVE_ENTITY_EFFECT, wrapper -> {
|
||||||
|
@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2023 ViaVersion and 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 com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3;
|
||||||
|
|
||||||
|
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.entities.EntityTypes1_20_5;
|
||||||
|
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||||
|
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
|
||||||
|
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_3to1_20_2.packet.ServerboundPackets1_20_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.BlockItemPacketRewriter1_20_5;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.EntityPacketRewriter1_20_5;
|
||||||
|
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||||
|
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||||
|
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||||
|
|
||||||
|
public final class Protocol1_20_5To1_20_3 extends AbstractProtocol<ClientboundPackets1_20_3, ClientboundPackets1_20_3, ServerboundPackets1_20_3, ServerboundPackets1_20_3> {
|
||||||
|
|
||||||
|
public static final MappingData MAPPINGS = new MappingDataBase("1.20.5", "1.20.3");
|
||||||
|
private final EntityPacketRewriter1_20_5 entityRewriter = new EntityPacketRewriter1_20_5(this);
|
||||||
|
private final BlockItemPacketRewriter1_20_5 itemRewriter = new BlockItemPacketRewriter1_20_5(this);
|
||||||
|
|
||||||
|
public Protocol1_20_5To1_20_3() {
|
||||||
|
super(ClientboundPackets1_20_3.class, ClientboundPackets1_20_3.class, ServerboundPackets1_20_3.class, ServerboundPackets1_20_3.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void registerPackets() {
|
||||||
|
super.registerPackets();
|
||||||
|
|
||||||
|
final TagRewriter<ClientboundPackets1_20_3> tagRewriter = new TagRewriter<>(this);
|
||||||
|
tagRewriter.registerGeneric(ClientboundPackets1_20_3.TAGS);
|
||||||
|
tagRewriter.registerGeneric(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.UPDATE_TAGS);
|
||||||
|
|
||||||
|
final SoundRewriter<ClientboundPackets1_20_3> soundRewriter = new SoundRewriter<>(this);
|
||||||
|
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND);
|
||||||
|
soundRewriter.registerSound(ClientboundPackets1_20_3.ENTITY_SOUND);
|
||||||
|
|
||||||
|
new StatisticsRewriter<>(this).register(ClientboundPackets1_20_3.STATISTICS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onMappingDataLoaded() {
|
||||||
|
super.onMappingDataLoaded();
|
||||||
|
|
||||||
|
EntityTypes1_20_5.initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(final UserConnection connection) {
|
||||||
|
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_20_5.PLAYER));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MappingData getMappingData() {
|
||||||
|
return MAPPINGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityPacketRewriter1_20_5 getEntityRewriter() {
|
||||||
|
return entityRewriter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockItemPacketRewriter1_20_5 getItemRewriter() {
|
||||||
|
return itemRewriter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ClientboundPacketType clientboundFinishConfigurationPacket() {
|
||||||
|
return ClientboundConfigurationPackets1_20_3.FINISH_CONFIGURATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ServerboundPacketType serverboundFinishConfigurationPacket() {
|
||||||
|
return ServerboundConfigurationPackets1_20_2.FINISH_CONFIGURATION;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2023 ViaVersion and 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 com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data;
|
||||||
|
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
|
public final class AttributeMappings {
|
||||||
|
|
||||||
|
private static final String[] ATTRIBUTES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public @Nullable String attribute(final int id) {
|
||||||
|
return id >= 0 && id < ATTRIBUTES.length ? ATTRIBUTES[id] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int id(final String attribute) {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2023 ViaVersion and 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 com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
|
||||||
|
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||||
|
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||||
|
|
||||||
|
public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<ClientboundPackets1_20_3, ServerboundPackets1_20_3, Protocol1_20_5To1_20_3> {
|
||||||
|
|
||||||
|
public BlockItemPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) {
|
||||||
|
super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerPackets() {
|
||||||
|
final BlockRewriter<ClientboundPackets1_20_3> blockRewriter = BlockRewriter.for1_20_2(protocol);
|
||||||
|
blockRewriter.registerBlockAction(ClientboundPackets1_20_3.BLOCK_ACTION);
|
||||||
|
blockRewriter.registerBlockChange(ClientboundPackets1_20_3.BLOCK_CHANGE);
|
||||||
|
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_3.MULTI_BLOCK_CHANGE);
|
||||||
|
blockRewriter.registerEffect(ClientboundPackets1_20_3.EFFECT, 1010, 2001);
|
||||||
|
blockRewriter.registerChunkData1_19(ClientboundPackets1_20_3.CHUNK_DATA, ChunkType1_20_2::new);
|
||||||
|
blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA);
|
||||||
|
|
||||||
|
// registerOpenWindow(ClientboundPackets1_20_3.OPEN_WINDOW);
|
||||||
|
registerSetCooldown(ClientboundPackets1_20_3.COOLDOWN);
|
||||||
|
registerWindowItems1_17_1(ClientboundPackets1_20_3.WINDOW_ITEMS);
|
||||||
|
registerSetSlot1_17_1(ClientboundPackets1_20_3.SET_SLOT);
|
||||||
|
registerAdvancements1_20_3(ClientboundPackets1_20_3.ADVANCEMENTS);
|
||||||
|
registerEntityEquipmentArray(ClientboundPackets1_20_3.ENTITY_EQUIPMENT);
|
||||||
|
registerClickWindow1_17_1(ServerboundPackets1_20_3.CLICK_WINDOW);
|
||||||
|
registerTradeList1_19(ClientboundPackets1_20_3.TRADE_LIST);
|
||||||
|
registerCreativeInvAction(ServerboundPackets1_20_3.CREATIVE_INVENTORY_ACTION);
|
||||||
|
registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_3.WINDOW_PROPERTY);
|
||||||
|
registerSpawnParticle1_19(ClientboundPackets1_20_3.SPAWN_PARTICLE);
|
||||||
|
|
||||||
|
// TODO Explosion contains particles now
|
||||||
|
|
||||||
|
new RecipeRewriter1_20_3<>(protocol).register(ClientboundPackets1_20_3.DECLARE_RECIPES);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,142 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2023 ViaVersion and 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 com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||||
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
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.rewriter.EntityRewriter;
|
||||||
|
import com.viaversion.viaversion.util.Key;
|
||||||
|
|
||||||
|
public final class EntityPacketRewriter1_20_5 extends EntityRewriter<ClientboundPackets1_20_3, Protocol1_20_5To1_20_3> {
|
||||||
|
|
||||||
|
public EntityPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) {
|
||||||
|
super(protocol);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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);
|
||||||
|
registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES);
|
||||||
|
|
||||||
|
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() {
|
||||||
|
@Override
|
||||||
|
protected void register() {
|
||||||
|
map(Type.COMPOUND_TAG); // Registry data
|
||||||
|
handler(configurationDimensionDataHandler()); // Caches dimensions to access data like height later
|
||||||
|
handler(configurationBiomeSizeTracker()); // Tracks the amount of biomes sent for chunk data
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
protocol.registerClientbound(ClientboundPackets1_20_3.JOIN_GAME, new PacketHandlers() {
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
map(Type.INT); // Entity id
|
||||||
|
map(Type.BOOLEAN); // Hardcore
|
||||||
|
map(Type.STRING_ARRAY); // World List
|
||||||
|
map(Type.VAR_INT); // Max players
|
||||||
|
map(Type.VAR_INT); // View distance
|
||||||
|
map(Type.VAR_INT); // Simulation distance
|
||||||
|
map(Type.BOOLEAN); // Reduced debug info
|
||||||
|
map(Type.BOOLEAN); // Show death screen
|
||||||
|
map(Type.BOOLEAN); // Limited crafting
|
||||||
|
map(Type.STRING); // Dimension key
|
||||||
|
map(Type.STRING); // World
|
||||||
|
handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
protocol.registerClientbound(ClientboundPackets1_20_3.RESPAWN, new PacketHandlers() {
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
map(Type.STRING); // Dimension
|
||||||
|
map(Type.STRING); // World
|
||||||
|
handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
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.BYTE); // Amplifier
|
||||||
|
wrapper.passthrough(Type.VAR_INT); // Duration
|
||||||
|
wrapper.passthrough(Type.BYTE); // Flags
|
||||||
|
wrapper.read(Type.OPTIONAL_COMPOUND_TAG); // Remove factor data
|
||||||
|
});
|
||||||
|
|
||||||
|
protocol.registerClientbound(ClientboundPackets1_20_3.ENTITY_PROPERTIES, wrapper -> {
|
||||||
|
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());
|
||||||
|
|
||||||
|
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.DOUBLE); // Amount
|
||||||
|
wrapper.passthrough(Type.BYTE); // Operation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@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,
|
||||||
|
Types1_20_3.META_TYPES.optionalBlockStateType,
|
||||||
|
Types1_20_3.META_TYPES.particleType
|
||||||
|
);
|
||||||
|
|
||||||
|
filter().filterFamily(EntityTypes1_20_5.MINECART_ABSTRACT).index(11).handler((event, meta) -> {
|
||||||
|
final int blockState = meta.value();
|
||||||
|
meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMappingDataLoaded() {
|
||||||
|
mapTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityType typeFromId(final int type) {
|
||||||
|
return EntityTypes1_20_5.getTypeFromId(type);
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
# Project properties - we put these here so they can be modified without causing a recompile of the build scripts
|
# Project properties - we put these here so they can be modified without causing a recompile of the build scripts
|
||||||
projectVersion=4.9.3-SNAPSHOT
|
projectVersion=4.10.0-23w51a-SNAPSHOT
|
||||||
|
|
||||||
# Smile emoji
|
# Smile emoji
|
||||||
mcVersions=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
|
mcVersions=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
|
||||||
|
@ -26,9 +26,9 @@ import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
|||||||
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
|
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2;
|
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
|
||||||
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.ClientboundConfigurationPackets1_20_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
|
||||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||||
@ -38,13 +38,13 @@ import com.viaversion.viaversion.template.protocols.rewriter.EntityPacketRewrite
|
|||||||
|
|
||||||
// Placeholders to replace (in the entire package):
|
// Placeholders to replace (in the entire package):
|
||||||
// Protocol1_99To_98, EntityPacketRewriter1_99, BlockItemPacketRewriter1_99
|
// Protocol1_99To_98, EntityPacketRewriter1_99, BlockItemPacketRewriter1_99
|
||||||
// ClientboundPackets1_20_2
|
// ClientboundPackets1_20_3
|
||||||
// ServerboundPackets1_20_3
|
// ServerboundPackets1_20_3
|
||||||
// ClientboundConfigurationPackets1_20_3
|
// ClientboundConfigurationPackets1_20_3
|
||||||
// ServerboundConfigurationPackets1_20_2
|
// ServerboundConfigurationPackets1_20_2
|
||||||
// Entity1_19_4Types (MAPPED type)
|
// Entity1_19_4Types (MAPPED type)
|
||||||
// 1.99, 1.98
|
// 1.99, 1.98
|
||||||
public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets1_20_2, ClientboundPackets1_20_2, ServerboundPackets1_20_3, ServerboundPackets1_20_3> {
|
public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets1_20_3, ClientboundPackets1_20_3, ServerboundPackets1_20_3, ServerboundPackets1_20_3> {
|
||||||
|
|
||||||
public static final MappingData MAPPINGS = new MappingDataBase("1.98", "1.99");
|
public static final MappingData MAPPINGS = new MappingDataBase("1.98", "1.99");
|
||||||
private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this);
|
private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this);
|
||||||
@ -52,7 +52,7 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
|
|||||||
|
|
||||||
public Protocol1_99To_98() {
|
public Protocol1_99To_98() {
|
||||||
// Passing the class types into the super constructor is needed for automatic packet type id remapping, but can otherwise be omitted
|
// Passing the class types into the super constructor is needed for automatic packet type id remapping, but can otherwise be omitted
|
||||||
super(ClientboundPackets1_20_2.class, ClientboundPackets1_20_2.class, ServerboundPackets1_20_3.class, ServerboundPackets1_20_3.class);
|
super(ClientboundPackets1_20_3.class, ClientboundPackets1_20_3.class, ServerboundPackets1_20_3.class, ServerboundPackets1_20_3.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -60,20 +60,20 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
|
|||||||
super.registerPackets();
|
super.registerPackets();
|
||||||
|
|
||||||
// Registers renames etc. as well as registry type id changes
|
// Registers renames etc. as well as registry type id changes
|
||||||
final TagRewriter<ClientboundPackets1_20_2> tagRewriter = new TagRewriter<>(this);
|
final TagRewriter<ClientboundPackets1_20_3> tagRewriter = new TagRewriter<>(this);
|
||||||
tagRewriter.registerGeneric(ClientboundPackets1_20_2.TAGS);
|
tagRewriter.registerGeneric(ClientboundPackets1_20_3.TAGS);
|
||||||
tagRewriter.registerGeneric(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.UPDATE_TAGS);
|
tagRewriter.registerGeneric(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.UPDATE_TAGS);
|
||||||
|
|
||||||
// Registers sound id changes
|
// Registers sound id changes
|
||||||
final SoundRewriter<ClientboundPackets1_20_2> soundRewriter = new SoundRewriter<>(this);
|
final SoundRewriter<ClientboundPackets1_20_3> soundRewriter = new SoundRewriter<>(this);
|
||||||
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.SOUND);
|
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND);
|
||||||
soundRewriter.registerSound(ClientboundPackets1_20_2.ENTITY_SOUND);
|
soundRewriter.registerSound(ClientboundPackets1_20_3.ENTITY_SOUND);
|
||||||
|
|
||||||
// Registers registry type id changes as well as stat id changes if also included in the json mappings
|
// Registers registry type id changes as well as stat id changes if also included in the json mappings
|
||||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_20_2.STATISTICS);
|
new StatisticsRewriter<>(this).register(ClientboundPackets1_20_3.STATISTICS);
|
||||||
|
|
||||||
// Uncomment if an existing type changed serialization format. Mappings for argument type keys can also be defined in mapping files
|
// Uncomment if an existing type changed serialization format. Mappings for argument type keys can also be defined in mapping files
|
||||||
/*final CommandRewriter1_19_4<ClientboundPackets1_20_2> commandRewriter = new CommandRewriter1_19_4<ClientboundPackets1_20_2>(this) {
|
/*final CommandRewriter1_19_4<ClientboundPackets1_20_3> commandRewriter = new CommandRewriter1_19_4<ClientboundPackets1_20_3>(this) {
|
||||||
@Override
|
@Override
|
||||||
public void handleArgument(final PacketWrapper wrapper, final String argumentType) throws Exception {
|
public void handleArgument(final PacketWrapper wrapper, final String argumentType) throws Exception {
|
||||||
if (argumentType.equals("minecraft:abc")) {
|
if (argumentType.equals("minecraft:abc")) {
|
||||||
@ -83,7 +83,9 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
|
|||||||
super.handleArgument(wrapper, argumentType);
|
super.handleArgument(wrapper, argumentType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.registerDeclareCommands1_19(ClientboundPackets1_20_2.DECLARE_COMMANDS);*/
|
}.registerDeclareCommands1_19(ClientboundPackets1_20_3.DECLARE_COMMANDS);*/
|
||||||
|
|
||||||
|
// TODO Attributes
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -91,7 +93,7 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
|
|||||||
super.onMappingDataLoaded(); // Calls load methods on rewriters
|
super.onMappingDataLoaded(); // Calls load methods on rewriters
|
||||||
|
|
||||||
// Uncomment this if the entity types enum has been newly added specificly for this Protocol
|
// Uncomment this if the entity types enum has been newly added specificly for this Protocol
|
||||||
// Entity1_20_3Types.initialize(this);
|
// EntityTypes1_20_3.initialize(this);
|
||||||
|
|
||||||
// Uncomment if a new particle was added = ids shifted; requires a new Types_ class copied from the last
|
// Uncomment if a new particle was added = ids shifted; requires a new Types_ class copied from the last
|
||||||
/*Types1_20_3.PARTICLE.filler(this)
|
/*Types1_20_3.PARTICLE.filler(this)
|
||||||
|
@ -19,7 +19,7 @@ package com.viaversion.viaversion.template.protocols.rewriter;
|
|||||||
|
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3;
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3;
|
||||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||||
@ -29,7 +29,7 @@ import com.viaversion.viaversion.template.protocols.Protocol1_99To_98;
|
|||||||
// To replace if needed:
|
// To replace if needed:
|
||||||
// ChunkType1_20_2
|
// ChunkType1_20_2
|
||||||
// RecipeRewriter1_20_3
|
// RecipeRewriter1_20_3
|
||||||
public final class BlockItemPacketRewriter1_99 extends ItemRewriter<ClientboundPackets1_20_2, ServerboundPackets1_20_3, Protocol1_99To_98> {
|
public final class BlockItemPacketRewriter1_99 extends ItemRewriter<ClientboundPackets1_20_3, ServerboundPackets1_20_3, Protocol1_99To_98> {
|
||||||
|
|
||||||
public BlockItemPacketRewriter1_99(final Protocol1_99To_98 protocol) {
|
public BlockItemPacketRewriter1_99(final Protocol1_99To_98 protocol) {
|
||||||
super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY);
|
super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY);
|
||||||
@ -40,33 +40,33 @@ public final class BlockItemPacketRewriter1_99 extends ItemRewriter<ClientboundP
|
|||||||
// Register block and block state id changes
|
// Register block and block state id changes
|
||||||
// Other places using block state id mappings: Spawn particle, entity metadata, entity spawn (falling blocks)
|
// Other places using block state id mappings: Spawn particle, entity metadata, entity spawn (falling blocks)
|
||||||
// Tags and statistics use block (!) ids
|
// Tags and statistics use block (!) ids
|
||||||
final BlockRewriter<ClientboundPackets1_20_2> blockRewriter = BlockRewriter.for1_20_2(protocol);
|
final BlockRewriter<ClientboundPackets1_20_3> blockRewriter = BlockRewriter.for1_20_2(protocol);
|
||||||
blockRewriter.registerBlockAction(ClientboundPackets1_20_2.BLOCK_ACTION);
|
blockRewriter.registerBlockAction(ClientboundPackets1_20_3.BLOCK_ACTION);
|
||||||
blockRewriter.registerBlockChange(ClientboundPackets1_20_2.BLOCK_CHANGE);
|
blockRewriter.registerBlockChange(ClientboundPackets1_20_3.BLOCK_CHANGE);
|
||||||
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_2.MULTI_BLOCK_CHANGE);
|
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_3.MULTI_BLOCK_CHANGE);
|
||||||
blockRewriter.registerEffect(ClientboundPackets1_20_2.EFFECT, 1010, 2001);
|
blockRewriter.registerEffect(ClientboundPackets1_20_3.EFFECT, 1010, 2001);
|
||||||
blockRewriter.registerChunkData1_19(ClientboundPackets1_20_2.CHUNK_DATA, ChunkType1_20_2::new);
|
blockRewriter.registerChunkData1_19(ClientboundPackets1_20_3.CHUNK_DATA, ChunkType1_20_2::new);
|
||||||
blockRewriter.registerBlockEntityData(ClientboundPackets1_20_2.BLOCK_ENTITY_DATA);
|
blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA);
|
||||||
|
|
||||||
// Registers item id changes
|
// Registers item id changes
|
||||||
// Other places using item ids are: Entity metadata, tags, statistics, effect
|
// Other places using item ids are: Entity metadata, tags, statistics, effect
|
||||||
// registerOpenWindow(ClientboundPackets1_20_2.OPEN_WINDOW); - If a new container type was added
|
// registerOpenWindow(ClientboundPackets1_20_3.OPEN_WINDOW); - If a new container type was added
|
||||||
registerSetCooldown(ClientboundPackets1_20_2.COOLDOWN);
|
registerSetCooldown(ClientboundPackets1_20_3.COOLDOWN);
|
||||||
registerWindowItems1_17_1(ClientboundPackets1_20_2.WINDOW_ITEMS);
|
registerWindowItems1_17_1(ClientboundPackets1_20_3.WINDOW_ITEMS);
|
||||||
registerSetSlot1_17_1(ClientboundPackets1_20_2.SET_SLOT);
|
registerSetSlot1_17_1(ClientboundPackets1_20_3.SET_SLOT);
|
||||||
registerAdvancements1_20_3(ClientboundPackets1_20_2.ADVANCEMENTS);
|
registerAdvancements1_20_3(ClientboundPackets1_20_3.ADVANCEMENTS);
|
||||||
registerEntityEquipmentArray(ClientboundPackets1_20_2.ENTITY_EQUIPMENT);
|
registerEntityEquipmentArray(ClientboundPackets1_20_3.ENTITY_EQUIPMENT);
|
||||||
registerClickWindow1_17_1(ServerboundPackets1_20_3.CLICK_WINDOW);
|
registerClickWindow1_17_1(ServerboundPackets1_20_3.CLICK_WINDOW);
|
||||||
registerTradeList1_19(ClientboundPackets1_20_2.TRADE_LIST);
|
registerTradeList1_19(ClientboundPackets1_20_3.TRADE_LIST);
|
||||||
registerCreativeInvAction(ServerboundPackets1_20_3.CREATIVE_INVENTORY_ACTION);
|
registerCreativeInvAction(ServerboundPackets1_20_3.CREATIVE_INVENTORY_ACTION);
|
||||||
registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_2.WINDOW_PROPERTY);
|
registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_3.WINDOW_PROPERTY);
|
||||||
registerSpawnParticle1_19(ClientboundPackets1_20_2.SPAWN_PARTICLE);
|
registerSpawnParticle1_19(ClientboundPackets1_20_3.SPAWN_PARTICLE);
|
||||||
|
|
||||||
// TODO Explosion contains particles now
|
// TODO Explosion contains particles now
|
||||||
|
|
||||||
new RecipeRewriter1_20_3<>(protocol).register(ClientboundPackets1_20_2.DECLARE_RECIPES);
|
new RecipeRewriter1_20_3<>(protocol).register(ClientboundPackets1_20_3.DECLARE_RECIPES);
|
||||||
// OR do this if serialization of recipes changed and override the relevant method
|
// OR do this if serialization of recipes changed and override the relevant method
|
||||||
// Add new serializers to RecipeRewriter, or extend the last one for changes
|
// Add new serializers to RecipeRewriter, or extend the last one for changes
|
||||||
// new RecipeRewriter1_20_3<ClientboundPackets1_20_2>(this) {}.register(ClientboundPackets1_20_2.DECLARE_RECIPES);
|
// new RecipeRewriter1_20_3<ClientboundPackets1_20_3>(this) {}.register(ClientboundPackets1_20_3.DECLARE_RECIPES);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,15 +23,15 @@ import com.viaversion.viaversion.api.protocol.packet.State;
|
|||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
|
import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2;
|
|
||||||
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.ClientboundConfigurationPackets1_20_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
|
||||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||||
import com.viaversion.viaversion.template.protocols.Protocol1_99To_98;
|
import com.viaversion.viaversion.template.protocols.Protocol1_99To_98;
|
||||||
|
|
||||||
// Replace if needed
|
// Replace if needed
|
||||||
// Types1_OLD
|
// Types1_OLD
|
||||||
// Types1_20_3
|
// Types1_20_3
|
||||||
public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPackets1_20_2, Protocol1_99To_98> {
|
public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPackets1_20_3, Protocol1_99To_98> {
|
||||||
|
|
||||||
public EntityPacketRewriter1_99(final Protocol1_99To_98 protocol) {
|
public EntityPacketRewriter1_99(final Protocol1_99To_98 protocol) {
|
||||||
super(protocol);
|
super(protocol);
|
||||||
@ -40,9 +40,9 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPa
|
|||||||
@Override
|
@Override
|
||||||
public void registerPackets() {
|
public void registerPackets() {
|
||||||
// Tracks entities, applies metadata rewrites registered below, untracks entities
|
// Tracks entities, applies metadata rewrites registered below, untracks entities
|
||||||
registerTrackerWithData1_19(ClientboundPackets1_20_2.SPAWN_ENTITY, EntityTypes1_20_3.FALLING_BLOCK);
|
registerTrackerWithData1_19(ClientboundPackets1_20_3.SPAWN_ENTITY, EntityTypes1_20_3.FALLING_BLOCK);
|
||||||
registerMetadataRewriter(ClientboundPackets1_20_2.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_3.METADATA_LIST); // Specify old and new metadata list if changed
|
registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_3.METADATA_LIST); // Specify old and new metadata list if changed
|
||||||
registerRemoveEntities(ClientboundPackets1_20_2.REMOVE_ENTITIES);
|
registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES);
|
||||||
|
|
||||||
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() {
|
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
@ -53,7 +53,7 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPa
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
protocol.registerClientbound(ClientboundPackets1_20_2.JOIN_GAME, new PacketHandlers() {
|
protocol.registerClientbound(ClientboundPackets1_20_3.JOIN_GAME, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.INT); // Entity id
|
map(Type.INT); // Entity id
|
||||||
@ -71,7 +71,7 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPa
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
protocol.registerClientbound(ClientboundPackets1_20_2.RESPAWN, new PacketHandlers() {
|
protocol.registerClientbound(ClientboundPackets1_20_3.RESPAWN, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.STRING); // Dimension
|
map(Type.STRING); // Dimension
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren