Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-11-20 06:50:08 +01:00
Start working on 19w34a
Dieser Commit ist enthalten in:
Ursprung
7cb4e1d00e
Commit
6f19d2d6d1
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
@ -0,0 +1,248 @@
|
||||
package us.myles.ViaVersion.api.entities;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import us.myles.ViaVersion.api.Via;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class Entity1_15Types {
|
||||
public static EntityType getTypeFromId(int typeID) {
|
||||
Optional<EntityType> type = EntityType.findById(typeID);
|
||||
|
||||
if (!type.isPresent()) {
|
||||
Via.getPlatform().getLogger().severe("Could not find type id " + typeID);
|
||||
return EntityType.ENTITY; // Fall back to the basic ENTITY
|
||||
}
|
||||
|
||||
return type.get();
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum EntityType {
|
||||
ENTITY(-1),
|
||||
|
||||
AREA_EFFECT_CLOUD(0, ENTITY),
|
||||
ENDER_CRYSTAL(18, ENTITY),
|
||||
EVOCATION_FANGS(22, ENTITY),
|
||||
XP_ORB(24, ENTITY),
|
||||
EYE_OF_ENDER_SIGNAL(25, ENTITY),
|
||||
FALLING_BLOCK(26, ENTITY),
|
||||
FIREWORKS_ROCKET(27, ENTITY),
|
||||
ITEM(35, ENTITY),
|
||||
LLAMA_SPIT(40, ENTITY),
|
||||
TNT(59, ENTITY),
|
||||
SHULKER_BULLET(64, ENTITY),
|
||||
FISHING_BOBBER(111, ENTITY),
|
||||
|
||||
LIVINGENTITY(-1, ENTITY),
|
||||
ARMOR_STAND(1, LIVINGENTITY),
|
||||
PLAYER(110, LIVINGENTITY),
|
||||
|
||||
ABSTRACT_INSENTIENT(-1, LIVINGENTITY),
|
||||
ENDER_DRAGON(19, ABSTRACT_INSENTIENT),
|
||||
|
||||
BEE(4, ABSTRACT_INSENTIENT),
|
||||
|
||||
ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT),
|
||||
|
||||
ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE),
|
||||
VILLAGER(85, ABSTRACT_AGEABLE),
|
||||
WANDERING_TRADER(89, ABSTRACT_AGEABLE),
|
||||
|
||||
// Animals
|
||||
ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE),
|
||||
DOLPHIN(14, ABSTRACT_INSENTIENT),
|
||||
CHICKEN(9, ABSTRACT_ANIMAL),
|
||||
COW(11, ABSTRACT_ANIMAL),
|
||||
MOOSHROOM(50, COW),
|
||||
PANDA(53, ABSTRACT_INSENTIENT),
|
||||
PIG(55, ABSTRACT_ANIMAL),
|
||||
POLAR_BEAR(58, ABSTRACT_ANIMAL),
|
||||
RABBIT(60, ABSTRACT_ANIMAL),
|
||||
SHEEP(62, ABSTRACT_ANIMAL),
|
||||
TURTLE(78, ABSTRACT_ANIMAL),
|
||||
FOX(28, ABSTRACT_ANIMAL),
|
||||
|
||||
ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL),
|
||||
CAT(7, ABSTRACT_TAMEABLE_ANIMAL),
|
||||
OCELOT(51, ABSTRACT_TAMEABLE_ANIMAL),
|
||||
WOLF(94, ABSTRACT_TAMEABLE_ANIMAL),
|
||||
|
||||
ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL),
|
||||
PARROT(54, ABSTRACT_PARROT),
|
||||
|
||||
// Horses
|
||||
ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL),
|
||||
CHESTED_HORSE(-1, ABSTRACT_HORSE),
|
||||
DONKEY(13, CHESTED_HORSE),
|
||||
MULE(49, CHESTED_HORSE),
|
||||
LLAMA(39, CHESTED_HORSE),
|
||||
TRADER_LLAMA(76, CHESTED_HORSE),
|
||||
HORSE(32, ABSTRACT_HORSE),
|
||||
SKELETON_HORSE(67, ABSTRACT_HORSE),
|
||||
ZOMBIE_HORSE(96, ABSTRACT_HORSE),
|
||||
|
||||
// Golem
|
||||
ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE),
|
||||
SNOWMAN(70, ABSTRACT_GOLEM),
|
||||
VILLAGER_GOLEM(86, ABSTRACT_GOLEM),
|
||||
SHULKER(63, ABSTRACT_GOLEM),
|
||||
|
||||
// Fish
|
||||
ABSTRACT_FISHES(-1, ABSTRACT_CREATURE),
|
||||
COD(10, ABSTRACT_FISHES),
|
||||
PUFFER_FISH(56, ABSTRACT_FISHES),
|
||||
SALMON_MOB(61, ABSTRACT_FISHES),
|
||||
TROPICAL_FISH(77, ABSTRACT_FISHES),
|
||||
|
||||
// Monsters
|
||||
ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE),
|
||||
BLAZE(4, ABSTRACT_MONSTER),
|
||||
CREEPER(12, ABSTRACT_MONSTER),
|
||||
ENDERMITE(21, ABSTRACT_MONSTER),
|
||||
ENDERMAN(20, ABSTRACT_MONSTER),
|
||||
GIANT(30, ABSTRACT_MONSTER),
|
||||
SILVERFISH(65, ABSTRACT_MONSTER),
|
||||
VEX(84, ABSTRACT_MONSTER),
|
||||
WITCH(90, ABSTRACT_MONSTER),
|
||||
WITHER(91, ABSTRACT_MONSTER),
|
||||
RAVAGER(99, ABSTRACT_MONSTER),
|
||||
|
||||
// Illagers
|
||||
ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER),
|
||||
ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE),
|
||||
EVOCATION_ILLAGER(23, ABSTRACT_EVO_ILLU_ILLAGER),
|
||||
ILLUSION_ILLAGER(34, ABSTRACT_EVO_ILLU_ILLAGER),
|
||||
VINDICATION_ILLAGER(87, ABSTRACT_ILLAGER_BASE),
|
||||
PILLAGER(88, ABSTRACT_ILLAGER_BASE),
|
||||
|
||||
// Skeletons
|
||||
ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER),
|
||||
SKELETON(66, ABSTRACT_SKELETON),
|
||||
STRAY(75, ABSTRACT_SKELETON),
|
||||
WITHER_SKELETON(92, ABSTRACT_SKELETON),
|
||||
|
||||
// Guardians
|
||||
GUARDIAN(31, ABSTRACT_MONSTER),
|
||||
ELDER_GUARDIAN(17, GUARDIAN),
|
||||
|
||||
// Spiders
|
||||
SPIDER(73, ABSTRACT_MONSTER),
|
||||
CAVE_SPIDER(8, SPIDER),
|
||||
|
||||
// Zombies
|
||||
ZOMBIE(95, ABSTRACT_MONSTER),
|
||||
DROWNED(16, ZOMBIE),
|
||||
HUSK(33, ZOMBIE),
|
||||
ZOMBIE_PIGMAN(57, ZOMBIE),
|
||||
ZOMBIE_VILLAGER(97, ZOMBIE),
|
||||
|
||||
// Flying entities
|
||||
ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT),
|
||||
GHAST(29, ABSTRACT_FLYING),
|
||||
PHANTOM(98, ABSTRACT_FLYING),
|
||||
|
||||
ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT),
|
||||
BAT(3, ABSTRACT_AMBIENT),
|
||||
|
||||
ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT),
|
||||
SQUID(74, ABSTRACT_WATERMOB),
|
||||
|
||||
// Slimes
|
||||
SLIME(68, ABSTRACT_INSENTIENT),
|
||||
MAGMA_CUBE(41, SLIME),
|
||||
|
||||
// Hangable objects
|
||||
ABSTRACT_HANGING(-1, ENTITY),
|
||||
LEASH_KNOT(38, ABSTRACT_HANGING),
|
||||
ITEM_FRAME(36, ABSTRACT_HANGING),
|
||||
PAINTING(52, ABSTRACT_HANGING),
|
||||
|
||||
ABSTRACT_LIGHTNING(-1, ENTITY),
|
||||
LIGHTNING_BOLT(100, ABSTRACT_LIGHTNING),
|
||||
|
||||
// Arrows
|
||||
ABSTRACT_ARROW(-1, ENTITY),
|
||||
ARROW(2, ABSTRACT_ARROW),
|
||||
SPECTRAL_ARROW(72, ABSTRACT_ARROW),
|
||||
TRIDENT(83, ABSTRACT_ARROW),
|
||||
|
||||
// Fireballs
|
||||
ABSTRACT_FIREBALL(-1, ENTITY),
|
||||
DRAGON_FIREBALL(15, ABSTRACT_FIREBALL),
|
||||
FIREBALL(37, ABSTRACT_FIREBALL),
|
||||
SMALL_FIREBALL(69, ABSTRACT_FIREBALL),
|
||||
WITHER_SKULL(93, ABSTRACT_FIREBALL),
|
||||
|
||||
// Projectiles
|
||||
PROJECTILE_ABSTRACT(-1, ENTITY),
|
||||
SNOWBALL(71, PROJECTILE_ABSTRACT),
|
||||
ENDER_PEARL(80, PROJECTILE_ABSTRACT),
|
||||
EGG(79, PROJECTILE_ABSTRACT),
|
||||
POTION(82, PROJECTILE_ABSTRACT),
|
||||
XP_BOTTLE(81, PROJECTILE_ABSTRACT),
|
||||
|
||||
// Vehicles
|
||||
MINECART_ABSTRACT(-1, ENTITY),
|
||||
CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT),
|
||||
CHEST_MINECART(43, CHESTED_MINECART_ABSTRACT),
|
||||
HOPPER_MINECART(46, CHESTED_MINECART_ABSTRACT),
|
||||
MINECART(42, MINECART_ABSTRACT),
|
||||
FURNACE_MINECART(45, MINECART_ABSTRACT),
|
||||
COMMANDBLOCK_MINECART(44, MINECART_ABSTRACT),
|
||||
TNT_MINECART(48, MINECART_ABSTRACT),
|
||||
SPAWNER_MINECART(47, MINECART_ABSTRACT),
|
||||
BOAT(6, ENTITY);
|
||||
|
||||
private static final Map<Integer, EntityType> TYPES = new HashMap<>();
|
||||
|
||||
private final int id;
|
||||
private final EntityType parent;
|
||||
|
||||
EntityType(int id) {
|
||||
this.id = id;
|
||||
this.parent = null;
|
||||
}
|
||||
|
||||
static {
|
||||
for (EntityType type : EntityType.values()) {
|
||||
TYPES.put(type.id, type);
|
||||
}
|
||||
}
|
||||
|
||||
public static Optional<EntityType> findById(int id) {
|
||||
if (id == -1)
|
||||
return Optional.absent();
|
||||
return Optional.fromNullable(TYPES.get(id));
|
||||
}
|
||||
|
||||
public boolean is(EntityType... types) {
|
||||
for (EntityType type : types)
|
||||
if (is(type))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean is(EntityType type) {
|
||||
return this == type;
|
||||
}
|
||||
|
||||
public boolean isOrHasParent(EntityType type) {
|
||||
EntityType parent = this;
|
||||
|
||||
do {
|
||||
if (parent == type)
|
||||
return true;
|
||||
|
||||
parent = parent.getParent();
|
||||
} while (parent != null);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -21,6 +21,7 @@ import us.myles.ViaVersion.protocols.protocol1_14_2to1_14_1.Protocol1_14_2To1_14
|
||||
import us.myles.ViaVersion.protocols.protocol1_14_3to1_14_2.Protocol1_14_3To1_14_2;
|
||||
import us.myles.ViaVersion.protocols.protocol1_14_4to1_14_3.Protocol1_14_4To1_14_3;
|
||||
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4;
|
||||
import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2To1_9_3_4;
|
||||
import us.myles.ViaVersion.protocols.protocol1_9_1to1_9.Protocol1_9_1To1_9;
|
||||
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.Protocol1_9_3To1_9_1_2;
|
||||
@ -70,6 +71,8 @@ public class ProtocolRegistry {
|
||||
registerProtocol(new Protocol1_14_2To1_14_1(), Collections.singletonList(ProtocolVersion.v1_14_2.getId()), ProtocolVersion.v1_14_1.getId());
|
||||
registerProtocol(new Protocol1_14_3To1_14_2(), Collections.singletonList(ProtocolVersion.v1_14_3.getId()), ProtocolVersion.v1_14_2.getId());
|
||||
registerProtocol(new Protocol1_14_4To1_14_3(), Collections.singletonList(ProtocolVersion.v1_14_4.getId()), ProtocolVersion.v1_14_3.getId());
|
||||
|
||||
registerProtocol(new Protocol1_15To1_14_4(), Collections.singletonList(ProtocolVersion.v1_15.getId()), ProtocolVersion.v1_14_4.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -40,6 +40,7 @@ public class ProtocolVersion {
|
||||
public static final ProtocolVersion v1_14_2;
|
||||
public static final ProtocolVersion v1_14_3;
|
||||
public static final ProtocolVersion v1_14_4;
|
||||
public static final ProtocolVersion v1_15;
|
||||
public static final ProtocolVersion unknown;
|
||||
|
||||
private final int id;
|
||||
@ -76,6 +77,7 @@ public class ProtocolVersion {
|
||||
register(v1_14_2 = new ProtocolVersion(485, "1.14.2"));
|
||||
register(v1_14_3 = new ProtocolVersion(490, "1.14.3"));
|
||||
register(v1_14_4 = new ProtocolVersion(498, "1.14.4"));
|
||||
register(v1_15 = new ProtocolVersion(550, "1.15"));
|
||||
register(unknown = new ProtocolVersion(-1, "UNKNOWN"));
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,39 @@
|
||||
package us.myles.ViaVersion.protocols.protocol1_15to1_14_4;
|
||||
|
||||
import us.myles.ViaVersion.api.Via;
|
||||
import us.myles.ViaVersion.api.data.UserConnection;
|
||||
import us.myles.ViaVersion.api.entities.Entity1_15Types;
|
||||
import us.myles.ViaVersion.api.minecraft.item.Item;
|
||||
import us.myles.ViaVersion.api.minecraft.metadata.Metadata;
|
||||
import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.packets.InventoryPackets;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MetadataRewriter {
|
||||
|
||||
public static void handleMetadata(int entityId, Entity1_15Types.EntityType type, List<Metadata> metadatas, UserConnection connection) {
|
||||
for (Metadata metadata : new ArrayList<>(metadatas)) {
|
||||
try {
|
||||
if (metadata.getMetaType() == MetaType1_14.Slot) {
|
||||
InventoryPackets.toClient((Item) metadata.getValue());
|
||||
}
|
||||
|
||||
if (type == null) continue;
|
||||
|
||||
// Metadata 12 added to abstract_living
|
||||
if (metadata.getId() > 11 && type.isOrHasParent(Entity1_15Types.EntityType.LIVINGENTITY)) {
|
||||
metadata.setId(metadata.getId() + 1); //TODO is it 11 or 12? what is it for?
|
||||
}
|
||||
} catch (Exception e) {
|
||||
metadatas.remove(metadata);
|
||||
if (!Via.getConfig().isSuppressMetadataErrors() || Via.getManager().isDebug()) {
|
||||
Via.getPlatform().getLogger().warning("An error occurred with entity metadata handler");
|
||||
Via.getPlatform().getLogger().warning("Metadata: " + metadata);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
package us.myles.ViaVersion.protocols.protocol1_15to1_14_4;
|
||||
|
||||
import us.myles.ViaVersion.api.PacketWrapper;
|
||||
import us.myles.ViaVersion.api.data.UserConnection;
|
||||
import us.myles.ViaVersion.api.entities.Entity1_15Types;
|
||||
import us.myles.ViaVersion.api.protocol.Protocol;
|
||||
import us.myles.ViaVersion.api.remapper.PacketHandler;
|
||||
import us.myles.ViaVersion.api.remapper.PacketRemapper;
|
||||
import us.myles.ViaVersion.api.type.Type;
|
||||
import us.myles.ViaVersion.packets.State;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.data.MappingData;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.packets.EntityPackets;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.storage.EntityTracker;
|
||||
|
||||
public class Protocol1_15To1_14_4 extends Protocol {
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
//TODO do the new tags have to be sent?
|
||||
//TODO sound, item, possibly block remaps (and blockstates should be the same with the new ones just being appended?)
|
||||
|
||||
MappingData.init();
|
||||
EntityPackets.register(this);
|
||||
|
||||
// Join Game
|
||||
registerOutgoing(State.PLAY, 0x25, 0x26, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.INT); // 0 - Entity ID
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
Entity1_15Types.EntityType entType = Entity1_15Types.EntityType.PLAYER;
|
||||
EntityTracker tracker = wrapper.user().get(EntityTracker.class);
|
||||
tracker.addEntity(wrapper.get(Type.INT, 0), entType);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Sound Effect
|
||||
registerOutgoing(State.PLAY, 0x51, 0x52, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.VAR_INT); // Sound Id
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
wrapper.set(Type.VAR_INT, 0, MappingData.soundMappings.getNewSound(wrapper.get(Type.VAR_INT, 0)));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
registerOutgoing(State.PLAY, 0x08, 0x09);
|
||||
registerOutgoing(State.PLAY, 0x09, 0x0A);
|
||||
registerOutgoing(State.PLAY, 0x0A, 0x0B);
|
||||
registerOutgoing(State.PLAY, 0x0B, 0x0C);
|
||||
registerOutgoing(State.PLAY, 0x0C, 0x0D);
|
||||
registerOutgoing(State.PLAY, 0x0D, 0x0E);
|
||||
registerOutgoing(State.PLAY, 0x0E, 0x0F);
|
||||
registerOutgoing(State.PLAY, 0x0F, 0x10);
|
||||
registerOutgoing(State.PLAY, 0x10, 0x11);
|
||||
registerOutgoing(State.PLAY, 0x11, 0x12);
|
||||
registerOutgoing(State.PLAY, 0x12, 0x13);
|
||||
registerOutgoing(State.PLAY, 0x13, 0x14);
|
||||
registerOutgoing(State.PLAY, 0x14, 0x15);
|
||||
registerOutgoing(State.PLAY, 0x15, 0x16);
|
||||
registerOutgoing(State.PLAY, 0x16, 0x17);
|
||||
registerOutgoing(State.PLAY, 0x17, 0x18);
|
||||
registerOutgoing(State.PLAY, 0x18, 0x19);
|
||||
registerOutgoing(State.PLAY, 0x19, 0x1A);
|
||||
registerOutgoing(State.PLAY, 0x1A, 0x1B);
|
||||
registerOutgoing(State.PLAY, 0x1B, 0x1C);
|
||||
registerOutgoing(State.PLAY, 0x1C, 0x1D);
|
||||
registerOutgoing(State.PLAY, 0x1D, 0x1E);
|
||||
registerOutgoing(State.PLAY, 0x1E, 0x1F);
|
||||
registerOutgoing(State.PLAY, 0x1F, 0x20);
|
||||
registerOutgoing(State.PLAY, 0x20, 0x21);
|
||||
registerOutgoing(State.PLAY, 0x21, 0x22);
|
||||
registerOutgoing(State.PLAY, 0x22, 0x23);
|
||||
registerOutgoing(State.PLAY, 0x23, 0x24);
|
||||
registerOutgoing(State.PLAY, 0x24, 0x25);
|
||||
|
||||
registerOutgoing(State.PLAY, 0x26, 0x27);
|
||||
registerOutgoing(State.PLAY, 0x27, 0x28);
|
||||
registerOutgoing(State.PLAY, 0x28, 0x29);
|
||||
registerOutgoing(State.PLAY, 0x29, 0x2A);
|
||||
registerOutgoing(State.PLAY, 0x2A, 0x2B);
|
||||
registerOutgoing(State.PLAY, 0x2B, 0x2C);
|
||||
registerOutgoing(State.PLAY, 0x2C, 0x2D);
|
||||
registerOutgoing(State.PLAY, 0x2D, 0x2E);
|
||||
registerOutgoing(State.PLAY, 0x2E, 0x2F);
|
||||
registerOutgoing(State.PLAY, 0x2F, 0x30);
|
||||
registerOutgoing(State.PLAY, 0x30, 0x31);
|
||||
registerOutgoing(State.PLAY, 0x31, 0x32);
|
||||
registerOutgoing(State.PLAY, 0x32, 0x33);
|
||||
registerOutgoing(State.PLAY, 0x33, 0x34);
|
||||
registerOutgoing(State.PLAY, 0x34, 0x35);
|
||||
registerOutgoing(State.PLAY, 0x35, 0x36);
|
||||
registerOutgoing(State.PLAY, 0x36, 0x37);
|
||||
registerOutgoing(State.PLAY, 0x37, 0x38);
|
||||
registerOutgoing(State.PLAY, 0x38, 0x39);
|
||||
registerOutgoing(State.PLAY, 0x39, 0x3A);
|
||||
registerOutgoing(State.PLAY, 0x3A, 0x3B);
|
||||
registerOutgoing(State.PLAY, 0x3B, 0x3C);
|
||||
registerOutgoing(State.PLAY, 0x3C, 0x3D);
|
||||
registerOutgoing(State.PLAY, 0x3D, 0x3E);
|
||||
registerOutgoing(State.PLAY, 0x3E, 0x3F);
|
||||
registerOutgoing(State.PLAY, 0x3F, 0x40);
|
||||
registerOutgoing(State.PLAY, 0x40, 0x41);
|
||||
registerOutgoing(State.PLAY, 0x41, 0x42);
|
||||
registerOutgoing(State.PLAY, 0x42, 0x43);
|
||||
|
||||
registerOutgoing(State.PLAY, 0x44, 0x45);
|
||||
registerOutgoing(State.PLAY, 0x45, 0x46);
|
||||
registerOutgoing(State.PLAY, 0x46, 0x47);
|
||||
registerOutgoing(State.PLAY, 0x47, 0x48);
|
||||
registerOutgoing(State.PLAY, 0x48, 0x49);
|
||||
registerOutgoing(State.PLAY, 0x49, 0x4A);
|
||||
registerOutgoing(State.PLAY, 0x4A, 0x4B);
|
||||
registerOutgoing(State.PLAY, 0x4B, 0x4C);
|
||||
registerOutgoing(State.PLAY, 0x4C, 0x4D);
|
||||
registerOutgoing(State.PLAY, 0x4D, 0x4E);
|
||||
registerOutgoing(State.PLAY, 0x4E, 0x4F);
|
||||
registerOutgoing(State.PLAY, 0x4F, 0x50);
|
||||
registerOutgoing(State.PLAY, 0x50, 0x51);
|
||||
|
||||
registerOutgoing(State.PLAY, 0x52, 0x53);
|
||||
registerOutgoing(State.PLAY, 0x53, 0x54);
|
||||
registerOutgoing(State.PLAY, 0x54, 0x55);
|
||||
registerOutgoing(State.PLAY, 0x55, 0x56);
|
||||
registerOutgoing(State.PLAY, 0x56, 0x57);
|
||||
registerOutgoing(State.PLAY, 0x57, 0x58);
|
||||
registerOutgoing(State.PLAY, 0x58, 0x59);
|
||||
registerOutgoing(State.PLAY, 0x59, 0x5A);
|
||||
registerOutgoing(State.PLAY, 0x5A, 0x5B);
|
||||
registerOutgoing(State.PLAY, 0x5B, 0x5C);
|
||||
registerOutgoing(State.PLAY, 0x5C, 0x08);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(UserConnection userConnection) {
|
||||
userConnection.put(new EntityTracker(userConnection));
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package us.myles.ViaVersion.protocols.protocol1_15to1_14_4.data;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import us.myles.ViaVersion.api.Via;
|
||||
import us.myles.ViaVersion.util.GsonUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class MappingData {
|
||||
|
||||
public static SoundMappings soundMappings;
|
||||
|
||||
public static void init() {
|
||||
JsonObject mapping1_14 = loadData("mapping-1.14.json");
|
||||
JsonObject mapping1_15 = loadData("mapping-1.15.json");
|
||||
|
||||
Via.getPlatform().getLogger().info("Loading 1.14 -> 1.15 sound mapping...");
|
||||
soundMappings = new SoundMappingShortArray(mapping1_14.getAsJsonArray("sounds"), mapping1_15.getAsJsonArray("sounds"));
|
||||
}
|
||||
|
||||
private static JsonObject loadData(String name) {
|
||||
InputStream stream = MappingData.class.getClassLoader().getResourceAsStream("assets/viaversion/data/" + name);
|
||||
InputStreamReader reader = new InputStreamReader(stream);
|
||||
try {
|
||||
return GsonUtil.getGson().fromJson(reader, JsonObject.class);
|
||||
} finally {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (IOException ignored) {
|
||||
// Ignored
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void mapIdentifiers(short[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers) {
|
||||
for (int i = 0; i < oldIdentifiers.size(); i++) {
|
||||
JsonElement v = oldIdentifiers.get(i);
|
||||
Integer index = findIndex(newIdentifiers, v.getAsString());
|
||||
if (index == null) {
|
||||
if (Via.getManager().isDebug()) {
|
||||
Via.getPlatform().getLogger().warning("No key for " + v + " :( ");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
output[i] = index.shortValue();
|
||||
}
|
||||
}
|
||||
|
||||
private static Integer findIndex(JsonArray array, String value) {
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JsonElement v = array.get(i);
|
||||
if (v.getAsString().equals(value)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public interface SoundMappings {
|
||||
int getNewSound(int old);
|
||||
}
|
||||
|
||||
private static class SoundMappingShortArray implements SoundMappings {
|
||||
private short[] oldToNew;
|
||||
|
||||
private SoundMappingShortArray(JsonArray mapping1_14, JsonArray mapping1_15) {
|
||||
oldToNew = new short[mapping1_14.size()];
|
||||
Arrays.fill(oldToNew, (short) -1);
|
||||
mapIdentifiers(oldToNew, mapping1_14, mapping1_15);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNewSound(int old) {
|
||||
return old >= 0 && old < oldToNew.length ? oldToNew[old] : -1;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,116 @@
|
||||
package us.myles.ViaVersion.protocols.protocol1_15to1_14_4.packets;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import us.myles.ViaVersion.api.PacketWrapper;
|
||||
import us.myles.ViaVersion.api.entities.Entity1_15Types;
|
||||
import us.myles.ViaVersion.api.protocol.Protocol;
|
||||
import us.myles.ViaVersion.api.remapper.PacketHandler;
|
||||
import us.myles.ViaVersion.api.remapper.PacketRemapper;
|
||||
import us.myles.ViaVersion.api.type.Type;
|
||||
import us.myles.ViaVersion.api.type.types.version.Types1_14;
|
||||
import us.myles.ViaVersion.packets.State;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.MetadataRewriter;
|
||||
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.storage.EntityTracker;
|
||||
|
||||
public class EntityPackets {
|
||||
|
||||
public static void register(Protocol protocol) {
|
||||
// Spawn entity
|
||||
protocol.registerOutgoing(State.PLAY, 0x00, 0x00, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
// Track Entity
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
int entityId = wrapper.passthrough(Type.VAR_INT);
|
||||
wrapper.passthrough(Type.UUID);
|
||||
|
||||
int typeId = wrapper.read(Type.VAR_INT);
|
||||
Entity1_15Types.EntityType entityType = Entity1_15Types.getTypeFromId(getNewEntityId(typeId));
|
||||
wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType);
|
||||
wrapper.write(Type.VAR_INT, entityType.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Spawn mob packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x03, 0x03, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
int entityId = wrapper.passthrough(Type.VAR_INT);
|
||||
wrapper.passthrough(Type.UUID);
|
||||
|
||||
int typeId = wrapper.read(Type.VAR_INT);
|
||||
Entity1_15Types.EntityType entityType = Entity1_15Types.getTypeFromId(getNewEntityId(typeId));
|
||||
wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType);
|
||||
wrapper.write(Type.VAR_INT, entityType.getId());
|
||||
|
||||
wrapper.passthrough(Type.DOUBLE);
|
||||
wrapper.passthrough(Type.DOUBLE);
|
||||
wrapper.passthrough(Type.DOUBLE);
|
||||
wrapper.passthrough(Type.BYTE);
|
||||
wrapper.passthrough(Type.BYTE);
|
||||
wrapper.passthrough(Type.BYTE);
|
||||
wrapper.passthrough(Type.SHORT);
|
||||
wrapper.passthrough(Type.SHORT);
|
||||
wrapper.passthrough(Type.SHORT);
|
||||
wrapper.read(Types1_14.METADATA_LIST); // removed - probably sent in an update packet?
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Spawn player packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
int entityId = wrapper.passthrough(Type.VAR_INT);
|
||||
wrapper.passthrough(Type.UUID);
|
||||
|
||||
int typeId = wrapper.read(Type.VAR_INT);
|
||||
Entity1_15Types.EntityType entityType = Entity1_15Types.getTypeFromId(getNewEntityId(typeId));
|
||||
wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType);
|
||||
wrapper.write(Type.VAR_INT, entityType.getId());
|
||||
|
||||
wrapper.passthrough(Type.DOUBLE);
|
||||
wrapper.passthrough(Type.DOUBLE);
|
||||
wrapper.passthrough(Type.DOUBLE);
|
||||
wrapper.passthrough(Type.BYTE);
|
||||
wrapper.passthrough(Type.BYTE);
|
||||
wrapper.read(Types1_14.METADATA); // removed - probably sent in an update packet?
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Metadata packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x43, 0x44, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.VAR_INT); // 0 - Entity ID
|
||||
map(Types1_14.METADATA_LIST); // 1 - Metadata list
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
int entityId = wrapper.get(Type.VAR_INT, 0);
|
||||
Optional<Entity1_15Types.EntityType> type = wrapper.user().get(EntityTracker.class).get(entityId);
|
||||
MetadataRewriter.handleMetadata(entityId, type.orNull(), wrapper.get(Types1_14.METADATA_LIST, 0), wrapper.user());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static int getNewEntityId(int oldId) {
|
||||
return oldId >= 4 ? oldId + 1 : oldId; // 4 = bee
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package us.myles.ViaVersion.protocols.protocol1_15to1_14_4.packets;
|
||||
|
||||
import us.myles.ViaVersion.api.minecraft.item.Item;
|
||||
import us.myles.ViaVersion.api.protocol.Protocol;
|
||||
|
||||
public class InventoryPackets {
|
||||
|
||||
public static void register(Protocol protocol) {
|
||||
//TODO eeeeverything
|
||||
}
|
||||
|
||||
public static void toClient(Item item) {
|
||||
if (item == null) return;
|
||||
item.setIdentifier(getNewItemId(item.getIdentifier()));
|
||||
}
|
||||
|
||||
public static void toServer(Item item) {
|
||||
if (item == null) return;
|
||||
item.setIdentifier(getOldItemId(item.getIdentifier()));
|
||||
}
|
||||
|
||||
public static int getNewItemId(int id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
public static int getOldItemId(int id) {
|
||||
return id;
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package us.myles.ViaVersion.protocols.protocol1_15to1_14_4.storage;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import us.myles.ViaVersion.api.data.ExternalJoinGameListener;
|
||||
import us.myles.ViaVersion.api.data.StoredObject;
|
||||
import us.myles.ViaVersion.api.data.UserConnection;
|
||||
import us.myles.ViaVersion.api.entities.Entity1_15Types;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class EntityTracker extends StoredObject implements ExternalJoinGameListener {
|
||||
private final Map<Integer, Entity1_15Types.EntityType> clientEntityTypes = new ConcurrentHashMap<>();
|
||||
|
||||
public EntityTracker(UserConnection user) {
|
||||
super(user);
|
||||
}
|
||||
|
||||
public void removeEntity(int entityId) {
|
||||
clientEntityTypes.remove(entityId);
|
||||
}
|
||||
|
||||
public void addEntity(int entityId, Entity1_15Types.EntityType type) {
|
||||
clientEntityTypes.put(entityId, type);
|
||||
}
|
||||
|
||||
public boolean has(int entityId) {
|
||||
return clientEntityTypes.containsKey(entityId);
|
||||
}
|
||||
|
||||
public Optional<Entity1_15Types.EntityType> get(int id) {
|
||||
return Optional.fromNullable(clientEntityTypes.get(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExternalJoinGame(int playerEntityId) {
|
||||
clientEntityTypes.put(playerEntityId, Entity1_15Types.EntityType.PLAYER);
|
||||
}
|
||||
}
|
811
common/src/main/resources/assets/viaversion/data/mapping-1.15.json
Normale Datei
811
common/src/main/resources/assets/viaversion/data/mapping-1.15.json
Normale Datei
@ -0,0 +1,811 @@
|
||||
{
|
||||
"sounds": [
|
||||
"ambient.cave",
|
||||
"ambient.underwater.enter",
|
||||
"ambient.underwater.exit",
|
||||
"ambient.underwater.loop",
|
||||
"ambient.underwater.loop.additions",
|
||||
"ambient.underwater.loop.additions.rare",
|
||||
"ambient.underwater.loop.additions.ultra_rare",
|
||||
"block.anvil.break",
|
||||
"block.anvil.destroy",
|
||||
"block.anvil.fall",
|
||||
"block.anvil.hit",
|
||||
"block.anvil.land",
|
||||
"block.anvil.place",
|
||||
"block.anvil.step",
|
||||
"block.anvil.use",
|
||||
"block.bamboo.break",
|
||||
"block.bamboo.fall",
|
||||
"block.bamboo.hit",
|
||||
"block.bamboo.place",
|
||||
"block.bamboo.step",
|
||||
"block.bamboo_sapling.break",
|
||||
"block.bamboo_sapling.hit",
|
||||
"block.bamboo_sapling.place",
|
||||
"block.barrel.close",
|
||||
"block.barrel.open",
|
||||
"block.beacon.activate",
|
||||
"block.beacon.ambient",
|
||||
"block.beacon.deactivate",
|
||||
"block.beacon.power_select",
|
||||
"block.beehive.drip",
|
||||
"block.beehive.enter",
|
||||
"block.beehive.exit",
|
||||
"block.beehive.shear",
|
||||
"block.beehive.work",
|
||||
"block.bell.resonate",
|
||||
"block.bell.use",
|
||||
"block.blastfurnace.fire_crackle",
|
||||
"block.brewing_stand.brew",
|
||||
"block.bubble_column.bubble_pop",
|
||||
"block.bubble_column.upwards_ambient",
|
||||
"block.bubble_column.upwards_inside",
|
||||
"block.bubble_column.whirlpool_ambient",
|
||||
"block.bubble_column.whirlpool_inside",
|
||||
"block.campfire.crackle",
|
||||
"block.chest.close",
|
||||
"block.chest.locked",
|
||||
"block.chest.open",
|
||||
"block.chorus_flower.death",
|
||||
"block.chorus_flower.grow",
|
||||
"block.comparator.click",
|
||||
"block.composter.empty",
|
||||
"block.composter.fill",
|
||||
"block.composter.fill_success",
|
||||
"block.composter.ready",
|
||||
"block.conduit.activate",
|
||||
"block.conduit.ambient",
|
||||
"block.conduit.ambient.short",
|
||||
"block.conduit.attack.target",
|
||||
"block.conduit.deactivate",
|
||||
"block.coral_block.break",
|
||||
"block.coral_block.fall",
|
||||
"block.coral_block.hit",
|
||||
"block.coral_block.place",
|
||||
"block.coral_block.step",
|
||||
"block.crop.break",
|
||||
"block.dispenser.dispense",
|
||||
"block.dispenser.fail",
|
||||
"block.dispenser.launch",
|
||||
"block.enchantment_table.use",
|
||||
"block.end_gateway.spawn",
|
||||
"block.end_portal.spawn",
|
||||
"block.end_portal_frame.fill",
|
||||
"block.ender_chest.close",
|
||||
"block.ender_chest.open",
|
||||
"block.fence_gate.close",
|
||||
"block.fence_gate.open",
|
||||
"block.fire.ambient",
|
||||
"block.fire.extinguish",
|
||||
"block.furnace.fire_crackle",
|
||||
"block.glass.break",
|
||||
"block.glass.fall",
|
||||
"block.glass.hit",
|
||||
"block.glass.place",
|
||||
"block.glass.step",
|
||||
"block.grass.break",
|
||||
"block.grass.fall",
|
||||
"block.grass.hit",
|
||||
"block.grass.place",
|
||||
"block.grass.step",
|
||||
"block.gravel.break",
|
||||
"block.gravel.fall",
|
||||
"block.gravel.hit",
|
||||
"block.gravel.place",
|
||||
"block.gravel.step",
|
||||
"block.grindstone.use",
|
||||
"block.iron_door.close",
|
||||
"block.iron_door.open",
|
||||
"block.iron_trapdoor.close",
|
||||
"block.iron_trapdoor.open",
|
||||
"block.ladder.break",
|
||||
"block.ladder.fall",
|
||||
"block.ladder.hit",
|
||||
"block.ladder.place",
|
||||
"block.ladder.step",
|
||||
"block.lantern.break",
|
||||
"block.lantern.fall",
|
||||
"block.lantern.hit",
|
||||
"block.lantern.place",
|
||||
"block.lantern.step",
|
||||
"block.lava.ambient",
|
||||
"block.lava.extinguish",
|
||||
"block.lava.pop",
|
||||
"block.lever.click",
|
||||
"block.lily_pad.place",
|
||||
"block.metal.break",
|
||||
"block.metal.fall",
|
||||
"block.metal.hit",
|
||||
"block.metal.place",
|
||||
"block.metal.step",
|
||||
"block.metal_pressure_plate.click_off",
|
||||
"block.metal_pressure_plate.click_on",
|
||||
"block.nether_wart.break",
|
||||
"block.note_block.banjo",
|
||||
"block.note_block.basedrum",
|
||||
"block.note_block.bass",
|
||||
"block.note_block.bell",
|
||||
"block.note_block.bit",
|
||||
"block.note_block.chime",
|
||||
"block.note_block.cow_bell",
|
||||
"block.note_block.didgeridoo",
|
||||
"block.note_block.flute",
|
||||
"block.note_block.guitar",
|
||||
"block.note_block.harp",
|
||||
"block.note_block.hat",
|
||||
"block.note_block.iron_xylophone",
|
||||
"block.note_block.pling",
|
||||
"block.note_block.snare",
|
||||
"block.note_block.xylophone",
|
||||
"block.piston.contract",
|
||||
"block.piston.extend",
|
||||
"block.portal.ambient",
|
||||
"block.portal.travel",
|
||||
"block.portal.trigger",
|
||||
"block.pumpkin.carve",
|
||||
"block.redstone_torch.burnout",
|
||||
"block.sand.break",
|
||||
"block.sand.fall",
|
||||
"block.sand.hit",
|
||||
"block.sand.place",
|
||||
"block.sand.step",
|
||||
"block.scaffolding.break",
|
||||
"block.scaffolding.fall",
|
||||
"block.scaffolding.hit",
|
||||
"block.scaffolding.place",
|
||||
"block.scaffolding.step",
|
||||
"block.shulker_box.close",
|
||||
"block.shulker_box.open",
|
||||
"block.slime_block.break",
|
||||
"block.slime_block.fall",
|
||||
"block.slime_block.hit",
|
||||
"block.slime_block.place",
|
||||
"block.slime_block.step",
|
||||
"block.smoker.smoke",
|
||||
"block.snow.break",
|
||||
"block.snow.fall",
|
||||
"block.snow.hit",
|
||||
"block.snow.place",
|
||||
"block.snow.step",
|
||||
"block.stone.break",
|
||||
"block.stone.fall",
|
||||
"block.stone.hit",
|
||||
"block.stone.place",
|
||||
"block.stone.step",
|
||||
"block.stone_button.click_off",
|
||||
"block.stone_button.click_on",
|
||||
"block.stone_pressure_plate.click_off",
|
||||
"block.stone_pressure_plate.click_on",
|
||||
"block.sweet_berry_bush.break",
|
||||
"block.sweet_berry_bush.place",
|
||||
"block.tripwire.attach",
|
||||
"block.tripwire.click_off",
|
||||
"block.tripwire.click_on",
|
||||
"block.tripwire.detach",
|
||||
"block.water.ambient",
|
||||
"block.wet_grass.break",
|
||||
"block.wet_grass.fall",
|
||||
"block.wet_grass.hit",
|
||||
"block.wet_grass.place",
|
||||
"block.wet_grass.step",
|
||||
"block.wood.break",
|
||||
"block.wood.fall",
|
||||
"block.wood.hit",
|
||||
"block.wood.place",
|
||||
"block.wood.step",
|
||||
"block.wooden_button.click_off",
|
||||
"block.wooden_button.click_on",
|
||||
"block.wooden_door.close",
|
||||
"block.wooden_door.open",
|
||||
"block.wooden_pressure_plate.click_off",
|
||||
"block.wooden_pressure_plate.click_on",
|
||||
"block.wooden_trapdoor.close",
|
||||
"block.wooden_trapdoor.open",
|
||||
"block.wool.break",
|
||||
"block.wool.fall",
|
||||
"block.wool.hit",
|
||||
"block.wool.place",
|
||||
"block.wool.step",
|
||||
"enchant.thorns.hit",
|
||||
"entity.armor_stand.break",
|
||||
"entity.armor_stand.fall",
|
||||
"entity.armor_stand.hit",
|
||||
"entity.armor_stand.place",
|
||||
"entity.arrow.hit",
|
||||
"entity.arrow.hit_player",
|
||||
"entity.arrow.shoot",
|
||||
"entity.bat.ambient",
|
||||
"entity.bat.death",
|
||||
"entity.bat.hurt",
|
||||
"entity.bat.loop",
|
||||
"entity.bat.takeoff",
|
||||
"entity.bee.death",
|
||||
"entity.bee.hurt",
|
||||
"entity.bee.loop",
|
||||
"entity.bee.loop_aggressive",
|
||||
"entity.bee.pollinate",
|
||||
"entity.bee.sting",
|
||||
"entity.blaze.ambient",
|
||||
"entity.blaze.burn",
|
||||
"entity.blaze.death",
|
||||
"entity.blaze.hurt",
|
||||
"entity.blaze.shoot",
|
||||
"entity.boat.paddle_land",
|
||||
"entity.boat.paddle_water",
|
||||
"entity.cat.ambient",
|
||||
"entity.cat.beg_for_food",
|
||||
"entity.cat.death",
|
||||
"entity.cat.eat",
|
||||
"entity.cat.hiss",
|
||||
"entity.cat.hurt",
|
||||
"entity.cat.purr",
|
||||
"entity.cat.purreow",
|
||||
"entity.cat.stray_ambient",
|
||||
"entity.chicken.ambient",
|
||||
"entity.chicken.death",
|
||||
"entity.chicken.egg",
|
||||
"entity.chicken.hurt",
|
||||
"entity.chicken.step",
|
||||
"entity.cod.ambient",
|
||||
"entity.cod.death",
|
||||
"entity.cod.flop",
|
||||
"entity.cod.hurt",
|
||||
"entity.cow.ambient",
|
||||
"entity.cow.death",
|
||||
"entity.cow.hurt",
|
||||
"entity.cow.milk",
|
||||
"entity.cow.step",
|
||||
"entity.creeper.death",
|
||||
"entity.creeper.hurt",
|
||||
"entity.creeper.primed",
|
||||
"entity.dolphin.ambient",
|
||||
"entity.dolphin.ambient_water",
|
||||
"entity.dolphin.attack",
|
||||
"entity.dolphin.death",
|
||||
"entity.dolphin.eat",
|
||||
"entity.dolphin.hurt",
|
||||
"entity.dolphin.jump",
|
||||
"entity.dolphin.play",
|
||||
"entity.dolphin.splash",
|
||||
"entity.dolphin.swim",
|
||||
"entity.donkey.ambient",
|
||||
"entity.donkey.angry",
|
||||
"entity.donkey.chest",
|
||||
"entity.donkey.death",
|
||||
"entity.donkey.hurt",
|
||||
"entity.dragon_fireball.explode",
|
||||
"entity.drowned.ambient",
|
||||
"entity.drowned.ambient_water",
|
||||
"entity.drowned.death",
|
||||
"entity.drowned.death_water",
|
||||
"entity.drowned.hurt",
|
||||
"entity.drowned.hurt_water",
|
||||
"entity.drowned.shoot",
|
||||
"entity.drowned.step",
|
||||
"entity.drowned.swim",
|
||||
"entity.egg.throw",
|
||||
"entity.elder_guardian.ambient",
|
||||
"entity.elder_guardian.ambient_land",
|
||||
"entity.elder_guardian.curse",
|
||||
"entity.elder_guardian.death",
|
||||
"entity.elder_guardian.death_land",
|
||||
"entity.elder_guardian.flop",
|
||||
"entity.elder_guardian.hurt",
|
||||
"entity.elder_guardian.hurt_land",
|
||||
"entity.ender_dragon.ambient",
|
||||
"entity.ender_dragon.death",
|
||||
"entity.ender_dragon.flap",
|
||||
"entity.ender_dragon.growl",
|
||||
"entity.ender_dragon.hurt",
|
||||
"entity.ender_dragon.shoot",
|
||||
"entity.ender_eye.death",
|
||||
"entity.ender_eye.launch",
|
||||
"entity.ender_pearl.throw",
|
||||
"entity.enderman.ambient",
|
||||
"entity.enderman.death",
|
||||
"entity.enderman.hurt",
|
||||
"entity.enderman.scream",
|
||||
"entity.enderman.stare",
|
||||
"entity.enderman.teleport",
|
||||
"entity.endermite.ambient",
|
||||
"entity.endermite.death",
|
||||
"entity.endermite.hurt",
|
||||
"entity.endermite.step",
|
||||
"entity.evoker.ambient",
|
||||
"entity.evoker.cast_spell",
|
||||
"entity.evoker.celebrate",
|
||||
"entity.evoker.death",
|
||||
"entity.evoker.hurt",
|
||||
"entity.evoker.prepare_attack",
|
||||
"entity.evoker.prepare_summon",
|
||||
"entity.evoker.prepare_wololo",
|
||||
"entity.evoker_fangs.attack",
|
||||
"entity.experience_bottle.throw",
|
||||
"entity.experience_orb.pickup",
|
||||
"entity.firework_rocket.blast",
|
||||
"entity.firework_rocket.blast_far",
|
||||
"entity.firework_rocket.large_blast",
|
||||
"entity.firework_rocket.large_blast_far",
|
||||
"entity.firework_rocket.launch",
|
||||
"entity.firework_rocket.shoot",
|
||||
"entity.firework_rocket.twinkle",
|
||||
"entity.firework_rocket.twinkle_far",
|
||||
"entity.fish.swim",
|
||||
"entity.fishing_bobber.retrieve",
|
||||
"entity.fishing_bobber.splash",
|
||||
"entity.fishing_bobber.throw",
|
||||
"entity.fox.aggro",
|
||||
"entity.fox.ambient",
|
||||
"entity.fox.bite",
|
||||
"entity.fox.death",
|
||||
"entity.fox.eat",
|
||||
"entity.fox.hurt",
|
||||
"entity.fox.screech",
|
||||
"entity.fox.sleep",
|
||||
"entity.fox.sniff",
|
||||
"entity.fox.spit",
|
||||
"entity.generic.big_fall",
|
||||
"entity.generic.burn",
|
||||
"entity.generic.death",
|
||||
"entity.generic.drink",
|
||||
"entity.generic.eat",
|
||||
"entity.generic.explode",
|
||||
"entity.generic.extinguish_fire",
|
||||
"entity.generic.hurt",
|
||||
"entity.generic.small_fall",
|
||||
"entity.generic.splash",
|
||||
"entity.generic.swim",
|
||||
"entity.ghast.ambient",
|
||||
"entity.ghast.death",
|
||||
"entity.ghast.hurt",
|
||||
"entity.ghast.scream",
|
||||
"entity.ghast.shoot",
|
||||
"entity.ghast.warn",
|
||||
"entity.guardian.ambient",
|
||||
"entity.guardian.ambient_land",
|
||||
"entity.guardian.attack",
|
||||
"entity.guardian.death",
|
||||
"entity.guardian.death_land",
|
||||
"entity.guardian.flop",
|
||||
"entity.guardian.hurt",
|
||||
"entity.guardian.hurt_land",
|
||||
"entity.horse.ambient",
|
||||
"entity.horse.angry",
|
||||
"entity.horse.armor",
|
||||
"entity.horse.breathe",
|
||||
"entity.horse.death",
|
||||
"entity.horse.eat",
|
||||
"entity.horse.gallop",
|
||||
"entity.horse.hurt",
|
||||
"entity.horse.jump",
|
||||
"entity.horse.land",
|
||||
"entity.horse.saddle",
|
||||
"entity.horse.step",
|
||||
"entity.horse.step_wood",
|
||||
"entity.hostile.big_fall",
|
||||
"entity.hostile.death",
|
||||
"entity.hostile.hurt",
|
||||
"entity.hostile.small_fall",
|
||||
"entity.hostile.splash",
|
||||
"entity.hostile.swim",
|
||||
"entity.husk.ambient",
|
||||
"entity.husk.converted_to_zombie",
|
||||
"entity.husk.death",
|
||||
"entity.husk.hurt",
|
||||
"entity.husk.step",
|
||||
"entity.illusioner.ambient",
|
||||
"entity.illusioner.cast_spell",
|
||||
"entity.illusioner.death",
|
||||
"entity.illusioner.hurt",
|
||||
"entity.illusioner.mirror_move",
|
||||
"entity.illusioner.prepare_blindness",
|
||||
"entity.illusioner.prepare_mirror",
|
||||
"entity.iron_golem.attack",
|
||||
"entity.iron_golem.death",
|
||||
"entity.iron_golem.hurt",
|
||||
"entity.iron_golem.step",
|
||||
"entity.item.break",
|
||||
"entity.item.pickup",
|
||||
"entity.item_frame.add_item",
|
||||
"entity.item_frame.break",
|
||||
"entity.item_frame.place",
|
||||
"entity.item_frame.remove_item",
|
||||
"entity.item_frame.rotate_item",
|
||||
"entity.leash_knot.break",
|
||||
"entity.leash_knot.place",
|
||||
"entity.lightning_bolt.impact",
|
||||
"entity.lightning_bolt.thunder",
|
||||
"entity.lingering_potion.throw",
|
||||
"entity.llama.ambient",
|
||||
"entity.llama.angry",
|
||||
"entity.llama.chest",
|
||||
"entity.llama.death",
|
||||
"entity.llama.eat",
|
||||
"entity.llama.hurt",
|
||||
"entity.llama.spit",
|
||||
"entity.llama.step",
|
||||
"entity.llama.swag",
|
||||
"entity.magma_cube.death",
|
||||
"entity.magma_cube.death_small",
|
||||
"entity.magma_cube.hurt",
|
||||
"entity.magma_cube.hurt_small",
|
||||
"entity.magma_cube.jump",
|
||||
"entity.magma_cube.squish",
|
||||
"entity.magma_cube.squish_small",
|
||||
"entity.minecart.inside",
|
||||
"entity.minecart.riding",
|
||||
"entity.mooshroom.convert",
|
||||
"entity.mooshroom.eat",
|
||||
"entity.mooshroom.milk",
|
||||
"entity.mooshroom.shear",
|
||||
"entity.mooshroom.suspicious_milk",
|
||||
"entity.mule.ambient",
|
||||
"entity.mule.chest",
|
||||
"entity.mule.death",
|
||||
"entity.mule.hurt",
|
||||
"entity.ocelot.ambient",
|
||||
"entity.ocelot.death",
|
||||
"entity.ocelot.hurt",
|
||||
"entity.painting.break",
|
||||
"entity.painting.place",
|
||||
"entity.panda.aggressive_ambient",
|
||||
"entity.panda.ambient",
|
||||
"entity.panda.bite",
|
||||
"entity.panda.cant_breed",
|
||||
"entity.panda.death",
|
||||
"entity.panda.eat",
|
||||
"entity.panda.hurt",
|
||||
"entity.panda.pre_sneeze",
|
||||
"entity.panda.sneeze",
|
||||
"entity.panda.step",
|
||||
"entity.panda.worried_ambient",
|
||||
"entity.parrot.ambient",
|
||||
"entity.parrot.death",
|
||||
"entity.parrot.eat",
|
||||
"entity.parrot.fly",
|
||||
"entity.parrot.hurt",
|
||||
"entity.parrot.imitate.blaze",
|
||||
"entity.parrot.imitate.creeper",
|
||||
"entity.parrot.imitate.drowned",
|
||||
"entity.parrot.imitate.elder_guardian",
|
||||
"entity.parrot.imitate.ender_dragon",
|
||||
"entity.parrot.imitate.enderman",
|
||||
"entity.parrot.imitate.endermite",
|
||||
"entity.parrot.imitate.evoker",
|
||||
"entity.parrot.imitate.ghast",
|
||||
"entity.parrot.imitate.guardian",
|
||||
"entity.parrot.imitate.husk",
|
||||
"entity.parrot.imitate.illusioner",
|
||||
"entity.parrot.imitate.magma_cube",
|
||||
"entity.parrot.imitate.panda",
|
||||
"entity.parrot.imitate.phantom",
|
||||
"entity.parrot.imitate.pillager",
|
||||
"entity.parrot.imitate.polar_bear",
|
||||
"entity.parrot.imitate.ravager",
|
||||
"entity.parrot.imitate.shulker",
|
||||
"entity.parrot.imitate.silverfish",
|
||||
"entity.parrot.imitate.skeleton",
|
||||
"entity.parrot.imitate.slime",
|
||||
"entity.parrot.imitate.spider",
|
||||
"entity.parrot.imitate.stray",
|
||||
"entity.parrot.imitate.vex",
|
||||
"entity.parrot.imitate.vindicator",
|
||||
"entity.parrot.imitate.witch",
|
||||
"entity.parrot.imitate.wither",
|
||||
"entity.parrot.imitate.wither_skeleton",
|
||||
"entity.parrot.imitate.wolf",
|
||||
"entity.parrot.imitate.zombie",
|
||||
"entity.parrot.imitate.zombie_pigman",
|
||||
"entity.parrot.imitate.zombie_villager",
|
||||
"entity.parrot.step",
|
||||
"entity.phantom.ambient",
|
||||
"entity.phantom.bite",
|
||||
"entity.phantom.death",
|
||||
"entity.phantom.flap",
|
||||
"entity.phantom.hurt",
|
||||
"entity.phantom.swoop",
|
||||
"entity.pig.ambient",
|
||||
"entity.pig.death",
|
||||
"entity.pig.hurt",
|
||||
"entity.pig.saddle",
|
||||
"entity.pig.step",
|
||||
"entity.pillager.ambient",
|
||||
"entity.pillager.celebrate",
|
||||
"entity.pillager.death",
|
||||
"entity.pillager.hurt",
|
||||
"entity.player.attack.crit",
|
||||
"entity.player.attack.knockback",
|
||||
"entity.player.attack.nodamage",
|
||||
"entity.player.attack.strong",
|
||||
"entity.player.attack.sweep",
|
||||
"entity.player.attack.weak",
|
||||
"entity.player.big_fall",
|
||||
"entity.player.breath",
|
||||
"entity.player.burp",
|
||||
"entity.player.death",
|
||||
"entity.player.hurt",
|
||||
"entity.player.hurt_drown",
|
||||
"entity.player.hurt_on_fire",
|
||||
"entity.player.hurt_sweet_berry_bush",
|
||||
"entity.player.levelup",
|
||||
"entity.player.small_fall",
|
||||
"entity.player.splash",
|
||||
"entity.player.splash.high_speed",
|
||||
"entity.player.swim",
|
||||
"entity.polar_bear.ambient",
|
||||
"entity.polar_bear.ambient_baby",
|
||||
"entity.polar_bear.death",
|
||||
"entity.polar_bear.hurt",
|
||||
"entity.polar_bear.step",
|
||||
"entity.polar_bear.warning",
|
||||
"entity.puffer_fish.ambient",
|
||||
"entity.puffer_fish.blow_out",
|
||||
"entity.puffer_fish.blow_up",
|
||||
"entity.puffer_fish.death",
|
||||
"entity.puffer_fish.flop",
|
||||
"entity.puffer_fish.hurt",
|
||||
"entity.puffer_fish.sting",
|
||||
"entity.rabbit.ambient",
|
||||
"entity.rabbit.attack",
|
||||
"entity.rabbit.death",
|
||||
"entity.rabbit.hurt",
|
||||
"entity.rabbit.jump",
|
||||
"entity.ravager.ambient",
|
||||
"entity.ravager.attack",
|
||||
"entity.ravager.celebrate",
|
||||
"entity.ravager.death",
|
||||
"entity.ravager.hurt",
|
||||
"entity.ravager.roar",
|
||||
"entity.ravager.step",
|
||||
"entity.ravager.stunned",
|
||||
"entity.salmon.ambient",
|
||||
"entity.salmon.death",
|
||||
"entity.salmon.flop",
|
||||
"entity.salmon.hurt",
|
||||
"entity.sheep.ambient",
|
||||
"entity.sheep.death",
|
||||
"entity.sheep.hurt",
|
||||
"entity.sheep.shear",
|
||||
"entity.sheep.step",
|
||||
"entity.shulker.ambient",
|
||||
"entity.shulker.close",
|
||||
"entity.shulker.death",
|
||||
"entity.shulker.hurt",
|
||||
"entity.shulker.hurt_closed",
|
||||
"entity.shulker.open",
|
||||
"entity.shulker.shoot",
|
||||
"entity.shulker.teleport",
|
||||
"entity.shulker_bullet.hit",
|
||||
"entity.shulker_bullet.hurt",
|
||||
"entity.silverfish.ambient",
|
||||
"entity.silverfish.death",
|
||||
"entity.silverfish.hurt",
|
||||
"entity.silverfish.step",
|
||||
"entity.skeleton.ambient",
|
||||
"entity.skeleton.death",
|
||||
"entity.skeleton.hurt",
|
||||
"entity.skeleton.shoot",
|
||||
"entity.skeleton.step",
|
||||
"entity.skeleton_horse.ambient",
|
||||
"entity.skeleton_horse.ambient_water",
|
||||
"entity.skeleton_horse.death",
|
||||
"entity.skeleton_horse.gallop_water",
|
||||
"entity.skeleton_horse.hurt",
|
||||
"entity.skeleton_horse.jump_water",
|
||||
"entity.skeleton_horse.step_water",
|
||||
"entity.skeleton_horse.swim",
|
||||
"entity.slime.attack",
|
||||
"entity.slime.death",
|
||||
"entity.slime.death_small",
|
||||
"entity.slime.hurt",
|
||||
"entity.slime.hurt_small",
|
||||
"entity.slime.jump",
|
||||
"entity.slime.jump_small",
|
||||
"entity.slime.squish",
|
||||
"entity.slime.squish_small",
|
||||
"entity.snow_golem.ambient",
|
||||
"entity.snow_golem.death",
|
||||
"entity.snow_golem.hurt",
|
||||
"entity.snow_golem.shoot",
|
||||
"entity.snowball.throw",
|
||||
"entity.spider.ambient",
|
||||
"entity.spider.death",
|
||||
"entity.spider.hurt",
|
||||
"entity.spider.step",
|
||||
"entity.splash_potion.break",
|
||||
"entity.splash_potion.throw",
|
||||
"entity.squid.ambient",
|
||||
"entity.squid.death",
|
||||
"entity.squid.hurt",
|
||||
"entity.squid.squirt",
|
||||
"entity.stray.ambient",
|
||||
"entity.stray.death",
|
||||
"entity.stray.hurt",
|
||||
"entity.stray.step",
|
||||
"entity.tnt.primed",
|
||||
"entity.tropical_fish.ambient",
|
||||
"entity.tropical_fish.death",
|
||||
"entity.tropical_fish.flop",
|
||||
"entity.tropical_fish.hurt",
|
||||
"entity.turtle.ambient_land",
|
||||
"entity.turtle.death",
|
||||
"entity.turtle.death_baby",
|
||||
"entity.turtle.egg_break",
|
||||
"entity.turtle.egg_crack",
|
||||
"entity.turtle.egg_hatch",
|
||||
"entity.turtle.hurt",
|
||||
"entity.turtle.hurt_baby",
|
||||
"entity.turtle.lay_egg",
|
||||
"entity.turtle.shamble",
|
||||
"entity.turtle.shamble_baby",
|
||||
"entity.turtle.swim",
|
||||
"entity.vex.ambient",
|
||||
"entity.vex.charge",
|
||||
"entity.vex.death",
|
||||
"entity.vex.hurt",
|
||||
"entity.villager.ambient",
|
||||
"entity.villager.celebrate",
|
||||
"entity.villager.death",
|
||||
"entity.villager.hurt",
|
||||
"entity.villager.no",
|
||||
"entity.villager.trade",
|
||||
"entity.villager.work_armorer",
|
||||
"entity.villager.work_butcher",
|
||||
"entity.villager.work_cartographer",
|
||||
"entity.villager.work_cleric",
|
||||
"entity.villager.work_farmer",
|
||||
"entity.villager.work_fisherman",
|
||||
"entity.villager.work_fletcher",
|
||||
"entity.villager.work_leatherworker",
|
||||
"entity.villager.work_librarian",
|
||||
"entity.villager.work_mason",
|
||||
"entity.villager.work_shepherd",
|
||||
"entity.villager.work_toolsmith",
|
||||
"entity.villager.work_weaponsmith",
|
||||
"entity.villager.yes",
|
||||
"entity.vindicator.ambient",
|
||||
"entity.vindicator.celebrate",
|
||||
"entity.vindicator.death",
|
||||
"entity.vindicator.hurt",
|
||||
"entity.wandering_trader.ambient",
|
||||
"entity.wandering_trader.death",
|
||||
"entity.wandering_trader.disappeared",
|
||||
"entity.wandering_trader.drink_milk",
|
||||
"entity.wandering_trader.drink_potion",
|
||||
"entity.wandering_trader.hurt",
|
||||
"entity.wandering_trader.no",
|
||||
"entity.wandering_trader.reappeared",
|
||||
"entity.wandering_trader.trade",
|
||||
"entity.wandering_trader.yes",
|
||||
"entity.witch.ambient",
|
||||
"entity.witch.celebrate",
|
||||
"entity.witch.death",
|
||||
"entity.witch.drink",
|
||||
"entity.witch.hurt",
|
||||
"entity.witch.throw",
|
||||
"entity.wither.ambient",
|
||||
"entity.wither.break_block",
|
||||
"entity.wither.death",
|
||||
"entity.wither.hurt",
|
||||
"entity.wither.shoot",
|
||||
"entity.wither.spawn",
|
||||
"entity.wither_skeleton.ambient",
|
||||
"entity.wither_skeleton.death",
|
||||
"entity.wither_skeleton.hurt",
|
||||
"entity.wither_skeleton.step",
|
||||
"entity.wolf.ambient",
|
||||
"entity.wolf.death",
|
||||
"entity.wolf.growl",
|
||||
"entity.wolf.howl",
|
||||
"entity.wolf.hurt",
|
||||
"entity.wolf.pant",
|
||||
"entity.wolf.shake",
|
||||
"entity.wolf.step",
|
||||
"entity.wolf.whine",
|
||||
"entity.zombie.ambient",
|
||||
"entity.zombie.attack_iron_door",
|
||||
"entity.zombie.attack_wooden_door",
|
||||
"entity.zombie.break_wooden_door",
|
||||
"entity.zombie.converted_to_drowned",
|
||||
"entity.zombie.death",
|
||||
"entity.zombie.destroy_egg",
|
||||
"entity.zombie.hurt",
|
||||
"entity.zombie.infect",
|
||||
"entity.zombie.step",
|
||||
"entity.zombie_horse.ambient",
|
||||
"entity.zombie_horse.death",
|
||||
"entity.zombie_horse.hurt",
|
||||
"entity.zombie_pigman.ambient",
|
||||
"entity.zombie_pigman.angry",
|
||||
"entity.zombie_pigman.death",
|
||||
"entity.zombie_pigman.hurt",
|
||||
"entity.zombie_villager.ambient",
|
||||
"entity.zombie_villager.converted",
|
||||
"entity.zombie_villager.cure",
|
||||
"entity.zombie_villager.death",
|
||||
"entity.zombie_villager.hurt",
|
||||
"entity.zombie_villager.step",
|
||||
"event.raid.horn",
|
||||
"item.armor.equip_chain",
|
||||
"item.armor.equip_diamond",
|
||||
"item.armor.equip_elytra",
|
||||
"item.armor.equip_generic",
|
||||
"item.armor.equip_gold",
|
||||
"item.armor.equip_iron",
|
||||
"item.armor.equip_leather",
|
||||
"item.armor.equip_turtle",
|
||||
"item.axe.strip",
|
||||
"item.book.page_turn",
|
||||
"item.book.put",
|
||||
"item.bottle.empty",
|
||||
"item.bottle.fill",
|
||||
"item.bottle.fill_dragonbreath",
|
||||
"item.bucket.empty",
|
||||
"item.bucket.empty_fish",
|
||||
"item.bucket.empty_lava",
|
||||
"item.bucket.fill",
|
||||
"item.bucket.fill_fish",
|
||||
"item.bucket.fill_lava",
|
||||
"item.chorus_fruit.teleport",
|
||||
"item.crop.plant",
|
||||
"item.crossbow.hit",
|
||||
"item.crossbow.loading_end",
|
||||
"item.crossbow.loading_middle",
|
||||
"item.crossbow.loading_start",
|
||||
"item.crossbow.quick_charge_1",
|
||||
"item.crossbow.quick_charge_2",
|
||||
"item.crossbow.quick_charge_3",
|
||||
"item.crossbow.shoot",
|
||||
"item.elytra.flying",
|
||||
"item.firecharge.use",
|
||||
"item.flintandsteel.use",
|
||||
"item.hoe.till",
|
||||
"item.honey_bottle.drink",
|
||||
"item.nether_wart.plant",
|
||||
"item.shield.block",
|
||||
"item.shield.break",
|
||||
"item.shovel.flatten",
|
||||
"item.sweet_berries.pick_from_bush",
|
||||
"item.totem.use",
|
||||
"item.trident.hit",
|
||||
"item.trident.hit_ground",
|
||||
"item.trident.return",
|
||||
"item.trident.riptide_1",
|
||||
"item.trident.riptide_2",
|
||||
"item.trident.riptide_3",
|
||||
"item.trident.throw",
|
||||
"item.trident.thunder",
|
||||
"music.creative",
|
||||
"music.credits",
|
||||
"music.dragon",
|
||||
"music.end",
|
||||
"music.game",
|
||||
"music.menu",
|
||||
"music.nether",
|
||||
"music.under_water",
|
||||
"music_disc.11",
|
||||
"music_disc.13",
|
||||
"music_disc.blocks",
|
||||
"music_disc.cat",
|
||||
"music_disc.chirp",
|
||||
"music_disc.far",
|
||||
"music_disc.mall",
|
||||
"music_disc.mellohi",
|
||||
"music_disc.stal",
|
||||
"music_disc.strad",
|
||||
"music_disc.wait",
|
||||
"music_disc.ward",
|
||||
"ui.button.click",
|
||||
"ui.cartography_table.take_result",
|
||||
"ui.loom.select_pattern",
|
||||
"ui.loom.take_result",
|
||||
"ui.stonecutter.select_recipe",
|
||||
"ui.stonecutter.take_result",
|
||||
"ui.toast.challenge_complete",
|
||||
"ui.toast.in",
|
||||
"ui.toast.out",
|
||||
"weather.rain",
|
||||
"weather.rain.above"
|
||||
]
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<name>viaversion-jar</name>
|
||||
|
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>us.myles</groupId>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>viaversion-parent</name>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>viaversion-parent</artifactId>
|
||||
<groupId>us.myles</groupId>
|
||||
<version>2.1.4-SNAPSHOT</version>
|
||||
<version>2.1.4-19w34a</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren