3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-12-19 13:00:06 +01:00
Commit graph

1187 Commits

Autor SHA1 Nachricht Datum
feildmaster
7b5a8d0c23 Don't teleport entities that are considered dead. Addresses BUKKIT-1331
Teleportation should never be processed on dead entities. If you wish
to teleport an entity, do it on a living entity. If you wish to
teleport a player, set their respawn location in PlayerRespawnEvent.
2012-12-29 19:18:36 -06:00
Mike Primm
fb0eed177a [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.
2012-12-29 16:50:05 -06:00
feildmaster
538de63a03 Fix persistence on tamed pets. Fixes BUKKIT-3300
With the persistence api introduced, pets did not have their
persistence flag updated to reflect their persistence. This caused
tame ocelots to not persist under specific conditions.
2012-12-28 20:27:41 -06:00
feildmaster
b908c192bf Fix removing enchantments causing the enchantment tag to remain. 2012-12-27 20:48:56 -06:00
feildmaster
54b2707ba7 Fix discrepancies in NBT and ItemMeta. Fixes BUKKIT-3279
An ItemStack gains the tag name "tag" when the stack is serialized
to NBT, however items don't have a tag *until* they are serialized at
least once. So to solve this, we remove the tag name when loading the
NBT data.

Another problem with NBT are TagLists, when transferring tag lists
between the server and the client the names are lost, and so we
simply don't add a name to the tag.
2012-12-27 20:45:21 -06:00
feildmaster
f726d07f11 Fix Skull BlockState setting illegal values on owner. 2012-12-24 14:32:08 -06:00
feildmaster
8292b73f30 Fix fireworks being short lived. Fixes BUKKIT-3291 2012-12-23 17:06:26 -06:00
feildmaster
edd90ccf16 Properly update fireworks. Fixes BUKKIT-3289 2012-12-23 08:59:15 -06:00
feildmaster
ced0646351 Implement entity max health methods. Adds BUKKIT-266 2012-12-23 07:29:06 -06:00
feildmaster
4e1793f363 Report valid health when getting Entity health. Fixes BUKKIT-3210 2012-12-23 07:29:05 -06:00
Wesley Wolfe
ed6aab8200 Remove runner leak on async tasks. Fixes BUKKIT-3288
In some situations, an async task could be cancelled with no tasks
pending. This means the finally {} block from run() never gets executed
properly on the last async task to have run, as it expected to be
executed again.

This fix takes the only spot that the task period is set to cancelled
and will check to see if the task should be purged from the runners
list.
2012-12-23 05:13:33 -06:00
Travis Watkins
717fbbeffa Update firework power when modifying meta. Fixes BUKKIT-3272 2012-12-22 13:07:18 -06:00
feildmaster
dc85940526 Allow fireworks to be created. Adds BUKKIT-3262 2012-12-22 12:24:16 -06:00
feildmaster
2ee62eb580 Implement API to get and set FireworkMeta on Firework entities 2012-12-21 23:56:54 -06:00
meiskam
fdb4b2d911 Implement Skull BlockState. Adds BUKKIT-3259 2012-12-21 22:47:11 -06:00
Wesley Wolfe
78d384de93 Zero is not less than zero. Fixes BUKKIT-3259 2012-12-21 21:48:09 -06:00
feildmaster
ec211ed952 Update enchantment handling to 1.4.6. Fixes BUKKIT-3256 2012-12-21 19:31:28 -06:00
Wesley Wolfe
b870755edb Use max inventory size for new stack. Fixes BUKKIT-3240 2012-12-21 11:10:23 -06:00
Wesley Wolfe
708252c020 Implement 1.4.6 ItemMeta. Adds BUKKIT-3236, BUKKIT-3237
Some meta functionality is refactored into common methods.

CraftItemStack uses the ItemMetaKey identifiers for enchantments.

Refactored unit test to include extra functionality; initially only
checking the presence of the DelegateDeserialization annotation.
2012-12-21 10:36:34 -06:00
Wojciech Stryjewski
f377a7680f Add API to allow plugins to request players switch to a texture pack. Adds BUKKIT-2579
The setTexturePack method causes the player's client to
download and switch to a texture pack specified by a URL.

Note: Players can disable server textures on their client, in which
case this API would not affect them.
2012-12-20 22:09:38 -05:00
Travis Watkins
ca7f67da9d Fetch correct info for skulls in block.getDrops(). Fixes BUKKIT-3205 2012-12-20 15:06:01 -06:00
Mike Primm
ed2dd31a80 [Bleeding] Fix exception in getChunkSnapshot() - sky light can be null 2012-12-20 14:22:25 -06:00
feildmaster
23b6764374 Update CraftBukkit to Minecraft 1.4.6 2012-12-20 10:43:00 -06:00
feildmaster
d9708d032e Fix PotionMeta not applying the correct Id. Fixes BUKKIT-3193 2012-12-18 18:43:53 -06:00
feildmaster
d73e5ab469 Add missing name in PotionEffect for Wither 2012-12-18 18:20:11 -06:00
feildmaster
a2d551fafa Refactor get/setChestPlate to Chestplate. Addresses BUKKIT-3189 2012-12-18 03:46:58 -06:00
Wesley Wolfe
6cec8ba5cb Change enchantment comparisons to isSimilar. Fixes BUKKIT-3183
The purpose of the isSimilar method was designed to consider all NBT
data, not solely enchantments, without the need to have exact stack
size matches. The respective methods in CraftInventory were still
comparing enchantments instead of the ItemMeta.
2012-12-17 16:43:16 -06:00
Wesley Wolfe
d66d3674ea Clarify functionality in CraftInventory. Fixes BUKKIT-3097
Changes some NPEs to IllegalArgumentExceptions for exception consistency.

Contains(ItemStack, int) correctly calculates number of ItemStacks.

Adds a containsAtLeast(ItemStack, int) for finding a combined amount of a
single similar ItemStack.

Makes some utility methods private to prevent ambiguity in use.
2012-12-17 16:39:25 -06:00
Wesley Wolfe
78f48258d8 Implement ItemFactory and ItemMeta values. Adds BUKKIT-15 2012-12-17 01:31:41 -06:00
feildmaster
d20d4dc43a ItemStack.asBukkitStack(null) should return Air. Fixes BUKKIT-3170 2012-12-15 01:52:42 -06:00
deathmarine
53b064ec79 Fix EntityEquipment positions being reversed. Fixes BUKKIT-3157 2012-12-12 22:20:44 -06:00
Travis Watkins
24143ef6a1 Load chunks asynchronously for players.
When a player triggers a chunk load via walking around or teleporting there
is no need to stop everything and get this chunk on the main thread. The
client is used to having to wait some time for this chunk and the server
doesn't immediately do anything with it except send it to the player. At
the same time chunk loading is the last major source of file IO that still
runs on the main thread.

These two facts make it possible to offload chunks loaded for this reason
to another thread. However, not all parts of chunk loading can happen off
the main thread. For this we use the new AsynchronousExecutor system to
split chunk loading in to three pieces. The first is loading data from
disk, decompressing it, and parsing it in to an NBT structure.  The second
piece is creating entities and tile entities in the chunk and adding them
to the world, this is still done on the main thread. The third piece is
informing everyone who requested a chunk load that the load is finished.
For this we register callbacks and then run them on the main thread once
the previous two stages are finished.

There are still cases where a chunk is needed immediately and these will
still trigger chunk loading entirely on the main thread. The most obvious
case is plugins using the API to request a chunk load. We also must load
the chunk immediately when something in the world tries to access it. In
these cases we ignore any possibly pending or in progress chunk loading
that is happening asynchronously as we will have the chunk loaded by the
time they are finished.

The hope is that overall this system will result in less CPU time and
pauses due to blocking file IO on the main thread thus giving more
consistent performance. Testing so far has shown that this also speeds up
chunk loading client side although some of this is likely to be because
we are sending less chunks at once for the client to process.

Thanks for @ammaraskar for help with the implementation of this feature.
2012-12-12 19:35:53 -06:00
Wesley Wolfe
29d7cc711b 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.
2012-12-12 04:05:47 -06:00
feildmaster
3692209fe6 Missed a rename 2012-12-10 19:17:47 -06:00
feildmaster
430d352a5a Add EntityEquipment API. Adds BUKKIT-3103
Adds:
- Getting/Setting equipment
- getting/setting drop rates
- getting/setting ability to pick up items
-- As an added feature, players with this flag start off with a canceled PlayerPickupItemEvent
2012-12-10 19:01:50 -06:00
h31ix
684ba31c39 [Bleeding] Correct getEyeHeight value. Fixes BUKKIT-3130 2012-12-10 01:41:00 -06:00
feildmaster
22b1100001 Only display help aliases when there are aliases. Fixes BUKKIT-1621 2012-12-10 01:40:22 -06:00
feildmaster
dc93da8e34 Pass null help values values as empty strings to HelpTopics
Fixes BUKKIT-2618 and BUKKIT-2561
2012-12-10 01:40:21 -06:00
EdGruberman
f18b3cdc76 [Bleeding] Fix NPE with a null bedSpawnLocation. Fixes BUKKIT-1500 2012-12-10 01:40:20 -06:00
EdGruberman
24abdd556d [Bleeding] Fix NPE in getBedSpawnLocation. Fixes BUKKIT-1949 2012-12-08 02:18:06 -06:00
Dark Arc
090c1a60bd Correctly shoot arrows with the spawnArrow Method. Fixes BUKKIT-3116 2012-12-08 02:15:15 -06:00
Travis Watkins
846a22304c Provide a faster way to get a location. Adds BUKKIT-3120
Currently when a plugin wants to get the location of something it calls
getLocation() which returns a new Location object. In some scenarios this
can cause enough object creation/destruction churn to be a significant
overhead. For this cases we add a method that updates a provided Location
object so there is no object creation done. This allows well written code
to work on several locations with only a single Location object getting
created.

Providing a more efficient way to set a location was also looked at but
the current solution is the fastest we can provide. You are not required
to create a new Location object every time you want to set something's
location so, with proper design, you can set locations with only a single
Location object being created.
2012-12-07 21:15:05 -06:00
feildmaster
c74fd4196f Use shooter constructor for Fireballs. Fixes BUKKIT-3121
Fixes fireballs exploding in the shooter's face and not having a shooter for the projectile. (Two birds with one stone!)
2012-12-07 05:25:20 -06:00
feildmaster
78bc0ad1d5 Add the ability to launch WitherSkulls. Fixes BUKKIT-3106 2012-12-07 05:25:11 -06:00
feildmaster
6a04fd98ad Implement API for wolves collar color. Adds BUKKIT-3109 2012-12-05 18:08:31 -06:00
feildmaster
fb6d9e1808 Add a custom shutdown message set in bukkit.yml. Addresses BUKKIT-3031 2012-12-05 06:07:10 -06:00
Travis Watkins
320712aba7 Allow placing blocks in spawn if ops.txt is empty. Fixes BUKKIT-3004 2012-12-05 05:01:15 -06:00
Wesley Wolfe
b854320fc8 Fire EntityFormBlockEvent for FallingBlocks. Adds BUKKIT-3078 2012-12-04 22:38:51 -06:00
Travis Watkins
4dadf0e2b5 Implement API for mob despawn when away from players. Adds BUKKIT-2986
As of 1.4 mobs have a flag to determine if they despawn when away from a
player or not. Unfortunately animals still use their own system to prevent
despawning instead of making use of this flag. This change modifies them
to use the new system (defaults to true) and to add API for plugins to adjust
this.
2012-12-04 20:10:23 -06:00
feildmaster
c596093c31 [BREAKING] Update BlockFace directions. Fixes BUKKIT-1567, BUKKIT-3069
The answer is 42
2012-12-01 01:14:25 -06:00
Wesley Wolfe
1a6a828156 Add data values to EntityChangeBlockEvent. Adds BUKKIT-3077, BUKKIT-3076
This change affects Endermen and Silverfish, adding a data value for the block change event.
2012-11-30 11:59:29 -06:00
feildmaster
71b0510f88 Fix teleporting entities with vehicles/passengers teleporting you illegally. Fixes BUKKIT-2821
Also some formatting...
2012-11-20 19:41:56 -05:00
Wesley Wolfe
d039986be7 No teleporting people back into the server. Fixes BUKKIT-2298
Stale player references will add a player back into the world when
teleporting them, causing a cascade of issues relating to ghost entities
and servers failing to stop.
2012-11-19 21:38:31 -06:00
Travis Watkins
58636c2dd8 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.
2012-11-18 10:51:52 -06:00
Karl Fritsche
028860399b Implement sound changes for Minecraft 1.4.2 changes. Fixes BUKKIT-2849 2012-11-17 15:06:18 -06:00
EdGruberman
293474d99b [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.
2012-11-17 15:06:18 -06:00
Travis Watkins
20c074ec6c Don't show a player on map if they're vanished. Fixes BUKKIT-1882 2012-11-17 15:06:06 -06:00
James Clarke
bd0868ae1e Implement API for Skeleton and Zombie types. Fixes BUKKIT-2818 2012-11-17 15:00:14 -06:00
Travis Watkins
dca54ff187 Fire BlockSpreadEvent for vine growth. Fixes BUKKIT-1097 2012-11-17 15:00:14 -06:00
Travis Watkins
df69ea8814 Rework skull dropping. Fixes BUKKIT-2930 and BUKKIT-2820
Skulls need their tile entity in order to create an item correctly when
broken unlike every other block. Instead of sprinkling special cases all
over the code just override dropNaturally for skulls to read from their
tile entity and make sure everything that wants to drop them calls this
method before removing the block. There is only one case where this wasn't
already true so we end up with much less special casing.
2012-11-14 20:14:47 -06:00
Wesley Wolfe
092800af26 Fixed some async tasks running synchronously. Fixes BUKKIT-2934
Additionally refactored cancel method to be more object-oriented.
2012-11-14 16:47:21 -06:00
Travis Watkins
7f7192f8fd Update CraftBukkit to Minecraft 1.4.4. 2012-11-13 16:09:52 -06:00
md_5
53d24e2b22 [Bleeding] Fix mistranslation affecting time of the server vs time of day.
Fixes BUKKIT-2797
2012-11-02 16:36:43 -04:00
Travis Watkins
87d25c4cc6 Fix compile issue with chunk generation. 2012-11-02 00:12:49 -05:00
feildmaster
a4892dfa72 Delegate recreateStructures to nms provider. Fixes BUKKIT-2760
This was a miss when updating to 1.4.2
2012-11-01 21:32:28 -05:00
Wesley Wolfe
1c14586c49 Add CraftArt mappings for Wither. Fixes BUKKIT-2667.
The static assertions are not normally evaluated in the JVM, and failed
to fail when the enums went from size 25 to size 26. This meant missing
values would not be detected at runtime and instead return null,
compounding problems later. The switches should never evaluate to null
so will instead throw runtime assertion errors.

Additional unit tests were added to detect new paintings and assure they
have proper, unique mappings. The test checks both that a mapping
exists, is not null, and does not duplicate another mapping.
2012-11-01 03:06:47 -05:00
Wesley Wolfe
9a88e615d4 Change ItemFrame to actually provide a defensive copy. Fixes BUKKIT-2784
If a defensive copy is not used in the API, changes to the item are
reflected in memory, but never updated to the client. It also goes
against the general contract provided in Bukkit, where setItem should be
the only way to change the underlying item frame.
2012-11-01 01:34:54 -05:00
Travis Watkins
87a1cd3d43 Add inventory and slot types for new containers. Fixes BUKKIT-2741 2012-10-31 13:25:53 -04:00
Travis Watkins
f479aa84a4 Implement API for ambient mob spawn limit. Add spawn-limit.ambient to
bukkit.yml. Adds BUKKIT-2765
2012-10-31 13:01:48 -04:00
Travis Watkins
46d7cd1e05 Use BlockCommandSender for dispatching Command block commands
Also allow commands that don't start with a / to match vanilla behavior
2012-10-31 06:37:46 -05:00
feildmaster
9e4e2c62af Expose API for managing and using GameRules. Adds BUKKIT-2757 2012-10-31 03:40:43 -04:00
h31ix
63eaf74d44 Implement the API for ItemFrames. Adds BUKKIT-2668 2012-10-31 01:18:59 -05:00
EvilSeph
6bf705dd08 Expose API for clearing a player's inventory with a successful count
return. Adds BUKKIT-2745
2012-10-30 04:55:02 -04:00
EvilSeph
3047a424bb Expose API for giving and taking experience levels for use with ExpCommand's new behaviour with Minecraft 1.4. Adds BUKKIT-2739 2012-10-29 23:18:37 -04:00
feildmaster
aba7e2faf1 Revert changing EntityType.FIREBALL to LARGE_FIREBALL 2012-10-29 20:17:52 -05:00
Travis Watkins
216cddb2ab Get skull data before destroying block. Fixes BUKKIT-2723
Skull blocks store their type in a tile entity and use their block data
as rotation. When breaking a block the block data is used for determining
what item to drop. Simply changing this to use the skull method for getting
their drop data is not enough because their tile entity is already gone.
Therefore we have to special case skulls to get the correct data _and_ get
that data before breaking the block.
2012-10-29 12:54:16 -05:00
EvilSeph
f4cdf8fe98 Add isHardcore API to check if the server is in hardcore mode or not. Adds BUKKIT-2707 2012-10-29 01:46:14 -04:00
Travis Watkins
d97d193b91 Add new entities to World.spawn method. Fixes BUKKIT-2658 2012-10-28 02:21:34 -05:00
EvilSeph
784f9e31a8 Remove spawn-radius setting in bukkit.yml in favour of spawn-protection in
server.properties. Fixes BUKKIT-2657
2012-10-28 01:55:27 -04:00
Travis Watkins
60819c6693 Update CraftBukkit to Minecraft 1.4(.2). 2012-10-27 22:19:03 -04:00
Wesley Wolfe
4166af1d3a 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.
2012-10-17 04:31:36 -05:00
Score_Under
3ce954bb86 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.
2012-10-15 03:18:59 -05:00
Wesley Wolfe
05e889f346 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.
2012-10-14 17:26:53 -05:00
Wesley Wolfe
93a79cd0e6 Implement new scheduler API. Adds BUKKIT-836
The implementation for the new methods mimics the old methods. The final
call for the old methods now maps to the new methods with an additional
call to get id.
2012-10-14 01:21:58 -05:00
Travis Watkins
506a1a0765 Ensure entity isn't destroyed when trying to show it. Fixes BUKKIT-2038
If two players (or a player and any other entity) are teleported to the
same location in the same tick they will both get added to the other's
destroy queue then have a new entity spawn packet sent. Next tick the
destroy queue will be processed and they will then be invisible to each
other. To prevent this situation we remove the entity from the destroy
queue when sending out a spawn packet for them.
2012-10-13 15:27:45 -05:00
Travis Watkins
b5580b6d95 Remove player from destroy queue when they go visible. Fixes BUKKIT-2071
If a plugin calls player.hidePlayer(other); then player.showPlayer(other);
in the same tick the other player will be added to the entity destroy queue
then a spawn packet will be sent. On the next tick the queue will be
processed and a destroy packet will be sent that renders the other player
invisible. To correct this we ensure the destroy queue is in sync with use
of the vanish API.
2012-09-28 14:53:28 -05:00
Wesley Wolfe
fc0e35a67c Fix typo causing a task to be repeated in debug. Addresses BUKKIT-2549
An internal method for making the debug output for CraftScheduler's
async tasks was erroneously using the 'this' reference when the loop
should be referencing the current task.
2012-09-28 02:39:22 -05:00
Wesley Wolfe
03f12497b2 Map org.bukkit.Sound to String values for sending to client.
This change was done to remove the internal sound names from the API.
Along with moving the internal names into CraftBukkit, a unit test was
added for any new sounds added in the API to assure they have a non-null
mapping.
2012-09-26 19:02:05 -04:00
Travis Watkins
74b3be57b7 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.
2012-09-21 11:20:10 -05:00
Mike Primm
beee3ce2da [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.
2012-09-12 22:05:52 -04:00
Wesley Wolfe
e2b1514daf Bulk pending cleanup. 2012-09-09 23:19:28 -05:00
Luke Granger-Brown
b1f6d16bfa Change local jline checks to not use String literals. Fixes BUKKIT-2455.
Refactoring dependencies 'changes' the string literal in the code. This
commit changes the literal to instead use a char[] to initialize a new
String. On a bytecode level, there will not exist a String literal for these
two values; the shade plugin will no longer refactor them.

Refactoring jline also changes the other String literals we use for
notifying jline of the current state. To insure that our local code reflects
the inner logic in jline, the key value was changed to the static final
variable located in TerminalFactory. Likewise, UnsupportedTerminal uses the
explicit class name (as reflection is used later with the value that has
been set).
2012-09-09 17:02:48 -05:00
Wesley Wolfe
27d58a299c Add information about async tasks to CrashReports. Addresses BUKKIT-2491
Async tasks are notorious for causing CMEs and corrupted data when
accessing the API. This change makes a linked list to track recent tasks
that may no longer be running. It is accessed via the toString method on
the scheduler. This behavior is not guaranteed, but it is accessible as
such currently.

Although toString is located in the scheduler, its contract does not
guarantee an accurate or up to date call when accessed from a second
thread.
2012-09-09 00:34:41 -05:00
Wesley Wolfe
4d5894e4cb 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.
2012-09-06 22:11:17 -05:00
Wesley Wolfe
3307d489da Fix Future task waiting logic. Fixes BUKKIT-2408
Previously, the timeout would erroneously get converted to milliseconds
twice. The second conversion was removed.

Spurious wakeups were not handled properly, and would instead throw a
TimeoutException even if the waited time was not reached..
2012-08-26 10:25:11 -05:00
Wesley Wolfe
dcd01bf0c0 Rewrite scheduler. Fixes BUKKIT-1831, and BUKKIT-845
The new scheduler uses a non-blocking methodology. Combining volatile
references to make a linked reference chain, with the atomic reference
handling the tail, tasks are queued without waiting for locks. The main
thread will no longer limit the length of time spend for scheduled tasks,
but no task will run twice in the same tick. Scheduling a new task inside of
a synchronous task will always run the new task during the same tick,
assuming there is no supplied delay > 0.

Asynchronous tasks are now run using a thread pool. Any thread-local
implemenation should now account for threads being reused between
executions.

Race conditions were carefully examined and the order of logic is now very
important. Each task is placed in a secondary collection before removal from
primary collections. Thus, by reading tasks from the collections in the same
order they travel, it retains state-safety. This does make modifications
less responsive in some situations, as the task may be transitioning before
the modifier accesses it. This cost outweighs the requirement to synchronize
on the scheduler; previously any conflict would be first-come-first-serve,
with the main thread backing out arbitrarily.
2012-08-22 16:41:46 -05:00
V10lator
e3ae188ed2 Fix instances where Signs have null lines. Addresses BUKKIT-684 2012-08-21 20:17:29 -05:00
EdGruberman
450edc3004 Use standard format function to format logs. Addresses BUKKIT-2246
Also fix "excess" Log Levels.
2012-08-21 19:17:29 -05:00
feildmaster
161ab5edc6 Implement API for Sound, and playing the sounds for Worlds and Players. Adds BUKKIT-1430, BUKKIT-1226 and BUKKIT-2019 2012-08-21 19:13:19 -05:00
Travis Watkins
ccc760d629 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.
2012-08-20 18:44:07 -05:00
feildmaster
e7e643d83a Implement API to retrieve and open EnderChests. Adds BUKKIT-2016 2012-08-20 16:00:53 -05:00
Mike Primm
627cf2ef8b [Bleeding] Remove redundant chunkList from ChunkProviderServer
This ArrayList duplicates part of the functionality of the much more
efficient chunk map so can be removed as the map can be used in the few
places this was needed.
2012-08-19 09:51:00 -05:00
Travis Watkins
97ac0a3f14 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.
2012-08-19 09:51:00 -05:00
Travis Watkins
858d36efc9 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.
2012-08-19 09:50:57 -05:00
Mike Primm
5254993510 Fix issues with chunk saving. Fixes BUKKIT-2158, BUKKIT-2018 and BUKKIT-2229 2012-08-19 08:36:47 -04:00
Wesley Wolfe
cacfc71b46 Add more detailed CrashReport for CraftBukkit. Addresses BUKKIT-2319 2012-08-17 23:18:22 -05:00
feildmaster
fc35d000e4 Use correct SlotType's for merchants. Fixes BUKKIT-2257 2012-08-15 06:00:55 -05:00
feildmaster
b059962a5c Implement methods for spawning FallingBlocks and add various FallingBlock methods. Adds BUKKIT-2282 2012-08-14 07:38:23 -05:00
feildmaster
aa92f0e313 Update CreatureSpawner.setSpawnedType(EntityType) to 1.3
They can spawn any valid entities now. What is a "valid" entity? A "valid" entity is an EntityType with a non-null getName(). (for example: PRIMED_TNT, FALLING_BLOCK)
2012-08-12 14:11:36 -05:00
Wesley Wolfe
342f9c3bd3 Implement player speed API. Addresses BUKKIT-2205 2012-08-10 00:00:04 -05:00
Wesley Wolfe
2bb7a5f94d Implement new deprecated warning state configuration option 2012-08-06 23:52:49 -05:00
Travis Watkins
a574ec54cc Put forceChunkLoad back to its original value. 2012-08-05 20:03:12 -05:00
Wesley Wolfe
02d6703da7 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.
2012-08-03 23:44:45 -05:00
Mike Primm
c711827e94 Fix mapping of ChunkSection nibble data to snapshot. Fixes BUKKIT-1977 2012-08-02 21:45:54 -05:00
Luke Granger-Brown
35a3d701a9 Add trailing / to BukkitDL URLs. Fixes BUKKIT-2015.
Also adds CraftBukkit version number to user agent when communicating with
BukkitDL.
2012-08-02 21:38:32 -05:00
feildmaster
a43d621c01 Update CraftBukkit to Minecraft 1.3.1 2012-08-02 04:58:50 -05:00
feildmaster
46125dc6cf Implement getExpToLevel method. Fixes BUKKIT-1906 2012-07-11 17:14:07 -05:00
Mike Primm
08740d7f91 [Bleeding] Include chunk biome data for refresh chunk. Fixes BUKKIT-1166 2012-07-08 19:11:51 -05:00
feildmaster
dba9349ed4 Factor invulnerableTicks into getNoDamageTicks. Fixes BUKKIT-1324 2012-07-04 15:12:29 -05:00
feildmaster
d7272f42ef Implement getMotd, and reload the motd. Adds BUKKIT-1799 2012-07-03 18:00:37 -05:00
feildmaster
00efc8c464 Apply setLastDamageCause after processing events and the event has not been canceled. Fixes BUKKIT-1881
This allows previous causes to be available during the event, as well as making the damage cause a valid one. If EntityDamageEvent is canceled, then it's not the last DamageCause.

Also prevents setting DamageCause involuntarily through construction.
2012-07-02 22:22:03 -05:00
feildmaster
e4e994f710 Treat ComplexParts as proxies for setLastDamageCause. Fixes BUKKIT-1821 2012-07-02 22:22:03 -05:00
feildmaster
0a0d5ebf20 Clean entity.damage functions. Fixes BUKKIT-1822 2012-07-02 22:22:03 -05:00
Wesley Wolfe
ff09ff07f9 Fix deprecated spawnCreature. Fixes BUKKIT-1880 2012-07-02 15:36:49 -05:00
Travis Watkins
a21f038fc3 Mark entities as invalid when they get despawned. Addresses BUKKIT-810 2012-06-28 19:34:31 -05:00
TomyLobo
412b7eaa12 Implement LivingEntity.hasLineOfSight. Addresses BUKKIT-1255 2012-06-23 10:48:08 -05:00
V10lator
ea4d3662be Deprecate spawnCreature and add spawnEntity. Addresses BUKKIT-1168 2012-06-23 10:18:50 -05:00
feildmaster
568fae2e86 Trigger EntityBlockChangeEvent for Silverfish. Adds BUKKIT-1560 and BUKKIT-1593 2012-06-23 06:42:08 -05:00
Wesley Wolfe
57763845d0 Implement plugin channel events. Addresses BUKKIT-1844 2012-06-21 02:39:59 -05:00
Travis Ralston
9f37f70527 Fire PlayerItemBreakEvent. Addresses BUKKIT-1600 2012-06-21 01:10:30 -05:00
Ammar Askar
8bc42ba8c9 Clear animal owner when untamed. Fixes BUKKIT-1482 2012-06-20 12:45:17 -05:00
H31IX
0095add08c Add query-plugins setting. Addresses BUKKIT-1781 2012-06-20 12:40:12 -05:00
Jeff Wardian
ae98a6f051 Changes '/whitelist list' to ignore comments. Addresses BUKKIT-1804 2012-06-14 23:33:21 -05:00
Jeff Wardian
ae94a3308d Preserve whitelist ordering. Addresses BUKKIT-1805 2012-06-14 23:33:13 -05:00
obnoxint
e35f6f2526 Fire NotePlayEvent. Fixes BUKKIT-1779 2012-06-14 20:58:57 -05:00
Wesley Wolfe
ed6d4c7759 Support asynchronous events; Addresses BUKKIT-1212 2012-06-13 23:00:46 -05:00
Wesley Wolfe
478654351a Check world before checking distance. Fixes BUKKIT-1792 2012-06-12 16:37:47 -04:00
feildmaster
f15785669a Launch fireballs at eye location. Fixes BUKKIT-1155 2012-06-03 05:34:58 -05:00
Travis Watkins
13fcb9e371 Make log-strip-color a simple flag instead of a boolean. 2012-06-02 14:43:38 -05:00
Travis Watkins
70c91c161e Resize UnsafeList to initial capacity when cleared and implement clone. 2012-06-01 13:03:59 -05:00
Wesley Wolfe
266212f9f8 Fix bold states while printing; Fixes BUKKIT-1716 2012-05-26 15:32:38 -05:00
Wesley Wolfe
25cfdfa05e Change mapping of Gold from yellow bold to yellow; Addresses BUKKIT-1717 2012-05-26 15:27:55 -05:00
Wesley Wolfe
5d3c8bfaa4 Removed AnimalTamer cache, fixes BUKKIT-1628 2012-05-24 23:02:02 -05:00
Wesley Wolfe
c43012ef1c Fixed broken hashCode() 2012-05-24 23:01:33 -05:00
Travis Watkins
c1bc0df718 Add in checks for potential NPEs. Fixes BUKKIT-1706 and BUKKIT-1590. 2012-05-24 19:12:56 -05:00
Score_Under
0f984dd9a5 Re-implement World.getTemperature and World.getHumidity 2012-05-23 04:02:15 -05:00
Travis Watkins
3ee75ab6d3 Replace TextWrapper with simple newline splitting. Fixes BUKKIT-1662
TextWrapper used to try to ensure a message would wrap correctly on the
client by counting the width of the characters in pixels and wrapping
before hitting that limit. This was needed because the client would lose
color information when wrapping and could not handle long lines of text.

Now that both of these problems are solved in the client we can replace
TextWrapper with simple code to split the message into multiple packets on
newlines and ensure chat colors carry across to the new packet.
2012-05-16 23:47:14 -05:00
feildmaster
1d361c2f48 Fix block place protection using a larger radius. Fixes BUKKIT-1617 2012-05-16 18:43:44 -05:00
Travis Watkins
4c8f6f2caa Add option to strip color codes from server.log file 2012-05-16 13:21:23 -05:00
EdGruberman
31d488a386 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.
2012-05-15 23:27:51 -05:00
feildmaster
2f976705be Revert "Fix potential NPE in vanish API. Fixes BUKKIT-1541"
This reverts commit ebf121800bd3161e4af0f6d9229ccb39c31fc278.

If the handle ever becomes null we need to know about it so we can debug it further.
2012-04-27 12:48:40 -05:00
feildmaster
99aeb32d0d Remove Player cache and edit CraftPlayer.equals to account for EntityID. Fixes BUKKIT-1541 and Addresses BUKKIT-761 2012-04-27 12:33:40 -05:00
Travis Watkins
73ae279e8d Update players when potion effects are moved from them. Fixes BUKKIT-789 2012-04-24 21:58:35 -04:00
Travis Watkins
9c12dc0ef8 Fix potential NPE in vanish API. Fixes BUKKIT-1541 2012-04-24 21:57:54 -04:00
feildmaster
0220c1ff74 Remove legacy Chunk cache. Fixes BUKKIT-1400 2012-04-24 15:06:11 -05:00
EvilSeph
e61a316815 We build for Java 1.5. 2012-04-23 23:05:57 -04:00
Travis Watkins
edfc8ba92f Add per-world spawn limits with fallback to server-wide bukkit.yml settings.
Fixes BUKKIT-1565
2012-04-23 22:54:43 -04:00
Travis Watkins
b7376e0865 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.
2012-04-23 21:52:08 -04:00
Wesley Wolfe
2e646d2809 Made permissions.yml registration easier; Addresses BUKKIT-1499
The permissions.yml now behaves similar to a plugin.yml
2012-04-15 13:24:38 -05:00
feildmaster
748ebae550 Properly call EntityDeathEvent for mobs. Fixes BUKKIT-1519 2012-04-15 09:16:43 -05:00
feildmaster
1dcb39074d Persist PlayerDeathEvent values. Fixes BUKKIT-1521 2012-04-14 00:30:39 -05:00
feildmaster
52d9473e6b SpawnRadius should only apply to main world. Fixes BUKKIT-1427 2012-04-02 16:40:45 -05:00
feildmaster
a963880bd8 Add BlockRedstoneEvent to Redstone Lamps, Addresses BUKKIT-1431 2012-04-02 14:11:02 -05:00
feildmaster
058bd748b6 Fixed interacting with Air returning a false block. 2012-04-01 05:10:31 -05:00
feildmaster
c8d4a7c835 Fixed breaking at world height in creative. Fixes BUKKIT-997 2012-03-31 19:21:29 -05:00
Warren Loo
c100e20d60 Reverting the Drop API for now, we need to re-evalute this as it is causing too many issues and blocking releases.
This reverts commits:
- d2d03afc8854394aeefb40ea5ebf224c8032b19f
- 6245746e91123dd8ef70e5f15b7cdfc7e36d8e8c
- 41fae5c613e9e69a8f6bdf33b23bb09d7f407433
- c34bdecab42cf4098054a5ea43e1c2958d44ae92
- d7445084ac9a90fa0b66d8b050b8d0d2a062eaf3
- 6a6ed2e6ae2328a8a791bcc6857c44dc6c6a7030
- a783bc4dc95da8e26c673abe48fad96b550aba28
- cb50fd68766df8e07631ba5be85759f8257e8068
- 34dfff2ad5c407c712b2783f02960aac5e8649f2
- f33b513820de987b49a4338e85df80968217a601
- 5fd9fdfde055e6eb6a83db246d009b69377b7c94
- 2795b116f40d06551fbb7b96d1963c0ddbeac384
2012-03-27 20:04:26 -04:00
feildmaster
c16bf07e85 [Bleeding] Allow CraftItem to be backed by non-EntityItems. Fixes BUKKIT-1351 2012-03-26 16:36:31 -04:00
feildmaster
9d0ea52021 [Bleeding] Fixed potions throwing double events. Fixes BUKKIT-1332 2012-03-26 16:05:38 -04:00
feildmaster
80db22b643 Refactor code to be more efficient. 2012-03-25 19:46:55 -04:00
feildmaster
c30e339af6 [Bleeding] Fixed item duping in certain occasions. Fixes BUKKIT-1310 2012-03-25 18:57:27 -04:00
feildmaster
9c7ffb6d3c [Bleeding] Fixed blocks dropping when BlockBreakEvent is canceled. Fixes BUKKIT-1299 2012-03-23 14:51:05 -04:00
Nathan Adams
942c1c6a3e Fixed incorrect assigning to isFlying when toggling setAllowedFlight(false) 2012-03-23 14:41:53 +00:00
feildmaster
40e0962735 Seriously fix natural drops. Fixes BUKKIT-1297 and fixes BUKKIT-1295 2012-03-23 07:18:20 -04:00
EvilSeph
ff22e4e341 Really fixed Block.breakNaturally(). Fixes BUKKIT-1295 2012-03-23 03:21:20 -04:00
EvilSeph
b60a6743ed Fixed Block.breakNaturally(). Fixes BUKKIT-1295 2012-03-23 02:37:38 -04:00
feildmaster
52ecd60e61 [Bleeding] Add a check for illegal blocks. Addresses BUKKIT-1278. Needs more investigation. 2012-03-22 21:04:06 -04:00
EvilSeph
724b82626a Reverted to original TextWrapper. Might re-investigate after the RB. Fixes BUKKIT-1275 2012-03-22 19:22:35 -04:00
Nathan Adams
904cf388b4 Re-added TextWrapper, and fixed chat length issues (at cost of it looking not so nice sometimes!) This fixes BUKKIT-1275 2012-03-22 23:03:02 +00:00
Nathan Adams
8fb141bfa0 Implemented new player flight methods. This implements BUKKIT-1281. This also fixes BUKKIT-1146. 2012-03-22 22:04:13 +00:00
EvilSeph
c2cdeac09b Added configurable Connection Throttle. Addresses BUKKIT-1274 2012-03-22 16:56:15 -04:00
Nathan Adams
dda37aa18c Nuked TextWrapper. We don't need you anymore, old friend :( 2012-03-22 20:49:05 +00:00
Nathan Adams
9d09e7d016 Updated to Minecraft version 1.2.4. Updated version string to 1.2.4-R0.1. 2012-03-22 20:39:39 +00:00
rmichela
0a925ff067 [Bleeding] Added support for custom index help topics in help.yml. Addresses BUKKIT-1263 2012-03-22 00:50:10 -04:00
rmichela
eb3c092ef8 [Bleeding] Added option to completely disable all automatic help topic generation by adding "All" to the ignore-plugins list in help.yml. Addresses BUKKIT-1264 2012-03-22 00:50:09 -04:00
zml2008
31b1bc02ca [Bleeding] Fixed a StackOverflowError with command alias handling for Help. Addresses BUKKIT-1253 2012-03-22 00:50:09 -04:00
zml2008
8aee4c3f56 [Bleeding] Added support for all TreeType entries to CraftWorld.generateTree(). Addresses BUKKIT-1161 2012-03-21 20:32:17 -04:00
aPunch
169c2ee8cb [Bleeding] Added Ageable interface for Villagers and Animals to extend. Addresses BUKKIT-1232 2012-03-21 16:05:07 -04:00
Celtic Minstrel
5ba8928041 [Bleeding] Added getting and setting drops to all appropriate events. Fixes BUKKIT-397 and fixes BUKKIT-1252
- Allows drops in creative mode by adding items to the getDrops() list
- Contents of containers are not reported
- Contents of storage minecarts are not reported
2012-03-21 12:42:51 -04:00
Celtic Minstrel
784aa3b602 [Bleeding] Fix the openInventory methods for custom inventories. Fixes BUKKIT-1248
Details:
- The attributes of custom inventory views are no longer ignored
- Enchanting or crafting inventories no longer ignore the passed inventory and open a new one
- Inventories associated with tile entities no longer raise a class cast exception if there was no associated tile entity
- InventoryOpenEvent and InventoryCloseEvent (if they already had some other inventory open) now fire in all cases
- If for any reason the inventory failed to open, the method now returns null instead of returned the previous inventory they had open (or the default inventory, if none)
2012-03-20 21:31:42 -04:00
Celtic Minstrel
93732e21bc [Bleeding] Fixed NullPointerException in InventoryView.setCursor() if you tried to empty the cursor by setting it to null. Fixes BUKKIT-1043 2012-03-20 20:45:26 -04:00
Celtic Minstrel
288662bfae [Bleeding] Fix some return types that could lead to ArrayStoreException 2012-03-20 20:43:12 -04:00
Celtic Minstrel
4bcbe2d235 [Bleeding] Add Chest.getBlockInventory() for convenience; this always returns a single chest inventory. Addresses BUKKIT-1247 2012-03-20 19:41:35 -04:00
Celtic Minstrel
cd9779196b [Bleeding] Add iterator() with starting index. Addresses BUKKIT-1246 2012-03-20 19:40:44 -04:00
aPunch
ea60181a87 [Bleeding] Added way to get/set if Iron Golem was player created. Addresses BUKKIT-1229 2012-03-20 05:13:36 -04:00
Wesley Wolfe
68b98d4c8f [Bleeding] Implement ExpBottleEvent; Addresses BUKKIT-888 2012-03-20 03:24:57 -04:00
Celtic Minstrel
71a51b024b Reverted invalid clone. Fixes BUKKIT-1198 2012-03-16 17:10:42 -04:00
rmichela
82fab5b2d5 [Bleeding] Moved HelpTopicComparator to Bukkit.jar. Addresses BUKKIT-1193 2012-03-16 03:49:36 -04:00
rmichela
4589e943f6 [Bleeding] Added support for color codes in help.yml. Addresses BUKKIT-1191 2012-03-16 03:12:48 -04:00
rmichela
46429c6cb9 [Bleeding] Implemented the command-topics-in-master-index option in help.yml. Addresses BUKKIT-1189
When false, help topics that start with a slash are omitted from the mater index.
2012-03-16 03:10:25 -04:00
rmichela
f87e053c66 [Bleeding] Added automatically generated plugin-level sub-indexes to the master help index. Addresses BUKKIT-1180 2012-03-16 02:48:19 -04:00
rmichela
184faf1f29 [Bleeding] Added option to remove entire plugins from the help index using the help.yml file. Addresses BUKKIT-1178 2012-03-16 02:44:05 -04:00
Celtic Minstrel
241cf1c664 [Bleeding] Allow custom inventory views to change their type to BREWING or ENCHANTING, and also allow them to change their title and size. Fixes BUKKIT-1190 2012-03-15 23:54:00 -04:00
Celtic Minstrel
5c8fd4995f [Bleeding] Implemented Inventory.{get,set}MaxStackSize(). Addresses BUKKIT-1076
- Custom inventories also respect this setting now.
2012-03-15 22:44:10 -04:00
Celtic Minstrel
66e067f373 [Bleeding] Make InventoryView.setItem(-999, item) drop the item on the ground by default. 2012-03-15 22:26:27 -04:00
Celtic Minstrel
83265005f6 [Bleeding] Made ItemStack constructors not default to an amount of 0. Fixes BUKKIT-610 2012-03-15 22:17:09 -04:00
Celtic Minstrel
76cc488402 [Bleeding] DoubleChestInventory.getHolder() no longer returns null. Addresses BUKKIT-995 2012-03-15 22:13:46 -04:00
Celtic Minstrel
f27427ad19 Fix some improper item cloning instances that would have dropped enchantments 2012-03-15 21:47:37 -04:00
Wesley Wolfe
77ceb0002c Fix losing enchants from stacked items in custom inventories 2012-03-15 21:47:29 -04:00
Celtic Minstrel
92f771a022 [Bleeding] Implemented ProjectileLaunchEvent. Addresses BUKKIT-284 2012-03-15 07:18:59 -04:00
md_5
c90a7a52e7 [Bleeding] Fixed maxStack being incorrectly set to 0 in custom craft inventories. Fixes BUKKIT-1181 2012-03-15 05:30:44 -04:00
feildmaster
4503167283 Fixed EntityDamageByEntityEvent to call for every attackable entity. Fixes BUKKIT-1129, Fixes BUKKIT-1054 and Fixes BUKKIT-147. 2012-03-15 05:11:48 -04:00
zml2008
868eaf571c [Bleeding] Call a LAVA BlockIgniteEvent in another place in BlockStationary. Fixes BUKKIT-970
Also adds CraftEventFactory.callEvent(Event), which returns the event called. Currently only used for n.m.s.BlockStationary's lava
BlockIgniteEvent calls.
2012-03-15 00:33:55 -04:00
Celtic Minstrel
f219f0efe9 Implemented Enchantment.conflictsWith(). Addresses BUKKIT-1159 2012-03-13 22:23:33 -04:00
Celtic Minstrel
28c1f571d2 [Bleeding] Added Player.isBlocking(). Addresses BUKKIT-858 2012-03-13 19:43:07 -04:00
feildmaster
06b814fd7e [Bleeding] Added EntityBreakDoorEvent. Fixes BUKKIT-1134 2012-03-11 16:31:11 -04:00
rmichela
8ddd2f0566 [Bleeding] Help index now identifies itself as "Help: Index" rather than "Help: null" 2012-03-11 03:49:27 -04:00
EvilSeph
c84af98ccd Made World.refreshChunk() refresh the chunk, thanks zerg960! Fixes BUKKIT-1014 2012-03-11 03:38:29 -04:00
feildmaster
4545336fdf Only remove blocks when golem is successfully spawned. Fixes BUKKIT-1094 2012-03-11 01:30:16 -05:00
Kevin Ingersoll
49ff166d15 Fixed potential packet loss issue with vanish API. Fixes BUKKIT-1125 2012-03-10 23:19:15 -05:00
Mike Primm
bdd2139c78 [Bleeding] Add getWorldType() and getGenerateStructures() to CraftServer. Fixes BUKKIT-855 2012-03-10 18:36:28 -05:00
rmichela
996832ff6c [Bleeding] Added support for amending help topic visibility permissions in help.yml. Addresses BUKKIT-1113 2012-03-10 18:36:27 -05:00
rmichela
a8b2c6d04e [Bleeding] Implemented command aliases in help. Addresses BUKKIT-1028 2012-03-10 17:56:20 -05:00
rmichela
03ce67c38c [Bleeding] Moved DefaultHelpTopic and GenericCommandHelpTopic to public bukkit api. 2012-03-10 17:56:07 -05:00
rmichela
378424a1a1 [Bleeding] Added support for linking custom CommandExecutor types to a HelpTopicFactory. Fixes BUKKIT-1027 2012-03-10 17:55:44 -05:00
EvilSeph
f534863552 Make setting slots to AIR set them to null. Addresses BUKKIT-1043 2012-03-10 15:54:10 -05:00
feildmaster
77ef051095 [Bleeding] Added new target events. Fixes BUKKIT-935 2012-03-10 02:08:33 -05:00
EvilSeph
d1dd96f560 Made Chunk.getEntities() account for the world height increase. Fixes BUKKIT-1059 2012-03-09 13:09:15 -05:00
EvilSeph
45cf927446 (Re)restricted the nether to 128 world height. Fixes BUKKIT-976 2012-03-09 12:08:59 -05:00
Mike Primm
97669f8d90 [Bleeding] Add updated interfaces for custom chunk generation. Addresses BUKKIT-874 2012-03-09 11:46:06 -05:00
Mike Primm
a029f32ccd [Bleeding] Add APIs for editing biome data, fix existing code to use persistent biome data. Addresses BUKKIT-1075 2012-03-08 01:53:06 -05:00
rmichela
b5e92871eb [Bleeding] Added ConversationAbandonedEvent and supporting infrastructure. Whenever a conversation exits, the ConversationAbandonedEvent is triggered with details about how the conversation ended and what, if anything caused it to end. Fixes BUKKIT-986 2012-03-08 01:29:49 -05:00
Tahg
2ff8a8749f Fixed copy error in DoubleChest's inventory 2012-03-05 15:28:59 -05:00
Eric Stokes
2feb2ea124 Fix worlds loading improperly. Fixes BUKKIT-991
This patch fixes an incorrect path being passed to the WorldLoaderListener. It expects the world container, then checks convertable on the name.
2012-03-03 21:04:31 -05:00
Wesley Wolfe
c6273810a1 [Bleeding] Fixed crafting enchanted items, fixes BUKKIT-602 2012-03-02 21:10:39 -05:00
Nathan Adams
ec35500c63 Implemented Villager API for getting/setting Profession. This adds BUKKIT-887 2012-03-03 01:58:40 +00:00
Nathan Adams
20c8ae59fc Slightly changed the Auto Updater error for when it can't find the current version 2012-03-03 01:22:43 +00:00
Nathan Adams
ede443234e Minor optimization getting chest inventories 2012-03-02 20:05:23 +00:00
Nathan Adams
88149dc439 Fixed chest.getInventory for double chests, thanks to Acrobot. This fixes BUKKIT-901 2012-03-02 20:03:21 +00:00
Mike Primm
c51c895cd8 Implemented snapshot support for 1.2. 2012-03-02 00:47:21 -05:00
Tahg
eddefa6c50 Preserve data if possible when dropping Items from entities. Partial solution for BUKKIT-15 2012-03-01 23:02:59 -05:00
Mike Primm
82f2a2e773 World height related fixes - 128 -> 256. Addresses BUKKIT-889 2012-03-01 20:13:28 -05:00
Nathan Adams
f1f9802ded Implemented new 1.2 entities - this fixes BUKKIT-872 and BUKKIT-885 2012-03-01 18:03:14 +00:00
Nathan Adams
eb934c760d Made the auto-update-checker suggest channels to server administrators if they're upgrading past their preferred channel. 2012-03-01 16:04:18 +00:00
Nathan Adams
a5be079797 Fixed compile issues with StructureGrowDelegate not implementing the new isEmpty method 2012-03-01 15:38:34 +00:00
Nathan Adams
543c4879fe Updated CraftBukkit to 1.2 2012-03-01 14:38:31 +00:00
Nathan Adams
a726f6de3e Potentially fixed inventory issues. This (should) fix issue BUKKIT-860 2012-03-01 13:35:36 +00:00
EvilSeph
a53afd313e We build for 1.5. 2012-03-01 04:48:04 -05:00
rmichela
1161de3f63 [Bleeding] Added Conversations API. Addresses BUKKIT-864 2012-03-01 04:33:59 -05:00
rmichela
818a61040e [Bleeding] Added Help API. Addresses BUKKIT-863 2012-03-01 04:33:58 -05:00
Erik Broes
33ba9f0a2f Updated to rename revision 02 2012-03-01 01:12:41 +00:00
Celtic Minstrel
8524ff8ef7 Fix for Java 1.5 2012-02-29 15:37:35 -05:00
Celtic Minstrel
0842bab48b [Bleeding] Implementation of inventory framework. Addresses BUKKIT-856
See the corresponding Bukkit commit for details.

Implementation details:
- Any packets that include an itemstack will send air stacks as null; maybe this will even eliminate the client crash that occurs if the client receives an air stack
- Better handling of null itemstacks in general (ie less converting them to air stacks)
- Inventory.setContents() can now take an array smaller than the inventory without error
- Player.updateInventory() should now correctly update the result slot in a crafting inventory

Some small credit goes to Afforess (initial implementation of openInventory() methods) and Drakia (initial implementation of InventoryOpenEvent and InventoryCloseEvent).
2012-02-29 15:19:07 -05:00
Celtic Minstrel
d20091e64c Implementation of richer playEffect methods. Addresses BUKKIT-857 2012-02-29 14:59:27 -05:00
ZNickq
bf01e93ab6 Added EntityTargetEvent for Experience Orbs, happens when it starts moving towards a human entity! Addresses BUKKIT-820 2012-02-29 14:45:18 -05:00
TomyLobo
53e4a034f4 Moved getVehicle, leaveVehicle and isInsideVehicle from CraftLivingEntity to CraftEntity. Addresses BUKKIT-811 2012-02-29 13:30:46 -05:00
rmichela
1394926e53 [Bleeding] Implement Metadata framework for Entities, Blocks, and Worlds 2012-02-29 19:21:25 +01:00
Wesley Wolfe
403f874784 [Bleeding] Fix generics. Addresses BUKKIT-844 2012-02-29 12:15:31 -05:00
Travis Watkins
257fd16242 Added plugin-profiling setting to bukkit.yml. 2012-02-29 10:00:49 -05:00
TomyLobo
92dfb2500b Adjusted CraftBukkit to work with the entity event convenience patch in Bukkit. Addresses BUKKIT-809 2012-02-29 00:12:26 -05:00
TomyLobo
dcf016822d Fixed sneaking eye height. Addresses BUKKIT-808 2012-02-27 20:16:25 -05:00
Olof Larsson
f70f99d1a0 Fixed CraftOfflinePlayer.getLastPlayed() returning the wrong result. Addresses BUKKIT-847 2012-02-27 20:16:11 -05:00
EdGruberman
397f25aa24 Added plugin loading log entry 2012-02-26 15:46:07 -05:00
Sam Wilson
cc2e721ffc Implement PortalCreateEvent reason codes. Addresses BUKKIT-833
This commit modifies the construction of PortalCreateEvents to specify
a reason for the event.  Reasons are either:
1. FIRE: the portal is being created because a player set fire to an
obsidian frame.
2. DESTINATION: the portal is being created as a destination for an existing portal.
2012-02-26 15:20:09 -05:00
TomyLobo
f2d9d4174f CraftSign changes. Addresses BUKKIT-824
- Removed the useless world field.
- Made it so changes to a CraftSign (which is a Block*State*) no longer reflect into the world without calling sign.update().
2012-02-26 12:15:00 -05:00
Wesley Wolfe
078e2511a5 [Bleeding] Override not applicable 2012-02-23 21:33:51 -05:00
Zeerix
7a49e29b55 [Bleeding] Undo changes to the tree WorldGenerators.
- All StructureGrowEvent handling for these is in BlockSapling now, using a BlockChangeDelegate to collect the data.
- Moved StructureGrowDelegate into a separate class
2012-02-23 18:27:23 -05:00
Feildmaster
796d4a8a74 [Bleeding] Fixed setTotalExp, any experience update bugs and removed Deprecated Methods. Fixes BUKKIT-798 and fixes BUKKIT-797 2012-02-23 18:27:22 -05:00
Feildmaster
d7f6d2d929 [Bleeding] Use player.getItemInHand(), instead of a new ItemStack. Addresses BUKKIT-767 2012-02-23 18:27:22 -05:00
aPunch
036b5c3956 [Bleeding] Added launchProjectile.
Use launchProjectile in place of individual throwSnowball, throwEgg, and shootArrow methods.
2012-02-23 15:07:41 -05:00
Celtic Minstrel
af51313ffb [Bleeding] Added EntityType to replace CreatureType. 2012-02-22 22:06:29 -05:00
Feildmaster
7792156fb2 [Bleeding] Added BlockGrowEvent. Addresses BUKKIT-104 2012-02-22 21:46:45 -05:00
Celtic Minstrel
326091c130 [Bleeding] Recipe API improvements and fixes. Addresses BUKKIT-738 and BUKKIT-624
Add a recipe iterator to make it possible to retrieve and remove recipes (BUKKIT-738), and updated the recipe classes to not clip the data to 127 (BUKKIT-624)
2012-02-21 04:24:24 -05:00
Wesley Wolfe
39048be430 [Bleeding] Cleanup clone method. 2012-02-20 05:49:48 -05:00
Feildmaster
1922672f14 [Bleeding] Fire EntityDamageByEntityEvent for EnderCrystal. Fixes BUKKIT-776 2012-02-19 01:06:38 -05:00
Feildmaster
b06719dd03 [Bleeding] Moved projectile EntityDamageByEntityEvent's to event factory. Addresses BUKKIT-775 2012-02-19 01:05:11 -05:00
Mike Primm
5316c43a82 Add getEntitesByClass(Class<T>), getEntitiesByClasses(Class<?>...), deprecate getEntitiesByClass(Class<T>...) 2012-02-18 16:34:53 -05:00
Erik Broes
137880b727 Deprecation cleanup. 2012-02-18 13:06:12 -05:00
Nathan Adams
3b634b14f6 Fixed NPE when running a custom build of CraftBukkit. This fixes issue #BUKKIT-765 2012-02-18 14:06:21 +00:00
Nathan Adams
d057ee1e07 Don't print stacktraces on DLB fetching errors. And because I forgot last commit; this adds BUKKIT-760 2012-02-17 00:09:56 +00:00
Nathan Adams
236cfed616 Added a built-in update checker. See http://wiki.bukkit.org/Bukkit.yml#auto-updater for new bukkit.yml options. 2012-02-16 22:32:17 +00:00
Mushroom Hostage
7076ef9de6 Use createNMSItemStack on CraftingManager recipe registration. Fixes BUKKIT-602 2012-02-13 00:44:58 -05:00
fullwall
f52665348e [Bleeding] Added Potions API. Fixes BUKKIT-389 2012-02-10 17:41:13 -05:00
EvilSeph
63b9ed9ab4 Added configurable animal and monster ticks per spawn setting. 2012-02-10 12:16:06 -05:00
Travis Watkins
7ff8c17568 [Bleeding] Make sure we don't keep stale references to vanished players. 2012-02-09 22:03:43 -05:00
EvilSeph
54e45b7d66 Prevent the Vanish API from sending unnecessary packets. 2012-02-03 05:12:54 -05:00
Travis Watkins
37c8868532 [Bleeding] Implemented Vanish API.
Remove players that cannot see a player from their EntityTrackerEntry and only
send user list updates to players who can see the player they reference.
2012-02-03 03:34:03 -05:00
EvilSeph
028cbb8fe9 Removed MONSTER CreatureType. 2012-02-03 02:42:40 -05:00
Eric Stokes
3a419481ea Added 'generate-structure' setting support and WorldCreator property.
Fixes BUKKIT-655 and BUKKIT-592
2012-01-29 13:07:44 -05:00
EvilSeph
f1a35effb0 Added useExactLoginLocation(). Closes BUKKIT-145
useExactLoginLocation() looks for settings.use-exact-login-location within bukkit.yml.

If true, we will bypass Vanilla's behaviour of checking for collisions and moving the player if needed when they login.

If false, we will continue to follow Vanilla's behaviour and move players that 'collide' with objects when they login.
2012-01-29 12:33:05 -05:00
Erik Broes
3173b68bbe Filter null/AIR from items dropped on death. Fixes: BUKKIT-653 2012-01-29 13:37:32 +01:00
EvilSeph
bb730f0ee7 Cleanup. 2012-01-27 18:23:58 -05:00
Sam Wilson
e92bdab57a Fixed CraftLivingEntity.damage when the entity is an EntityComplex.
Fixes BUKKIT-589: if you call damage on an instance of EnderDragon, no damage
is done.

Reason for bug: damage calls Entity.damageEntity.  But EntityComplex
overrides damageEntity to do nothing.

Fix: CraftComplexLiving should call EntityComplex.e instead of
Entity.damageEntity.  e is the method that actually does damage to an
instance of EntityComplex.
2012-01-24 04:10:47 -05:00
Zeerix
872dad5540 [Bleeding] Implemented PotionSplashEvent. Closes BUKKIT-307 2012-01-24 02:12:41 -05:00
EvilSeph
4f02563c63 Reverted changes to getItem(). Will be reimplemented after RB. 2012-01-20 14:52:32 -05:00
EvilSeph
1bbeec1f75 Accounted for NMS getItem() returning null in recent commit. 2012-01-20 11:46:24 -05:00
EvilSeph
76d7a1ce1d Properly handle null and air items. Fixes BUKKIT-435 and BUKKIT-550
We'll probably want to implement an ItemStack.EMPTY and return that
instead of NULL in the near future.
2012-01-20 05:40:10 -05:00
Tahg
4b0f819af2 Updated timing code for new event system 2012-01-19 18:50:39 -05:00
Nathan Adams
28fcbec3b1 Prevent re-use of internal world dimension IDs. This fixes BUKKIT-448. Thanks to snowleo for the PR. 2012-01-19 16:10:52 +00:00
Nathan Adams
b0f29b1755 Throw PlayerLevelChangeEvent and PlayerExpChangeEvent events. Thanks to feildmaster for the PR. 2012-01-19 16:07:18 +00:00
Nathan Adams
1f1c9c0d4b Correctly take in ChatColor length when limiting player list size. This should fix BUKKIT-571 2012-01-19 15:10:00 +00:00