Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-28 09:00:09 +01:00
23w06a
Dieser Commit ist enthalten in:
Ursprung
088f654159
Commit
b03765a828
@ -93,5 +93,6 @@ public interface ProtocolInfo {
|
|||||||
*
|
*
|
||||||
* @return user connection
|
* @return user connection
|
||||||
*/
|
*/
|
||||||
|
@Deprecated/*(forRemoval = true)*/
|
||||||
UserConnection getUser();
|
UserConnection getUser();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
public final class Quaternion {
|
||||||
|
private final float x;
|
||||||
|
private final float y;
|
||||||
|
private final float z;
|
||||||
|
private final float w;
|
||||||
|
|
||||||
|
public Quaternion(final float x, final float y, final float z, final float w) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
this.w = w;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float x() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float y() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float z() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float w() {
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
public final class Vector3f {
|
||||||
|
private final float x;
|
||||||
|
private final float y;
|
||||||
|
private final float z;
|
||||||
|
|
||||||
|
public Vector3f(final float x, final float y, final float z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float x() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float y() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float z() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,279 @@
|
|||||||
|
/*
|
||||||
|
* 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 Entity1_19_4Types 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),
|
||||||
|
|
||||||
|
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),
|
||||||
|
|
||||||
|
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),
|
||||||
|
|
||||||
|
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),
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
Entity1_19_4Types(final EntityType parent) {
|
||||||
|
this.parent = parent;
|
||||||
|
this.identifier = "minecraft:" + name().toLowerCase(Locale.ROOT);
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity1_19_4Types(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);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* 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.metadata.types;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.ParticleType;
|
||||||
|
|
||||||
|
public final class MetaTypes1_19_4 extends AbstractMetaTypes {
|
||||||
|
|
||||||
|
public final MetaType byteType = add(0, Type.BYTE);
|
||||||
|
public final MetaType varIntType = add(1, Type.VAR_INT);
|
||||||
|
public final MetaType longType = add(2, Type.VAR_LONG);
|
||||||
|
public final MetaType floatType = add(3, Type.FLOAT);
|
||||||
|
public final MetaType stringType = add(4, Type.STRING);
|
||||||
|
public final MetaType componentType = add(5, Type.COMPONENT);
|
||||||
|
public final MetaType optionalComponentType = add(6, Type.OPTIONAL_COMPONENT);
|
||||||
|
public final MetaType itemType = add(7, Type.FLAT_VAR_INT_ITEM);
|
||||||
|
public final MetaType booleanType = add(8, Type.BOOLEAN);
|
||||||
|
public final MetaType rotationType = add(9, Type.ROTATION);
|
||||||
|
public final MetaType positionType = add(10, Type.POSITION1_14);
|
||||||
|
public final MetaType optionalPositionType = add(11, Type.OPTIONAL_POSITION_1_14);
|
||||||
|
public final MetaType directionType = add(12, Type.VAR_INT);
|
||||||
|
public final MetaType optionalUUIDType = add(13, Type.OPTIONAL_UUID);
|
||||||
|
public final MetaType blockStateType = add(14, Type.VAR_INT);
|
||||||
|
public final MetaType optionalBlockStateType = add(15, Type.VAR_INT);
|
||||||
|
public final MetaType nbtType = add(16, Type.NBT);
|
||||||
|
public final MetaType particleType;
|
||||||
|
public final MetaType villagerDatatType = add(18, Type.VILLAGER_DATA);
|
||||||
|
public final MetaType optionalVarIntType = add(19, Type.OPTIONAL_VAR_INT);
|
||||||
|
public final MetaType poseType = add(20, Type.VAR_INT);
|
||||||
|
public final MetaType catVariantType = add(21, Type.VAR_INT);
|
||||||
|
public final MetaType frogVariantType = add(22, Type.VAR_INT);
|
||||||
|
public final MetaType optionalGlobalPosition = add(23, Type.OPTIONAL_GLOBAL_POSITION);
|
||||||
|
public final MetaType paintingVariantType = add(24, Type.VAR_INT);
|
||||||
|
public final MetaType vectorType = add(25, Type.VECTOR3F);
|
||||||
|
public final MetaType quaternionType = add(26, Type.QUATERNION);
|
||||||
|
|
||||||
|
public MetaTypes1_19_4(final ParticleType particleType) {
|
||||||
|
super(27);
|
||||||
|
this.particleType = add(17, particleType);
|
||||||
|
}
|
||||||
|
}
|
@ -83,7 +83,7 @@ public class ProtocolVersion {
|
|||||||
public static final ProtocolVersion v1_19 = register(759, "1.19");
|
public static final ProtocolVersion v1_19 = register(759, "1.19");
|
||||||
public static final ProtocolVersion v1_19_1 = register(760, "1.19.1/2", new VersionRange("1.19", 1, 2));
|
public static final ProtocolVersion v1_19_1 = register(760, "1.19.1/2", new VersionRange("1.19", 1, 2));
|
||||||
public static final ProtocolVersion v1_19_3 = register(761, "1.19.3");
|
public static final ProtocolVersion v1_19_3 = register(761, "1.19.3");
|
||||||
public static final ProtocolVersion v1_19_4 = register(762, 117, "1.19.4");
|
public static final ProtocolVersion v1_19_4 = register(762, 118, "1.19.4");
|
||||||
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) {
|
||||||
|
@ -31,7 +31,9 @@ import com.viaversion.viaversion.api.minecraft.GlobalPosition;
|
|||||||
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
|
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
|
||||||
import com.viaversion.viaversion.api.minecraft.Position;
|
import com.viaversion.viaversion.api.minecraft.Position;
|
||||||
import com.viaversion.viaversion.api.minecraft.ProfileKey;
|
import com.viaversion.viaversion.api.minecraft.ProfileKey;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Quaternion;
|
||||||
import com.viaversion.viaversion.api.minecraft.Vector;
|
import com.viaversion.viaversion.api.minecraft.Vector;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Vector3f;
|
||||||
import com.viaversion.viaversion.api.minecraft.VillagerData;
|
import com.viaversion.viaversion.api.minecraft.VillagerData;
|
||||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||||
import com.viaversion.viaversion.api.type.types.ArrayType;
|
import com.viaversion.viaversion.api.type.types.ArrayType;
|
||||||
@ -71,7 +73,9 @@ import com.viaversion.viaversion.api.type.types.minecraft.PlayerMessageSignature
|
|||||||
import com.viaversion.viaversion.api.type.types.minecraft.Position1_14Type;
|
import com.viaversion.viaversion.api.type.types.minecraft.Position1_14Type;
|
||||||
import com.viaversion.viaversion.api.type.types.minecraft.PositionType;
|
import com.viaversion.viaversion.api.type.types.minecraft.PositionType;
|
||||||
import com.viaversion.viaversion.api.type.types.minecraft.ProfileKeyType;
|
import com.viaversion.viaversion.api.type.types.minecraft.ProfileKeyType;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.QuaternionType;
|
||||||
import com.viaversion.viaversion.api.type.types.minecraft.VarLongBlockChangeRecordType;
|
import com.viaversion.viaversion.api.type.types.minecraft.VarLongBlockChangeRecordType;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.Vector3fType;
|
||||||
import com.viaversion.viaversion.api.type.types.minecraft.VectorType;
|
import com.viaversion.viaversion.api.type.types.minecraft.VectorType;
|
||||||
import com.viaversion.viaversion.api.type.types.minecraft.VillagerDataType;
|
import com.viaversion.viaversion.api.type.types.minecraft.VillagerDataType;
|
||||||
|
|
||||||
@ -157,6 +161,8 @@ public abstract class Type<T> implements ByteBufReader<T>, ByteBufWriter<T> {
|
|||||||
public static final Type<Position> OPTIONAL_POSITION_1_14 = new Position1_14Type.OptionalPosition1_14Type();
|
public static final Type<Position> OPTIONAL_POSITION_1_14 = new Position1_14Type.OptionalPosition1_14Type();
|
||||||
public static final Type<EulerAngle> ROTATION = new EulerAngleType();
|
public static final Type<EulerAngle> ROTATION = new EulerAngleType();
|
||||||
public static final Type<Vector> VECTOR = new VectorType();
|
public static final Type<Vector> VECTOR = new VectorType();
|
||||||
|
public static final Type<Vector3f> VECTOR3F = new Vector3fType();
|
||||||
|
public static final Type<Quaternion> QUATERNION = new QuaternionType();
|
||||||
public static final Type<CompoundTag> NBT = new NBTType();
|
public static final Type<CompoundTag> NBT = new NBTType();
|
||||||
public static final Type<CompoundTag[]> NBT_ARRAY = new ArrayType<>(Type.NBT);
|
public static final Type<CompoundTag[]> NBT_ARRAY = new ArrayType<>(Type.NBT);
|
||||||
|
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* 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.type.types.minecraft;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Quaternion;
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
public class QuaternionType extends Type<Quaternion> {
|
||||||
|
|
||||||
|
public QuaternionType() {
|
||||||
|
super(Quaternion.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Quaternion read(final ByteBuf buffer) throws Exception {
|
||||||
|
final float x = buffer.readFloat();
|
||||||
|
final float y = buffer.readFloat();
|
||||||
|
final float z = buffer.readFloat();
|
||||||
|
final float w = buffer.readFloat();
|
||||||
|
return new Quaternion(x, y, z, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(final ByteBuf buffer, final Quaternion object) throws Exception {
|
||||||
|
buffer.writeFloat(object.x());
|
||||||
|
buffer.writeFloat(object.y());
|
||||||
|
buffer.writeFloat(object.z());
|
||||||
|
buffer.writeFloat(object.w());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* 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.type.types.minecraft;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.Vector3f;
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
public class Vector3fType extends Type<Vector3f> {
|
||||||
|
|
||||||
|
public Vector3fType() {
|
||||||
|
super(Vector3f.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vector3f read(final ByteBuf buffer) throws Exception {
|
||||||
|
final float x = buffer.readFloat();
|
||||||
|
final float y = buffer.readFloat();
|
||||||
|
final float z = buffer.readFloat();
|
||||||
|
return new Vector3f(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(final ByteBuf buffer, final Vector3f object) throws Exception {
|
||||||
|
buffer.writeFloat(object.x());
|
||||||
|
buffer.writeFloat(object.y());
|
||||||
|
buffer.writeFloat(object.z());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* 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.type.types.version;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaTypes1_19_3;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaTypes1_19_4;
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.MetaListType;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.ParticleType;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public final class Types1_19_4 {
|
||||||
|
|
||||||
|
public static final MetaTypes1_19_4 META_TYPES = new MetaTypes1_19_4(Types1_19_3.PARTICLE);
|
||||||
|
public static final Type<Metadata> METADATA = new MetadataType(META_TYPES);
|
||||||
|
public static final Type<List<Metadata>> METADATA_LIST = new MetaListType(METADATA);
|
||||||
|
}
|
@ -44,6 +44,7 @@ public enum ClientboundPackets1_19_4 implements ClientboundPacketType {
|
|||||||
COOLDOWN, // 0x14
|
COOLDOWN, // 0x14
|
||||||
CUSTOM_CHAT_COMPLETIONS, // 0x15
|
CUSTOM_CHAT_COMPLETIONS, // 0x15
|
||||||
PLUGIN_MESSAGE, // 0x16
|
PLUGIN_MESSAGE, // 0x16
|
||||||
|
DAMAGE_EVENT,
|
||||||
DELETE_CHAT_MESSAGE, // 0x17
|
DELETE_CHAT_MESSAGE, // 0x17
|
||||||
DISCONNECT, // 0x18
|
DISCONNECT, // 0x18
|
||||||
DISGUISED_CHAT, // 0x19
|
DISGUISED_CHAT, // 0x19
|
||||||
|
@ -18,19 +18,20 @@
|
|||||||
package com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3;
|
package com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_3Types;
|
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_4Types;
|
||||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1;
|
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3;
|
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.data.MappingData;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.packets.EntityPackets;
|
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.packets.EntityPackets;
|
||||||
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
||||||
|
|
||||||
public final class Protocol1_19_4To1_19_3 extends AbstractProtocol<ClientboundPackets1_19_3, ClientboundPackets1_19_4, ServerboundPackets1_19_3, ServerboundPackets1_19_4> {
|
public final class Protocol1_19_4To1_19_3 extends AbstractProtocol<ClientboundPackets1_19_3, ClientboundPackets1_19_4, ServerboundPackets1_19_3, ServerboundPackets1_19_4> {
|
||||||
|
|
||||||
|
public static final MappingData MAPPINGS = new MappingData();
|
||||||
private final EntityPackets entityRewriter = new EntityPackets(this);
|
private final EntityPackets entityRewriter = new EntityPackets(this);
|
||||||
|
|
||||||
public Protocol1_19_4To1_19_3() {
|
public Protocol1_19_4To1_19_3() {
|
||||||
@ -39,6 +40,7 @@ public final class Protocol1_19_4To1_19_3 extends AbstractProtocol<ClientboundPa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void registerPackets() {
|
protected void registerPackets() {
|
||||||
|
//TODO Damage events
|
||||||
entityRewriter.register();
|
entityRewriter.register();
|
||||||
|
|
||||||
final CommandRewriter<ClientboundPackets1_19_3> commandRewriter = new CommandRewriter<ClientboundPackets1_19_3>(this) {
|
final CommandRewriter<ClientboundPackets1_19_3> commandRewriter = new CommandRewriter<ClientboundPackets1_19_3>(this) {
|
||||||
@ -51,22 +53,23 @@ public final class Protocol1_19_4To1_19_3 extends AbstractProtocol<ClientboundPa
|
|||||||
super.handleArgument(wrapper, argumentType);
|
super.handleArgument(wrapper, argumentType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String argumentType(final int argumentTypeId) {
|
|
||||||
return Protocol1_19_3To1_19_1.MAPPINGS.getArgumentTypeMappings().mappedIdentifier(argumentTypeId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected int mappedArgumentTypeId(final String mappedArgumentType) {
|
|
||||||
return Protocol1_19_3To1_19_1.MAPPINGS.getArgumentTypeMappings().mappedId(mappedArgumentType);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
commandRewriter.registerDeclareCommands1_19(ClientboundPackets1_19_3.DECLARE_COMMANDS);
|
commandRewriter.registerDeclareCommands1_19(ClientboundPackets1_19_3.DECLARE_COMMANDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onMappingDataLoaded() {
|
||||||
|
Entity1_19_4Types.initialize(this);
|
||||||
|
entityRewriter.onMappingDataLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(final UserConnection user) {
|
public void init(final UserConnection user) {
|
||||||
addEntityTracker(user, new EntityTrackerBase(user, Entity1_19_3Types.PLAYER));
|
addEntityTracker(user, new EntityTrackerBase(user, Entity1_19_4Types.PLAYER));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MappingData getMappingData() {
|
||||||
|
return MAPPINGS;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2016-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_19_4to1_19_3.data;
|
||||||
|
|
||||||
|
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.viaversion.viaversion.api.data.MappingDataBase;
|
||||||
|
import com.viaversion.viaversion.api.data.MappingDataLoader;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO;
|
||||||
|
import java.io.IOException;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
|
public final class MappingData extends MappingDataBase {
|
||||||
|
|
||||||
|
private CompoundTag damageTypesRegistry;
|
||||||
|
|
||||||
|
public MappingData() {
|
||||||
|
super("1.19.3", "1.19.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void loadExtras(final JsonObject oldMappings, final JsonObject newMappings, @Nullable final JsonObject diffMappings) {
|
||||||
|
try {
|
||||||
|
damageTypesRegistry = BinaryTagIO.readCompressedInputStream(MappingDataLoader.getResource("damage-types-1.19.4.nbt"));
|
||||||
|
} catch (final IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompoundTag damageTypesRegistry() {
|
||||||
|
return damageTypesRegistry.clone();
|
||||||
|
}
|
||||||
|
}
|
@ -22,10 +22,12 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
|
|||||||
import com.github.steveice10.opennbt.tag.builtin.ListTag;
|
import com.github.steveice10.opennbt.tag.builtin.ListTag;
|
||||||
import com.github.steveice10.opennbt.tag.builtin.StringTag;
|
import com.github.steveice10.opennbt.tag.builtin.StringTag;
|
||||||
import com.github.steveice10.opennbt.tag.builtin.Tag;
|
import com.github.steveice10.opennbt.tag.builtin.Tag;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_3Types;
|
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_4Types;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.version.Types1_19_3;
|
||||||
|
import com.viaversion.viaversion.api.type.types.version.Types1_19_4;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4;
|
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3;
|
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3;
|
||||||
@ -55,6 +57,9 @@ public final class EntityPackets extends EntityRewriter<ClientboundPackets1_19_3
|
|||||||
handler(worldDataTrackerHandlerByKey());
|
handler(worldDataTrackerHandlerByKey());
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
final CompoundTag registry = wrapper.get(Type.NBT, 0);
|
final CompoundTag registry = wrapper.get(Type.NBT, 0);
|
||||||
|
final CompoundTag damageTypeRegistry = protocol.getMappingData().damageTypesRegistry();
|
||||||
|
registry.put("minecraft:damage_type", damageTypeRegistry);
|
||||||
|
|
||||||
final CompoundTag biomeRegistry = registry.get("minecraft:worldgen/biome");
|
final CompoundTag biomeRegistry = registry.get("minecraft:worldgen/biome");
|
||||||
final ListTag biomes = biomeRegistry.get("value");
|
final ListTag biomes = biomeRegistry.get("value");
|
||||||
for (final Tag biomeTag : biomes) {
|
for (final Tag biomeTag : biomes) {
|
||||||
@ -92,10 +97,72 @@ public final class EntityPackets extends EntityRewriter<ClientboundPackets1_19_3
|
|||||||
handler(worldDataTrackerHandlerByKey());
|
handler(worldDataTrackerHandlerByKey());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
protocol.registerClientbound(ClientboundPackets1_19_3.ENTITY_STATUS, new PacketRemapper() {
|
||||||
|
@Override
|
||||||
|
public void registerMap() {
|
||||||
|
handler(wrapper -> {
|
||||||
|
final int entityId = wrapper.read(Type.INT);
|
||||||
|
final byte event = wrapper.read(Type.BYTE);
|
||||||
|
|
||||||
|
final int damageType = damageTypeFromEntityEvent(event);
|
||||||
|
if (damageType != -1) {
|
||||||
|
wrapper.setPacketType(ClientboundPackets1_19_4.DAMAGE_EVENT);
|
||||||
|
wrapper.write(Type.VAR_INT, entityId);
|
||||||
|
wrapper.write(Type.VAR_INT, damageType);
|
||||||
|
wrapper.write(Type.VAR_INT, 0); // No source entity
|
||||||
|
wrapper.write(Type.VAR_INT, 0); // No direct source entity
|
||||||
|
wrapper.write(Type.BOOLEAN, false); // No source position
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper.write(Type.INT, entityId);
|
||||||
|
wrapper.write(Type.BYTE, event);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
registerTrackerWithData1_19(ClientboundPackets1_19_3.SPAWN_ENTITY, null);
|
||||||
|
registerRemoveEntities(ClientboundPackets1_19_3.REMOVE_ENTITIES);
|
||||||
|
registerMetadataRewriter(ClientboundPackets1_19_3.ENTITY_METADATA, Types1_19_3.METADATA_LIST, Types1_19_4.METADATA_LIST);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int damageTypeFromEntityEvent(byte entityEvent) {
|
||||||
|
switch (entityEvent) {
|
||||||
|
case 33: // Thorned
|
||||||
|
return 36;
|
||||||
|
case 36: // Drowned
|
||||||
|
return 5;
|
||||||
|
case 37: // Burned
|
||||||
|
return 27;
|
||||||
|
case 57: // Frozen
|
||||||
|
return 15;
|
||||||
|
case 44: // Poked
|
||||||
|
case 2: // Generic hurt
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void registerRewrites() {
|
||||||
|
filter().handler((event, meta) -> {
|
||||||
|
int id = meta.metaType().typeId();
|
||||||
|
if (id >= 14) { // Optional block state (and map block state=14 to optional block state)
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
meta.setMetaType(Types1_19_4.META_TYPES.byId(id));
|
||||||
|
});
|
||||||
|
filter().filterFamily(Entity1_19_4Types.ABSTRACT_HORSE).removeIndex(18); // Owner UUID
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMappingDataLoaded() {
|
||||||
|
mapTypes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityType typeFromId(final int type) {
|
public EntityType typeFromId(final int type) {
|
||||||
return Entity1_19_3Types.getTypeFromId(type);
|
return Entity1_19_4Types.getTypeFromId(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
BIN
common/src/main/resources/assets/viaversion/data/damage-types-1.19.4.nbt
Normale Datei
BIN
common/src/main/resources/assets/viaversion/data/damage-types-1.19.4.nbt
Normale Datei
Binäre Datei nicht angezeigt.
1376
common/src/main/resources/assets/viaversion/data/mapping-1.19.4.json
Normale Datei
1376
common/src/main/resources/assets/viaversion/data/mapping-1.19.4.json
Normale Datei
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
@ -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.6.0-23w05a-SNAPSHOT
|
projectVersion=4.6.0-23w06a-SNAPSHOT
|
||||||
|
|
||||||
# Gradle properties
|
# Gradle properties
|
||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren