Commit Graph

248 Commits

Author SHA1 Message Date
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
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
a8eaf02d50 Implement getMotd, and reload the motd. Adds BUKKIT-1799
By: feildmaster <admin@feildmaster.com>
2012-07-03 18:00:37 -05:00
CraftBukkit/Spigot
f54cb1e14e Add query-plugins setting. Addresses BUKKIT-1781
By: H31IX <effectsdude@gmail.com>
2012-06-09 13:59:52 -04:00
CraftBukkit/Spigot
86a06cd622 Changes '/whitelist list' to ignore comments. Addresses BUKKIT-1804
By: Jeff Wardian <krinsdeath@hotmail.com>
2012-06-14 22:31:47 -05:00
CraftBukkit/Spigot
b92707d6ea Preserve whitelist ordering. Addresses BUKKIT-1805
By: Jeff Wardian <krinsdeath@hotmail.com>
2012-06-14 22:43:46 -05:00
CraftBukkit/Spigot
efd15866c4 Support asynchronous events; Addresses BUKKIT-1212
By: Wesley Wolfe <weswolf@aol.com>
2012-06-13 21:52:49 -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
02fa535888 Add per-world spawn limits with fallback to server-wide bukkit.yml settings.
Fixes BUKKIT-1565

By: Travis Watkins <amaranth@ubuntu.com>
2012-04-23 19:01:22 -05:00
CraftBukkit/Spigot
db27daeea7 Made permissions.yml registration easier; Addresses BUKKIT-1499
The permissions.yml now behaves similar to a plugin.yml

By: Wesley Wolfe <weswolf@aol.com>
2012-04-15 13:24:38 -05:00
CraftBukkit/Spigot
12fff3a0e9 Added configurable Connection Throttle. Addresses BUKKIT-1274
By: EvilSeph <evilseph@gmail.com>
2012-03-22 08:03:24 -04:00
CraftBukkit/Spigot
0a4dd7c032 [Bleeding] Added option to remove entire plugins from the help index using the help.yml file. Addresses BUKKIT-1178
By: rmichela <deltahat@gmail.com>
2012-03-14 23:39:19 -04:00
CraftBukkit/Spigot
023ce58427 [Bleeding] Add getWorldType() and getGenerateStructures() to CraftServer. Fixes BUKKIT-855
By: Mike Primm <mike@primmhome.com>
2012-03-10 01:28:32 -06:00