Commit graph

1230 Commits

Autor SHA1 Nachricht Datum
feildmaster
823e3fb0c6 Correctly detect invalid PistonExtension's to allow removal of StickyPistons. Fixes BUKKIT-2059 2012-08-04 04:10:55 -05:00
feildmaster
ab8b7c7e33 Potentially fix chunk leaking, needs further examination 2012-08-04 01:43:17 -05:00
Steve Anton
f90bd7e7cc Fix PlayerBucketEmptyEvent handling. Fixes BUKKIT-2002 and fixes BUKKIT-1997
The method this.a(world, d0, d1, d2, i, j, k) is responsible for
actually placing the lava or water source block in the world. The event
is currently called after this method, thus canceling the event will
cause the player to keep their water/lava bucket but the water/lava will
still appear where they attempted to place it.

In addition, the check for whether a player has creative inventory is
short circuiting before the event fires, so the event will not be called
for these players.

This moves the event call and cancelled check above these two calls to
ensure it always fires and the results of it are honored.

Closes GH-835.
2012-08-03 23:44:45 -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
Travis Watkins
4942f5184a Don't merge items with enchantments. Fixes BUKKIT-2050 2012-08-03 19:30:04 -05:00
feildmaster
8834d1423e Fix 1.3 changes that prevent nether and the_end to save level data. 2012-08-03 18:58:47 -05:00
md_5
07794300d0 [Bleeding] Fire inventory close event. Fixes BUKKIT-2036 2012-08-03 02:41:48 -05:00
Mike Primm
fe8fc6b90e Process entity ticks on worlds without players. Fixes BUKKIT-2031
Both the CB 1.3.1 code, and vanilla 1.3.1 code, have modified the
behavior of entity tick processing in a way that can lead to disabling
of entity cleanup. Specifically, the tickEntities() call in n.m.s.World,
which processes both the entity cleanup (removing from the world entity
list) and tile entity tick processing (furnaces and such) does not get
called by n.m.s.MinecraftServer's q() method (which drives tick
processing calls in general) when no players are on the given world.
This causes a serious memory leak when automation processes, like dynmap
mapping, load and unload chunks - as entities on unloaded chunks are
only cleaned up during entity tick processing. It also will cause issues
with any mods that use persistent chunk loading (that is, keeping chunks
loaded so that tile entities will continue being processed), since such
processing will no longer function without at least one player on the
given world.

In any case, the tickEntities() call should be called in the same
fashion as under 1.2.x (each tick, independent of player population, as
opposed to being suspended indefinitely when no players are on the given
world). The specific memory leak observed, with removing the unloaded
entites from the world, requires this call be made regularly (or, at
least, whenever the entity unload queue (world.g) is not empty.

Closes GH-832
2012-08-03 01:19:10 -05:00
Travis Watkins
f5794937a9 Print short message on exception to avoid spamming console. Fixes BUKKIT-2018 2012-08-03 01:04:16 -05:00
Travis Watkins
dcf83bc1b5 Restore configurable connection throttle. 2012-08-03 01:04:10 -05:00
Travis Watkins
e156354a60 Add DedicatedServerConnectionThread from mc-dev for diff visibility. 2012-08-03 00:48:07 -05:00
EvilSeph
d5fea5fd0d Fixed translation issue breaking custom world generation. Fixes BUKKIT-1975 2012-08-02 23:47:41 -04:00
Travis Watkins
8dc52123bf Fix dispenser event handling 2012-08-02 17:55:13 -05:00
feildmaster
d18972eca2 Fix Nether and The End having the same world names. 2012-08-02 11:02:14 -05:00
feildmaster
402b177be4 Add missing callWorldInitEvent on startup. 2012-08-02 10:14:01 -05:00
feildmaster
a43d621c01 Update CraftBukkit to Minecraft 1.3.1 2012-08-02 04:58:50 -05:00
Wesley Wolfe
a4d7691299 Detect and disconnect 1.3 clients properly. Fixes BUKKIT-1952 2012-07-26 01:17:09 -05:00
Wesley Wolfe
b00de5f176 Cleaned up CraftBukkit comments in NMS.
Added newlines at the end of files
Fixed improper line endings on some files
Matched start - end comments
Added some missing comments for diffs
Fixed syntax on some spots
Minimized some diff
Removed some no longer used files
Added comment on some required files with no changes
Fixed imports of items used once
Added imports for items used more than once
2012-07-23 23:55:31 -05:00
Steve Anton
8b9aad8c2b Add remaining missing setLastDamageCause's 2012-07-14 17:57:31 -05:00
feildmaster
79189c1c13 Add missing setLastDamageCause. Thanks MonsieurApple 2012-07-13 22:57:42 -05:00
feildmaster
cf9544c1d9 Reuse ItemInWorldManager, and stop applying ability changes. Fixes BUKKIT-1811 2012-07-09 18:07:53 -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
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
H31IX
6093bcc445 Fix client crash on InventoryClick cancel. Fixes BUKKIT-1841 2012-06-28 19:34:51 -05:00
Travis Watkins
a21f038fc3 Mark entities as invalid when they get despawned. Addresses BUKKIT-810 2012-06-28 19:34:31 -05:00
Wesley Wolfe
f5b6abfae1 Fix double overflow/underflow calculations with explosions. Fixes BUKKIT-1865 2012-06-27 21:17:20 -05:00
Travis Watkins
78acee359e Use LinkedHashSet to make redstone update order consistent. Fixes BUKKIT-1850 2012-06-23 10:47:38 -05:00
feildmaster
568fae2e86 Trigger EntityBlockChangeEvent for Silverfish. Adds BUKKIT-1560 and BUKKIT-1593 2012-06-23 06:42:08 -05:00
feildmaster
23d5922bbf Added EntitySilverfish for diff visibility 2012-06-23 06:42:06 -05:00
Travis Ralston
9f37f70527 Fire PlayerItemBreakEvent. Addresses BUKKIT-1600 2012-06-21 01:10:30 -05:00
H31IX
0095add08c Add query-plugins setting. Addresses BUKKIT-1781 2012-06-20 12:40:12 -05:00
Wesley Wolfe
6bbae461d5 Fix Heisenplayers 2012-06-17 01:25:01 -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
obnoxint
72d64b516c Add TileEntityNote from mc-dev for diff visibility. 2012-06-14 20:58:57 -05:00
Wesley Wolfe
9002690651 Implement asynchronous pre-login event; Addresses BUKKIT-1213 2012-06-13 23:00:46 -05:00
Wesley Wolfe
ed6d4c7759 Support asynchronous events; Addresses BUKKIT-1212 2012-06-13 23:00:46 -05:00
Jake King
f58e514192 Don't send kick message if the message is empty. Fixes BUKKIT-1789 2012-06-13 22:21:40 -05:00
H31IX
01fe76733f Fire PlayerToggleFlightEvent. Fixes BUKKIT-1696 2012-06-13 22:21:35 -05:00
EvilSeph
b7827c4d22 Fixed EnderDragon not dealing damage after it has been hit. Fixes BUKKIT-1751 2012-06-12 16:37:47 -04:00
Wesley Wolfe
0f23a4fe23 Synchronize handler lists 2012-06-11 01:00:35 -05:00
Travis Watkins
0942b1861b Handle rcon timeouts properly 2012-06-10 22:26:07 -05:00
feildmaster
d836e57871 Kill fireball if velocity isn't present. Fixes BUKKIT-1228 2012-06-09 04:35:55 -05:00
feildmaster
d5ba6c6644 Fix fireballs freezing when the chunk unloads. Addresses BUKKIT-1228 2012-06-09 04:35:32 -05:00
EvilSeph
3df6608a72 Fixed potential infinite loop in RCON handling. Fixes BUKKIT-1570 2012-06-09 02:52:14 -04:00
Wesley Wolfe
873ce288c2 Fixed decompile for loop handling 2012-06-09 02:47:25 -04:00
EvilSeph
282fcb44ed Added RemoteControlSession for diff visibility. 2012-06-08 20:23:44 -04:00
Travis Watkins
77cc225b83 Don't try to parse directories if we don't have any. 2012-06-06 12:12:42 -05:00
Travis Watkins
6a37511144 Try to make parent directories for --log-pattern path. Fixes BUKKIT-680 2012-06-04 18:05:23 -05:00
Travis Watkins
e385ffaefc Call ignite event for fireball shot from dispenser. 2012-06-04 17:25:39 -05:00
feildmaster
d8199aaa39 Fix a NullPointerException. 2012-06-04 04:22:22 -05:00
feildmaster
e520032205 Further improving ItemStack handling 2012-06-03 05:30:22 -05:00
Travis Watkins
894ea06567 Reduce default size of path array. Addresses BUKKIT-1469.
The Path object creates an array of 1024 PathPoint objects as the backing
for a sorted queue but testing shows we tend to get only 80 or so entries
in the array at most. To save memory this changes the default size of the
array to 128. Changing it to 64 was considered but that triggered too many
resizes which is detremental to performance.
2012-05-31 19:55:28 -05:00
Travis Watkins
9e5d6699f5 Add Path.java from mc-dev for diff visibility 2012-05-31 19:54:31 -05:00
Charles Daffern
2f16b8ffa3 Don't spam console with errors on unexpected disconnect. Addresses BUKKIT-693 2012-05-23 21:53:02 -05:00
Charles Daffern
c07d4fffb0 Adding NetworkWriterThread for diff visibility 2012-05-23 21:53:01 -05:00
Charles Daffern
8be14b5bb3 Fix inaccurate head yaw. Fixes BUKKIT-1702 2012-05-23 21:52:59 -05:00
Travis Watkins
94e9543a14 Add fallback for when jline fails to initialize. Fixes BUKKIT-1675. 2012-05-23 15:32:33 -05:00
md_5
21327265f0 [Bleeding] Improve handling of ItemStacks. Addresses BUKKIT-1697 2012-05-23 04:10:49 -05:00
Travis Watkins
af89cc783f Don't cap food level at 20 when eating. Fixes BUKKIT-1667
The amount of food gained when eating is used for calculating the food
saturation value so capping it at 20 at this point causes us to get
incorrect results. FoodMetaData.eat caps it at 20 anyway so we're safe to
not do so here.

Also readds a line from mc-dev that was mistakenly removed.
2012-05-17 21:17:23 -05:00
feildmaster
b6d611d9be Revert obsolete "fix" for Redstone Torches 2012-05-17 00:24:26 -04:00
feildmaster
41b2e89c70 Assert that the block is still present after placement. Fixes BUKKIT-1399 2012-05-17 00:24:10 -04:00
Travis Watkins
4c8f6f2caa Add option to strip color codes from server.log file 2012-05-16 13:21:23 -05:00
Travis Watkins
e91169ebad Add ConsoleLogFormatter for diff visibility 2012-05-15 23:29:39 -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
Travis Watkins
cbd20ec9ea Use a different temp file for each player to avoid corruption. Fixes BUKKIT-1607 2012-05-09 01:40:19 -05:00
Travis Watkins
ef7e14f9ef Fire events for fireball item usage. Fixes BUKKIT-1566 2012-05-09 01:40:19 -05:00
Travis Watkins
bbc3d31be7 Add ItemFireball from mc-dev for diff visibility 2012-05-09 01:40:19 -05:00
Travis Watkins
53ed0dad48 Don't call event if getOwner is null. Fixes BUKKIT-1545 2012-04-25 22:43:15 -04:00
md_5
3e382034e9 Fix growing large tress near world height. Fixes BUKKIT-1072 2012-04-25 22:30:42 -04:00
Travis Watkins
0153fe1f33 Check if packet is null before checking priority. Fixes BUKKIT-1579 2012-04-25 10:34:53 -05:00
Travis Watkins
40be9c8403 Optimized a little too much. Update goals every tick again to avoid AI oddness. 2012-04-24 23:20:29 -04:00
Travis Watkins
8f1fc96da0 Fixed per-world spawn limits. I have no idea how we missed this. 2012-04-24 22:28:26 -04: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
e98cfbd992 Remove address from throttle hashmap before killing socket. Fixes BUKKIT-659 2012-04-24 21:58:24 -04:00
Travis Watkins
e3363db0a9 Remove "Fetching addPacket..." spam as it isn't useful. Fixes BUKKIT-32 2012-04-24 21:58:12 -04:00
feildmaster
0220c1ff74 Remove legacy Chunk cache. Fixes BUKKIT-1400 2012-04-24 15:06:11 -05:00
feildmaster
119b5d18a5 Load player data before calling PlayerLoginEvent. Fixes BUKKIT-1531 and Fixes BUKKIT-601. 2012-04-23 22:12:19 -05: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
Travis Watkins
e8459c1ff6 Optimize AI and EntityLiving ticking
Reduce usage of getCubes as it is an expensive call.
Remove iterator usage and object creation from PathfinderGoalSelector
methods as these are called very often.
Update EntityLiving goal selectors less often as this is still quite an
expensive task.
2012-04-21 23:53:10 -04:00
Travis Watkins
343f39b2b3 Add PathfinderGoalSelector for diff visibility 2012-04-21 23:52:38 -04:00
EvilSeph
8f6fe0a643 Rework clipping logic again, now works as well as the original implementation 2012-04-21 00:45:30 -04:00
EvilSeph
3e15a6911f Added Packet24 for diff visibility. 2012-04-21 00:44:31 -04:00
Wesley Wolfe
e28ae3f2fe Reworking clipping logic; Fixes BUKKIT-1472 2012-04-15 18:29:02 -05:00
feildmaster
748ebae550 Properly call EntityDeathEvent for mobs. Fixes BUKKIT-1519 2012-04-15 09:16:43 -05:00
feildmaster
6307efd2d1 Set current recipe to null when a recipe isn't found. Fixes BUKKIT-1456 2012-04-15 01:53:18 -05:00
feildmaster
27a9b4c907 Filter entity spawning sanely. 2012-04-15 01:52:51 -05:00
feildmaster
0026a08fa8 Use SpawnReason.DEFAULT instead of SpawnReason.CUSTOM, freeing CUSTOM to plugin spawning.
This gets used in case we are missing appropriate SpawnReason's for various Entity spawns.
2012-04-14 01:44:01 -05:00
feildmaster
e17d3ece00 Added SpawnReason.SLIME_SPLIT, Fixes BUKKIT-790 2012-04-14 01:38:22 -05:00
h31ix
7586e7168b Make the dispenser check if the dispensed item has been changed before removing it. Fixes BUKKIT-316 2012-04-03 21:42:37 -05:00
Wesley Wolfe
6a79e506cf Implement new address to PlayerLoginEvent; Addresses BUKKIT-431 2012-04-03 21:07:15 -05:00
feildmaster
20dea920c2 Don't spawn conditional mobs if original entity is dead. Fixes BUKKIT-1444 2012-04-03 18:07:46 -05:00
feildmaster
af0018a962 Mark entities as dead when spawning fails. Treat as canceled if entity is dead. 2012-04-03 18:06:51 -05:00
EvilSeph
0c9e1b13a0 Made using RAW_FISH on Ocelots when a player has the ability to instantly build not decrement the stack. Fixes BUKKIT-1439 2012-04-03 14:13:27 -04:00
feildmaster
bad3979b8f Make EntityCreatePortalEvent block list Unmodifiable. 2012-04-02 16:32:54 -05:00
feildmaster
470d9f9e1d Tell clients to update if EntityPortalCreateEvent is canceled. Fixes BUKKIT-1426 2012-04-02 16:32:52 -05:00
EvilSeph
81102479a7 Made Slimes spawn less often in FLAT worlds. Fixes BUKKIT-1441 2012-04-02 17:10:17 -04:00
EvilSeph
7594c91c84 Made item use when a player has the ability to instantly build not decrement the stack. Fixes BUKKIT-1439 2012-04-02 15:25:21 -04:00
Travis Watkins
f4558f5d7d [Bleeding] Hacky entity clipping fix; Fixes BUKKIT-50
Special thanks to 'trunkz' on Minecraft Forums for initial
implementation.
2012-04-02 14:17:20 -05:00