Compare commits

...
20 Commits
Author SHA1 Message Date
Myles c0fb81946e Snapshot 2020-12-12 13:16:13 +00:00
Myles 6c440513ba 3.2.1 2020-12-12 13:07:59 +00:00
Myles 2da0e1cad7 Merge pull request #2198 from terrarier2111/patch-3
Created a local variable for ProxiedPlayers
2020-12-11 09:17:16 +00:00
Myles 3d777bdcda Merge pull request #2237 from mathiascode/statscheck
Add missing length check in 1.13 -> 1.12.2 stats code
2020-12-11 09:15:30 +00:00
Mat e22975cec4 Add missing length check in 1.13 -> 1.12.2 stats code 2020-12-11 03:08:34 +02:00
KennyTV 965814d833 Fix ProtocolLib check (again)
#BlameGerry (again)
2020-12-09 21:31:00 +01:00
KennyTV f08db2d234 Fix startup
#BlameGerry
2020-12-09 11:31:37 +01:00
Gerrygames 24c56a239e Fix PacketWrapper#sendToServer bypassing ProtocolLib (#2229) 2020-12-08 19:15:55 +01:00
KennyTV 8de26a0ad3 Work around relocation of fastutil reflection call 2020-11-23 20:49:28 +01:00
KennyTV 9c0b187f31 Catch errors in Bungee chat parsing 2020-11-22 09:55:39 +01:00
terrarier2111 6a12f8139c Added missing import 2020-11-21 19:26:10 +01:00
KennyTV e85f9e7510 Fix npe
Fixes #2196
2020-11-20 13:23:23 +01:00
terrarier2111 0b256d15b2 Created a local variable for ProxiedPlayers 2020-11-15 21:15:42 +01:00
KennyTV 7abff77c51 Add method to get handler in sound rewriter 2020-11-15 12:01:01 +01:00
KennyTV 78972a5345 Add 1.9-1.11 sound mappings 2020-11-15 11:36:26 +01:00
_tomcraft a041610fe2 Prevent 1.12- clients to creative-pick server-side unknown block/item (#2180) 2020-11-13 14:27:29 +01:00
KennyTV 692e53427b Change log message when executor is shut down 2020-11-11 16:53:47 +01:00
KennyTV 3b5aaa1ff5 Fix legacy nbt array weirdness
Closes #2176
2020-11-08 10:35:15 +01:00
KennyTV 95e0cff03c Fix italic item names in 1.12->1.13 protocol
Fixes #2165
2020-11-03 13:40:01 +01:00
KennyTV 91f3d0fdb7 Bump version to 3.2.1-SNAPSHOT 2020-11-03 09:49:46 +01:00
32 changed files with 1622 additions and 59 deletions

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -17,6 +17,7 @@ import us.myles.ViaVersion.api.platform.ViaPlatform;
import us.myles.ViaVersion.bukkit.classgenerator.ClassGenerator;
import us.myles.ViaVersion.bukkit.commands.BukkitCommandHandler;
import us.myles.ViaVersion.bukkit.commands.BukkitCommandSender;
import us.myles.ViaVersion.bukkit.listeners.ProtocolLibEnableListener;
import us.myles.ViaVersion.bukkit.platform.BukkitTaskId;
import us.myles.ViaVersion.bukkit.platform.BukkitViaAPI;
import us.myles.ViaVersion.bukkit.platform.BukkitViaConfig;
@@ -48,13 +49,17 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player>
// Command handler
commandHandler = new BukkitCommandHandler();
// Init platform
BukkitViaInjector injector = new BukkitViaInjector();
Via.init(ViaManager.builder()
.platform(this)
.commandHandler(commandHandler)
.injector(new BukkitViaInjector())
.injector(injector)
.loader(new BukkitViaLoader(this))
.build());
// Config magic
conf = new BukkitViaConfig();
@@ -72,6 +77,10 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player>
@Override
public void onLoad() {
// Via should load before PL, so we can't check for it in the constructor
boolean hasProtocolLib = Bukkit.getPluginManager().getPlugin("ProtocolLib") != null;
((BukkitViaInjector) Via.getManager().getInjector()).setProtocolLib(hasProtocolLib);
// Spigot detector
try {
Class.forName("org.spigotmc.SpigotConfig");
@@ -110,6 +119,8 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player>
getCommand("viaversion").setExecutor(commandHandler);
getCommand("viaversion").setTabCompleter(commandHandler);
getServer().getPluginManager().registerEvents(new ProtocolLibEnableListener(), this);
// Warn them if they have anti-xray on and they aren't using spigot
if (conf.isAntiXRay() && !spigot) {
getLogger().info("You have anti-xray on in your config, since you're not using spigot it won't fix xray!");
@@ -0,0 +1,26 @@
package us.myles.ViaVersion.bukkit.listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.bukkit.platform.BukkitViaInjector;
public class ProtocolLibEnableListener implements Listener {
@EventHandler
public void onPluginEnable(PluginEnableEvent e) {
// Will likely never happen, but try to account for hacky plugin loading systems anyways
if (e.getPlugin().getName().equals("ProtocolLib")) {
((BukkitViaInjector) Via.getManager().getInjector()).setProtocolLib(true);
}
}
@EventHandler
public void onPluginDisable(PluginDisableEvent e) {
if (e.getPlugin().getName().equals("ProtocolLib")) {
((BukkitViaInjector) Via.getManager().getInjector()).setProtocolLib(false);
}
}
}
@@ -26,6 +26,8 @@ public class BukkitViaInjector implements ViaInjector {
private final List<ChannelFuture> injectedFutures = new ArrayList<>();
private final List<Pair<Field, Object>> injectedLists = new ArrayList<>();
private boolean protocolLib;
@Override
public void inject() throws Exception {
try {
@@ -214,7 +216,7 @@ public class BukkitViaInjector implements ViaInjector {
@Override
public String getDecoderName() {
return "decoder";
return protocolLib ? "protocol_lib_decoder" : "decoder";
}
public static Object getServerConnection() throws Exception {
@@ -339,4 +341,8 @@ public class BukkitViaInjector implements ViaInjector {
field.set(connection, list);
}
}
public void setProtocolLib(boolean protocolLib) {
this.protocolLib = protocolLib;
}
}
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -28,6 +28,7 @@ import us.myles.ViaVersion.util.GsonUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -126,9 +127,10 @@ public class BungeePlugin extends Plugin implements ViaPlatform<ProxiedPlayer>,
@Override
public ViaCommandSender[] getOnlinePlayers() {
ViaCommandSender[] array = new ViaCommandSender[getProxy().getPlayers().size()];
Collection<ProxiedPlayer> players = getProxy().getPlayers();
ViaCommandSender[] array = new ViaCommandSender[players.size()];
int i = 0;
for (ProxiedPlayer player : getProxy().getPlayers()) {
for (ProxiedPlayer player : players) {
array[i++] = new BungeeCommandSender(player);
}
return array;
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -96,6 +96,11 @@ import java.util.stream.IntStream;
this.buffer.expect(Tokens.ARRAY_BEGIN);
final boolean prefixedIndex = this.buffer.peek() == '0' && this.buffer.peek(1) == ':';
while (this.buffer.hasMore()) {
if (this.buffer.peek() == Tokens.ARRAY_END) {
this.buffer.advance();
return listTag;
}
if (prefixedIndex) {
this.buffer.takeUntil(':');
}
@@ -377,7 +377,7 @@ public class ProtocolRegistry {
}
private static void shutdownLoaderExecutor() {
Via.getPlatform().getLogger().info("Shutting down mapping loader executor!");
Via.getPlatform().getLogger().info("Finished mapping loading, shutting down loader executor!");
mappingsLoaded = true;
mappingLoaderExecutor.shutdown();
mappingLoaderExecutor = null;
@@ -2,6 +2,7 @@ package us.myles.ViaVersion.api.rewriters;
import us.myles.ViaVersion.api.protocol.ClientboundPacketType;
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;
@@ -25,16 +26,20 @@ public class SoundRewriter {
@Override
public void registerMap() {
map(Type.VAR_INT); // Sound Id
handler(wrapper -> {
int soundId = wrapper.get(Type.VAR_INT, 0);
int mappedId = idRewriter.rewrite(soundId);
if (mappedId == -1) {
wrapper.cancel();
} else if (soundId != mappedId) {
wrapper.set(Type.VAR_INT, 0, mappedId);
}
});
handler(getSoundHandler());
}
});
}
public PacketHandler getSoundHandler() {
return wrapper -> {
int soundId = wrapper.get(Type.VAR_INT, 0);
int mappedId = idRewriter.rewrite(soundId);
if (mappedId == -1) {
wrapper.cancel();
} else if (soundId != mappedId) {
wrapper.set(Type.VAR_INT, 0, mappedId);
}
};
}
}
@@ -10,6 +10,7 @@ import us.myles.ViaVersion.api.remapper.ValueTransformer;
import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.api.type.types.version.Types1_9;
import us.myles.ViaVersion.packets.State;
import us.myles.ViaVersion.protocols.protocol1_10to1_9_3.packets.InventoryPackets;
import us.myles.ViaVersion.protocols.protocol1_10to1_9_3.storage.ResourcePackTracker;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
@@ -43,6 +44,9 @@ public class Protocol1_10To1_9_3_4 extends Protocol<ClientboundPackets1_9_3, Cli
@Override
protected void registerPackets() {
InventoryPackets.register(this);
// Named sound effect
registerOutgoing(State.PLAY, 0x19, 0x19, new PacketRemapper() {
@Override
@@ -0,0 +1,25 @@
package us.myles.ViaVersion.protocols.protocol1_10to1_9_3.packets;
import us.myles.ViaVersion.api.minecraft.item.Item;
import us.myles.ViaVersion.api.rewriters.ItemRewriter;
import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.protocols.protocol1_10to1_9_3.Protocol1_10To1_9_3_4;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
public class InventoryPackets {
public static void register(Protocol1_10To1_9_3_4 protocol) {
ItemRewriter itemRewriter = new ItemRewriter(protocol, item -> {}, InventoryPackets::toServerItem);
itemRewriter.registerCreativeInvAction(ServerboundPackets1_9_3.CREATIVE_INVENTORY_ACTION, Type.ITEM);
}
public static void toServerItem(Item item) {
if (item == null) return;
boolean newItem = item.getIdentifier() >= 213 && item.getIdentifier() <= 217;
if (newItem) { // Replace server-side unknown items
item.setIdentifier((short) 1);
item.setData((short) 0);
}
}
}
@@ -1,8 +1,19 @@
package us.myles.ViaVersion.protocols.protocol1_11_1to1_11;
import us.myles.ViaVersion.api.protocol.Protocol;
import us.myles.ViaVersion.protocols.protocol1_11_1to1_11.packets.InventoryPackets;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
public class Protocol1_11_1To1_11 extends Protocol<ClientboundPackets1_9_3, ClientboundPackets1_9_3, ServerboundPackets1_9_3, ServerboundPackets1_9_3> {
public Protocol1_11_1To1_11() {
super(ClientboundPackets1_9_3.class, ClientboundPackets1_9_3.class, ServerboundPackets1_9_3.class, ServerboundPackets1_9_3.class);
}
@Override
protected void registerPackets() {
InventoryPackets.register(this);
}
}
@@ -0,0 +1,25 @@
package us.myles.ViaVersion.protocols.protocol1_11_1to1_11.packets;
import us.myles.ViaVersion.api.minecraft.item.Item;
import us.myles.ViaVersion.api.rewriters.ItemRewriter;
import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.protocols.protocol1_11_1to1_11.Protocol1_11_1To1_11;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
public class InventoryPackets {
public static void register(Protocol1_11_1To1_11 protocol) {
ItemRewriter itemRewriter = new ItemRewriter(protocol, item -> {}, InventoryPackets::toServerItem);
itemRewriter.registerCreativeInvAction(ServerboundPackets1_9_3.CREATIVE_INVENTORY_ACTION, Type.ITEM);
}
public static void toServerItem(Item item) {
if (item == null) return;
boolean newItem = item.getIdentifier() == 452;
if (newItem) { // Replace server-side unknown items
item.setIdentifier((short) 1);
item.setData((short) 0);
}
}
}
@@ -1,6 +1,8 @@
package us.myles.ViaVersion.protocols.protocol1_11to1_10.packets;
import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.minecraft.item.Item;
import us.myles.ViaVersion.api.remapper.PacketHandler;
import us.myles.ViaVersion.api.remapper.PacketRemapper;
import us.myles.ViaVersion.api.rewriters.ItemRewriter;
@@ -13,7 +15,7 @@ import us.myles.ViaVersion.protocols.protocol1_11to1_10.Protocol1_11To1_10;
public class InventoryPackets {
public static void register(Protocol1_11To1_10 protocol) {
ItemRewriter itemRewriter = new ItemRewriter(protocol, EntityIdRewriter::toClientItem, EntityIdRewriter::toServerItem);
ItemRewriter itemRewriter = new ItemRewriter(protocol, EntityIdRewriter::toClientItem, InventoryPackets::toServerItem);
itemRewriter.registerSetSlot(ClientboundPackets1_9_3.SET_SLOT, Type.ITEM);
itemRewriter.registerWindowItems(ClientboundPackets1_9_3.WINDOW_ITEMS, Type.ITEM_ARRAY);
@@ -53,4 +55,16 @@ public class InventoryPackets {
itemRewriter.registerClickWindow(ServerboundPackets1_9_3.CLICK_WINDOW, Type.ITEM);
itemRewriter.registerCreativeInvAction(ServerboundPackets1_9_3.CREATIVE_INVENTORY_ACTION, Type.ITEM);
}
public static void toServerItem(Item item) {
EntityIdRewriter.toServerItem(item);
if (item == null) return;
boolean newItem = item.getIdentifier() >= 218 && item.getIdentifier() <= 234;
newItem |= item.getIdentifier() == 449 || item.getIdentifier() == 450;
if (newItem) { // Replace server-side unknown items
item.setIdentifier((short) 1);
item.setData((short) 0);
}
}
}
@@ -7,6 +7,7 @@ import us.myles.ViaVersion.api.remapper.PacketHandler;
import us.myles.ViaVersion.api.remapper.PacketRemapper;
import us.myles.ViaVersion.api.rewriters.ItemRewriter;
import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.protocols.protocol1_11to1_10.EntityIdRewriter;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.BedRewriter;
import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1;
@@ -16,7 +17,7 @@ import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.providers.InventoryQui
public class InventoryPackets {
public static void register(Protocol1_12To1_11_1 protocol) {
ItemRewriter itemRewriter = new ItemRewriter(protocol, BedRewriter::toClientItem, BedRewriter::toServerItem);
ItemRewriter itemRewriter = new ItemRewriter(protocol, BedRewriter::toClientItem, InventoryPackets::toServerItem);
itemRewriter.registerSetSlot(ClientboundPackets1_9_3.SET_SLOT, Type.ITEM);
itemRewriter.registerWindowItems(ClientboundPackets1_9_3.WINDOW_ITEMS, Type.ITEM_ARRAY);
@@ -98,4 +99,15 @@ public class InventoryPackets {
// Creative Inventory Action
itemRewriter.registerCreativeInvAction(ServerboundPackets1_12.CREATIVE_INVENTORY_ACTION, Type.ITEM);
}
public static void toServerItem(Item item) {
BedRewriter.toServerItem(item);
if (item == null) return;
boolean newItem = item.getIdentifier() >= 235 && item.getIdentifier() <= 252;
newItem |= item.getIdentifier() == 453;
if (newItem) { // Replace server-side unknown items
item.setIdentifier((short) 1);
item.setData((short) 0);
}
}
}
@@ -2,23 +2,22 @@ package us.myles.ViaVersion.protocols.protocol1_13to1_12_2;
import com.google.gson.JsonElement;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.rewriters.ComponentRewriter;
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.ComponentRewriter1_13;
import us.myles.ViaVersion.util.GsonUtil;
public class ChatRewriter {
private static final BaseComponent[] EMPTY_COMPONENTS = new BaseComponent[0];
private static final ComponentRewriter COMPONENT_REWRITER = new ComponentRewriter1_13();
// Based on https://github.com/SpigotMC/BungeeCord/blob/master/chat/src/main/java/net/md_5/bungee/api/chat/TextComponent.java
public static String fromLegacyTextAsString(String message, ChatColor defaultColor, boolean lore) {
public static String fromLegacyTextAsString(String message, ChatColor defaultColor, boolean itemData) {
TextComponent headComponent = new TextComponent();
TextComponent component = new TextComponent();
StringBuilder builder = new StringBuilder();
if (lore) {
if (itemData) {
// Workaround for all italic lore
headComponent.setItalic(false);
//TODO set first child to italics if it doesn't have a color
@@ -88,7 +87,12 @@ public class ChatRewriter {
}
public static String jsonTextToLegacy(String value) {
return TextComponent.toLegacyText(ComponentSerializer.parse(value));
try {
return TextComponent.toLegacyText(ComponentSerializer.parse(value));
} catch (Exception e) {
Via.getPlatform().getLogger().warning("Error converting json text to legacy: " + value);
return "";
}
}
public static void processTranslate(JsonElement value) {
@@ -210,7 +210,7 @@ public class Protocol1_13To1_12_2 extends Protocol<ClientboundPackets1_12_1, Cli
} else {
Via.getPlatform().getLogger().warning("Could not find 1.13 -> 1.12.2 statistic mapping for " + name);
}
} else {
} else if (split.length > 2) {
String category = split[1];
//TODO convert string ids (blocks, items, entities)
switch (category) {
@@ -9,6 +9,7 @@ import com.github.steveice10.opennbt.tag.builtin.StringTag;
import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.google.common.base.Joiner;
import com.google.common.primitives.Ints;
import net.md_5.bungee.api.ChatColor;
import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.minecraft.item.Item;
@@ -303,7 +304,7 @@ public class InventoryPackets {
if (display.get("Name") instanceof StringTag) {
StringTag name = display.get("Name");
display.put(new StringTag(NBT_TAG_NAME + "|Name", name.getValue()));
name.setValue(ChatRewriter.legacyTextToJsonString(name.getValue()));
name.setValue(ChatRewriter.fromLegacyTextAsString(name.getValue(), ChatColor.WHITE, true));
}
}
// ench is now Enchantments and now uses identifiers
@@ -521,16 +522,18 @@ public class InventoryPackets {
if (tag != null) {
if (isDamageable(item.getIdentifier())) {
if (tag.get("Damage") instanceof IntTag) {
if (!gotRawIdFromTag)
if (!gotRawIdFromTag) {
item.setData((short) (int) tag.get("Damage").getValue());
}
tag.remove("Damage");
}
}
if (item.getIdentifier() == 358) { // map
if (tag.get("map") instanceof IntTag) {
if (!gotRawIdFromTag)
if (!gotRawIdFromTag) {
item.setData((short) (int) tag.get("map").getValue());
}
tag.remove("map");
}
}
@@ -555,15 +558,10 @@ public class InventoryPackets {
// Display Name now uses JSON
if (tag.get("display") instanceof CompoundTag) {
CompoundTag display = tag.get("display");
if (((CompoundTag) tag.get("display")).get("Name") instanceof StringTag) {
if (display.get("Name") instanceof StringTag) {
StringTag name = display.get("Name");
StringTag via = display.get(NBT_TAG_NAME + "|Name");
name.setValue(
via != null ? via.getValue() : ChatRewriter.jsonTextToLegacy(
name.getValue()
)
);
display.remove(NBT_TAG_NAME + "|Name");
StringTag via = display.remove(NBT_TAG_NAME + "|Name");
name.setValue(via != null ? via.getValue() : ChatRewriter.jsonTextToLegacy(name.getValue()));
}
}
@@ -580,12 +578,7 @@ public class InventoryPackets {
oldId = Short.valueOf(newId.substring(18));
}
if (oldId != null) {
enchEntry.put(
new ShortTag(
"id",
oldId
)
);
enchEntry.put(new ShortTag("id", oldId));
enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue()));
ench.add(enchEntry);
}
@@ -606,12 +599,7 @@ public class InventoryPackets {
oldId = Short.valueOf(newId.substring(18));
}
if (oldId != null) {
enchEntry.put(
new ShortTag(
"id",
oldId
)
);
enchEntry.put(new ShortTag("id", oldId));
enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue()));
newStoredEnch.add(enchEntry);
}
@@ -23,7 +23,9 @@ public class BlockConnectionStorage extends StoredObject {
static {
try {
fastUtilLongObjectHashMap = Class.forName("it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap").getConstructor();
//noinspection StringBufferReplaceableByString - prevent relocation
String className = new StringBuilder("it").append(".unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap").toString();
fastUtilLongObjectHashMap = Class.forName(className).getConstructor();
Via.getPlatform().getLogger().info("Using FastUtil Long2ObjectOpenHashMap for block connections");
} catch (ClassNotFoundException | NoSuchMethodException ignored) {
}
@@ -186,6 +186,14 @@ public class ItemRewriter {
item.setTag(tag);
item.setData((short) data);
}
boolean newItem = item.getIdentifier() >= 198 && item.getIdentifier() <= 212;
newItem |= item.getIdentifier() == 397 && item.getData() == 5;
newItem |= item.getIdentifier() >= 432 && item.getIdentifier() <= 448;
if (newItem) { // Replace server-side unknown items
item.setIdentifier((short) 1);
item.setData((short) 0);
}
}
}
@@ -16,7 +16,6 @@ import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_9;
import us.myles.ViaVersion.api.storage.EntityTracker;
import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.api.type.types.version.Types1_9;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import us.myles.ViaVersion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import us.myles.ViaVersion.protocols.protocol1_9to1_8.chat.GameMode;
import us.myles.ViaVersion.protocols.protocol1_9to1_8.metadata.MetadataRewriter1_9To1_8;
@@ -172,8 +171,11 @@ public class EntityTracker1_9 extends EntityTracker {
Metadata meta = getMetaByIndex(metadataList, 10); //Only happens if the armorstand is small
byte data = (byte) metadata.getValue();
// Check invisible | Check small | Check if custom name is empty | Check if custom name visible is true
Metadata displayName;
Metadata displayNameVisible;
if ((data & 0x20) == 0x20 && ((byte) meta.getValue() & 0x01) == 0x01
&& !((String) getMetaByIndex(metadataList, 2).getValue()).isEmpty() && (boolean) getMetaByIndex(metadataList, 3).getValue()) {
&& (displayName = getMetaByIndex(metadataList, 2)) != null && !((String) displayName.getValue()).isEmpty()
&& (displayNameVisible = getMetaByIndex(metadataList, 3)) != null && (boolean) displayNameVisible.getValue()) {
if (!knownHolograms.contains(entityId)) {
knownHolograms.add(entityId);
try {
@@ -233,8 +235,9 @@ public class EntityTracker1_9 extends EntityTracker {
public Metadata getMetaByIndex(List<Metadata> list, int index) {
for (Metadata meta : list)
if (index == meta.getId())
if (index == meta.getId()) {
return meta;
}
return null;
}
@@ -0,0 +1,467 @@
{
"sounds": [
"ambient.cave",
"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.brewing_stand.brew",
"block.chest.close",
"block.chest.locked",
"block.chest.open",
"block.chorus_flower.death",
"block.chorus_flower.grow",
"block.cloth.break",
"block.cloth.fall",
"block.cloth.hit",
"block.cloth.place",
"block.cloth.step",
"block.comparator.click",
"block.dispenser.dispense",
"block.dispenser.fail",
"block.dispenser.launch",
"block.enchantment_table.use",
"block.end_gateway.spawn",
"block.enderchest.close",
"block.enderchest.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.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.lava.ambient",
"block.lava.extinguish",
"block.lava.pop",
"block.lever.click",
"block.metal.break",
"block.metal.fall",
"block.metal.hit",
"block.metal.place",
"block.metal.step",
"block.metal_pressureplate.click_off",
"block.metal_pressureplate.click_on",
"block.note.basedrum",
"block.note.bass",
"block.note.harp",
"block.note.hat",
"block.note.pling",
"block.note.snare",
"block.piston.contract",
"block.piston.extend",
"block.portal.ambient",
"block.portal.travel",
"block.portal.trigger",
"block.redstone_torch.burnout",
"block.sand.break",
"block.sand.fall",
"block.sand.hit",
"block.sand.place",
"block.sand.step",
"block.slime.break",
"block.slime.fall",
"block.slime.hit",
"block.slime.place",
"block.slime.step",
"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_pressureplate.click_off",
"block.stone_pressureplate.click_on",
"block.tripwire.attach",
"block.tripwire.click_off",
"block.tripwire.click_on",
"block.tripwire.detach",
"block.water.ambient",
"block.waterlily.place",
"block.wood.break",
"block.wood.fall",
"block.wood.hit",
"block.wood.place",
"block.wood.step",
"block.wood_button.click_off",
"block.wood_button.click_on",
"block.wood_pressureplate.click_off",
"block.wood_pressureplate.click_on",
"block.wooden_door.close",
"block.wooden_door.open",
"block.wooden_trapdoor.close",
"block.wooden_trapdoor.open",
"enchant.thorns.hit",
"entity.armorstand.break",
"entity.armorstand.fall",
"entity.armorstand.hit",
"entity.armorstand.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.blaze.ambient",
"entity.blaze.burn",
"entity.blaze.death",
"entity.blaze.hurt",
"entity.blaze.shoot",
"entity.bobber.splash",
"entity.bobber.throw",
"entity.cat.ambient",
"entity.cat.death",
"entity.cat.hiss",
"entity.cat.hurt",
"entity.cat.purr",
"entity.cat.purreow",
"entity.chicken.ambient",
"entity.chicken.death",
"entity.chicken.egg",
"entity.chicken.hurt",
"entity.chicken.step",
"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.donkey.ambient",
"entity.donkey.angry",
"entity.donkey.chest",
"entity.donkey.death",
"entity.donkey.hurt",
"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.hurt",
"entity.elder_guardian.hurt_land",
"entity.enderdragon.ambient",
"entity.enderdragon.death",
"entity.enderdragon.flap",
"entity.enderdragon.growl",
"entity.enderdragon.hurt",
"entity.enderdragon.shoot",
"entity.enderdragon_fireball.explode",
"entity.endereye.launch",
"entity.endermen.ambient",
"entity.endermen.death",
"entity.endermen.hurt",
"entity.endermen.scream",
"entity.endermen.stare",
"entity.endermen.teleport",
"entity.endermite.ambient",
"entity.endermite.death",
"entity.endermite.hurt",
"entity.endermite.step",
"entity.enderpearl.throw",
"entity.experience_bottle.throw",
"entity.experience_orb.pickup",
"entity.experience_orb.touch",
"entity.firework.blast",
"entity.firework.blast_far",
"entity.firework.large_blast",
"entity.firework.large_blast_far",
"entity.firework.launch",
"entity.firework.shoot",
"entity.firework.twinkle",
"entity.firework.twinkle_far",
"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.death",
"entity.husk.hurt",
"entity.husk.step",
"entity.irongolem.attack",
"entity.irongolem.death",
"entity.irongolem.hurt",
"entity.irongolem.step",
"entity.item.break",
"entity.item.pickup",
"entity.itemframe.add_item",
"entity.itemframe.break",
"entity.itemframe.place",
"entity.itemframe.remove_item",
"entity.itemframe.rotate_item",
"entity.leashknot.break",
"entity.leashknot.place",
"entity.lightning.impact",
"entity.lightning.thunder",
"entity.lingeringpotion.throw",
"entity.magmacube.death",
"entity.magmacube.hurt",
"entity.magmacube.jump",
"entity.magmacube.squish",
"entity.minecart.inside",
"entity.minecart.riding",
"entity.mooshroom.shear",
"entity.mule.ambient",
"entity.mule.death",
"entity.mule.hurt",
"entity.painting.break",
"entity.painting.place",
"entity.pig.ambient",
"entity.pig.death",
"entity.pig.hurt",
"entity.pig.saddle",
"entity.pig.step",
"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.levelup",
"entity.player.small_fall",
"entity.player.splash",
"entity.player.swim",
"entity.polar_bear.ambient",
"entity.polar_bear.baby_ambient",
"entity.polar_bear.death",
"entity.polar_bear.hurt",
"entity.polar_bear.step",
"entity.polar_bear.warning",
"entity.rabbit.ambient",
"entity.rabbit.attack",
"entity.rabbit.death",
"entity.rabbit.hurt",
"entity.rabbit.jump",
"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.death",
"entity.skeleton_horse.hurt",
"entity.slime.attack",
"entity.slime.death",
"entity.slime.hurt",
"entity.slime.jump",
"entity.slime.squish",
"entity.small_magmacube.death",
"entity.small_magmacube.hurt",
"entity.small_magmacube.squish",
"entity.small_slime.death",
"entity.small_slime.hurt",
"entity.small_slime.jump",
"entity.small_slime.squish",
"entity.snowball.throw",
"entity.snowman.ambient",
"entity.snowman.death",
"entity.snowman.hurt",
"entity.snowman.shoot",
"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.stray.ambient",
"entity.stray.death",
"entity.stray.hurt",
"entity.stray.step",
"entity.tnt.primed",
"entity.villager.ambient",
"entity.villager.death",
"entity.villager.hurt",
"entity.villager.no",
"entity.villager.trading",
"entity.villager.yes",
"entity.witch.ambient",
"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_door_wood",
"entity.zombie.attack_iron_door",
"entity.zombie.break_door_wood",
"entity.zombie.death",
"entity.zombie.hurt",
"entity.zombie.infect",
"entity.zombie.step",
"entity.zombie_horse.ambient",
"entity.zombie_horse.death",
"entity.zombie_horse.hurt",
"entity.zombie_pig.ambient",
"entity.zombie_pig.angry",
"entity.zombie_pig.death",
"entity.zombie_pig.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",
"item.armor.equip_chain",
"item.armor.equip_diamond",
"item.armor.equip_generic",
"item.armor.equip_gold",
"item.armor.equip_iron",
"item.armor.equip_leather",
"item.bottle.fill",
"item.bottle.fill_dragonbreath",
"item.bucket.empty",
"item.bucket.empty_lava",
"item.bucket.fill",
"item.bucket.fill_lava",
"item.chorus_fruit.teleport",
"item.elytra.flying",
"item.firecharge.use",
"item.flintandsteel.use",
"item.hoe.till",
"item.shield.block",
"item.shield.break",
"item.shovel.flatten",
"music.creative",
"music.credits",
"music.dragon",
"music.end",
"music.game",
"music.menu",
"music.nether",
"record.11",
"record.13",
"record.blocks",
"record.cat",
"record.chirp",
"record.far",
"record.mall",
"record.mellohi",
"record.stal",
"record.strad",
"record.wait",
"record.ward",
"ui.button.click",
"weather.rain",
"weather.rain.above"
]
}
@@ -0,0 +1,497 @@
{
"sounds": [
"ambient.cave",
"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.brewing_stand.brew",
"block.chest.close",
"block.chest.locked",
"block.chest.open",
"block.chorus_flower.death",
"block.chorus_flower.grow",
"block.cloth.break",
"block.cloth.fall",
"block.cloth.hit",
"block.cloth.place",
"block.cloth.step",
"block.comparator.click",
"block.dispenser.dispense",
"block.dispenser.fail",
"block.dispenser.launch",
"block.enchantment_table.use",
"block.end_gateway.spawn",
"block.enderchest.close",
"block.enderchest.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.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.lava.ambient",
"block.lava.extinguish",
"block.lava.pop",
"block.lever.click",
"block.metal.break",
"block.metal.fall",
"block.metal.hit",
"block.metal.place",
"block.metal.step",
"block.metal_pressureplate.click_off",
"block.metal_pressureplate.click_on",
"block.note.basedrum",
"block.note.bass",
"block.note.harp",
"block.note.hat",
"block.note.pling",
"block.note.snare",
"block.piston.contract",
"block.piston.extend",
"block.portal.ambient",
"block.portal.travel",
"block.portal.trigger",
"block.redstone_torch.burnout",
"block.sand.break",
"block.sand.fall",
"block.sand.hit",
"block.sand.place",
"block.sand.step",
"block.shulker_box.close",
"block.shulker_box.open",
"block.slime.break",
"block.slime.fall",
"block.slime.hit",
"block.slime.place",
"block.slime.step",
"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_pressureplate.click_off",
"block.stone_pressureplate.click_on",
"block.tripwire.attach",
"block.tripwire.click_off",
"block.tripwire.click_on",
"block.tripwire.detach",
"block.water.ambient",
"block.waterlily.place",
"block.wood.break",
"block.wood.fall",
"block.wood.hit",
"block.wood.place",
"block.wood.step",
"block.wood_button.click_off",
"block.wood_button.click_on",
"block.wood_pressureplate.click_off",
"block.wood_pressureplate.click_on",
"block.wooden_door.close",
"block.wooden_door.open",
"block.wooden_trapdoor.close",
"block.wooden_trapdoor.open",
"enchant.thorns.hit",
"entity.armorstand.break",
"entity.armorstand.fall",
"entity.armorstand.hit",
"entity.armorstand.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.blaze.ambient",
"entity.blaze.burn",
"entity.blaze.death",
"entity.blaze.hurt",
"entity.blaze.shoot",
"entity.bobber.splash",
"entity.bobber.throw",
"entity.cat.ambient",
"entity.cat.death",
"entity.cat.hiss",
"entity.cat.hurt",
"entity.cat.purr",
"entity.cat.purreow",
"entity.chicken.ambient",
"entity.chicken.death",
"entity.chicken.egg",
"entity.chicken.hurt",
"entity.chicken.step",
"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.donkey.ambient",
"entity.donkey.angry",
"entity.donkey.chest",
"entity.donkey.death",
"entity.donkey.hurt",
"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.hurt",
"entity.elder_guardian.flop",
"entity.elder_guardian.hurt_land",
"entity.enderdragon.ambient",
"entity.enderdragon.death",
"entity.enderdragon.flap",
"entity.enderdragon.growl",
"entity.enderdragon.hurt",
"entity.enderdragon.shoot",
"entity.enderdragon_fireball.explode",
"entity.endereye.launch",
"entity.endermen.ambient",
"entity.endermen.death",
"entity.endermen.hurt",
"entity.endermen.scream",
"entity.endermen.stare",
"entity.endermen.teleport",
"entity.endermite.ambient",
"entity.endermite.death",
"entity.endermite.hurt",
"entity.endermite.step",
"entity.enderpearl.throw",
"entity.evocation_fangs.attack",
"entity.evocation_illager.ambient",
"entity.evocation_illager.cast_spell",
"entity.evocation_illager.death",
"entity.evocation_illager.hurt",
"entity.evocation_illager.prepare_attack",
"entity.evocation_illager.prepare_summon",
"entity.evocation_illager.prepare_wololo",
"entity.experience_bottle.throw",
"entity.experience_orb.pickup",
"entity.firework.blast",
"entity.firework.blast_far",
"entity.firework.large_blast",
"entity.firework.large_blast_far",
"entity.firework.launch",
"entity.firework.shoot",
"entity.firework.twinkle",
"entity.firework.twinkle_far",
"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.death",
"entity.husk.hurt",
"entity.husk.step",
"entity.irongolem.attack",
"entity.irongolem.death",
"entity.irongolem.hurt",
"entity.irongolem.step",
"entity.item.break",
"entity.item.pickup",
"entity.itemframe.add_item",
"entity.itemframe.break",
"entity.itemframe.place",
"entity.itemframe.remove_item",
"entity.itemframe.rotate_item",
"entity.leashknot.break",
"entity.leashknot.place",
"entity.lightning.impact",
"entity.lightning.thunder",
"entity.lingeringpotion.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.magmacube.death",
"entity.magmacube.hurt",
"entity.magmacube.jump",
"entity.magmacube.squish",
"entity.minecart.inside",
"entity.minecart.riding",
"entity.mooshroom.shear",
"entity.mule.ambient",
"entity.mule.chest",
"entity.mule.death",
"entity.mule.hurt",
"entity.painting.break",
"entity.painting.place",
"entity.pig.ambient",
"entity.pig.death",
"entity.pig.hurt",
"entity.pig.saddle",
"entity.pig.step",
"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.levelup",
"entity.player.small_fall",
"entity.player.splash",
"entity.player.swim",
"entity.polar_bear.ambient",
"entity.polar_bear.baby_ambient",
"entity.polar_bear.death",
"entity.polar_bear.hurt",
"entity.polar_bear.step",
"entity.polar_bear.warning",
"entity.rabbit.ambient",
"entity.rabbit.attack",
"entity.rabbit.death",
"entity.rabbit.hurt",
"entity.rabbit.jump",
"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.death",
"entity.skeleton_horse.hurt",
"entity.slime.attack",
"entity.slime.death",
"entity.slime.hurt",
"entity.slime.jump",
"entity.slime.squish",
"entity.small_magmacube.death",
"entity.small_magmacube.hurt",
"entity.small_magmacube.squish",
"entity.small_slime.death",
"entity.small_slime.hurt",
"entity.small_slime.jump",
"entity.small_slime.squish",
"entity.snowball.throw",
"entity.snowman.ambient",
"entity.snowman.death",
"entity.snowman.hurt",
"entity.snowman.shoot",
"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.stray.ambient",
"entity.stray.death",
"entity.stray.hurt",
"entity.stray.step",
"entity.tnt.primed",
"entity.vex.ambient",
"entity.vex.charge",
"entity.vex.death",
"entity.vex.hurt",
"entity.villager.ambient",
"entity.villager.death",
"entity.villager.hurt",
"entity.villager.no",
"entity.villager.trading",
"entity.villager.yes",
"entity.vindication_illager.ambient",
"entity.vindication_illager.death",
"entity.vindication_illager.hurt",
"entity.witch.ambient",
"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_door_wood",
"entity.zombie.attack_iron_door",
"entity.zombie.break_door_wood",
"entity.zombie.death",
"entity.zombie.hurt",
"entity.zombie.infect",
"entity.zombie.step",
"entity.zombie_horse.ambient",
"entity.zombie_horse.death",
"entity.zombie_horse.hurt",
"entity.zombie_pig.ambient",
"entity.zombie_pig.angry",
"entity.zombie_pig.death",
"entity.zombie_pig.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",
"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.bottle.empty",
"item.bottle.fill",
"item.bottle.fill_dragonbreath",
"item.bucket.empty",
"item.bucket.empty_lava",
"item.bucket.fill",
"item.bucket.fill_lava",
"item.chorus_fruit.teleport",
"item.elytra.flying",
"item.firecharge.use",
"item.flintandsteel.use",
"item.hoe.till",
"item.shield.block",
"item.shield.break",
"item.shovel.flatten",
"item.totem.use",
"music.creative",
"music.credits",
"music.dragon",
"music.end",
"music.game",
"music.menu",
"music.nether",
"record.11",
"record.13",
"record.blocks",
"record.cat",
"record.chirp",
"record.far",
"record.mall",
"record.mellohi",
"record.stal",
"record.strad",
"record.wait",
"record.ward",
"ui.button.click",
"weather.rain",
"weather.rain.above"
]
}
@@ -0,0 +1,448 @@
{
"sounds": [
"ambient.cave",
"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.brewing_stand.brew",
"block.chest.close",
"block.chest.locked",
"block.chest.open",
"block.chorus_flower.death",
"block.chorus_flower.grow",
"block.cloth.break",
"block.cloth.fall",
"block.cloth.hit",
"block.cloth.place",
"block.cloth.step",
"block.comparator.click",
"block.dispenser.dispense",
"block.dispenser.fail",
"block.dispenser.launch",
"block.end_gateway.spawn",
"block.enderchest.close",
"block.enderchest.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.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.lava.ambient",
"block.lava.extinguish",
"block.lava.pop",
"block.lever.click",
"block.metal.break",
"block.metal.fall",
"block.metal.hit",
"block.metal.place",
"block.metal.step",
"block.metal_pressureplate.click_off",
"block.metal_pressureplate.click_on",
"block.note.basedrum",
"block.note.bass",
"block.note.harp",
"block.note.hat",
"block.note.pling",
"block.note.snare",
"block.piston.contract",
"block.piston.extend",
"block.portal.ambient",
"block.portal.travel",
"block.portal.trigger",
"block.redstone_torch.burnout",
"block.sand.break",
"block.sand.fall",
"block.sand.hit",
"block.sand.place",
"block.sand.step",
"block.slime.break",
"block.slime.fall",
"block.slime.hit",
"block.slime.place",
"block.slime.step",
"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_pressureplate.click_off",
"block.stone_pressureplate.click_on",
"block.tripwire.attach",
"block.tripwire.click_off",
"block.tripwire.click_on",
"block.tripwire.detach",
"block.water.ambient",
"block.waterlily.place",
"block.wood.break",
"block.wood.fall",
"block.wood.hit",
"block.wood.place",
"block.wood.step",
"block.wood_button.click_off",
"block.wood_button.click_on",
"block.wood_pressureplate.click_off",
"block.wood_pressureplate.click_on",
"block.wooden_door.close",
"block.wooden_door.open",
"block.wooden_trapdoor.close",
"block.wooden_trapdoor.open",
"enchant.thorns.hit",
"entity.armorstand.break",
"entity.armorstand.fall",
"entity.armorstand.hit",
"entity.armorstand.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.blaze.ambient",
"entity.blaze.burn",
"entity.blaze.death",
"entity.blaze.hurt",
"entity.blaze.shoot",
"entity.bobber.splash",
"entity.bobber.throw",
"entity.cat.ambient",
"entity.cat.death",
"entity.cat.hiss",
"entity.cat.hurt",
"entity.cat.purr",
"entity.cat.purreow",
"entity.chicken.ambient",
"entity.chicken.death",
"entity.chicken.egg",
"entity.chicken.hurt",
"entity.chicken.step",
"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.donkey.ambient",
"entity.donkey.angry",
"entity.donkey.chest",
"entity.donkey.death",
"entity.donkey.hurt",
"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.hurt",
"entity.elder_guardian.hurt_land",
"entity.enderdragon.ambient",
"entity.enderdragon.death",
"entity.enderdragon.flap",
"entity.enderdragon.growl",
"entity.enderdragon.hurt",
"entity.enderdragon.shoot",
"entity.enderdragon_fireball.explode",
"entity.endereye.launch",
"entity.endermen.ambient",
"entity.endermen.death",
"entity.endermen.hurt",
"entity.endermen.scream",
"entity.endermen.stare",
"entity.endermen.teleport",
"entity.endermite.ambient",
"entity.endermite.death",
"entity.endermite.hurt",
"entity.endermite.step",
"entity.enderpearl.throw",
"entity.experience_bottle.throw",
"entity.experience_orb.pickup",
"entity.experience_orb.touch",
"entity.firework.blast",
"entity.firework.blast_far",
"entity.firework.large_blast",
"entity.firework.large_blast_far",
"entity.firework.launch",
"entity.firework.shoot",
"entity.firework.twinkle",
"entity.firework.twinkle_far",
"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.irongolem.attack",
"entity.irongolem.death",
"entity.irongolem.hurt",
"entity.irongolem.step",
"entity.item.break",
"entity.item.pickup",
"entity.itemframe.add_item",
"entity.itemframe.break",
"entity.itemframe.place",
"entity.itemframe.remove_item",
"entity.itemframe.rotate_item",
"entity.leashknot.break",
"entity.leashknot.place",
"entity.lightning.impact",
"entity.lightning.thunder",
"entity.lingeringpotion.throw",
"entity.magmacube.death",
"entity.magmacube.hurt",
"entity.magmacube.jump",
"entity.magmacube.squish",
"entity.minecart.inside",
"entity.minecart.riding",
"entity.mooshroom.shear",
"entity.mule.ambient",
"entity.mule.death",
"entity.mule.hurt",
"entity.painting.break",
"entity.painting.place",
"entity.pig.ambient",
"entity.pig.death",
"entity.pig.hurt",
"entity.pig.saddle",
"entity.pig.step",
"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.levelup",
"entity.player.small_fall",
"entity.player.splash",
"entity.player.swim",
"entity.rabbit.ambient",
"entity.rabbit.attack",
"entity.rabbit.death",
"entity.rabbit.hurt",
"entity.rabbit.jump",
"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.death",
"entity.skeleton_horse.hurt",
"entity.slime.attack",
"entity.slime.death",
"entity.slime.hurt",
"entity.slime.jump",
"entity.slime.squish",
"entity.small_magmacube.death",
"entity.small_magmacube.hurt",
"entity.small_magmacube.squish",
"entity.small_slime.death",
"entity.small_slime.hurt",
"entity.small_slime.jump",
"entity.small_slime.squish",
"entity.snowball.throw",
"entity.snowman.ambient",
"entity.snowman.death",
"entity.snowman.hurt",
"entity.snowman.shoot",
"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.tnt.primed",
"entity.villager.ambient",
"entity.villager.death",
"entity.villager.hurt",
"entity.villager.no",
"entity.villager.trading",
"entity.villager.yes",
"entity.witch.ambient",
"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.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_door_wood",
"entity.zombie.attack_iron_door",
"entity.zombie.break_door_wood",
"entity.zombie.death",
"entity.zombie.hurt",
"entity.zombie.infect",
"entity.zombie.step",
"entity.zombie_horse.ambient",
"entity.zombie_horse.death",
"entity.zombie_horse.hurt",
"entity.zombie_pig.ambient",
"entity.zombie_pig.angry",
"entity.zombie_pig.death",
"entity.zombie_pig.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",
"item.armor.equip_chain",
"item.armor.equip_diamond",
"item.armor.equip_generic",
"item.armor.equip_gold",
"item.armor.equip_iron",
"item.armor.equip_leather",
"item.bottle.fill",
"item.bottle.fill_dragonbreath",
"item.bucket.empty",
"item.bucket.empty_lava",
"item.bucket.fill",
"item.bucket.fill_lava",
"item.chorus_fruit.teleport",
"item.elytra.flying",
"item.firecharge.use",
"item.flintandsteel.use",
"item.hoe.till",
"item.shield.block",
"item.shield.break",
"item.shovel.flatten",
"music.creative",
"music.credits",
"music.dragon",
"music.end",
"music.game",
"music.menu",
"music.nether",
"record.11",
"record.13",
"record.blocks",
"record.cat",
"record.chirp",
"record.far",
"record.mall",
"record.mellohi",
"record.stal",
"record.strad",
"record.wait",
"record.ward",
"ui.button.click",
"weather.rain",
"weather.rain.above"
]
}
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<name>viaversion-jar</name>
+1 -1
View File
@@ -6,7 +6,7 @@
<groupId>us.myles</groupId>
<artifactId>viaversion-parent</artifactId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>viaversion-parent</name>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>viaversion-parent</artifactId>
<groupId>us.myles</groupId>
<version>3.2.0</version>
<version>3.2.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>