Commit Graph

260 Commits

Author SHA1 Message Date
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
645fe18f1f Use 4787c23dce0f5ac856d8d398225828971a93a3ff Guava patch for onlinePlayers
This change improves the quality of life for plugin developers using
iterator iteration with side-effects. In the specified Guava patch, the
internal iterator no longer relies on the AbstractList iterator which
iterates by index, and will instead wrap the provided iterator in a
transformer given the Function.

By: Wesley Wolfe <wesley.d.wolfe+git@gmail.com>
2014-07-01 00:47:39 -05:00
CraftBukkit/Spigot
03a390e010 Implement new getOnlinePlayers. Adds BUKKIt-5668
By: Wesley Wolfe <wesley.d.wolfe+git@gmail.com>
2014-06-24 16:11:25 -05:00
CraftBukkit/Spigot
82a09cfb9f Update CraftBukkit to use new YamlConfiguration encoding changes
By: Wesley Wolfe <wesley.d.wolfe+git@gmail.com>
2014-05-14 05:49:04 -05:00
CraftBukkit/Spigot
0640242e43 Implement inventory creation by type and title. Fixes BUKKIT-4045
With the current API it is possible to create an inventory with a specific
type, but it is not possible to give such an inventory a title other than
the default.

The commit changes that by adding a method to optionally supply the title
for the given inventory type and holder, creating the functionality to
display any supported inventory type with a 32 character length String.

If the inventory title supplied is larger than 32 characters then an
IllegalArgumentException is thrown stating so.

By: eueln <euelnd@gmail.com>
2013-04-11 14:20:41 -05:00
CraftBukkit/Spigot
dd2b3d22fd Make bans pretend to use names like before 1.7.8.
Bans require a name and UUID but our API only allows for a single string
identifier for a ban entry. Until this is sorted out go back to the old
name based setup since we can always get a UUID given a name.

By: Travis Watkins <amaranth@ubuntu.com>
2014-04-17 10:45:10 -05:00
CraftBukkit/Spigot
a546a14bb1 Fix getting white list, ban list, and op list. Fixes BUKKIT-5538
The getEntries methods on these return player names instead of UUIDs.
As we need the UUIDs for our API we add a getValues method to get at
the data we need. To further ensure we get the most data possible we
also add a way to get at the stored GameProfile to ensure we always
have both the UUID and the name from the list.

By: Travis Watkins <amaranth@ubuntu.com>
2014-04-17 03:31:49 -05:00
CraftBukkit/Spigot
35ef785bd7 Don't do a lookup for obviously invalid usernames
By: Travis Watkins <amaranth@ubuntu.com>
2014-04-17 01:53:13 -05:00
CraftBukkit/Spigot
8553d1d462 Use fetched GameProfile for getOfflinePlayer(String)
When getting an OfflinePlayer by name we lookup their UUID and then
use that to fetch the OfflinePlayer. If the player has not played on
this server before the resulting OfflinePlayer will return null for
getName(). As this is unintuitive we now create the OfflinePlayer directly
using the profile we looked up and make OfflinePlayer prefer that data.

By: Travis Watkins <amaranth@ubuntu.com>
2014-04-12 02:38:53 -05:00
CraftBukkit/Spigot
d24dac2c06 Update CraftBukkit to Minecraft 1.7.8
By: Travis Watkins <amaranth@ubuntu.com>
2014-04-10 20:04:38 -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
1a1a4f0757 Match old alias behavior when migrating.
Previously the alias system would pass all arguments from the alias
to its command(s) implicitly. The new system requires arguments to be
explicitly passed so server owners can have more control over where and
how they are passed. To ensure this isn't a breaking change during the
migration from bukkit.yml to commands.yml we now add the $1- argument
to the alias commands to match the previous behavior.

By: Travis Watkins <amaranth@ubuntu.com>
2014-02-08 15:02:44 -06:00
CraftBukkit/Spigot
8227c52d3f [Bleeding] Implement Mojang command fallback system. Adds BUKKIT-5385
By: t00thpick1 <t00thpick1dirko@gmail.com>
2014-02-07 18:40:59 -05:00
CraftBukkit/Spigot
f65068829e Implement banning API. Adds BUKKIT-3535
Previously no implementation existed to access various additional
information fields regarding bans. This implementation expands on the
information outlined in the sister Bukkit commit to provide access to
the Minecraft implementation of the ban system.

This implementation of the banning API contains 2 new classes which
provide access to the internal workings of the built-in banning
system within Minecraft.

The CraftBanEntry class simply supports the representation of an internal
Minecraft BanEntry object. The data that may be modified within this new
object must be manually saved to the list contained within the
CraftBanEntry using it's save() method.

The CraftBanList class supports the representation of an internal
Minecraft BanList object through proxy methods. These methods do
validation on the passed objects where needed to ensure safe input to the
backed Minecraft objects.

These changes additionally re-route the existing banning API to the newer,
more detailed, system. Functionality prior to this change still behaves
as documented by the contract defined by the methods changed.

By: mbax <matt@phozop.net>
2014-02-04 20:52:50 -07:00
CraftBukkit/Spigot
36c8e19946 [Bleeding] Instantiate logger earlier in CraftServer. Fixes BUKKIT-4253.
Previously, if an error occurred during CraftServer initialization before the
logger was instantiated, it would cause an NPE and the server would never
finish loading properly. By instantiating the logger before attempting to
load anything else in CraftServer, we ensure that a logger will always be
available in the case of any errors.

By: GJ <gjmcferrin@gmail.com>
2014-01-21 10:47:18 -08: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
2d7d0e3bf5 [Bleeding] Implement setIdleTimeout and getIdleTimeout. Addresses BUKKIT-4932.
By: t00thpick1 <t00thpick1dirko@gmail.com>
2014-01-07 01:33:16 -05:00
CraftBukkit/Spigot
fda1280bce [Bleeding] Handle custom furnace recipes separately. Fixes BUKKIT-1657, BUKKIT-3846
Due to vanilla blanket comparing data values, and the unspecified
order of hashmap iterators, we need to run through custom recipes
first, and therefore separately, to ensure that they are actually
used. By not adding the custom results to the experience table, we do
not override the experience gains from vanilla smelting recipes.

By: t00thpick1 <t00thpick1dirko@gmail.com>
2013-12-20 18:44:13 -05: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
4ac5fcd821 Don't share WorldMapCollection. Fixes BUKKIT-4871
WorldMapCollection stores scoreboard, map (item), structure, and
village information. Scoreboards are explicitly handled globally,
while villages and structures are erroneously shared.

This commit separates the WorldMapCollections to not be shared among
custom worlds. Maps are special-cased to maintain the previous shared
behavior.

By: Wesley Wolfe <weswolf@aol.com>
2013-10-30 04:22:00 -05:00
CraftBukkit/Spigot
c99e77d534 Add auto-save plugin redundancy detection.
This change will print a warning when a plugin induces a forced save. A
player or console forcing a save (via a command) is ignored for purposes
of printing a warning.

By: Wesley Wolfe <weswolf@aol.com>
2013-09-23 16:43:21 -05:00
CraftBukkit/Spigot
3d604166e8 Wrap plugin.getDefaultWorldGenerator in try-catch. Fixes BUKKIT-4116
If a plugin generates an exception when returning a world generator, the
server will crash. This change adds a try-catch block to keep the server
from crashing on plugin defined world generators.

By: riking <rikingcoding@gmail.com>
2013-04-18 17:50:05 -07:00
CraftBukkit/Spigot
249638ac01 Indicate help is a command. Fixes BUKKIT-4642
By: Wesley Wolfe <weswolf@aol.com>
2013-08-02 19:04:39 -05:00
CraftBukkit/Spigot
c33c52d7a2 Move world generator warning to CraftBukkit. Fixes BUKKIT-2565
By: Score_Under <seejay.11@gmail.com>
2013-03-21 17:50:58 +00:00
CraftBukkit/Spigot
76976e4797 Make auxiliary worlds use the main scoreboard. Addresses BUKKIT-3984
When a world is created using our API, it does not use secondary world
server and will maintain a reference to its own scoreboard. In vanilla,
this is not an issue as there is only ever one world.

Similarly to maps, an overwrite to the scoreboard reference has been
added for when another world has been created.

This should also address BUKKIT-3982 and BUKKIT-3985

By: Wesley Wolfe <weswolf@aol.com>
2013-04-04 23:35:16 -05:00
CraftBukkit/Spigot
09f861ef48 Implement Scoreboard API. Adds BUKKIT-3776
This implementation facilitates the correspondence of the Bukkit Scoreboard
API to the internal minecraft implementation.

When the first scoreboard is loaded, the scoreboard manager will be created.
It uses the newly added WeakCollection for handling plugin scoreboard
references to update the respective objectives. When a scoreboard contains no
more active references, it should be garbage collected.

An active reference can be held by a still registered objective, team, and
transitively a score for a still registered objective. An internal reference
will also be kept if a player's specific scoreboard has been set, and will
remain persistent until that player logs out.

A player's specific scoreboard becomes the scoreboard used when determining
team structure for the player's attacking damage and the player's vision.

By: mbax <matt@phozop.net>
2013-03-22 17:21:33 -04:00
CraftBukkit/Spigot
56947c94a9 Cleanup comments, formatting, etc
By: Travis Watkins <amaranth@ubuntu.com>
2013-03-24 23:22:32 -05:00
CraftBukkit/Spigot
b9af9ef239 Validate Server method input. Addresses BUKKIT-3687
CraftServer methods that implement the Server interface will throw an
IllegalArgumentException if a method cannot operate on a null input
and given a null pointer.

This causes methods to fail early and identify that a plugin is
responsible for passing in an invalid argument. This will only
change the exception thrown, if there originally was a thrown
exception. This helps with hunting down legitimate problems
with CraftBukkit.

By: Edmond Poon <sagaciouszzzz@gmail.com>
2013-03-18 23:32:10 -06:00
CraftBukkit/Spigot
18164ee949 Update CraftBukkit to Minecraft 1.5
By: Travis Watkins <amaranth@ubuntu.com>
2013-03-13 17:33:27 -05:00
CraftBukkit/Spigot
78e16bd8de Compensate for allow-nether/allow-end as false; Fixes BUKKIT-3466
When either of those settings are false, the worlds are not loaded and
therefore will not be targeted for portal exits.  Existing worlds are
iterated directly to avoid defaulting to the first world if a direct
dimension match is not found.

Plugins must also specify exit from custom Bukkit worlds to comply with
original commit: https://github.com/Bukkit/CraftBukkit/commit/2dc2af0

This commit introduces a constant to clarify the dependency on the
CraftBukkit implementation of custom worlds having a dimension offset.

By: EdGruberman <ed@rjump.com>
2013-01-22 18:36:03 -07:00
CraftBukkit/Spigot
2cf54ae100 Reload ban files when reloading the server. Adds BUKKIT-3470
By: feildmaster <admin@feildmaster.com>
2013-01-23 06:24:40 -06:00
CraftBukkit/Spigot
e895c1e420 [Bleeding] Implement periodic chunk garbage collector
This adds two settings to bukkit.yml, allowing activation and control of
two chunk garbage collection triggering conditions:
chunk-gc/period-in-ticks controls a periodic GC, run once every N ticks
(default is 600); chunk-gc/load-threshold causes the GC to run once
after every N calls to loadChunk() on a given world (this call is an API
call used by plugins, and is distinct from the path taken for routine
player movement-based loading).  In both cases, setting to zero will
disable the given GC scheduling strategy.

In either case, the act of doing the GC is simply one of scanning the
loaded chunks, seeing which are NOT being used by one or more players
(due to view-distance) and which are not already queued for unload, and
queueing them for a normal unload.  Ultimately, the unload is then
processed the same as if the chunk were unloaded due to leaving the
view-distance range of all players, so the impact on plugins should be
no different (and strategies such as handling the ChunkUnloadEvent in
order to prevent unload will still work).

The initial interval for the periodic GC is randomized on a per-world
basis, in order to avoid all world being GCed at the same time -
minimizing potential lag spikes.

By: Mike Primm <mike@primmhome.com>
2012-12-10 09:38:26 -06: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
1d39ac678a Implement ItemFactory and ItemMeta values. Adds BUKKIT-15
By: Wesley Wolfe <weswolf@aol.com>
2012-12-17 01:31:41 -06:00
CraftBukkit/Spigot
d54778d339 Add a custom shutdown message set in bukkit.yml. Addresses BUKKIT-3031
By: feildmaster <admin@feildmaster.com>
2012-12-03 19:32:44 -06:00
CraftBukkit/Spigot
4ef13fbc4c Don't do case lookups when we have the right case already.
This is a missed part of the original "[Bleeding] Use case from player data
for OfflinePlayer. Fixes BUKKIT-519" commit. It avoids doing (somewhat
expensive) lookups of player data to find the correct capitalization inside
getOfflinePlayers() as we're already loading their name from the player data
and thus have the correct capitalization.

By: Travis Watkins <amaranth@ubuntu.com>
2012-11-18 10:51:52 -06:00
CraftBukkit/Spigot
ccf4da1fac [Bleeding] Use case from player data for OfflinePlayer. Fixes BUKKIT-519
If a plugin looks up a player that is offline they may not know the correct
capitalization for the name. In this case they're likely to get it wrong
and since we cache the result even after the player joins the server all
future request for an OfflinePlayer will return one with incorrect case.

When looking up a player who has played on the server before we can
get the correct case from the player data file saved by the server. If
the player has never played before this point we cannot do anything and
will still have the same issue but this is not a solvable problem.

By: EdGruberman <ed@rjump.com>
2012-08-09 09:27:40 -07:00
CraftBukkit/Spigot
3f728bab1a Update CraftBukkit to Minecraft 1.4.4.
By: Travis Watkins <amaranth@ubuntu.com>
2012-11-06 06:05:28 -06:00
CraftBukkit/Spigot
64a7434f5a Implement API for ambient mob spawn limit. Add spawn-limit.ambient to
bukkit.yml. Adds BUKKIT-2765

By: Travis Watkins <amaranth@ubuntu.com>
2012-10-31 11:18:41 -05:00
CraftBukkit/Spigot
9ddec3654f Add isHardcore API to check if the server is in hardcore mode or not. Adds BUKKIT-2707
By: EvilSeph <evilseph@gmail.com>
2012-10-29 01:35:31 -04:00
CraftBukkit/Spigot
1f7d5bc41b Remove spawn-radius setting in bukkit.yml in favour of spawn-protection in
server.properties. Fixes BUKKIT-2657

By: EvilSeph <evilseph@gmail.com>
2012-10-28 01:30:09 -04:00
CraftBukkit/Spigot
1177b02708 Update CraftBukkit to Minecraft 1.4(.2).
By: Travis Watkins <amaranth@ubuntu.com>
2012-10-24 22:53:23 -05:00
CraftBukkit/Spigot
246fa5b12f Implement chat tab completion API. Fixes BUKKIT-2608. Adds BUKKIT-2607.
The chat tab completion implementation also includes a sanity check to
assure type-safety in the list.

By: Wesley Wolfe <weswolf@aol.com>
2012-10-17 04:31:36 -05:00
CraftBukkit/Spigot
bb2c1736c3 Delegate tab-completion. Fixes BUKKIT-2181. Adds BUKKIT-2602
CommandMap now contains the functionality for tab completion. This
commit replaces the vanilla implementation and simply delegates it to
the Bukkit API.

By: Score_Under <seejay.11@gmail.com>
2012-10-09 19:44:04 +01:00
CraftBukkit/Spigot
42dfd206a6 [Bleeding] Add autosave interval setting in bukkit.yml. Adds BUKKIT-2507
The new setting is located at "ticks-per.autosave". By changing this
value, it affects how often a full save is automatically executed,
measured in ticks.

This value is defaulting to 0 (off) because we believe that the vast
majority of servers already have a third-party solution to automatically
saving the server at set intervals. Having the built in auto-save disabled
by default ensures that we are not saving things twice; doing so leads to
absolutely no benefits, but results in detrimental and noticeable
unnecessary performance decrease.

For servers that do not use an automated external script to perform saves,
this setting can be turned on by setting the value higher than 0, with 900
being the value used in vanilla.

By: Mike Primm <mike@primmhome.com>
2012-08-18 17:36:39 -05:00
CraftBukkit/Spigot
2a57bac117 Bulk pending cleanup.
By: Wesley Wolfe <weswolf@aol.com>
2012-09-09 23:19:28 -05:00
CraftBukkit/Spigot
66380e6d14 Fix crash from console-commands throwing exception. Fixes BUKKIT-2479
When 1.3.1 was released, a try-catch block was removed from the tick
loop that called the method in NMS to handle commands. This restores a
try-catch to prevent the console from crashing the server.

By: Wesley Wolfe <weswolf@aol.com>
2012-09-06 22:11:17 -05:00
CraftBukkit/Spigot
24abca3c43 Implement new deprecated warning state configuration option
By: Wesley Wolfe <weswolf@aol.com>
2012-08-06 23:52:49 -05:00