Commit graph

777 commits

Author SHA1 Message Date
Spigot
b91d7995aa Allow air as an orebfuscator block
By: md_5 <git@md-5.net>
2014-02-03 17:55:48 +11:00
Spigot
a2ea539a2c Fix nerf-spawner-mobs
By: Dmck2b <dmck2b+github@gmail.com>
2014-02-02 17:03:20 +00:00
Spigot
ca5c6d3106 Async chunk compression needs a little bit more work still, disable for now
By: md_5 <git@md-5.net>
2014-02-02 12:26:23 +11:00
Spigot
f9b31ab7b6 Refactor chunk compression to use its own thread pool in order to eliminate disconnect race conditions caused by Mojang's nasty disconnect routines.
By: md_5 <git@md-5.net>
2014-02-02 09:41:27 +11:00
Spigot
f06778df6a Cap Entity Collisions
Limit a single entity to colliding a max of configurable times per tick.
This will alleviate issues where living entities are hoarded in 1x1 pens.

By: md_5 <git@md-5.net>
2014-02-01 18:14:48 +11:00
Spigot
e51f210106 Cap Entity Collisions
Limit a single entity to colliding a max of configurable times per tick.
This will alleviate issues where living entities are hoarded in 1x1 pens.

By: Aikar <aikar@aikar.co>
2014-01-31 10:36:58 -05:00
Spigot
d49c50289e Implement Locale Getter for Players
By: Smove <jan@lavasurvival.net>
2014-02-01 18:12:22 +11:00
Spigot
123fcc5f33 Add warning when null chunk buffers are encountered - most likely due to the orebfuscator plugin.
By: md_5 <git@md-5.net>
2014-02-01 18:07:22 +11:00
Spigot
615f117878 In short, there isn't actually anything wrong with the async chunk compressor, it just accidentally caused console logging of errors which were previously ignored.
This commit restores that behaviour

You may be asking yourself why we are completely ignoring any errors which come this far down the pipeline.
The answer is quite simple:
Mojang did it
The default Mojang pipeline doesn't have any ChannelOutboundHandlerAdapter or similar instances, and thus nothing to handle exceptionCaught
So when a channel.write() or channel.flush() fails, the error message is actually just passed straight to the future provided.
It is then subsequently discarded, the channel closed, and no one except the user was any the wiser it actually happened!
Unfortunately for us, the default exceptionCaught in this class sends a blaring warning to the server admins indicating that it couldn't send a packet to a disconnected user!
We don't care about these warnings, if we did something wrong to disconnect the user, it is already logged in the proper location, as are broken sockets
tl;dr no need to blare warnings on each write to a broken socket

By: md_5 <git@md-5.net>
2014-02-01 17:53:32 +11:00
Spigot
2cd0029267 Use correct bitmask variable for orebfuscator
By: md_5 <git@md-5.net>
2014-02-01 10:42:59 +11:00
Spigot
99ececedb4 Upstream merge
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-31 20:42:29 +00:00
Spigot
e152cdbd9b Don't allow respawning offline players
By: md_5 <git@md-5.net>
2014-01-31 18:15:33 +11:00
Spigot
2c1e392d13 Sacrifice oreobfuscator performance for safety and reliability.
By: md_5 <git@md-5.net>
2014-01-31 16:07:28 +11:00
Spigot
68e9340bfd Correctly set arrows' current block
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-30 20:42:01 +00:00
Spigot
f9de62bfdb Move exception logging to method body so we don't end up logging all outbound exceptions, which other plugins (cough ProtocolLib) may or may not be causing.
Also rumours this patch causes the server to break with ProtocolLib installed.
@aadnk

By: md_5 <git@md-5.net>
2014-01-30 16:02:25 +11:00
Spigot
994015de83 Show full stack trace for errors during chunk caching/compression
By: md_5 <git@md-5.net>
2014-01-30 06:58:37 +11:00
Spigot
c3ff978d51 Use a crc32 of all the blocks in the chunk as our hash key. This is much more unique.
By: md_5 <git@md-5.net>
2014-01-29 12:51:20 +11:00
Spigot
5641d50681 Merge pull request #108 from Dmck2b/PermGenLink
Add more information about changing PermGen size
By: md-5 <md_5@live.com.au>
2014-01-28 16:04:00 -08:00
Spigot
87a0f66c62 Fix unit tests
By: md_5 <git@md-5.net>
2014-01-29 09:08:29 +11:00
Spigot
05f0f87d55 [Experimental] - Enable compressed bulk chunk cache.
Sort chunks a final time before sending. This gives the advantage that chunks will load as close to the player as they possibly can, and then move out, as well as increase the cache hit rate when using smaller bulk chunk limits such as the default of 5.

By: md_5 <git@md-5.net>
2014-01-29 09:04:51 +11:00
Spigot
2304886127 Add more information about changing PermGen size
By: Dmck2b <dmck2b+github@gmail.com>
2014-01-28 17:51:26 +00:00
Spigot
6fd6437d95 Use simpler iterator
By: md_5 <git@md-5.net>
2014-01-28 21:46:15 +11:00
Spigot
3f8acf3f09 Implement a compressed chunk cache. This still needs a lot of work to figure out a good mechanism for looking up previous chunks, however at the moment when coupled with a high bulk chunk limit, it can be effective for solving lag issues.
By: md_5 <git@md-5.net>
2014-01-28 21:45:06 +11:00
Spigot
ae3c025c4a Only 1 class is compressible, don't bother interfacing.
By: md_5 <git@md-5.net>
2014-01-28 20:50:34 +11:00
Spigot
2e56f6db27 Only create a single executor / compressor instance.
By: md_5 <git@md-5.net>
2014-01-28 20:43:57 +11:00
Spigot
43c5f52de3 Allow Configuring Chunks per Packet. This enables server owners to cram more chunks per packet, potentially leading to higher compression ratios, thus saving bandwidth and load time.
This is currently set at the Vanilla default value of 5, however initial testing seems to suggest there could be good performance / usability / bandwidth gains by setting it to its maximum value of 32768. Testers are welcome to experiment with this option, beware the placebo though!

By: md_5 <git@md-5.net>
2014-01-28 20:36:05 +11:00
Spigot
615107d0d3 Implement Threaded Bulk Chunk Compression.
This offloads chunk compression to a new thread, which should help with the pauses often seen when teleporting large amounts of players.

By: md_5 <git@md-5.net>
2014-01-28 20:32:37 +11:00
Spigot
0c538f5fe5 Merge tick shuffling branch into master.
By: md_5 <git@md-5.net>
2014-01-27 08:40:12 +11:00
Spigot
5daa2e1c61 Revert Spigot branding.
By: md_5 <git@md-5.net>
2014-01-26 21:54:02 +11:00
Spigot
87c6f7ea4b Allow configuring of player sample size, and default the sample to 12, the same as Vanilla. This has some performance overhead, as we have to shuffle the list each time, but this is better than the server displaying as offline!
By: md_5 <git@md-5.net>
2014-01-26 21:50:53 +11:00
Spigot
3ca7ea1b9f Revert "Experimentally brand as "Spigot". This will be reverted if *any* plugin compatibility issues arise."
This reverts commit 4a7355c626.

By: md_5 <git@md-5.net>
2014-01-26 21:33:46 +11:00
Spigot
d0795c8248 Always use real player count for displayed online players.
By: md_5 <git@md-5.net>
2014-01-26 12:48:32 +11:00
Spigot
a6172c3083 Initialise ping array on startup. The code to decide when to regenerate the array is a bit iffy (Mojang!), as it relies on System.nanoTime() which is not an absolute time source.
By: md_5 <git@md-5.net>
2014-01-26 12:30:38 +11:00
Spigot
f11c649951 Adjust TPS command to start at 20tps, show * for catchup TPS, and round to 2 decimal places.
By: md_5 <git@md-5.net>
2014-01-26 12:17:55 +11:00
Spigot
f34befe767 Fix Ping Player Sample to bring it back in line with Vanilla behaviour. The behaviour which Bukkit introduced recently is broken on larger servers as it introduces too many players to the list.
By: md_5 <git@md-5.net>
2014-01-26 12:14:05 +11:00
Spigot
38a0b897e3 We want to use Math.min, not max to cap displayed TPS to 20
By: md_5 <git@md-5.net>
2014-01-26 11:04:55 +11:00
Spigot
4a7355c626 Experimentally brand as "Spigot". This will be reverted if *any* plugin compatibility issues arise.
By: md_5 <git@md-5.net>
2014-01-26 09:17:40 +11:00
Spigot
55952d752e Fix double comparison issues.
By: md_5 <git@md-5.net>
2014-01-25 16:18:32 +11:00
Spigot
e681f8f710 Don't allow plugins to create scoreboards async - this can crash the server.
By: md_5 <git@md-5.net>
2014-01-25 15:23:21 +11:00
Spigot
24ac30925e TPS isn't capitalized
It makes me want to hurt someone when its written like "Tps"
By: brutuscat2 <michael_jarman@me.com>
2014-01-24 22:36:32 -05:00
Spigot
f67219cdf0 Implement a new TPS command which will show the average TPS over the last 1,5 and 15 minutes, using the same algorithm as the linux kernel (exponentiallialy damped moving average).
By: md_5 <git@md-5.net>
2014-01-25 14:09:21 +11:00
Spigot
367618e408 Add Spigot links.
By: md_5 <git@md-5.net>
2014-01-23 13:17:47 +11:00
Spigot
df37e6e342 Move watchdog and timings code to tick method, not tick loop itself.
By: md_5 <git@md-5.net>
2014-01-22 19:23:59 +11:00
Spigot
975187b00f Pop tick loop patch to top
By: md_5 <git@md-5.net>
2014-01-22 19:19:39 +11:00
Spigot
2053478e45 Reapply tick loop patch.
By: md_5 <git@md-5.net>
2014-01-22 19:16:12 +11:00
Spigot
f6c7a83b9b Fix missing colons
By: Dmck2b <dmck2b+github@gmail.com>
2014-01-21 21:34:03 +00:00
Spigot
ed286940f1 Don't disconnect player when we have no vanilla tab completions.
By: md_5 <git@md-5.net>
2014-01-21 15:32:54 +11:00
Spigot
9cfff2b246 Don't let trees replace any block when growing
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-20 20:44:11 +00:00
Spigot
769d4de755 Allow disabling of ZombiePigmen spawning in portals
By: Dmck2b <dmck2b+github@gmail.com>
2014-01-20 20:20:00 +00:00
Spigot
c20ce49de1 Check j, not i
By: md_5 <git@md-5.net>
2014-01-20 15:42:52 +11:00
Spigot
0c8f0a801b Reduce memory of hiddenPlayers map.
By: md_5 <git@md-5.net>
2014-01-20 13:50:37 +11:00
Spigot
14d0eb5b67 Remove NextTickList processing whilst we look into an issue.
http://www.spigotmc.org/threads/lwc-locks-randomly-going-missing-after-using-1249.10505/

Catch stalling on corrupted map data / NBT arrays.

By: md_5 <git@md-5.net>
2014-01-20 13:44:41 +11:00
Spigot
c842e73cdb Merge pull request #95 from SpigotMC/optimize-nextticklist
Port Optimize NextTickList processing patch for 1.7.x
By: mikeprimm <mike@primmhome.com>
2014-01-18 18:18:31 -08:00
Spigot
c3350d3a67 Port Optimize NextTickList processing patch for 1.7.x
By: Mike Primm <mike@primmhome.com>
2014-01-18 13:57:03 -06:00
Spigot
d9c45724f6 Update chat link fix to use Bukkit's current system instead of the old one
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-18 19:36:47 +00:00
Spigot
6af626749d Support vanilla's direction tag on fireballs
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-18 14:30:50 +00:00
Spigot
34fd794015 Add /tellraw to the vanilla commands defaults
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-18 13:21:13 +00:00
Spigot
f5ab503112 Add getRawAddress back
By: md_5 <git@md-5.net>
2014-01-17 09:46:50 +11:00
Spigot
9942e61680 Block data values that crash the client
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-15 22:13:08 +00:00
Spigot
1180c5cc83 Upstream merge
By: md_5 <git@md-5.net>
2014-01-15 20:28:26 +11:00
Spigot
e4f2987e65 Move replace-commands to commands.replace-commands
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-15 09:20:19 +00:00
Spigot
b5cf4ed39d Fix ConcurrentModificationException while being idle kicked in a vehicle
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-14 20:14:36 +00:00
Spigot
cd2ca0fee0 Revert previous change to clear chunk list on the end of each tick, make it configurable instead.
Whilst the new behaviour was technically correct as it prevented the possibility of the chunk tick list actually increasing over time, it introduced a few issues, namely the fact that it slowed growth to unreasonable levels, and interfered with the values which server admins have finally tuned, and come to enjoy over the last few years.
If it is absolutely essential that growth be halted and ticking reduced as much as possible, the config option is there for power users.
If we wish to 'fix' this by default in the future, a new chunk ticking algorithm, which actually has meaningful config options should be designed.

By: md_5 <git@md-5.net>
2014-01-14 19:16:43 +11:00
Spigot
7cc82556e3 Tweak tab complete disabled to only disable completion of the /command section, and not any subsequent arguments to the command, such as player names or plugin provided completions.
By: md_5 <git@md-5.net>
2014-01-13 08:57:22 +11:00
Spigot
25cedf3056 Remove accidentally added code
By: md_5 <git@md-5.net>
2014-01-13 08:28:17 +11:00
Spigot
c264381f25 Replace AutoSave Mechanism
The problem here is that MinecraftServer.save(..), will attempt to sleep whilst all pending chunks are written to disk, however due to various and complicated bugs, it will wait for an incorrect amount of chunks, which may cause it to sleep for an overly long amount of time. Instead we will mimic the save-all command in its behaviour, which is both safe and performant.

By: md_5 <git@md-5.net>
2014-01-12 21:07:27 +11:00
Spigot
a15ec9e415 Add more code to try and Debug [Mojang] Crash Reports Crashing
By: md_5 <git@md-5.net>
2014-01-12 20:56:59 +11:00
Spigot
bfbfa6fc75 Take 2 at fixing unbreakable code
By: md_5 <git@md-5.net>
2014-01-10 15:39:36 +11:00
Spigot
e5cfd144eb Fix ItemStack Unbreakable Code.
This code needs brackets to be compiled correctly.

By: md_5 <git@md-5.net>
2014-01-10 15:16:18 +11:00
Spigot
63e137c5f0 Fix anvil collisions
This fixes the server incorrectly moving the player out of an anvil when touching it on the side. The server used the rotation of the last placed anvil instead the of the rotation of the anvil the player was touching.

By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-09 14:28:04 +00:00
Spigot
34acf177c9 Allow statistics to be disabled/forced
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-08 22:00:00 +00:00
Spigot
1bd8195a1b Update Client's Hand when BlockPlaceEvent Cancelled
Send a Packet103SetSlot to client when a BlockPlaceEvent is cancelled.

Fixes BUKKIT-5284

Currently, whenever a player places a block in a protected area the
equipped itemstack size on client is never updated properly since the
client thinks the block was placed. The reason this happens is because
ItemStack.matches returns true since the server does not decrement stack
size if a BlockPlaceEvent is cancelled. This causes
PlayerConnection.a(handlePlace) not to send the appropriate packet to
client which causes the bug.

By: md_5 <git@md-5.net>
2014-01-08 14:45:45 +11:00
Spigot
26ba98c875 Update Chest Animation when Cancelling Event
Update chest animation after cancelling InventoryOpenEvent. Fixes BUKKIT-1440

Currently if a plugin cancels an InventoryOpenEvent for vanilla chests,
the chest animation for clients is stuck in the open state since
IInventory's closeChest method is never called. To fix the issue, closeChest
is called before exiting the display GUI method.
More info can be found here
https://bukkit.atlassian.net/browse/BUKKIT-1440

By: md_5 <git@md-5.net>
2014-01-08 14:44:50 +11:00
Spigot
e25e9553b1 Clear chunkTickList at the end of every tick.
By: md_5 <git@md-5.net>
2014-01-08 14:38:38 +11:00
Spigot
a7ba50b65d Fix orebfuscator startup message showing hide blocks instead of replace blocks
By: md_5 <git@md-5.net>
2014-01-06 11:38:59 +11:00
Spigot
a3160ad8a5 Fix Biome Decoration Crashes
We don't really know what affect this will have on the terrain generation, but its better than crashing and not having terrain generate at all!

By: md_5 <git@md-5.net>
2014-01-05 09:35:15 +11:00
Spigot
5974c1d8e1 Disconnect for spam in the main thread
By: Thinkofdeath <thethinkofdeath@gmail.com>
2014-01-03 17:32:20 +00:00
Spigot
29ab75468d Handle different sizes (G,K) for the PermGen warning
By: Thinkofdeath <thethinkofdeath@gmail.com>
2013-12-28 23:54:44 +00:00
Spigot
1cf67ea855 Revert "Use Entity.teleportTo in CraftEntity.teleport"
This reverts commit f192df4023.

By: md_5 <git@md-5.net>
2013-12-24 14:52:45 +11:00
Spigot
d6dcaceca3 Add Late Bind Option
Add late-bind config option to delay binding until loading is done.

By: slide23 <me@slide.ws>
2013-12-24 10:22:53 +11:00
Spigot
f192df4023 Use Entity.teleportTo in CraftEntity.teleport
Entity.teleportTo is largely stable and correct. CraftEntity.teleport,
however, still cannot properly handle cross-world teleportation. Fix it
to defer to the better code in core Minecraft.

By: Andrew Krieger <Slizyboy@hotmail.com>
2013-12-24 10:18:01 +11:00
Spigot
59ef7aefd5 Revert the revert for now.
By: md_5 <git@md-5.net>
2013-12-23 21:03:39 +11:00
Spigot
ae3407bbd5 Increase verbosity of watchdog dumps
By: md_5 <git@md-5.net>
2013-12-23 21:01:45 +11:00
Spigot
b8d5260367 Revert check pending blocks patch as it (may) be causing some crash issues
By: md_5 <git@md-5.net>
2013-12-23 20:19:37 +11:00
Spigot
036da35bdf Disable connected check on setScoreboard. Mojang's semi async Netty implementation can lead to race conditions, and this exception being thrown when it really shouldn't.
By: md_5 <git@md-5.net>
2013-12-23 15:58:41 +11:00
Spigot
c9a666e78e Fix missing bitshifts
By: md_5 <git@md-5.net>
2013-12-23 15:43:33 +11:00
Spigot
dd91bed703 Warn if PermGen may be insufficient. Since 1.7 Mojang added a lot of new classes to their jar. This, coupled with plugins, may cause the loaded classes to exceed the default perm gem of 64mb. As such we will print a small warning advising users to set a higher PermGen if they haven't already.
By: md_5 <git@md-5.net>
2013-12-23 14:08:28 +11:00
Spigot
c8fe541778 Fix Biome Decoration Crashes
By: Dan Mulloy <dmulloy2@live.com>
2013-12-23 11:18:44 +11:00
Spigot
f8fe98c65f Add option to nerfs mobs from spawners. When this option is enabled, mobs which originate from a mob spawner will not have any AI, ie: brains. They will generally only be affected by water movement, with the exception of blazes which will still emit fireballs and float up and down.
This is disabled by default as it has a strong behavioural impact.

By: md_5 <git@md-5.net>
2013-12-22 21:00:50 +11:00
Spigot
20401f69c2 Add the getCubes patch back. Turns out the user with lockups had 23k+ entities in a single chunk.
By: md_5 <git@md-5.net>
2013-12-22 10:41:48 +11:00
Spigot
fe21d2887d Fix patch tree.
By: md_5 <git@md-5.net>
2013-12-22 10:06:06 +11:00
Spigot
79590b808a Redo previous getCubes removal.
By: md_5 <git@md-5.net>
2013-12-22 10:05:27 +11:00
Spigot
790cb1348c Fix patches some more.
By: md_5 <git@md-5.net>
2013-12-22 10:04:44 +11:00
Spigot
7d692a40aa Revert "Remove getCubes patch as under some circumstances it can loop around itself forever. For anyone wishing to reimplement this patch, the rationale behind it is quite simple, get all cubes within each chunk at the same time."
This reverts commit 5261962003.

By: md_5 <git@md-5.net>
2013-12-22 10:03:57 +11:00
Spigot
7de62a057d Save ticks lived to nbttag
By: DerFlash <bte@freenet.de>
2013-12-22 10:00:13 +11:00
Spigot
5261962003 Remove getCubes patch as under some circumstances it can loop around itself forever. For anyone wishing to reimplement this patch, the rationale behind it is quite simple, get all cubes within each chunk at the same time.
By: md_5 <git@md-5.net>
2013-12-22 09:59:17 +11:00
Spigot
3d37af4544 Force Load Chunks for Biome Decoration. May solve some random.nextInt() crashes people have been seeing.
By: md_5 <git@md-5.net>
2013-12-21 20:08:42 +11:00
Spigot
4ddeed1993 Fix accidentally reverted mc-dev imports.
By: md_5 <git@md-5.net>
2013-12-21 19:14:34 +11:00
Spigot
2c6428f4b1 Upstream merge, nothing major.
By: md_5 <git@md-5.net>
2013-12-21 19:13:39 +11:00
Spigot
c14cb5a15b Re-add the particle API
By: Thinkofdeath <thethinkofdeath@gmail.com>
2013-12-20 21:37:22 +00:00