Commit Graph

979 Commits

Author SHA1 Message Date
jfr
06ad0f9310 Reorder PlayerJoinEvent / UpstreamBridge initialization.
Placing the PlayerJoinEvent in front of the Upstream Bridge handling prevents us from actually accessing the target server in PostJoinEvent handlers.
2015-09-07 18:26:41 +10:00
md_5
7ec1a1aa4e Fix / clarify behaviour of matchPlayer. 2015-09-05 13:42:33 +10:00
kamcio96
81d1c46a0d Support uuid in config.yml 2015-07-13 19:46:15 +10:00
Daniel Naylor
f3c14cf064 Fix telling newer 1.7 Forge clients that they are outdated. Fixes #1476
* Only check the version of FML if we are running Minecraft 1.7.10 - 1.8 clients are always valid.
* If the version of FML that is reported is 7.10.99.99 - report the Forge version instead.
2015-07-10 12:33:22 +10:00
md_5
cc3a8c067e Check channel active before adding handlers. #1489 2015-06-06 18:41:54 +10:00
Nathan Poirier
8622cf3af4 Fix BadPacketException handling It is catched by DecoderException and was not processed correctly by HandlerBoss So the console was spammed when that exception is thrown 2015-05-18 20:18:19 +10:00
Thinkofdeath
93959cab4b Only force remove the player from 1.8 client's tab list 2015-05-10 22:51:14 +01:00
Thinkofdeath
585ab4f453 Readd the delay removed in f9773a69c3 2015-05-08 20:41:21 +01:00
Thinkofdeath
76052b92d3 Don't send a Kick during the STATUS protocol as it doesn't support it 2015-05-08 20:32:12 +01:00
Thinkofdeath
f9773a69c3 Don't send a kick to the server on disconnect
This was dropped from the protocol in 1.6 and was left in bungee by
mistake
2015-05-08 19:39:22 +01:00
Tux
88e71ead05 Add reset() and retain() methods to ComponentBuilder.
This method is simple: it resets the current part to default settings, keeping only the current text. It therefore acts like the old ChatColor.RESET
code. The retain method allows for more control over what is reset.

Add a test to verify proper functioning of reset()/retain().
2015-05-06 09:57:48 +01:00
md_5
d1e1ce4cdb Add option to disable native code. 2015-05-03 10:35:48 +10:00
md_5
fa828eba31 Allow using properties to change leak detection level. 2015-04-13 09:51:31 +10:00
Thinkofdeath
a48c458306 Don't send bungeecord plugin messages to the client 2015-04-08 18:22:16 +01:00
Thinkofdeath
f2d17cb216 Follow vanilla and kick the joining user on connect if the name is already taken (Fixes #1383) 2015-02-28 13:07:13 +00:00
md_5
f2673c5876 Kick only in online mode: #1382 2015-02-28 13:00:04 +11:00
Thinkofdeath
e1951c5d66 Fix spectator mode with ip-forwarding enabled 2015-02-25 22:31:05 +00:00
Thinkofdeath
988490ba87 1.8 isn't a snapshot anymore 2015-02-25 22:27:50 +00:00
md_5
61cee2d27c Fix formatting in a bunch of files. 2015-02-14 18:36:58 +11:00
md_5
2055c98ebe Add reason for stopping and extra arguments. 2015-02-14 18:33:49 +11:00
Joshua Rodriguez
415d5860e4 Allow setting a connections uuid when in offline mode 2015-02-14 18:33:28 +11:00
md_5
3776feb559 Don't allow duplicate UUIDs on the proxy. 2015-02-14 18:26:27 +11:00
md_5
7c1f232e85 Update depend versions, limit use of most Java 1.7 APIs. 2015-02-08 13:07:41 +11:00
md_5
0d569ac0d1 Refactor native code and implement our own JNI wrapper around zlib.
The previous native cipher code has been refactored so that it may be loaded and used slightly more generically, allowing more native components to be easily added as time goes on.
I have also written a new native code compression module, which wraps around zlib in the same manner that Inflater / Deflater does, however it operates directly on the memory addresses of it's input / output buffers which means that we can save one, or maybe even two copies. To support this, the VarInt decoder has been adjusted to always use a native buffer.
2015-02-07 14:06:41 +11:00
md_5
61d2765715 Only check name for server reload modification. 2015-01-24 13:34:38 +11:00
md_5
cf722de1d2 #1130: Add scheduler unit tests and make more robust. 2015-01-18 12:09:38 +11:00
Daniel Naylor
28496e0471 Add API for getting whether the user is a Forge user.
For Minecraft+Forge 1.8 we can detect whether the user is a Forge user before we get the mod list, due to the changes to the initial (not FML|HS) handshake that are now made (which is for vanilla client support). Bungee can exploit this to detect FML clients from the off, but it still does not tell us what the mod list is. Thus, creating this API method for users who simply need to know whether the user is connected via FML is no longer a duplication of the getModList api method.
2015-01-12 19:23:07 +11:00
Daniel Naylor
4809f1f80a Update IP forwarding to ignore FML and other null character delimited tokens (for now)
For Forge 1.8, a new \0FML\0 token is included in the handshake packet host field. Whilst from a Forge <-> Bungee standpoint, this is good in the long run (we can detect Forge/FML clients right from the off, allowing us to expose a reliable API for detecting modded 1.8+ clients), it plays havoc with IP forwarding on Spigot servers, as they expect a very specific format.

Until we can look at improving this situation (probably by creating an updated IP forwarding protocol on the server side), this removes the FML marker from the handshake whenever IP forwarding is on. If you have a FML 1.8 network, IP forwarding MUST be off.

With thanks to @geNAZt for finding the issue.
2015-01-12 19:23:07 +11:00
xxyy
5091515f0b Add TabCompleteResponseEvent 2015-01-12 11:53:28 +11:00
mrapple
54c9ade1a6 Move mojang translations to chat module, fixes SpigotMC/BungeeCord#1301 2014-12-23 19:23:24 +11:00
md_5
1711223b02 Use string lists in preference to string arrays. 2014-12-22 19:59:14 +11:00
Tux
972b4c1fe5 Further fix task clean up issues by moving the BungeeScheduler's cancel(ScheduledTask) method to just call the cancel() method on the task. The cancel call was moved to BungeeTask's cancel method.
This patch makes the patch transparent to existing callers using cancel(ScheduledTask) from the scheduler. It also simplifies some logic in BungeeTask itself.
2014-12-14 17:18:49 +11:00
Tux
36c4af35de Fix issues cleaning up after repeating tasks.
A mass of NullPointerExceptions would be outputted when tasks were stopped. This is resolved by checking if we are still running (indicating a possible scheduler cancel) before telling the scheduler to pull the plug.

Ideally, the entire BungeeCord scheduler should be rewritten. It has quite a few issues which could be avoided with a new system.
2014-12-14 17:18:49 +11:00
md_5
02d3660f32 Fix fancy terminal on Windows.
This is a workaround for quite possibly the weirdest bug I have ever encountered in my life! When jansi attempts to extract its natives, by default it tries to extract a specific version, using the loading class's implementation version. Normally this works completely fine, however when on Windows certain characters such as - and : can trigger special behaviour. Furthermore this behaviour only occurs in specific combinations due to the parsing done by jansi. For example test-test works fine, but test-test-test does not! In order to avoid this all together but still keep our versions the same as they were, we set the override property to the essentially garbage version BungeeCord. This version is only used when extracting the libraries to their temp folder.
2014-12-14 13:07:13 +11:00
md_5
37e37e9a55 Fix timestamp format.... 2014-12-13 11:53:03 +11:00
md_5
45bf7a9ab9 Move ansi console system install right into the bootstrap. 2014-12-13 11:13:40 +11:00
Thinkofdeath
ef364d9053 Actually put the tasks in the tasksByPlugin Multimap (Fixes #1278) 2014-11-26 16:42:45 +00:00
Minecrell
f19cc7fe4f Add chat position API. 2014-11-22 09:17:37 +11:00
Minecrell
772c8d7f2b Improve legacy client ping support. 2014-11-15 10:18:40 +00:00
Thinkofdeath
830f18a357 Manually remove the player from everyone's tab list on disconnect
This is needed because when the player disconnects from bungee they are removed from the connection map, this causes the tab-list rewrite to fail due the player no longer being on bungee and therefor it ends up not removing the player (online vs offline uuid). This would only happen on servers without ip-forwarding enabled
2014-11-11 10:33:22 +00:00
md_5
532a94382b Block really wrong offline mode names, see #1270 2014-11-08 10:04:59 +11:00
md_5
56c372a3ce Fix HTTP client now that Mojang has their stuff together. 2014-11-08 10:02:48 +11:00
Daniel Naylor
4d389df7c8 Be more selective when sending reset packets.
Always send the packet when going from modded -> anything, send the packet later when going from vanilla -> modded, never send it on a vanilla -> vanilla switch.
2014-10-17 20:37:10 +11:00
Daniel Naylor
cfad2c65d4 Implement Support for MinecraftForge / FML 1.7.10
Additional implementation help provided by @jk-5 and @bloodmc.
2014-09-27 19:38:28 +10:00
md_5
8715c5fd82 Actually update translations to 1.8 2014-09-27 08:25:36 +10:00
md_5
cbb190cfd3 Fix a few import ordering issues. 2014-09-26 10:11:16 +10:00
md_5
57a07dc2e2 Update Depend Versions:
Guava 17.0 -> 18.0
Lombok 1.12.6 -> 1.14.8
Gson 2.2.4 -> 2.3
SnakeYaml 1.13 -> 1.14
2014-09-25 11:05:21 +10:00
Minecrell
6fcfb5aecb Add more message arguments. See #1214. 2014-09-25 10:53:41 +10:00
md_5
4e3b5670a0 [#1224] Add connect / read timeout for module download incase Jenkins is down. 2014-09-25 10:52:16 +10:00
md_5
ee3b209c2d Declare game version support as 1.8 2014-09-25 10:49:20 +10:00
md_5
25ee8a1496 Revert "Revert "Update Mojang translations to 1.8""
This reverts commit dd1a28ea1e.
2014-09-25 10:47:27 +10:00
md_5
dd1a28ea1e Revert "Update Mojang translations to 1.8"
This reverts commit 5ec36efb52.
2014-09-25 10:41:40 +10:00
md_5
3cd4f169bd [#1191] Stop getPermissions from creating blank groups. 2014-09-25 10:21:15 +10:00
md_5
5ec36efb52 Update Mojang translations to 1.8 2014-09-25 10:18:29 +10:00
md_5
dcc9be9dfe [#1218] Check which player instance we remove from the connection maps.
Legitimate but slightly sneaky fix for the issue of racing for addition / removal. An alternate fix would be a multimap.
2014-09-12 18:45:50 +10:00
Thinkofdeath
1623fb6952 Only update the dns cache on new lookups (Fixes #1221)
This causes the cached entry to be looked up every 5 minutes instead of the previous system where it was kept as long as it was used. This fixes an issue where after Mojang's session servers go down the ip address tends to change. This caused bungee to repeatedly hit the old (inactive) one which with the previous system would be re-cached every time someone tried to connect
2014-09-11 10:18:34 +01:00
Minecrell
4e353e9277 Add Title API. 2014-09-07 09:30:57 +01:00
Minecrell
d6b7157c1c Add player list header / footer API. 2014-09-07 09:26:52 +01:00
Steve Anton
bc48ab3fb8 Make ProxyPingEvent async 2014-09-07 12:03:55 +10:00
Thinkofdeath
65ae8b4c6a Correctly send the MC|Brand packet 2014-09-02 13:54:52 +01:00
md_5
2cec5f344a Update versions to 1.8... oops 2014-09-01 16:56:03 +10:00
md_5
5282a8f45a Just use server specific tab lists for now. 2014-08-31 19:18:19 +10:00
md_5
f15eed338d Fix tab list 2014-08-31 19:01:24 +10:00
Thinkofdeath
4bb3850b40 Fix another missed offline mode case 2014-08-31 09:34:31 +01:00
Thinkofdeath
1f132876e6 Handle offline mode in the tab list 2014-08-31 09:25:31 +01:00
md_5
c822c48fef Add BungeeCord to the outdated ping message. 2014-08-31 18:23:45 +10:00
Thinkofdeath
26521cf2ff Add support for Minecraft 1.8.x
This commit allows BungeeCord to support Minecraft clients both of versions 1.7.x and of 1.8.x. There should be no breakages to any other support, however following their deprecation and uselessness within 1.8, the Tab list APIs have been removed.

Please report any issues to GitHub and be sure to mention client, server and BungeeCord versions.

When used with an appropriate server jar (such as multi protocol Spigot), this will allow clients of many versions to concurrently be connected to the same set of servers.
2014-08-31 09:03:12 +01:00
md_5
19b48672af Fix longstanding forward typo 2014-08-31 10:13:50 +10:00
Thinkofdeath
86c5e321f2 Disable epoll by default due to timeouts its causing
Anyone who wants to continue testing epoll for us may do so with `-Dbungee.epoll=true`
2014-08-21 08:11:11 +01:00
mrapple
41ccf3f9d3 Fix LoginEvent firing after PreLoginEvent is cancelled 2014-08-19 22:43:05 +01:00
md_5
caa562c4a1 Final nail in the coffin for xxx cannot be cast to yyy bug. 2014-08-17 09:54:37 +10:00
md_5
483805067d Update Netty and enable Epoll as bugs have been fixed. 2014-08-17 09:52:59 +10:00
IfarPL
f9f9c3213d Added 'ForwardToPlayer' subchannel 2014-08-16 20:20:54 +10:00
Thinkofdeath
be35e283ec Revert "Mojang allows multiple status queries in a connection, we should too."
This reverts commit 77f6930280.
2014-08-11 23:17:31 +01:00
md_5
dd9bd2a2e3 Shuffle Jansi/Jline versions 2014-08-04 18:19:35 +10:00
Ad237
072e360d0f Add KickPlayer subchannel
Can be used to kick a player who is on a different server
2014-08-03 18:13:39 +10:00
Jonas Konrad
d85400bc69 Add forward parameter to only forward to online servers [Adds #1120] 2014-08-03 18:10:38 +10:00
Jonas Konrad
b544bb34cb Add ServerInfo method to send plugin message only if server is online 2014-08-03 18:10:38 +10:00
Gabscap
8676dd47f6 Disable plugins in reverse order 2014-08-03 18:09:18 +10:00
Melair
089a8dd311 Allow customisation of kicking during initial server connection. In particular allow removal of server name by modification of messages.properties. 2014-07-30 19:16:19 +10:00
Thinkofdeath
d1d4cc7bbf Tidy up the handling of Spawn Object and fix a off by one error with it 2014-07-30 09:26:17 +01:00
md_5
1b18e64fb2 Handle objective value changes. Although the client *shouldn't* be using this for any sort of keying, it may indeed be. Closes #1116 awaiting testing. 2014-07-22 20:24:38 +10:00
Isaias
c42d3a375f Fix uniqueId returning null in LoginEvent 2014-07-21 13:49:45 +01:00
Thinkofdeath
fc0a21f548 Correct a typo in Spawn Object rewriting 2014-07-21 09:48:21 +01:00
md_5
65eba06980 Don't let Bungee run in dirs with ! in name.
Java uses ! to indicate a resource inside of a jar/zip/other container. Running Bungee from within a directory that has a ! will cause this to muck up.
2014-07-19 21:22:20 +10:00
md_5
87a64c3f3e Fix locale object getter, closes #1113 2014-07-16 17:13:56 +10:00
md_5
be13a00386 Add missing return - closes #1114 2014-07-16 17:12:52 +10:00
md_5
949f150ea0 Fix some out of style formatting. 2014-07-12 19:50:56 +10:00
md_5
a6095c680f [#1111] Ignore scorebaord objective action 2 like we did before 2014-07-12 17:33:57 +10:00
md_5
9d5c886045 Fix some more static analysis warnings 2014-07-12 14:01:06 +10:00
md_5
19bb8f72c7 Fix some static analysis warnings. 2014-07-12 13:33:13 +10:00
md_5
4dfd510583 Override context specific permission check 2014-07-10 13:56:59 +10:00
md_5
705b554b3b Add basis of grouped thread factory and make the scheduler use it. 2014-07-10 11:18:42 +10:00
md_5
6615500f08 Block all of java, not just java.lang 2014-07-10 10:50:00 +10:00
md_5
d63d5a2791 <yawkat> is that debug code i spot md_5? 2014-07-10 10:42:55 +10:00
md_5
2444dd15ab Fix #1106 - plugins using ssl throwing exceptions 2014-07-10 10:39:58 +10:00
md_5
2dd3d2101d Close #1105 - don't let security manager get replaced 2014-07-09 09:41:19 +10:00
md_5
8ce26e0370 Pass plugin into executor getter for future proofing 2014-07-08 15:53:25 +10:00
md_5
5d1b660e32 Implement Security Manager
This commit adds the basis for the intergration of a security manager into BungeeCord. The goal of the security manager is to prevent plugins from doing potentially dangerous or otherwise undesirable behaviour that may damage the stability of Bungee itself or pose a risk to the user's server.

One common theme in some Bungee plugins, especially those which were written in the very early days, is using Threads and ExecutorServices for scheduling purposes. Not only is this inefficient as there is no use of the thread caching features provided by the scheduler, it is also difficult to track who created which thread. Additionally creating threads not managed by the BungeeCord scheduler poses issues for when|if a plugin reload system is implemented, as these threads cannot be appropriately cleaned up and may continue to leak class references or perhaps even continue executing.

At this stage the SecurityManager is set to warn of prohibited actions, but not block them. For some plugins using external APIs, where usage of an ExecutorService is unavoidable, we have included an Unsafe interface to the scheduler which allows direct access to the underlying ExecutorService, or potentially a compatability wrapper.
2014-07-08 15:22:26 +10:00
md_5
7347daf203 Delay kicks in initial handler.
See source for reasoning
2014-07-08 15:16:22 +10:00
md_5
bb69af5cd0 Disable epoll whilst we try to replicate some issues 2014-06-29 09:22:34 +10:00
Minecrell
a668da76d0 Write log messages with lower levels to the log file. 2014-06-29 09:13:16 +10:00
Jonas Konrad
4ef58d53b1 Fix typo 2014-06-28 13:45:26 +02:00
md_5
a53b63720b Add a comment 2014-06-26 19:24:05 +10:00
md_5
348457f613 Quickly test SO_REUSEADDR 2014-06-26 19:19:11 +10:00
md_5
fbb2f695b0 Show correct error when cannot bind query 2014-06-26 19:08:05 +10:00
RuriRyan
489242b1ef Fixed RemoteQuery, which broke with the Epoll update 2014-06-25 23:29:08 +02:00
md_5
4ac117fb4c Actually include native code, thanks again @normanmaurer 2014-06-25 18:21:59 +10:00
md_5
500b0af782 [Performance] Attempt to use Netty's Epoll implementation on Linux.
This will attempt to make use of Netty's EpollEventLoopGroup and Epoll(Server)SocketChannel when on Linux and the native libraries load correctly. It should bring a large increase in performance and hopefully reliability. Big thanks to the @netty team for implementing this and @normanmaurer for some tips on the support detection.

Feedback is appreciated.
2014-06-25 18:14:50 +10:00
md_5
2b304ecebc Close plugin log handlers on disable 2014-06-24 18:22:35 +10:00
md_5
923aa05d4a Downgrade forced hosts errors to a warning log level 2014-06-24 16:56:24 +10:00
md_5
e54388a5e0 Add matchPlayer API 2014-06-23 17:26:30 +10:00
md_5
59ba644623 Make IP command tabbable - closes #999 2014-06-23 17:16:14 +10:00
maciekmm
4d1f0cbb26 Added getKickedFrom() to ServerKickEvent. 2014-06-22 17:11:27 +10:00
md_5
e849afbb23 Add simple address cache for those with slow or otherwise unresponsive DNS servers.
I wonder when @netty was supposed to add async dns lookups.
2014-06-20 20:04:22 +10:00
Gabscap
f6e41c856c Closing all handlers on stop() 2014-06-20 19:28:01 +10:00
md_5
b167a45690 Revert "Reenable throttle since we only support 1.7+"
This reverts commit f23691df23.
2014-06-13 16:25:53 +10:00
vemacs
31bd836203 Write server name in ServerIP subchannel response.
Behaves similarly to the UUIDOther implementation.
2014-06-11 16:13:32 +10:00
Jonas Konrad
4dce37cd13 Prefix "BungeeCord > " to forwarded MC|Brand messages [Fixes #1038] 2014-06-11 16:12:30 +10:00
md_5
f23691df23 Reenable throttle since we only support 1.7+ 2014-06-11 16:08:33 +10:00
md_5
77f6930280 Mojang allows multiple status queries in a connection, we should too. 2014-06-11 16:07:14 +10:00
md_5
9604a9a31e Show 1.7.9 as supported version 2014-06-11 16:05:07 +10:00
md_5
91989564e5 Add method to get player's locale 2014-06-11 16:03:10 +10:00
md_5
9226df86f0 Lazy init vhost address. 2014-05-31 18:46:35 +10:00
md_5
ad2ff54b76 Bump a few versions, should probably think about exposing the new EPollEventLoop. 2014-05-15 17:07:31 +10:00
md_5
ece641da23 Change lobby to fallback in fallback_lobby translation. 2014-05-03 17:31:19 +10:00
Thinkofdeath
33a098f4ba Merge branch 'vemacs-master' 2014-05-01 11:00:12 +01:00
vemacs
e4e01ccb55 Null check 2014-05-01 10:59:14 +01:00
GunfighterJ
84c7e073e0 Grammar Nazi 2014 2014-04-26 13:44:59 -05:00
Jonas Konrad
a56bbe38b2 toString for BungeeServerInfo 2014-04-22 15:24:18 +02:00
md_5
312a74c5f1 Close #963 - log remote ping errors to console, friendly message to clients. 2014-04-19 19:48:43 +10:00
vemacs
71c86f9f90 Add ServerIP subchannel 2014-04-18 10:33:26 -06:00
Thinkofdeath
6475385f87 Use ProtocolConstants instead of raw protocol numbers 2014-04-16 14:57:09 +01:00
Thinkofdeath
6775b9230c Update Team packet's field names. unknown -> nameTagVisibility, unknown2 -> color 2014-04-16 14:46:48 +01:00
Thinkofdeath
c8e6b6fd7a Add 'Combat Event' to 14w11a's EntityMap 2014-04-16 14:34:30 +01:00
Thinkofdeath
bca3663a1f Add 'Camera' to 14w11a's EntityMap 2014-04-16 14:26:11 +01:00
Thinkofdeath
f71272a1c0 Add 14w11a EntityMap support 2014-04-16 11:56:04 +01:00
Thinkofdeath
ca7c755ecd Split up EntityMap into different protocol versions 2014-04-16 11:14:29 +01:00
md_5
5a638f2290 Enable 14w11 support, changing servers is a bit iffy though due to EntityMap not being complete. 2014-04-16 11:01:41 +10:00
md_5
3715756be7 Update packets for MINECRAFT_14_11_a 2014-04-16 10:48:40 +10:00
md_5
bc2b4db419 Replace literal numbers with usages of the ProtocolConstants class. 2014-04-16 10:18:16 +10:00
Jonas Konrad
e2eba52162 Revert "Revert "Implement Favicon API""
This reverts commit 13decac4b9.
2014-04-15 20:17:26 +10:00
md_5
13decac4b9 Revert "Implement Favicon API"
This reverts commit 18316eb5f8.
2014-04-15 15:08:12 +10:00
md_5
b08f1995f6 Return most recent protocol version to 'unsupported' server lists 2014-04-15 11:08:28 +10:00
Keir Nellyer
a642346a2c Add method to get a connected player via their UUID 2014-04-15 11:07:17 +10:00
Jonas Konrad
18316eb5f8 Implement Favicon API 2014-04-15 11:05:20 +10:00
md_5
3ced0b675d Implement Skin forwarding - YOU MUST UPDATE SPIGOT FIRST 2014-04-15 10:38:15 +10:00
md_5
dc2da29c16 Code format. 2014-04-13 14:15:41 +10:00
Thinkofdeath
3b71a2b570 Fix ping decoding (Fixes #969) 2014-04-13 00:07:11 +01:00
Thinkofdeath
1aa5379030 Handle new clients pinging old versions (Fixes #972 and Fixes #969) 2014-04-12 10:16:58 +01:00