From ce6656afc0220a88988c8487eb2b5782832feffb Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 9 Feb 2013 19:13:40 +1100 Subject: [PATCH] Reformat API + Protocol --- .../java/net/md_5/bungee/api/ChatColor.java | 62 +-- .../java/net/md_5/bungee/api/ProxyServer.java | 4 +- .../md_5/bungee/api/config/ServerInfo.java | 6 +- .../net/md_5/bungee/api/event/ChatEvent.java | 2 +- .../bungee/api/event/PluginMessageEvent.java | 2 +- .../net/md_5/bungee/api/plugin/Command.java | 4 +- .../bungee/api/plugin/PluginClassloader.java | 20 +- .../md_5/bungee/api/plugin/PluginManager.java | 88 ++-- .../net/md_5/mendax/PacketDefinitions.java | 380 ++++++++++++++---- .../net/md_5/mendax/datainput/BulkChunk.java | 8 +- .../net/md_5/mendax/datainput/ByteHeader.java | 14 +- .../datainput/DataInputPacketReader.java | 65 +-- .../md_5/mendax/datainput/Instruction.java | 34 +- .../net/md_5/mendax/datainput/IntHeader.java | 14 +- .../java/net/md_5/mendax/datainput/Item.java | 13 +- .../java/net/md_5/mendax/datainput/Jump.java | 14 +- .../net/md_5/mendax/datainput/MetaData.java | 28 +- .../md_5/mendax/datainput/OptionalMotion.java | 11 +- .../md_5/mendax/datainput/ShortHeader.java | 14 +- .../mendax/datainput/UnsignedShortByte.java | 8 +- 20 files changed, 531 insertions(+), 260 deletions(-) diff --git a/api/src/main/java/net/md_5/bungee/api/ChatColor.java b/api/src/main/java/net/md_5/bungee/api/ChatColor.java index 87d1cfb9..5a0246e5 100644 --- a/api/src/main/java/net/md_5/bungee/api/ChatColor.java +++ b/api/src/main/java/net/md_5/bungee/api/ChatColor.java @@ -11,91 +11,91 @@ public enum ChatColor /** * Represents black. */ - BLACK('0'), + BLACK( '0' ), /** * Represents dark blue. */ - DARK_BLUE('1'), + DARK_BLUE( '1' ), /** * Represents dark green. */ - DARK_GREEN('2'), + DARK_GREEN( '2' ), /** * Represents dark blue (aqua). */ - DARK_AQUA('3'), + DARK_AQUA( '3' ), /** * Represents dark red. */ - DARK_RED('4'), + DARK_RED( '4' ), /** * Represents dark purple. */ - DARK_PURPLE('5'), + DARK_PURPLE( '5' ), /** * Represents gold. */ - GOLD('6'), + GOLD( '6' ), /** * Represents gray. */ - GRAY('7'), + GRAY( '7' ), /** * Represents dark gray. */ - DARK_GRAY('8'), + DARK_GRAY( '8' ), /** * Represents blue. */ - BLUE('9'), + BLUE( '9' ), /** * Represents green. */ - GREEN('a'), + GREEN( 'a' ), /** * Represents aqua. */ - AQUA('b'), + AQUA( 'b' ), /** * Represents red. */ - RED('c'), + RED( 'c' ), /** * Represents light purple. */ - LIGHT_PURPLE('d'), + LIGHT_PURPLE( 'd' ), /** * Represents yellow. */ - YELLOW('e'), + YELLOW( 'e' ), /** * Represents white. */ - WHITE('f'), + WHITE( 'f' ), /** * Represents magical characters that change around randomly. */ - MAGIC('k'), + MAGIC( 'k' ), /** * Makes the text bold. */ - BOLD('l'), + BOLD( 'l' ), /** * Makes a line appear through the text. */ - STRIKETHROUGH('m'), + STRIKETHROUGH( 'm' ), /** * Makes the text appear underlined. */ - UNDERLINE('n'), + UNDERLINE( 'n' ), /** * Makes the text italic. */ - ITALIC('o'), + ITALIC( 'o' ), /** * Resets all previous chat colors or formats. */ - RESET('r'); + RESET( 'r' ); /** * The special character which prefixes all chat colour codes. Use this if * you need to dynamically convert colour codes from your custom format. @@ -104,7 +104,7 @@ public enum ChatColor /** * Pattern to remove all colour codes. */ - private static final Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "[0-9A-FK-OR]"); + private static final Pattern STRIP_COLOR_PATTERN = Pattern.compile( "(?i)" + String.valueOf( COLOR_CHAR ) + "[0-9A-FK-OR]" ); /** * This colour's colour char prefixed by the {@link #COLOR_CHAR}. */ @@ -112,10 +112,10 @@ public enum ChatColor private ChatColor(char code) { - this.toString = new String(new char[] + this.toString = new String( new char[] { COLOR_CHAR, code - }); + } ); } @Override @@ -132,25 +132,25 @@ public enum ChatColor */ public static String stripColor(final String input) { - if (input == null) + if ( input == null ) { return null; } - return STRIP_COLOR_PATTERN.matcher(input).replaceAll(""); + return STRIP_COLOR_PATTERN.matcher( input ).replaceAll( "" ); } public static String translateAlternateColorCodes(char altColorChar, String textToTranslate) { char[] b = textToTranslate.toCharArray(); - for (int i = 0; i < b.length - 1; i++) + for ( int i = 0; i < b.length - 1; i++ ) { - if (b[i] == altColorChar && "0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf(b[i + 1]) > -1) + if ( b[i] == altColorChar && "0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf( b[i + 1] ) > -1 ) { b[i] = ChatColor.COLOR_CHAR; - b[i + 1] = Character.toLowerCase(b[i + 1]); + b[i + 1] = Character.toLowerCase( b[i + 1] ); } } - return new String(b); + return new String( b ); } } diff --git a/api/src/main/java/net/md_5/bungee/api/ProxyServer.java b/api/src/main/java/net/md_5/bungee/api/ProxyServer.java index 2004d519..9cdf2324 100644 --- a/api/src/main/java/net/md_5/bungee/api/ProxyServer.java +++ b/api/src/main/java/net/md_5/bungee/api/ProxyServer.java @@ -27,8 +27,8 @@ public abstract class ProxyServer */ public static void setInstance(ProxyServer instance) { - Preconditions.checkNotNull(instance, "instance"); - Preconditions.checkArgument(ProxyServer.instance == null, "Instance already set"); + Preconditions.checkNotNull( instance, "instance" ); + Preconditions.checkArgument( ProxyServer.instance == null, "Instance already set" ); ProxyServer.instance = instance; } diff --git a/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java b/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java index d1474f2e..dd645678 100644 --- a/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java +++ b/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java @@ -40,7 +40,7 @@ public abstract class ServerInfo @Synchronized("players") public void addPlayer(ProxiedPlayer player) { - players.add(player); + players.add( player ); } /** @@ -51,7 +51,7 @@ public abstract class ServerInfo @Synchronized("players") public void removePlayer(ProxiedPlayer player) { - players.remove(player); + players.remove( player ); } /** @@ -62,7 +62,7 @@ public abstract class ServerInfo @Synchronized("players") public Collection getPlayers() { - return Collections.unmodifiableCollection(players); + return Collections.unmodifiableCollection( players ); } /** diff --git a/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java b/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java index d0285329..29c50a5c 100644 --- a/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java +++ b/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java @@ -27,7 +27,7 @@ public class ChatEvent extends TargetedEvent implements Cancellable public ChatEvent(Connection sender, Connection receiver, String message) { - super(sender, receiver); + super( sender, receiver ); this.message = message; } } diff --git a/api/src/main/java/net/md_5/bungee/api/event/PluginMessageEvent.java b/api/src/main/java/net/md_5/bungee/api/event/PluginMessageEvent.java index 7ac4cf86..45378391 100644 --- a/api/src/main/java/net/md_5/bungee/api/event/PluginMessageEvent.java +++ b/api/src/main/java/net/md_5/bungee/api/event/PluginMessageEvent.java @@ -30,7 +30,7 @@ public class PluginMessageEvent extends TargetedEvent implements Cancellable public PluginMessageEvent(Connection sender, Connection receiver, String tag, byte[] data) { - super(sender, receiver); + super( sender, receiver ); this.tag = tag; this.data = data; } diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/Command.java b/api/src/main/java/net/md_5/bungee/api/plugin/Command.java index d58431d1..54fa39c9 100644 --- a/api/src/main/java/net/md_5/bungee/api/plugin/Command.java +++ b/api/src/main/java/net/md_5/bungee/api/plugin/Command.java @@ -25,7 +25,7 @@ public abstract class Command */ public Command(String name) { - this(name, null); + this( name, null ); } /** @@ -38,7 +38,7 @@ public abstract class Command */ public Command(String name, String permission, String... aliases) { - Preconditions.checkArgument(name != null, "name"); + Preconditions.checkArgument( name != null, "name" ); this.name = name; this.permission = permission; this.aliases = aliases; diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/PluginClassloader.java b/api/src/main/java/net/md_5/bungee/api/plugin/PluginClassloader.java index dc371228..21188b58 100644 --- a/api/src/main/java/net/md_5/bungee/api/plugin/PluginClassloader.java +++ b/api/src/main/java/net/md_5/bungee/api/plugin/PluginClassloader.java @@ -12,34 +12,34 @@ public class PluginClassloader extends URLClassLoader public PluginClassloader(URL[] urls) { - super(urls); - allLoaders.add(this); + super( urls ); + allLoaders.add( this ); } @Override protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { - return loadClass0(name, resolve, true); + return loadClass0( name, resolve, true ); } private Class loadClass0(String name, boolean resolve, boolean checkOther) throws ClassNotFoundException { try { - return super.loadClass(name, resolve); - } catch (ClassNotFoundException ex) + return super.loadClass( name, resolve ); + } catch ( ClassNotFoundException ex ) { } - if (checkOther) + if ( checkOther ) { - for (PluginClassloader loader : allLoaders) + for ( PluginClassloader loader : allLoaders ) { - if (loader != this) + if ( loader != this ) { try { - return loader.loadClass0(name, resolve, false); - } catch (ClassNotFoundException ex) + return loader.loadClass0( name, resolve, false ); + } catch ( ClassNotFoundException ex ) { } } diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java index de9f2cc8..d7152a96 100644 --- a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java +++ b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java @@ -27,7 +27,7 @@ import org.yaml.snakeyaml.Yaml; public class PluginManager { - private static final Pattern argsSplit = Pattern.compile(" "); + private static final Pattern argsSplit = Pattern.compile( " " ); /*========================================================================*/ private final Yaml yaml = new Yaml(); private final EventBus eventBus = new EventBus(); @@ -41,10 +41,10 @@ public class PluginManager */ public void registerCommand(Command command) { - commandMap.put(command.getName().toLowerCase(), command); - for (String alias : command.getAliases()) + commandMap.put( command.getName().toLowerCase(), command ); + for ( String alias : command.getAliases() ) { - commandMap.put(alias.toLowerCase(), command); + commandMap.put( alias.toLowerCase(), command ); } } @@ -55,7 +55,7 @@ public class PluginManager */ public void unregisterCommand(Command command) { - commandMap.values().remove(command); + commandMap.values().remove( command ); } /** @@ -68,28 +68,28 @@ public class PluginManager */ public boolean dispatchCommand(CommandSender sender, String commandLine) { - String[] split = argsSplit.split(commandLine); - Command command = commandMap.get(split[0].toLowerCase()); - if (command == null) + String[] split = argsSplit.split( commandLine ); + Command command = commandMap.get( split[0].toLowerCase() ); + if ( command == null ) { return false; } String permission = command.getPermission(); - if (permission != null && !permission.isEmpty() && !sender.hasPermission(permission)) + if ( permission != null && !permission.isEmpty() && !sender.hasPermission( permission ) ) { - sender.sendMessage(ChatColor.RED + "You do not have permission to execute this command!"); + sender.sendMessage( ChatColor.RED + "You do not have permission to execute this command!" ); return true; } - String[] args = Arrays.copyOfRange(split, 1, split.length); + String[] args = Arrays.copyOfRange( split, 1, split.length ); try { - command.execute(sender, args); - } catch (Exception ex) + command.execute( sender, args ); + } catch ( Exception ex ) { - sender.sendMessage(ChatColor.RED + "An internal error occurred whilst executing this command, please check the console log for details."); - ProxyServer.getInstance().getLogger().log(Level.WARNING, "Error in dispatching command", ex); + sender.sendMessage( ChatColor.RED + "An internal error occurred whilst executing this command, please check the console log for details." ); + ProxyServer.getInstance().getLogger().log( Level.WARNING, "Error in dispatching command", ex ); } return true; } @@ -112,7 +112,7 @@ public class PluginManager */ public Plugin getPlugin(String name) { - return plugins.get(name); + return plugins.get( name ); } /** @@ -120,19 +120,19 @@ public class PluginManager */ public void enablePlugins() { - for (Map.Entry entry : plugins.entrySet()) + for ( Map.Entry entry : plugins.entrySet() ) { Plugin plugin = entry.getValue(); try { plugin.onEnable(); - ProxyServer.getInstance().getLogger().log(Level.INFO, "Enabled plugin {0} version {1} by {2}", new Object[] + ProxyServer.getInstance().getLogger().log( Level.INFO, "Enabled plugin {0} version {1} by {2}", new Object[] { entry.getKey(), plugin.getDescription().getVersion(), plugin.getDescription().getAuthor() - }); - } catch (Exception ex) + } ); + } catch ( Exception ex ) { - ProxyServer.getInstance().getLogger().log(Level.WARNING, "Exception encountered when loading plugin: " + entry.getKey(), ex); + ProxyServer.getInstance().getLogger().log( Level.WARNING, "Exception encountered when loading plugin: " + entry.getKey(), ex ); } } } @@ -147,31 +147,31 @@ public class PluginManager */ public void loadPlugin(File file) throws Exception { - Preconditions.checkNotNull(file, "file"); - Preconditions.checkArgument(file.isFile(), "Must load from file"); + Preconditions.checkNotNull( file, "file" ); + Preconditions.checkArgument( file.isFile(), "Must load from file" ); - try (JarFile jar = new JarFile(file)) + try ( JarFile jar = new JarFile( file ) ) { - JarEntry pdf = jar.getJarEntry("plugin.yml"); - Preconditions.checkNotNull(pdf, "Plugin must have a plugin.yml"); + JarEntry pdf = jar.getJarEntry( "plugin.yml" ); + Preconditions.checkNotNull( pdf, "Plugin must have a plugin.yml" ); - try (InputStream in = jar.getInputStream(pdf)) + try ( InputStream in = jar.getInputStream( pdf ) ) { - PluginDescription desc = yaml.loadAs(in, PluginDescription.class); - URLClassLoader loader = new PluginClassloader(new URL[] + PluginDescription desc = yaml.loadAs( in, PluginDescription.class ); + URLClassLoader loader = new PluginClassloader( new URL[] { file.toURI().toURL() - }); - Class main = loader.loadClass(desc.getMain()); + } ); + Class main = loader.loadClass( desc.getMain() ); Plugin plugin = (Plugin) main.getDeclaredConstructor().newInstance(); - plugin.init(desc); - plugins.put(desc.getName(), plugin); + plugin.init( desc ); + plugins.put( desc.getName(), plugin ); plugin.onLoad(); - ProxyServer.getInstance().getLogger().log(Level.INFO, "Loaded plugin {0} version {1} by {2}", new Object[] + ProxyServer.getInstance().getLogger().log( Level.INFO, "Loaded plugin {0} version {1} by {2}", new Object[] { desc.getName(), desc.getVersion(), desc.getAuthor() - }); + } ); } } } @@ -183,19 +183,19 @@ public class PluginManager */ public void loadPlugins(File folder) { - Preconditions.checkNotNull(folder, "folder"); - Preconditions.checkArgument(folder.isDirectory(), "Must load from a directory"); + Preconditions.checkNotNull( folder, "folder" ); + Preconditions.checkArgument( folder.isDirectory(), "Must load from a directory" ); - for (File file : folder.listFiles()) + for ( File file : folder.listFiles() ) { - if (file.isFile() && file.getName().endsWith(".jar")) + if ( file.isFile() && file.getName().endsWith( ".jar" ) ) { try { - loadPlugin(file); - } catch (Exception ex) + loadPlugin( file ); + } catch ( Exception ex ) { - ProxyServer.getInstance().getLogger().log(Level.WARNING, "Could not load plugin from file " + file, ex); + ProxyServer.getInstance().getLogger().log( Level.WARNING, "Could not load plugin from file " + file, ex ); } } } @@ -211,7 +211,7 @@ public class PluginManager */ public T callEvent(T event) { - eventBus.post(event); + eventBus.post( event ); return event; } @@ -224,6 +224,6 @@ public class PluginManager */ public void registerListener(Listener listener) { - eventBus.register(listener); + eventBus.register( listener ); } } diff --git a/protocol/src/main/java/net/md_5/mendax/PacketDefinitions.java b/protocol/src/main/java/net/md_5/mendax/PacketDefinitions.java index b17ad6ea..b4219d63 100644 --- a/protocol/src/main/java/net/md_5/mendax/PacketDefinitions.java +++ b/protocol/src/main/java/net/md_5/mendax/PacketDefinitions.java @@ -2,126 +2,350 @@ package net.md_5.mendax; import static net.md_5.mendax.PacketDefinitions.OpCode.*; -public class PacketDefinitions { +public class PacketDefinitions +{ - public static final OpCode[][] opCodes = new OpCode[256][]; + public static final OpCode[][] opCodes = new OpCode[ 256 ][]; - public enum OpCode { + public enum OpCode + { BOOLEAN, BULK_CHUNK, BYTE, BYTE_INT, DOUBLE, FLOAT, INT, INT_3, INT_BYTE, ITEM, LONG, METADATA, OPTIONAL_MOTION, SHORT, SHORT_BYTE, SHORT_ITEM, STRING, USHORT_BYTE } - static { - opCodes[0x00] = new OpCode[]{INT}; - opCodes[0x01] = new OpCode[]{INT, STRING, BYTE, BYTE, BYTE, BYTE, BYTE}; - opCodes[0x02] = new OpCode[]{BYTE, STRING, STRING, INT}; - opCodes[0x03] = new OpCode[]{STRING}; - opCodes[0x04] = new OpCode[]{LONG, LONG}; - opCodes[0x05] = new OpCode[]{INT, SHORT, ITEM}; - opCodes[0x06] = new OpCode[]{INT, INT, INT}; - opCodes[0x07] = new OpCode[]{INT, INT, BOOLEAN}; - opCodes[0x08] = new OpCode[]{SHORT, SHORT, FLOAT}; - opCodes[0x09] = new OpCode[]{INT, BYTE, BYTE, SHORT, STRING}; - opCodes[0x0A] = new OpCode[]{BOOLEAN}; - opCodes[0x0B] = new OpCode[]{DOUBLE, DOUBLE, DOUBLE, DOUBLE, BOOLEAN}; - opCodes[0x0C] = new OpCode[]{FLOAT, FLOAT, BOOLEAN}; - opCodes[0x0D] = new OpCode[]{DOUBLE, DOUBLE, DOUBLE, DOUBLE, FLOAT, FLOAT, BOOLEAN}; - opCodes[0x0E] = new OpCode[]{BYTE, INT, BYTE, INT, BYTE}; - opCodes[0x0F] = new OpCode[]{INT, BYTE, INT, BYTE, ITEM, BYTE, BYTE, BYTE}; - opCodes[0x10] = new OpCode[]{SHORT}; - opCodes[0x11] = new OpCode[]{INT, BYTE, INT, BYTE, INT}; - opCodes[0x12] = new OpCode[]{INT, BYTE}; - opCodes[0x13] = new OpCode[]{INT, BYTE}; - opCodes[0x14] = new OpCode[]{INT, STRING, INT, INT, INT, BYTE, BYTE, SHORT, METADATA}; - opCodes[0x16] = new OpCode[]{INT, INT}; - opCodes[0x17] = new OpCode[]{INT, BYTE, INT, INT, INT, BYTE, BYTE, OPTIONAL_MOTION}; - opCodes[0x18] = new OpCode[]{INT, BYTE, INT, INT, INT, BYTE, BYTE, BYTE, SHORT, SHORT, SHORT, METADATA}; - opCodes[0x19] = new OpCode[]{INT, STRING, INT, INT, INT, INT}; - opCodes[0x1A] = new OpCode[]{INT, INT, INT, INT, SHORT}; + static + { + opCodes[0x00] = new OpCode[] + { + INT + }; + opCodes[0x01] = new OpCode[] + { + INT, STRING, BYTE, BYTE, BYTE, BYTE, BYTE + }; + opCodes[0x02] = new OpCode[] + { + BYTE, STRING, STRING, INT + }; + opCodes[0x03] = new OpCode[] + { + STRING + }; + opCodes[0x04] = new OpCode[] + { + LONG, LONG + }; + opCodes[0x05] = new OpCode[] + { + INT, SHORT, ITEM + }; + opCodes[0x06] = new OpCode[] + { + INT, INT, INT + }; + opCodes[0x07] = new OpCode[] + { + INT, INT, BOOLEAN + }; + opCodes[0x08] = new OpCode[] + { + SHORT, SHORT, FLOAT + }; + opCodes[0x09] = new OpCode[] + { + INT, BYTE, BYTE, SHORT, STRING + }; + opCodes[0x0A] = new OpCode[] + { + BOOLEAN + }; + opCodes[0x0B] = new OpCode[] + { + DOUBLE, DOUBLE, DOUBLE, DOUBLE, BOOLEAN + }; + opCodes[0x0C] = new OpCode[] + { + FLOAT, FLOAT, BOOLEAN + }; + opCodes[0x0D] = new OpCode[] + { + DOUBLE, DOUBLE, DOUBLE, DOUBLE, FLOAT, FLOAT, BOOLEAN + }; + opCodes[0x0E] = new OpCode[] + { + BYTE, INT, BYTE, INT, BYTE + }; + opCodes[0x0F] = new OpCode[] + { + INT, BYTE, INT, BYTE, ITEM, BYTE, BYTE, BYTE + }; + opCodes[0x10] = new OpCode[] + { + SHORT + }; + opCodes[0x11] = new OpCode[] + { + INT, BYTE, INT, BYTE, INT + }; + opCodes[0x12] = new OpCode[] + { + INT, BYTE + }; + opCodes[0x13] = new OpCode[] + { + INT, BYTE + }; + opCodes[0x14] = new OpCode[] + { + INT, STRING, INT, INT, INT, BYTE, BYTE, SHORT, METADATA + }; + opCodes[0x16] = new OpCode[] + { + INT, INT + }; + opCodes[0x17] = new OpCode[] + { + INT, BYTE, INT, INT, INT, BYTE, BYTE, OPTIONAL_MOTION + }; + opCodes[0x18] = new OpCode[] + { + INT, BYTE, INT, INT, INT, BYTE, BYTE, BYTE, SHORT, SHORT, SHORT, METADATA + }; + opCodes[0x19] = new OpCode[] + { + INT, STRING, INT, INT, INT, INT + }; + opCodes[0x1A] = new OpCode[] + { + INT, INT, INT, INT, SHORT + }; opCodes[0x1B] = null; // Does not exist - opCodes[0x1C] = new OpCode[]{INT, SHORT, SHORT, SHORT}; - opCodes[0x1D] = new OpCode[]{BYTE_INT}; - opCodes[0x1E] = new OpCode[]{INT}; - opCodes[0x1F] = new OpCode[]{INT, BYTE, BYTE, BYTE}; - opCodes[0x20] = new OpCode[]{INT, BYTE, BYTE}; - opCodes[0x21] = new OpCode[]{INT, BYTE, BYTE, BYTE, BYTE, BYTE}; - opCodes[0x22] = new OpCode[]{INT, INT, INT, INT, BYTE, BYTE}; - opCodes[0x23] = new OpCode[]{INT, BYTE}; + opCodes[0x1C] = new OpCode[] + { + INT, SHORT, SHORT, SHORT + }; + opCodes[0x1D] = new OpCode[] + { + BYTE_INT + }; + opCodes[0x1E] = new OpCode[] + { + INT + }; + opCodes[0x1F] = new OpCode[] + { + INT, BYTE, BYTE, BYTE + }; + opCodes[0x20] = new OpCode[] + { + INT, BYTE, BYTE + }; + opCodes[0x21] = new OpCode[] + { + INT, BYTE, BYTE, BYTE, BYTE, BYTE + }; + opCodes[0x22] = new OpCode[] + { + INT, INT, INT, INT, BYTE, BYTE + }; + opCodes[0x23] = new OpCode[] + { + INT, BYTE + }; opCodes[0x24] = null; // Does not exist opCodes[0x25] = null; // Does not exist - opCodes[0x26] = new OpCode[]{INT, BYTE}; - opCodes[0x27] = new OpCode[]{INT, INT}; - opCodes[0x28] = new OpCode[]{INT, METADATA}; - opCodes[0x29] = new OpCode[]{INT, BYTE, BYTE, SHORT}; - opCodes[0x2A] = new OpCode[]{INT, BYTE}; - opCodes[0x2B] = new OpCode[]{FLOAT, SHORT, SHORT}; + opCodes[0x26] = new OpCode[] + { + INT, BYTE + }; + opCodes[0x27] = new OpCode[] + { + INT, INT + }; + opCodes[0x28] = new OpCode[] + { + INT, METADATA + }; + opCodes[0x29] = new OpCode[] + { + INT, BYTE, BYTE, SHORT + }; + opCodes[0x2A] = new OpCode[] + { + INT, BYTE + }; + opCodes[0x2B] = new OpCode[] + { + FLOAT, SHORT, SHORT + }; // // // 0x2C -> 0x32 Do not exist // // - opCodes[0x33] = new OpCode[]{INT, INT, BOOLEAN, SHORT, SHORT, INT_BYTE}; - opCodes[0x34] = new OpCode[]{INT, INT, SHORT, INT_BYTE}; - opCodes[0x35] = new OpCode[]{INT, BYTE, INT, SHORT, BYTE}; - opCodes[0x36] = new OpCode[]{INT, SHORT, INT, BYTE, BYTE, SHORT}; - opCodes[0x37] = new OpCode[]{INT, INT, INT, INT, BYTE}; - opCodes[0x38] = new OpCode[]{BULK_CHUNK}; + opCodes[0x33] = new OpCode[] + { + INT, INT, BOOLEAN, SHORT, SHORT, INT_BYTE + }; + opCodes[0x34] = new OpCode[] + { + INT, INT, SHORT, INT_BYTE + }; + opCodes[0x35] = new OpCode[] + { + INT, BYTE, INT, SHORT, BYTE + }; + opCodes[0x36] = new OpCode[] + { + INT, SHORT, INT, BYTE, BYTE, SHORT + }; + opCodes[0x37] = new OpCode[] + { + INT, INT, INT, INT, BYTE + }; + opCodes[0x38] = new OpCode[] + { + BULK_CHUNK + }; opCodes[0x39] = null; // Does not exist opCodes[0x3A] = null; // Does not exist opCodes[0x3B] = null; // Does not exist - opCodes[0x3C] = new OpCode[]{DOUBLE, DOUBLE, DOUBLE, FLOAT, INT_3, FLOAT, FLOAT, FLOAT}; - opCodes[0x3D] = new OpCode[]{INT, INT, BYTE, INT, INT, BOOLEAN}; - opCodes[0x3E] = new OpCode[]{STRING, INT, INT, INT, FLOAT, BYTE}; + opCodes[0x3C] = new OpCode[] + { + DOUBLE, DOUBLE, DOUBLE, FLOAT, INT_3, FLOAT, FLOAT, FLOAT + }; + opCodes[0x3D] = new OpCode[] + { + INT, INT, BYTE, INT, INT, BOOLEAN + }; + opCodes[0x3E] = new OpCode[] + { + STRING, INT, INT, INT, FLOAT, BYTE + }; // // // 0x3F -> 0x45 Do not exist // // - opCodes[0x46] = new OpCode[]{BYTE, BYTE}; - opCodes[0x47] = new OpCode[]{INT, BYTE, INT, INT, INT}; + opCodes[0x46] = new OpCode[] + { + BYTE, BYTE + }; + opCodes[0x47] = new OpCode[] + { + INT, BYTE, INT, INT, INT + }; // // // 0x4A -> 0x63 Do not exist // // - opCodes[0x64] = new OpCode[]{BYTE, BYTE, STRING, BYTE}; - opCodes[0x65] = new OpCode[]{BYTE}; - opCodes[0x66] = new OpCode[]{BYTE, SHORT, BYTE, SHORT, BOOLEAN, ITEM}; - opCodes[0x67] = new OpCode[]{BYTE, SHORT, ITEM}; - opCodes[0x68] = new OpCode[]{BYTE, SHORT_ITEM}; - opCodes[0x69] = new OpCode[]{BYTE, SHORT, SHORT}; - opCodes[0x6A] = new OpCode[]{BYTE, SHORT, BOOLEAN}; - opCodes[0x6B] = new OpCode[]{SHORT, ITEM}; - opCodes[0x6C] = new OpCode[]{BYTE, BYTE}; + opCodes[0x64] = new OpCode[] + { + BYTE, BYTE, STRING, BYTE + }; + opCodes[0x65] = new OpCode[] + { + BYTE + }; + opCodes[0x66] = new OpCode[] + { + BYTE, SHORT, BYTE, SHORT, BOOLEAN, ITEM + }; + opCodes[0x67] = new OpCode[] + { + BYTE, SHORT, ITEM + }; + opCodes[0x68] = new OpCode[] + { + BYTE, SHORT_ITEM + }; + opCodes[0x69] = new OpCode[] + { + BYTE, SHORT, SHORT + }; + opCodes[0x6A] = new OpCode[] + { + BYTE, SHORT, BOOLEAN + }; + opCodes[0x6B] = new OpCode[] + { + SHORT, ITEM + }; + opCodes[0x6C] = new OpCode[] + { + BYTE, BYTE + }; // // // 0x6D -> 0x81 Do not exist // // - opCodes[0x82] = new OpCode[]{INT, SHORT, INT, STRING, STRING, STRING, STRING}; - opCodes[0x83] = new OpCode[]{SHORT, SHORT, USHORT_BYTE}; - opCodes[0x84] = new OpCode[]{INT, SHORT, INT, BYTE, SHORT_BYTE}; + opCodes[0x82] = new OpCode[] + { + INT, SHORT, INT, STRING, STRING, STRING, STRING + }; + opCodes[0x83] = new OpCode[] + { + SHORT, SHORT, USHORT_BYTE + }; + opCodes[0x84] = new OpCode[] + { + INT, SHORT, INT, BYTE, SHORT_BYTE + }; // // // 0x85 -> 0xC7 Do not exist // // - opCodes[0xC8] = new OpCode[]{INT, BYTE}; - opCodes[0xC9] = new OpCode[]{STRING, BOOLEAN, SHORT}; - opCodes[0xCA] = new OpCode[]{BYTE, BYTE, BYTE}; - opCodes[0xCB] = new OpCode[]{STRING}; - opCodes[0xCC] = new OpCode[]{STRING, BYTE, BYTE, BYTE, BOOLEAN}; - opCodes[0xCD] = new OpCode[]{BYTE}; + opCodes[0xC8] = new OpCode[] + { + INT, BYTE + }; + opCodes[0xC9] = new OpCode[] + { + STRING, BOOLEAN, SHORT + }; + opCodes[0xCA] = new OpCode[] + { + BYTE, BYTE, BYTE + }; + opCodes[0xCB] = new OpCode[] + { + STRING + }; + opCodes[0xCC] = new OpCode[] + { + STRING, BYTE, BYTE, BYTE, BOOLEAN + }; + opCodes[0xCD] = new OpCode[] + { + BYTE + }; // // // 0xCE -> 0xF9 Do not exist // // - opCodes[0xFA] = new OpCode[]{STRING, SHORT_BYTE}; + opCodes[0xFA] = new OpCode[] + { + STRING, SHORT_BYTE + }; opCodes[0xFB] = null; // Does not exist - opCodes[0xFC] = new OpCode[]{SHORT_BYTE, SHORT_BYTE}; - opCodes[0xFD] = new OpCode[]{STRING, SHORT_BYTE, SHORT_BYTE}; - opCodes[0xFE] = new OpCode[]{}; // Should be byte, screw you too bitchy server admins! - opCodes[0xFF] = new OpCode[]{STRING}; + opCodes[0xFC] = new OpCode[] + { + SHORT_BYTE, SHORT_BYTE + }; + opCodes[0xFD] = new OpCode[] + { + STRING, SHORT_BYTE, SHORT_BYTE + }; + opCodes[0xFE] = new OpCode[] + { + }; // Should be byte, screw you too bitchy server admins! + opCodes[0xFF] = new OpCode[] + { + STRING + }; } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/BulkChunk.java b/protocol/src/main/java/net/md_5/mendax/datainput/BulkChunk.java index a3a9d87c..5f1b31b0 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/BulkChunk.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/BulkChunk.java @@ -3,13 +3,15 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -public class BulkChunk extends Instruction { +public class BulkChunk extends Instruction +{ @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { short count = in.readShort(); int size = in.readInt(); in.readBoolean(); - skip(in, buffer, size + count * 12); + skip( in, buffer, size + count * 12 ); } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/ByteHeader.java b/protocol/src/main/java/net/md_5/mendax/datainput/ByteHeader.java index a67d41c9..a4bc11da 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/ByteHeader.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/ByteHeader.java @@ -3,19 +3,23 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -class ByteHeader extends Instruction { +class ByteHeader extends Instruction +{ private final Instruction child; - ByteHeader(Instruction child) { + ByteHeader(Instruction child) + { this.child = child; } @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { byte size = in.readByte(); - for (byte b = 0; b < size; b++) { - child.read(in, buffer); + for ( byte b = 0; b < size; b++ ) + { + child.read( in, buffer ); } } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/DataInputPacketReader.java b/protocol/src/main/java/net/md_5/mendax/datainput/DataInputPacketReader.java index b5e9d42b..a40e2ee2 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/DataInputPacketReader.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/DataInputPacketReader.java @@ -7,56 +7,71 @@ import java.util.List; import net.md_5.mendax.PacketDefinitions; import net.md_5.mendax.PacketDefinitions.OpCode; -public class DataInputPacketReader { +public class DataInputPacketReader +{ - private static final Instruction[][] instructions = new Instruction[256][]; + private static final Instruction[][] instructions = new Instruction[ 256 ][]; - static { - for (int i = 0; i < instructions.length; i++) { + static + { + for ( int i = 0; i < instructions.length; i++ ) + { List output = new ArrayList(); OpCode[] enums = PacketDefinitions.opCodes[i]; - if (enums != null) { - for (OpCode struct : enums) { - try { - output.add((Instruction) Instruction.class.getDeclaredField(struct.name()).get(null)); - } catch (Exception ex) { - throw new UnsupportedOperationException("No definition for " + struct.name()); + if ( enums != null ) + { + for ( OpCode struct : enums ) + { + try + { + output.add( (Instruction) Instruction.class.getDeclaredField( struct.name() ).get( null ) ); + } catch ( Exception ex ) + { + throw new UnsupportedOperationException( "No definition for " + struct.name() ); } } List crushed = new ArrayList(); int nextJumpSize = 0; - for (Instruction child : output) { - if (child instanceof Jump) { - nextJumpSize += ((Jump) child).len; - } else { - if (nextJumpSize != 0) { - crushed.add(new Jump(nextJumpSize)); + for ( Instruction child : output ) + { + if ( child instanceof Jump ) + { + nextJumpSize += ( (Jump) child ).len; + } else + { + if ( nextJumpSize != 0 ) + { + crushed.add( new Jump( nextJumpSize ) ); } - crushed.add(child); + crushed.add( child ); nextJumpSize = 0; } } - if (nextJumpSize != 0) { - crushed.add(new Jump(nextJumpSize)); + if ( nextJumpSize != 0 ) + { + crushed.add( new Jump( nextJumpSize ) ); } - instructions[i] = crushed.toArray(new Instruction[crushed.size()]); + instructions[i] = crushed.toArray( new Instruction[ crushed.size() ] ); } } } - public static void readPacket(DataInput in, byte[] buffer) throws IOException { + public static void readPacket(DataInput in, byte[] buffer) throws IOException + { int packetId = in.readUnsignedByte(); Instruction[] packetDef = instructions[packetId]; - if (packetDef == null) { - throw new IOException("Unknown packet id " + packetId); + if ( packetDef == null ) + { + throw new IOException( "Unknown packet id " + packetId ); } - for (Instruction instruction : packetDef) { - instruction.read(in, buffer); + for ( Instruction instruction : packetDef ) + { + instruction.read( in, buffer ); } } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/Instruction.java b/protocol/src/main/java/net/md_5/mendax/datainput/Instruction.java index c91cd277..d246558a 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/Instruction.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/Instruction.java @@ -3,32 +3,34 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -abstract class Instruction { +abstract class Instruction +{ - static final Instruction BOOLEAN = new Jump(1); + static final Instruction BOOLEAN = new Jump( 1 ); static final Instruction BULK_CHUNK = new BulkChunk(); - static final Instruction BYTE = new Jump(1); + static final Instruction BYTE = new Jump( 1 ); // BYTE_INT moved down - static final Instruction DOUBLE = new Jump(8); - static final Instruction FLOAT = new Jump(4); - static final Instruction INT = new Jump(4); - static final Instruction INT_3 = new IntHeader(new Jump(3)); - static final Instruction INT_BYTE = new IntHeader(BYTE); + static final Instruction DOUBLE = new Jump( 8 ); + static final Instruction FLOAT = new Jump( 4 ); + static final Instruction INT = new Jump( 4 ); + static final Instruction INT_3 = new IntHeader( new Jump( 3 ) ); + static final Instruction INT_BYTE = new IntHeader( BYTE ); static final Instruction ITEM = new Item(); - static final Instruction LONG = new Jump(8); + static final Instruction LONG = new Jump( 8 ); static final Instruction METADATA = new MetaData(); static final Instruction OPTIONAL_MOTION = new OptionalMotion(); - static final Instruction SHORT = new Jump(2); - static final Instruction SHORT_BYTE = new ShortHeader(BYTE); - static final Instruction SHORT_ITEM = new ShortHeader(ITEM); - static final Instruction STRING = new ShortHeader(new Jump(2)); + static final Instruction SHORT = new Jump( 2 ); + static final Instruction SHORT_BYTE = new ShortHeader( BYTE ); + static final Instruction SHORT_ITEM = new ShortHeader( ITEM ); + static final Instruction STRING = new ShortHeader( new Jump( 2 ) ); static final Instruction USHORT_BYTE = new UnsignedShortByte(); // Illegal forward references below this line - static final Instruction BYTE_INT = new ByteHeader(INT); + static final Instruction BYTE_INT = new ByteHeader( INT ); abstract void read(DataInput in, byte[] buffer) throws IOException; - final void skip(DataInput in, byte[] buffer, int len) throws IOException { - in.readFully(buffer, 0, len); + final void skip(DataInput in, byte[] buffer, int len) throws IOException + { + in.readFully( buffer, 0, len ); } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/IntHeader.java b/protocol/src/main/java/net/md_5/mendax/datainput/IntHeader.java index c113ea7b..31a5c18d 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/IntHeader.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/IntHeader.java @@ -3,19 +3,23 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -class IntHeader extends Instruction { +class IntHeader extends Instruction +{ private final Instruction child; - IntHeader(Instruction child) { + IntHeader(Instruction child) + { this.child = child; } @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { int size = in.readInt(); - for (int i = 0; i < size; i++) { - child.read(in, buffer); + for ( int i = 0; i < size; i++ ) + { + child.read( in, buffer ); } } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/Item.java b/protocol/src/main/java/net/md_5/mendax/datainput/Item.java index f32cb4f0..411c931b 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/Item.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/Item.java @@ -3,14 +3,17 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -class Item extends Instruction { +class Item extends Instruction +{ @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { short type = in.readShort(); - if (type >= 0) { - skip(in, buffer, 3); - SHORT_BYTE.read(in, buffer); + if ( type >= 0 ) + { + skip( in, buffer, 3 ); + SHORT_BYTE.read( in, buffer ); } } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/Jump.java b/protocol/src/main/java/net/md_5/mendax/datainput/Jump.java index 23c61d3a..5bf82fc7 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/Jump.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/Jump.java @@ -3,19 +3,23 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -class Jump extends Instruction { +class Jump extends Instruction +{ final int len; - Jump(int len) { - if (len < 0) { + Jump(int len) + { + if ( len < 0 ) + { throw new IndexOutOfBoundsException(); } this.len = len; } @Override - void read(DataInput in, byte[] buffer) throws IOException { - skip(in, buffer, len); + void read(DataInput in, byte[] buffer) throws IOException + { + skip( in, buffer, len ); } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/MetaData.java b/protocol/src/main/java/net/md_5/mendax/datainput/MetaData.java index 78eb2c11..6dc04584 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/MetaData.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/MetaData.java @@ -3,37 +3,41 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -class MetaData extends Instruction { +class MetaData extends Instruction +{ @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { int x = in.readUnsignedByte(); - while (x != 127) { + while ( x != 127 ) + { int type = x >> 5; - switch (type) { + switch ( type ) + { case 0: - BYTE.read(in, buffer); + BYTE.read( in, buffer ); break; case 1: - SHORT.read(in, buffer); + SHORT.read( in, buffer ); break; case 2: - INT.read(in, buffer); + INT.read( in, buffer ); break; case 3: - FLOAT.read(in, buffer); + FLOAT.read( in, buffer ); break; case 4: - STRING.read(in, buffer); + STRING.read( in, buffer ); break; case 5: - ITEM.read(in, buffer); + ITEM.read( in, buffer ); break; case 6: - skip(in, buffer, 12); // int, int, int + skip( in, buffer, 12 ); // int, int, int break; default: - throw new IllegalArgumentException("Unknown metadata type " + type); + throw new IllegalArgumentException( "Unknown metadata type " + type ); } x = in.readUnsignedByte(); } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/OptionalMotion.java b/protocol/src/main/java/net/md_5/mendax/datainput/OptionalMotion.java index 4a8f8018..55c36f65 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/OptionalMotion.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/OptionalMotion.java @@ -3,13 +3,16 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -public class OptionalMotion extends Instruction { +public class OptionalMotion extends Instruction +{ @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { int data = in.readInt(); - if (data > 0) { - skip(in, buffer, 6); + if ( data > 0 ) + { + skip( in, buffer, 6 ); } } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/ShortHeader.java b/protocol/src/main/java/net/md_5/mendax/datainput/ShortHeader.java index 442a872b..b274af61 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/ShortHeader.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/ShortHeader.java @@ -3,19 +3,23 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -class ShortHeader extends Instruction { +class ShortHeader extends Instruction +{ private final Instruction child; - ShortHeader(Instruction child) { + ShortHeader(Instruction child) + { this.child = child; } @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { short size = in.readShort(); - for (short s = 0; s < size; s++) { - child.read(in, buffer); + for ( short s = 0; s < size; s++ ) + { + child.read( in, buffer ); } } } diff --git a/protocol/src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java b/protocol/src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java index 70b4448f..4b1db5a2 100644 --- a/protocol/src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java +++ b/protocol/src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java @@ -3,11 +3,13 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -public class UnsignedShortByte extends Instruction { +public class UnsignedShortByte extends Instruction +{ @Override - void read(DataInput in, byte[] buffer) throws IOException { + void read(DataInput in, byte[] buffer) throws IOException + { int size = in.readUnsignedShort(); - skip(in, buffer, size); + skip( in, buffer, size ); } }