Commit Graph

86 Commits

Author SHA1 Message Date
CraftBukkit/Spigot 82c0a41a0d Create NBT TypeId helper class
By: Senmori <thesenmori@gmail.com>
2017-04-21 23:10:22 -04:00
CraftBukkit/Spigot f155cbbaf2 BUILDTOOLS-251: Make much of Bukkit locale independent
By: md_5 <git@md-5.net>
2016-06-26 19:32:05 +10:00
CraftBukkit/Spigot 5c7c823a9a Begin console output with ANSI line erase.
By: Jofkos <JofkosDE@gmail.com>
2016-04-08 17:01:22 +02:00
CraftBukkit/Spigot f9ba5f4744 Fix the default permission of /trigger
By: Thinkofname <thinkofdeath@spigotmc.org>
2016-03-31 00:50:39 +01:00
CraftBukkit/Spigot 21d4bf5d1f Update to Minecraft 1.9
By: md_5 <git@md-5.net>
2016-03-01 08:32:46 +11:00
CraftBukkit/Spigot 5f68a2157e SPIGOT-1230: Normalize null log names in ForwardLogHandler.
Not technically 100% correct since null != "null", but without sacrficing performance this is the best way to fix the issue in the current implementation.

By: md_5 <git@md-5.net>
2015-10-10 22:08:44 +11:00
CraftBukkit/Spigot 4f2f0c69f2 Handle a missed case with our vanilla permissions override
By: Thinkofdeath <thinkofdeath@spigotmc.org>
2015-05-30 00:06:18 +01:00
CraftBukkit/Spigot ed8ca79a65 Remove unneeded Java 1.5 Compat
By: Matt <mattbdev@outlook.com>
2015-04-29 11:45:43 -04:00
CraftBukkit/Spigot ab841e7d50 Replace the two nextTickList sets with a single one that combines both
Should prevent them from going out of sync

By: Thinkofdeath <thinkofdeath@spigotmc.org>
2015-04-13 11:04:38 +01:00
CraftBukkit/Spigot 85be409b13 Update to Minecraft 1.8.3
By: Thinkofdeath <thinkofdeath@spigotmc.org>
2015-02-26 22:41:06 +00:00
CraftBukkit/Spigot 5820e42b8d SPIGOT-210: Remove the exception when dropping a non-existant task
If the server crashes during chunk generation then the chunk would have never
been added to the executor, this caused a second exception to be thrown when
the server shutdown from the first exception

By: Thinkofdeath <thinkofdeath@spigotmc.org>
2014-12-16 10:53:29 +00:00
CraftBukkit/Spigot 33abca2c69 Rework the vanilla link fix so that hover/click events aren't lost
By: Thinkofdeath <thinkofdeath@spigotmc.org>
2014-12-13 10:26:06 +00:00
CraftBukkit/Spigot ed9ee15a91 SPIGOT-199: Default to white instead of black for chat messages
By: Thinkofdeath <thinkofdeath@spigotmc.org>
2014-12-13 09:36:35 +00:00
CraftBukkit/Spigot 9a9ef627b0 Add the new minecraft command permission nodes.
Previously bukkit ones were in bukkit. Moved to CraftBukkit with new prefixes.

By: FearThe1337 <admin@fearthe1337.com>
2014-12-11 21:36:02 +01:00
CraftBukkit/Spigot 520089d10e Remove extra color codes at the start from converted json chat
By: Thinkofdeath <thinkofdeath@spigotmc.org>
2014-11-28 19:59:41 +00:00
CraftBukkit/Spigot a419776f3c Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/

By: Thinkofdeath <thinkofdeath@spigotmc.org>
2014-11-26 08:32:16 +11:00
CraftBukkit/Spigot 79e5718f39 Update CraftBukkit to Minecraft 1.7.10
By: Travis Watkins <amaranth@ubuntu.com>
2014-06-26 13:05:08 -05:00
CraftBukkit/Spigot ca844c146f Implement API for dealing with player UUIDs. Adds BUKKIT-5071
By: Travis Watkins <amaranth@ubuntu.com>
2014-03-28 23:48:15 -05:00
CraftBukkit/Spigot e6de9aaa17 Update CraftBukkit to Minecraft 1.7.5
By: Nate Mortensen <nate.richard.mortensen@gmail.com>
2014-03-20 22:26:30 -06:00
CraftBukkit/Spigot 4c583ab9df Add method to forget callbacks in AsynchronousExecutor
By: Wesley Wolfe <weswolf@aol.com>
2014-02-10 09:33:20 -06:00
CraftBukkit/Spigot 4b9b13ab1e Allow AsynchronousExecutor.getSkipQueue() to pull tasks from the queue
By: Wesley Wolfe <weswolf@aol.com>
2014-02-01 17:57:52 -06:00
CraftBukkit/Spigot e276044e36 [Bleeding] Implement methods for /achievement command. Addresses BUKKIT-4932
By: t00thpick1 <t00thpick1dirko@gmail.com>
2014-01-16 01:48:38 -05:00
CraftBukkit/Spigot 31fccf6d8e Implement UnsafeValues for give command. Addresses BUKKIT-5286
By: Wesley Wolfe <weswolf@aol.com>
2014-01-14 22:38:03 -06:00
CraftBukkit/Spigot 4caf845eae Process URLs as clickable. Adds BUKKIT-4917
In Minecraft 1.7, URL processing was removed from the client while the
server gained the ability to designate a URL to be launched in response to
clicking text. However, this functionality is not implemented in the
vanilla server. This commit adds that functionality to messages sent to
the client, processing URLs as clickable.

Additionally, char array iteration is replaced with regex.

By: mbax <matt@phozop.net>
2013-12-09 22:47:00 -05:00
CraftBukkit/Spigot 8809265f76 Check pending blocks before falling back to world. Fixes BUKKIT-5122
When growing trees we use a BlockChangeDelegate which queues up the block
changes so plugins can modify/block/log tree growing. However, we always
check the actual world when checking for existing blocks. This means when
the tree growing code checks to see if putting a leaf in a block is valid
it may incorrectly overwrite a log block that should exist in that
location. To ensure trees grow correctly we now check the delegate itself
for blocks that match the queried location before checking the world.

By: Travis Watkins <amaranth@ubuntu.com>
2013-12-17 17:26:02 -06:00
CraftBukkit/Spigot 9383c67217 Handle ChatColor-ending messages FIXES BUKKIT-4924
Now adds the component upon creation, eliminating issues where the
created component was discarded.

By: mbax <matt@phozop.net>
2013-12-01 11:09:47 -05:00
CraftBukkit/Spigot 884ca363b6 Handle JUL logger formatting
By: Travis Watkins <amaranth@ubuntu.com>
2013-12-01 12:28:20 -06:00
CraftBukkit/Spigot 7537956dec Forward exceptions to log4j, cleanup logger handling. Fixes BUKKIT-4948
By: Travis Watkins <amaranth@ubuntu.com>
2013-12-01 11:15:18 -06:00
CraftBukkit/Spigot 5783df9d13 Update CraftBukkit to Minecraft 1.7.2
By: mbax <matt@phozop.net>
2013-11-04 07:07:38 -06:00
CraftBukkit/Spigot 868456b95f Refactor EntityDamageEvents. Adds BUKKIT-1944 & BUKKIT-3684
By: feildmaster <admin@feildmaster.com>
2013-04-09 22:25:06 -05:00
CraftBukkit/Spigot c8eaad4f3f We compile for 1.5
By: Wesley Wolfe <weswolf@aol.com>
2013-04-04 01:22:50 -05:00
CraftBukkit/Spigot 27e7fa2e01 Add a WeakCollection utility class.
This class is designed to be an invisible layer between a normal collection,
and one that silently loses entries because they are only weakly referencable.
Some operations have additional overhead to be semantically correct, but it
maintains the equals contract for all entries, as opposed to identity.

It does not support the equals or hash code method as it cannot easily have
the transitive and commutative properties.

By: Wesley Wolfe <weswolf@aol.com>
2013-04-02 07:52:17 -05:00
CraftBukkit/Spigot fde7669132 Update CraftBukkit to Minecraft 1.4.6
By: feildmaster <admin@feildmaster.com>
2012-12-19 22:03:52 -06:00
CraftBukkit/Spigot c459e6fc06 Add utility class AsynchronousExecutor
This class is a general purpose task execution system, that uses stages
to separate processing blocks for asynchronous and synchronous
executions.

By: Wesley Wolfe <weswolf@aol.com>
2012-12-12 03:54:11 -06:00
CraftBukkit/Spigot 730e3ceb1b Queue tasks from secondary threads. Fixes BUKKIT-2546 and BUKKIT-2600
This change affects the old chat compatibility layer from an
implementation only standpoint. It does not queue the 'event' to fire,
but rather queues a runnable that allows the calling thread to wait for
execution to finish.

The other effect of this change is that rcon connects now have their
commands queued to be run on next server tick using the same
implementation.

The internal implementation is in org.bukkit.craftbukkit.util.Waitable.
It is very similar to a Future<T> task, but only contains minimal
implementation with object.wait() and object.notify() calls
under the hood of waitable.get() and waitable.run().

PlayerPreLoginEvent now properly implements thread-safe event execution
by queuing the events similar to chat and rcon. This is still a poor way
albeit proper way to implement thread-safety; PlayerPreLoginEvent will
stay deprecated.

By: Wesley Wolfe <weswolf@aol.com>
2012-10-07 15:08:21 -05:00
CraftBukkit/Spigot 4277872612 Replace LongObjectHashMap with a more efficient implementation
After further testing it appears that while the original LongHashtable
has issues with object creation churn and is severly slower than even
java.util.HashMap in general case benchmarks it is in fact very efficient
for our use case.

With this in mind I wrote a replacement LongObjectHashMap modeled after
LongHashtable. Unlike the original implementation this one does not use
Entry objects for storage so does not have the same object creation churn.
It also uses a 2D array instead of a 3D one and does not use a cache as
benchmarking shows this is more efficient. The "bucket size" was chosen
based on benchmarking performance of the HashMap with contents that would
be plausible for a 200+ player server. This means it uses a little extra
memory for smaller servers but almost always uses less than the normal
java.util.HashMap.

To make up for the original LongHashtable being a poor choice for generic
datasets I added a mixer to the new implementation based on code from
MurmurHash. While this has no noticable effect positive or negative with
our normal use of chunk coordinates it makes the HashMap perform just as
well with nearly any kind of dataset.

After these changes ChunkProviderServer.isChunkLoaded() goes from using
20% CPU time while sampling to not even showing up after 45 minutes of
sampling due to the CPU usage being too low to be noticed.

By: Travis Watkins <amaranth@ubuntu.com>
2012-09-11 05:51:09 -05:00
CraftBukkit/Spigot 9c8b353591 Use standard format function to format logs. Addresses BUKKIT-2246
Also fix "excess" Log Levels.

By: EdGruberman <ed@rjump.com>
2012-08-11 16:29:50 -07:00
CraftBukkit/Spigot c144b2459c Use a dynamic pool size for the iterator cache
Many codepaths only end up with one iterator being used at a time and
most of the rest only get up to two being used so using a static pool of
three is wasteful. This also allows us to efficiently handle cases that
exceed 3 iterators in use. Overall this dramatically increases the hit rate
and results in less iterators being created.

By: Travis Watkins <amaranth@ubuntu.com>
2012-08-19 19:59:58 -05:00
CraftBukkit/Spigot 327e789c7f Add LongObjectHashMap and LongHashSet
Replace uses of LongHashtable and LongHashset with new implementations.
Remove EntryBase, LongBaseHashtable, LongHashset, and LongHashtable as they
are no longer used.

LongObjectHashMap does not use Entry or EntryBase classes internally for
storage so has much lower object churn and greater performance. LongHashSet
is not as much of performance win for our use case but for general use is
up to seventeen times faster than the old implementation and is in fact
faster than alternatives from "high performance" java libraries. This is
being added so that if someone tries to use it in the future in a place
unrelated to its current use they don't accidentally end up with something
slower than the Java collections HashSet implementation.

By: Travis Watkins <amaranth@ubuntu.com>
2012-08-17 18:53:59 -05:00
CraftBukkit/Spigot 9c569d394d Add iterator cache to UnsafeList and use it in hotspots
Adds a specialized iterator for the list and a pool of iterators to avoid
object churn. Also optimizes the clear() method to reduce object creation.

By: Travis Watkins <amaranth@ubuntu.com>
2012-08-17 12:55:33 -05:00
CraftBukkit/Spigot 7383d52df7 Implement new AsyncPlayerChatEvent. Addresses BUKKIT-2064
Added two utility collections for use with PlayerChatEvents allowing lazier
initialization of events and less need to synchronize against the player
list.

Provided a hidden queue system for similar logic to pre-1.3 chat. When a
plugin is listening for the deprecated PlayerChatEvent, all chat will be
delayed to be mirror executed from the main thread. All developers are
encouraged to immediately update to the developmental Bukkit chat API as a
minimum transition for server stability.

Additionally, changes were required to bring thread-safety to the flow
logic. CopyOnWriteArrayList is the only viable means to produce thread
safety with minimal diff; using a sane pre-implemented collection would
require reworking of sections of NMS logic.

As a minor change, implemented expected functionality for
PlayerCommandPreProcessEvent. Setting the player should now change the
player executing the command.

By: Wesley Wolfe <weswolf@aol.com>
2012-08-03 06:24:55 -05:00
CraftBukkit/Spigot 6e2987bb35 Update CraftBukkit to Minecraft 1.3.1
By: feildmaster <admin@feildmaster.com>
2012-07-29 02:33:13 -05:00
CraftBukkit/Spigot 8716e36905 Resize UnsafeList to initial capacity when cleared and implement clone.
By: Travis Watkins <amaranth@ubuntu.com>
2012-05-31 20:14:28 -05:00
CraftBukkit/Spigot 01b14886d7 Update to jline 2. Fixes BUKKIT-717
JLine 2 allows for better color matching in the console and support for
colors in console on Windows. Hopefully provides better performance as well.

By: EdGruberman <ed@rjump.com>
2012-03-14 13:59:14 -07:00
CraftBukkit/Spigot bdccfb5797 We build for Java 1.5.
By: EvilSeph <evilseph@gmail.com>
2012-04-23 23:05:57 -04:00
CraftBukkit/Spigot f977f3cc65 Avoid doing unnecessary range checks when we're looping from start to end.
Make EntityLiving call AI logic every tick again.
Rework PathfinderGoalSelector logic.

Adds UnsafeList for use in places where we use ArrayList and know we won't
get index out of range errors. Added usage to World's tickEntities, Chunk's
entitySlices to speed up searching for entities, and to PathfinderGoalSelector
to speed up dealing with AI goals.

Reworked logic in PathfinderGoalSelector with help from fullwall. This code
no longer uses an extra ArrayList for setting up goals and only updates which
goals should be run every other time it is called.

Removed only calling PathfinderGoalSelector every other tick from EntityLiving
as we now only setup new goals every other tick. This ensures existing goals
run every tick to properly update mob movement.

By: Travis Watkins <amaranth@ubuntu.com>
2012-04-23 09:47:05 -05:00
CraftBukkit/Spigot d434857d8a [Bleeding] Added support for all TreeType entries to CraftWorld.generateTree(). Addresses BUKKIT-1161
By: zml2008 <zach@zachsthings.com>
2012-03-13 19:38:39 -07:00
CraftBukkit/Spigot a90a7edd76 Only remove blocks when golem is successfully spawned. Fixes BUKKIT-1094
By: feildmaster <admin@feildmaster.com>
2012-03-10 23:01:39 -06:00
CraftBukkit/Spigot d267b15b44 Fixed compile issues with StructureGrowDelegate not implementing the new isEmpty method
By: Nathan Adams <dinnerbone@dinnerbone.com>
2012-03-01 15:38:34 +00:00
CraftBukkit/Spigot dc6dd3828c [Bleeding] Override not applicable
By: Wesley Wolfe <weswolf@aol.com>
2012-02-23 17:48:30 -06:00