Commit Graph

969 Commits

Author SHA1 Message Date
md_5
de547749ec SPIGOT-4471: Use wall time for zombie drowning & enhance checks
Thanks Zach Brown for outline of issue with drowned zombies.
2018-11-06 18:06:56 +11:00
md_5
e693496c17 SPIGOT-4467: Improve ExpiringMap 2018-11-04 11:40:15 +11:00
md_5
f0398e444e SPIGOT-4438: Add choice API to furnace recipes 2018-11-03 21:04:33 +11:00
md_5
96c461b3a5 API to get client side view distance. 2018-11-02 21:24:14 +11:00
Ugleh
a8000588cb SPIGOT-4395: Additions to PlayerBedEnterEvent.
Contributions by blablubbabc as well - https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/pull-requests/500/overview
2018-11-02 18:32:19 +11:00
AndaBlock
1057710a78 SPIGOT-4376: Add draft BlockDropItemEvent 2018-10-31 19:55:53 +11:00
md_5
72c3617dfe SPIGOT-4433: Always generate ProtoChunk 2018-10-28 11:30:35 +11:00
md_5
3359cb1998 MC-137353: Don't go crazy on amount of bootstrap threads needed 2018-10-23 20:34:30 +11:00
md_5
b4230a9a7e Update to Minecraft 1.13.2 2018-10-23 06:00:00 +11:00
md_5
db10914a96 Improve minecart spawners 2018-10-19 20:25:25 +11:00
blablubbabc
cd6252a489 Fixed missed diff in PathfinderGoalPanic.
Originally from the MC 1.8 update, broken afterwards and was no longer calling the correct method.
2018-10-17 08:19:19 +11:00
md_5
0adc1b9989 SPIGOT-4428: Update Player CustomName 2018-10-15 19:21:35 +11:00
md_5
8ab46ff7c6 SPIGOT-4368: Tweak fish persistence 2018-10-07 10:08:58 +11:00
Parker Hawke
1ceee63341 Implement maximum repair cost API to AnvilInventory 2018-10-06 19:26:40 +10:00
Ugleh
02518f92ab Make setPersistent also control player saving 2018-10-03 20:45:21 +10:00
md_5
68588dac4f SPIGOT-4405: Chunk generation problem 2018-10-02 23:00:16 +10:00
md_5
c8f68670f5 Save server version 2018-10-02 20:52:57 +10:00
Parker Hawke
7a2f486768 Implement PlayerRecipeDiscoverEvent and methods to (un/)discover recipes 2018-10-01 19:15:12 +10:00
md_5
1cf8b5dc1b SPIGOT-4400: Populators running on existing chunks 2018-09-27 21:41:24 +10:00
md_5
eea4387034 MC-134115: Fix issues converting tile entities 2018-09-27 11:11:53 +10:00
md_5
1a7f2d109e SPIGOT-4397: isChunkGenerated API 2018-09-26 17:19:16 +10:00
Aikar
40aed54d11 SPIGOT-4396: Improve vehicle movement 2018-09-26 17:19:16 +10:00
md_5
020b495274 SPIGOT-4392: Stem updates even if BlockGrowEvent cancelled 2018-09-25 14:34:05 +10:00
Senmori
dcb43ef83d MC-136886: locate command loads chunks without needing to.
Thanks Aikar for the report
2018-09-24 09:55:18 +10:00
Senmori
88a5346fea Add API to locate structures. 2018-09-22 17:11:17 +10:00
md_5
26c89277cb SPIGOT-4385: Clearer error for invalid generator-settings 2018-09-19 18:32:21 +10:00
Parker Hawke
a222e4a252 Implement BatToggleSleepEvent 2018-09-17 16:49:45 +10:00
md_5
79ada744cb SPIGOT-4382: Fix damage_absorbed statistic 2018-09-17 16:40:35 +10:00
md_5
6166843699 SPIGOT-4378: Fix mistakenly included code 2018-09-16 08:16:03 +10:00
md_5
a4bdecff65 SPIGOT-4372: LightningStrikeEvent cause API 2018-09-15 19:16:42 +10:00
md_5
34caaf6d68 SPIGOT-4371: Trident damaged when event cancelled 2018-09-15 19:07:03 +10:00
md_5
97315374fb SPIGOT-4369: Handle cancelled trident event 2018-09-15 15:31:39 +10:00
md_5
bf1c82731c SPIGOT-4370: Remove vehicle if its passenger spawn event was cancelled 2018-09-15 15:25:27 +10:00
simpleauthority
953e1d601a SPIGOT-4314: Ability to change item in frame without playing sound 2018-09-11 20:39:58 +10:00
md_5
7033f180e0 Hoist out synchronisation from ChunkRegionLoader 2018-09-10 19:13:03 +10:00
md_5
022b8c350a SPIGOT-4361: BlockFadeEvent for regular coral 2018-09-10 08:30:13 +10:00
md_5
3123a069bf SPIGOT-4352: MoistureChangeEvent 2018-09-09 18:56:38 +10:00
Parker Hawke
226db0eae7 Add BlockDispenseArmorEvent 2018-09-09 18:44:55 +10:00
md_5
cd367fa4d8 Fix bad thread safety in ChunkRegionLoader 2018-09-09 09:39:23 +10:00
md_5
3f5ca5f2a4 SPIGOT-4355: Improve cancelling VehicleEnterEvent 2018-09-09 09:32:11 +10:00
Pante
19d654bd5e Add ServerLoadEvent 2018-09-08 13:40:42 +10:00
md_5
228a5cd59d Remove vanilla command ambiguity warning
Needless support burden
2018-09-07 20:51:57 +10:00
md_5
0ddd67b0a9 SPIGOT-4350: Expand EntityTeleportEvent to /teleport command 2018-09-07 20:32:57 +10:00
md_5
632449b6c4 SPIGOT-4349: End portal has wrong TeleportCause 2018-09-07 07:14:59 +10:00
md_5
c88ae6b195 SPIGOT-4342: Fix PlayerMoveEvent from pitch/yaw incorrect 2018-09-04 20:57:55 +10:00
md_5
3037eb3e7c BlockSpreadEvent for Kelp 2018-09-03 08:43:48 +10:00
md_5
6cf60193b0 SPIGOT-4340: Improve client bug workaround 2018-09-03 08:00:50 +10:00
md_5
60d7982024 SPIGOT-4338: breedCause API 2018-09-01 19:28:12 +10:00
md_5
4c219e2a12 Expand Recipe API to allow multiple Materials per slot 2018-09-01 11:04:48 +10:00
md_5
6304ccd95f SPIGOT-4116: Tweak tab complete spam since the client appears to be duplicating packets 2018-08-29 22:30:16 +10:00
Senmori
1486c29516 API to prevent PlayerBedLeaveEvent from changing a player's spawn location 2018-08-29 19:08:58 +10:00
md_5
9636bb8d77 SPIGOT-4319: Conduit damage should be a block event 2018-08-28 21:00:24 +10:00
md_5
c2cbdc5ab4 SPIGOT-4316: Do even less processing when block placement without physics requested 2018-08-27 18:29:28 +10:00
md_5
479ec05e3b SPIGOT-4310: Reset villager career level with trades 2018-08-27 07:00:56 +10:00
md_5
6dee81a6f7 SPIGOT-4302: Use defaults when setting unplaced furnaces 2018-08-27 06:50:15 +10:00
md_5
997d378dab Fix client stall in specific teleportation scenarios 2018-08-26 19:44:10 +10:00
md_5
5d0d83bb90 SPIGOT-4309: Add "forced" display of particles 2018-08-26 18:27:19 +10:00
md_5
ce1af0c348 Update to Minecraft 1.13.1 2018-08-26 12:00:00 +10:00
md_5
1bc24337d1 SPIGOT-4304: Turtle helmet overrides water breathing potion 2018-08-24 20:56:58 +10:00
md_5
3418f8d7a1 SPIGOT-4298: Block command sender returns wrong block 2018-08-22 08:52:17 +10:00
md_5
bfb9131494 SPIGOT-4283: Allow setting recipe groups 2018-08-17 20:40:54 +10:00
md_5
06112946da Fix whitespace issue in previous commit 2018-08-16 20:48:00 +10:00
md_5
5bf0abb3ae SPIGOT-4281: Fix looting enchantment 2018-08-16 20:39:29 +10:00
md_5
b865db3b2a SPIGOT-4278: EntityChangeBlockEvent for turtles laying eggs 2018-08-16 20:27:16 +10:00
md_5
1728eb298e SPIGOT-4279: Move turtle egg interact event 2018-08-16 20:23:17 +10:00
md_5
7c341e9beb Fix StructureGrowEvent originating from dispensers 2018-08-15 18:05:04 +10:00
Senmori
c0df4b82d3 SPIGOT-1936: LootTable API 2018-08-12 18:40:03 +10:00
md_5
0e1d79b449 Correct error in previous patch 2018-08-10 19:43:15 +10:00
Amosar
eb36029f1c SPIGOT-2719: Comparator and Observer don't trigger BlockRedstoneEvent 2018-08-10 08:39:18 +10:00
md_5
4487c1f9d9 SPIGOT-4245, MC-128441: use target world as teleport destination 2018-08-08 18:59:20 +10:00
Christos Miniotis
c4220dc24f Add Unit Tests for geHardness and getBlastResistance 2018-08-08 18:07:02 +10:00
md_5
53d3ac0a97 SPIGOT-4238: Sometimes buckets are leaky client side when empty event is cancelled 2018-08-07 21:17:49 +10:00
md_5
a9c796f12c SPIGOT-4184: Fix furnaces not matching Vanilla smelt or animations 2018-08-05 11:21:01 +10:00
md_5
195f071e3d SPIGOT-4219: Event for PigZombies angering. 2018-08-05 10:18:01 +10:00
md_5
671581e33f Fix gamerules in secondary worlds 2018-08-03 21:03:21 +10:00
md_5
69970127c1 SPIGOT-4221: Update surrounding blocks for cancelled break/place 2018-08-03 11:34:26 +10:00
md_5
3006dee4c6 Use CraftBlock.at helper 2018-08-03 09:59:22 +10:00
Nathan Wolf
7dc4738528 SPIGOT-4212: EntityInteractEvent when an entity tries to interact with a door 2018-08-03 09:50:32 +10:00
Nathan Wolf
391e018a79 SPIGOT-4220: Player/Entity interact events when turtle eggs are stepped on 2018-08-03 08:58:15 +10:00
md_5
272426acd7 SPIGOT-4199: Riptide related APIs 2018-08-02 09:38:52 +10:00
md_5
8e87d03145 SPIGOT-4205: Cancelled damage should not anger pig zombie 2018-08-01 19:29:24 +10:00
blablubbabc
a0c7bcf02a Fix merchant inventories with custom titles 2018-08-01 08:50:08 +10:00
md_5
d474030e14 SPIGOT-4198: Pockets of darkness in the air 2018-07-31 21:11:35 +10:00
md_5
549d9b0120 SPIGOT-4029: Add event for commands being sent to client 2018-07-31 10:46:09 +10:00
md_5
5cfa68387f SPIGOT-4194: Call BlockFadeEvent for coral 2018-07-31 10:17:43 +10:00
Articdive
e013bf4323 SPIGOT-3917: Add EntityDropItemEvent 2018-07-31 10:06:23 +10:00
md_5
c79e28e627 SPIGOT-4192: Fix cancelling dispensers removing water sources 2018-07-31 09:21:21 +10:00
md_5
8592585b9f Fix ancient style event call in PlayerDropItemEvent 2018-07-30 19:29:03 +10:00
md_5
3f9d7f7770 Move persist flag check 2018-07-30 13:25:02 +10:00
md_5
98f4292331 SPIGOT-4190: Move ChunkLoadEvent call 2018-07-30 13:09:04 +10:00
blablubbabc
c3a8de0371 SPIGOT-227: Add entity persistent flag
Non-persistent entities won't get saved when the chunk saves the entities.
Entities that are passengers of a non-persistent entity won't get saved.
Players won't save their vehicle, if the player is directly or
indirectly riding a non-persistent entity.
2018-07-30 12:29:43 +10:00
md_5
bef764020e SPIGOT-4185: Bubble columns not working on mobs 2018-07-30 11:17:26 +10:00
md_5
0b274effbb SPIGOT-4188: Fish not dispensing from buckets 2018-07-30 09:43:46 +10:00
md_5
3b8f5be77b SPIGOT-1714: Draft API for player list header / footer 2018-07-29 21:30:31 +10:00
md_5
4d0e2b7d88 Give turtle eggs a spawn reason 2018-07-29 10:50:56 +10:00
md_5
f68afdb0ca SPIGOT-4178: Add another BlockPhysicsEvent call site 2018-07-29 09:37:16 +10:00
md_5
212fd0f230 SPIGOT-4166: Fix Tags being corrupted by early access (and not reflecting reloads) 2018-07-28 15:00:12 +10:00
md_5
e3c21decb0 SPIGOT-4171: Advancement description not showing 2018-07-28 10:38:36 +10:00
md_5
5c2585068b SPIGOT-1588: Fix cancelling mount related events 2018-07-28 10:10:17 +10:00
md_5
d5b95a2832 Fix growing large dark oak trees 2018-07-28 08:41:45 +10:00
klugemonkey
4b00823222 Use SpawnReason.NATURAL for Phantom spawning 2018-07-27 19:33:42 +10:00
md_5
3d7f2f07d5 SPIGOT-4161: Missing BlockDispenseEvent for Waterlogged 2018-07-27 19:29:47 +10:00
md_5
0891fc1c45 SPIGOT-4160: StructureGrowEvent not triggering for giant trees 2018-07-27 19:16:16 +10:00
klugemonkey
5d881a9264 Add SpawnReason.DROWNED 2018-07-27 14:20:35 +10:00
md_5
e70d864f00 SPIGOT-4140, SPIGOT-4157: World generation errors 2018-07-26 22:11:02 +10:00
md_5
420f5fa779 Add draft BlockFertilizeEvent 2018-07-26 20:44:09 +10:00
md_5
1ef1ffd664 SPIGOT-4137: Fix World.regenerateChunk 2018-07-25 19:32:06 +10:00
md_5
88d89792fc SPIGOT-4141: Untouched filled maps not saving 2018-07-25 14:13:17 +10:00
md_5
49a2604e1f Fix scute dropping 2018-07-24 22:22:56 +10:00
md_5
38adf52b28 SPIGOT-4119: Incorrect slot type in InventoryClickEvent 2018-07-24 08:41:15 +10:00
md_5
587014503b SPIGOT-4116: Increase command tab spam threshold 2018-07-23 18:33:29 +10:00
Articdive
30ab12cf4c SPIGOT-824: SpongeAbsorbEvent 2018-07-23 17:21:07 +10:00
md_5
b50bb15f56 SPIGOT-4110: Fix spawning withers 2018-07-23 11:58:43 +10:00
md_5
11542134c8 SPIGOT-4109: Wall skulls not dropping 2018-07-23 10:43:45 +10:00
md_5
5b93c39d4b SPIGOT-4106: Fish from buckets despawn 2018-07-23 10:01:46 +10:00
md_5
1c7adf74e4 Always return captured tiles from chunks as well.
Missed in 22c613d869

Fixes replacing tile entities in BlockPlaceEvent (or calling setBlockData on them)
2018-07-22 19:35:42 +10:00
md_5
1a6b4f5392 Update to Minecraft 1.13 2018-07-22 12:00:00 +10:00
md_5
961295e432 SPIGOT-4101: Turtle lightning strike causing crash 2018-07-21 14:55:07 +10:00
md_5
e5d6f6b596 SPIGOT-4024: Improve interactions of Vanilla tab completion, and also reloads 2018-07-21 11:23:11 +10:00
md_5
dbc6c660eb Fix cancelling new effect events 2018-07-21 10:13:45 +10:00
md_5
a8dc8d31d3 SPIGOT-4099: Missing BlockFormEvent for concrete powder 2018-07-21 10:03:08 +10:00
kaenganxt
814c742554 SPIGOT-840, SPIGOT-2522: [Draft] Add EntityPotionEffectChangeEvent
Discussion ongoing in PR #449
2018-07-20 16:06:34 +10:00
md_5
fa6e97a8f8 SPIGOT-4064: Fix BlockPistonRetractEvent for regular pistons 2018-07-20 10:59:23 +10:00
md_5
c1d9f94223 SPIGOT-4050: Snow erasing block below it 2018-07-19 15:44:55 +10:00
md_5
6c944b2163 Fix issues converting certain chunks 2018-07-19 14:20:07 +10:00
md_5
fc1b107579 SPIGOT-4046: Fix selectors in tick functions 2018-07-19 10:59:16 +10:00
md_5
80f4c10c8f SPIGOT-4044: Cannot load datapack functions on startup 2018-07-19 10:48:34 +10:00
md_5
40f15832b4 SPIGOT-4048: Fish disappear when they cannot be picked up 2018-07-19 10:37:25 +10:00
md_5
595ec64726 SPIGOT-4049: Books lose NBT data 2018-07-19 10:12:55 +10:00
md_5
3e5fe3e40d SPIGOT-4042: Fix emptying buckets onto slabs 2018-07-18 17:48:17 +10:00
md_5
15036eb75b Fix changes that got lost late in development cycle 2018-07-18 14:13:20 +10:00
md_5
f18d78282d SPIGOT-4028: Improve legacy ItemStack conversion 2018-07-18 14:01:15 +10:00
md_5
de019a35f0 Tweak display of command completions when we have none 2018-07-18 12:23:00 +10:00
md_5
e120b5d10e Fix missing PlayerResourcePackStatusEvent 2018-07-18 10:00:43 +10:00
md_5
3e814e7b7d SPIGOT-4034: Fix missed diff affecting canceled InventoryClickEvent 2018-07-18 09:59:10 +10:00
md_5
a71d06a0c8 SPIGOT-3998, MC-133373: Improve attributes 2018-07-17 21:11:52 +10:00
md_5
b4bff6fc3d SPIGOT-4026: Clicking on command error suggestion should return verbatim input 2018-07-17 06:49:40 +10:00
md_5
f03c10c185 SPIGOT-4025: Fixed missed diff affecting PlayerLocaleChangeEvent 2018-07-17 06:21:43 +10:00
md_5
e563bc00db Command block names are not nullable 2018-07-16 16:20:46 +10:00
md_5
84676f363c Fix MapInitializeEvent firing every tick 2018-07-16 12:45:01 +10:00
md_5
8fbc72b714 Add ignore-vanilla-permissions option to assist with disabling default commands 2018-07-16 12:06:06 +10:00
md_5
3890544e04 SPIGOT-4015: Make CraftTeam tie into backing prefix/suffix 2018-07-16 10:20:53 +10:00
md_5
00bba6e86f SPIGOT-4010: Prefix / suffix compatibility should default to empty string 2018-07-16 09:09:47 +10:00
md_5
82ca5c2740 SPIGOT-4006: ICE rather than SNOW forming in some biomes 2018-07-16 08:53:29 +10:00
md_5
fe7db9d53b Add EntityToggleSwimEvent and isSwimming / setSwimming API 2018-07-15 16:17:35 +10:00
md_5
421c1728c8 Update to Minecraft 1.13-pre7 2018-07-15 10:00:00 +10:00
md_5
ab13683d8e SPIGOT-3987: Preserve attributes when writing in books 2018-07-08 10:25:17 +10:00
blablubbabc
8cc5a7ecb6 SPIGOT-3945: Remove RepairCost tag when cost is 0 2018-05-27 17:10:22 +10:00
Parker Hawke
d0a3620c2d Implement Arrow tile methods 2018-05-06 14:12:19 +10:00
md_5
4509a144db SPIGOT-3899: Only load advancements from primary world 2018-04-15 10:21:11 +10:00
md_5
fb423b8f48 SPIGOT-3883: Better reloading of pending unload chunks 2018-04-04 16:12:32 +10:00
md_5
68b4fb6427 SPIGOT-3882: Extra call site for VehicleEntityCollisionEvent 2018-04-02 12:55:28 +10:00
md_5
1daee53916 SPIGOT-3879: Make end->overworld spawning more consistent with vanilla 2018-03-30 19:16:53 +11:00
md_5
2e210288de SPIGOT-3875: Book selectors not resolving 2018-03-29 20:34:46 +11:00
md_5
aa255689c1 SPIGOT-3869: More resurrect fixes 2018-03-24 16:13:17 +11:00
md_5
3fed09cc42 SPIGOT-3869: Error when forcing EntityResurrectEvent 2018-03-23 19:40:16 +11:00
md_5
29705a0d4f SPIGOT-3864: Protect against suffocation on world change 2018-03-22 21:05:34 +11:00
md_5
7e94e65a1c SPIGOT-3845: Fix spawnRadius on respawn
Thanks senmori for the investigation in PR #431
2018-03-08 18:21:31 +11:00
md_5
1bb523c4e4 SPIGOT-3829: Apply some speed limits to all entities 2018-02-19 09:52:00 +11:00
Senmori
f8411ea1e5 Expand Structure Block API 2018-02-12 10:33:19 +11:00
md_5
8bb4f6ccc1 SPIGOT-3813: Player.setHealth not reliable in conjunction with attribute API 2018-02-12 08:59:32 +11:00
md_5
aa34e9bddd SPIGOT-3805: Minecart does not teleport through Nether Portal 2018-02-09 18:04:44 +11:00
Senmori
1c40a81828 Expand EnderSignal API 2018-02-03 17:48:41 +11:00
md_5
dac2a4a6ae SPIGOT-3784: Reset horse chests after event 2018-01-28 09:44:16 +11:00
Senmori
c7656468e4 Expand CreatureSpawner API 2018-01-24 17:19:41 +11:00
md_5
4a030536cd SPIGOT-3775: ghost player list entry if kicked on join 2018-01-23 22:49:26 +11:00
md_5
1dced6a2c5 Send complete metadata update to joining players 2018-01-08 19:48:32 +11:00
md_5
c3e4382c33 CauldronLevelChangeEvent does not use new level 2018-01-08 13:42:44 +11:00
md_5
dc7d31b00d SPIGOT-3735: Missing call to BlockFadeEvent 2018-01-04 08:57:01 +11:00
md_5
360629ec5a SPIGOT-3729: Add AreaEffectClouds to tracker 2018-01-02 10:14:30 +11:00
Senmori
950006003c SPIGOT-355: API for Villager careers 2017-12-31 21:21:03 +11:00
md_5
8c37e2ebda SPIGOT-3717: Fix some RCON commands 2017-12-26 07:28:56 +11:00
md_5
70cc3820cf SPIGOT-3686: Move entity event call earlier in method 2017-12-09 17:32:19 +11:00
md_5
d063cd0d3b Fix missing event call for BlockRedstoneLamp 2017-12-07 10:59:30 +11:00
md_5
22564a9177 SPIGOT-3674: Take into account max stack size for PlayerDropItemEvent 2017-12-03 08:55:19 +11:00
md_5
809c399a62 SPIGOT-3668: Missing EntityToggleGlideEvent in creative mode 2017-11-28 09:33:40 +11:00
Senmori
bdb8822625 SPIGOT-1505: PlayerItemMendEvent 2017-11-21 10:21:20 +11:00
md_5
b4c298d644 Fix mismatched setArrowCount method 2017-11-17 11:03:30 +11:00
Thinkofdeath
685ed2eb92 Fix dispensing bone meal not having the correct data value 2017-11-17 10:23:20 +11:00
Parker Hawke
305df9035f Implement max fuse tick & explosion radius methods to Creeper 2017-11-08 12:33:21 +11:00
md_5
3e3bbd4272 SPIGOT-3638: Don't process async chat on shutting down server 2017-11-08 10:36:11 +11:00
md_5
2fae23c251 SPIGOT-3637: Adjust yaw yet again 2017-11-07 17:21:38 +11:00
md_5
b8f84f375b Fix bad diff 2017-10-13 21:47:55 +11:00
md_5
ef2f38267f SPIGOT-3607: Bad yaw from armorstands treated as living 2017-10-13 21:36:32 +11:00
md_5
6733aa5635 SPIGOT-3603: Fix client timing out in scenarios where it sends no packets. 2017-10-09 18:23:58 +11:00
blablubbabc
f8500c0a3e SPIGOT-3598: Persist all beacon effects
Regardless of if they are possible in Vanilla by default.
2017-10-07 18:48:08 +11:00
md_5
e8b6e4f29b Temporarily shift L7 timeout value to L4 value of 30s. 2017-10-06 20:49:22 +11:00
md_5
362ed329f0 Supress harmless teleport error 2017-10-01 17:29:03 +11:00
md_5
94b0980852 SPIGOT-3571: Packet handling must be synchronous 2017-09-19 08:00:56 +10:00
md_5
9a1f5ee80a Update to Minecraft 1.12.2 2017-09-18 20:00:00 +10:00
md_5
357b573a19 SPIGOT-3513: Correctly set size for freshly spawned Minecarts 2017-08-16 20:47:23 +10:00
Geoff Crossland
963b19c599 Fix a few chunk saving race conditions
* ChunkRegionLoader.c() picks an entry in the save queue, removes that entry from the save queue and then actually writes the entry to the region file. So, between the last two steps, the entry is neither in the save queue nor is it in the region file; if somebody loads the chunk again (with ChunkRegionLoader.loadChunk()) in that gap, they'll get old data. I've delayed the removal until the saving is done.
* ChunkRegionLoader.c() also records the coords of the chunks it's currently saving in this.c. ChunkRegionLoader.a(ChunkCoordIntPair, NBTTagCompound), which adds an entry to the save queue, stops the addition of an entry if its coords are in this.c. Now, I'm guessing that Mojang's intended purpose for this mechanism was to prevent multiple parallel writes for the same chunk. The "stops the addition" bit above should then be something like "block until it's no longer in c"; in fact, the vanilla implementation is "discard the new state of the chunk". I've taken the easy route to solving this, by just making ChunkRegionLoader.c() synchronized (since, in normal use, only the chunk saving thread is in here).
2017-08-11 17:34:19 +10:00
md_5
27b8bf9116 SPIGOT-3497: Cancelled EntityPortalEvent leads to incorrect behaviour 2017-08-08 20:35:29 +10:00
Lukas Hennig
61a31ca0c7 SPIGOT-3496, MC-92282: Set mob type of mob-spawner reverts after single spawn wave.
Fixes CreatureSpawner.setSpawnedType and a vanilla issue related to
setting the mob type of a mob-spawner via spawn_egg.
2017-08-08 20:34:15 +10:00
md_5
b5878783ad SPIGOT-3491: Add option to bypass permissions in advancements 2017-08-06 09:07:24 +10:00
Lukas Hennig
19507baf8b Improvements to BlockStates
* Actually capture all the data of TileEntities. This is done by creating a copy of the TileEntity. The methods of BlockState which currently directly access the TileEntity reference will modify the data of that TileEntity-snapshot instead.
* With the call to BlockState.update, the captured TileEntity data gets applied to the current TileEntity in the world.
* Methods which trigger block specific actions will use the current TileEntity from the world.
* CraftBlockState does not hand out the wrapped or the snapshot TileEntity directly. Instead, it provides an applyTo method to copy the data to a given TileEntity and a method to directly get a copy of the TileEntity NBT data represented by the BlockState. CraftMetaBlockState was updated to make use of that.
* Added #getSnapshotInventory() to bukkit which allows modifiying the captured inventory snapshots of containers.
* Tried to clarify which methods only work if the BlockState is placed, which methods require the block in the world to still be of the same type (methods which trigger actions), and that .getInventory() directly modifies the inventory of the block in the world if the BlockState is placed and becomes invalid if the block type is changed.

Backwards compatibility

* If the BlockState acts as InventoryHolder, getInventory() will still return the inventory directly backed by the TileEntity in the world (like before), and not the snapshot inventory. This compromise should reduce the potential of these changes to break existing plugins, or craftbukkit's own use of BlockState.
* The snapshot's inventory can be accessed by a new method getSnapshotInventory()
* In case the BlockState is not placed (if it was retrieved from the MetaBlockState of an item), the getInventory() method will however return the snapshot inventory. So that when the BlockState gets applied back to the item, the inventory changes are properly included.
* With the changes to CraftMetaBlockState it is no longer required to call the update method before passing a modified BlockState to the CraftMetaBlockState. For backwards compatibility the update method will simply return true for a non-placed BlockState, without actually doing anything.

Impact on plugins
* Restoring blocks now actually works as expected, properly restoring the TileEntity data, reglardless if the block changed its type in the meantime.
* Plugins are now consistently required to call the update method in order to apply changes to blocks. Though, regarding the Javadoc they should have been required to do so anyways.
* New feature: Plugins can take and modify inventory snapshots.
* Breaking change: If a plugin gets the BlockState of a block in the world, modifies the inventory returned by .getInventory(), and then tries to use the same BlockState to apply the TileEntity data to an ItemStack block meta, the ItemStack will use the snapshot inventory, disregarding the changes made to the inventory returned by .getInventory(). This is the compromise of .getInventory() returning the inventory directly backed by the TileEntity in the world.

Other fixes related to BlockState:
* TileEntityContainer#getLocation() will run into a NPE if the TileEntity is non-placed (ex. when getting the BlockState from a CraftMetaBlockState).
* Beacon.getEntitiesInRange() would previously throw a NPE if called for a non-placed BlockState. It was changed to now require to be placed and use the current TileEntity in the world. If the TileEntity in the world is no longer a beacon, it will return an empty list.
* EndGateway now supports setting and getting the exit location even for non-placed EndGateways (inside BlockStateMeta) by using / returning a location with world being null.
2017-08-05 14:37:19 +10:00
md_5
63029f4ff3 SPIGOT-3492: Ensure player functionality uses their specific scoreboard 2017-08-05 09:15:52 +10:00
md_5
2a927e8638 Update to Minecraft 1.12.1 2017-08-03 23:00:00 +10:00
md_5
57c323aad1 SPIGOT-3486: Missing check in redstone placement 2017-08-03 08:31:29 +10:00
md_5
2cfb85dae2 SPIGOT-3487: Llama doesn't drop chest 2017-08-03 08:21:05 +10:00