Commit graph

145 commits

Author SHA1 Message Date
CraftBukkit/Spigot
a2fa8bb79d SPIGOT-7266: Found typo in CraftBukkit package
By: DerFrZocker <derrieple@gmail.com>
2023-06-08 13:40:54 +10:00
CraftBukkit/Spigot
010814803a SPIGOT-7372, SPIGOT-7373: Signs can't be edited, issues with SignChangeEvent
By: md_5 <git@md-5.net>
2023-06-08 12:19:59 +10:00
CraftBukkit/Spigot
9d740b84b0 Update to Minecraft 1.20
By: md_5 <git@md-5.net>
2023-06-08 01:30:00 +10:00
CraftBukkit/Spigot
ba817be945 SPIGOT-519: Add TNTPrimeEvent
Thanks to Pokechu22 for an earlier implementation

By: Jishuna <joshl5324@gmail.com>
2023-05-03 20:46:43 +10:00
CraftBukkit/Spigot
b99d3df2d8 #1181: Consolidate Location conversion code
By: Doc <nachito94@msn.com>
2023-04-19 19:59:19 +10:00
CraftBukkit/Spigot
9e30ea471f #1095: Add PlayerSpawnChangeEvent
By: Doc <nachito94@msn.com>
2023-04-17 19:33:17 +10:00
CraftBukkit/Spigot
cf3a617ee3 SPIGOT-7315: Bed placement duplicates crops if cancelled
By: DerFrZocker <derrieple@gmail.com>
2023-04-07 10:56:58 +02:00
CraftBukkit/Spigot
48dd61052b Fix UUID not being updated when changing world of MapView
By: Phoenix616 <max@themoep.de>
2023-04-04 19:36:37 +01:00
CraftBukkit/Spigot
7b627056c1 #1164, MC-227255, MC-253819: Fix rotation of beehives and bells
By: Jishuna <joshl5324@gmail.com>
2023-04-04 07:01:54 +10:00
CraftBukkit/Spigot
496189d962 #1160: Add more bell API
By: Parker Hawke <hawkeboyz2@hotmail.com>
2023-04-02 14:35:13 +10:00
CraftBukkit/Spigot
c48c822440 #1155: Allow getting chunks without generating them and optimize chunk data request for ungenerated chunks
By: DerFrZocker <derrieple@gmail.com>
2023-04-02 13:06:59 +10:00
CraftBukkit/Spigot
26ae05b48f SPIGOT-7313: More accurately edit data on Jukeboxes
By: Parker Hawke <hawkeboyz2@hotmail.com>
2023-03-29 19:23:41 +11:00
CraftBukkit/Spigot
bc7c41cfbc SPIGOT-7308: Fix NullPointerException when calling Jukebox#setRecord()
By: Parker Hawke <hawkeboyz2@hotmail.com>
2023-03-22 14:21:06 -04:00
CraftBukkit/Spigot
28c4b7531f Fix crash with juke boxes
By: md_5 <git@md-5.net>
2023-03-15 18:14:15 +11:00
CraftBukkit/Spigot
40076782ed Update to Minecraft 1.19.4
By: md_5 <git@md-5.net>
2023-03-15 03:30:00 +11:00
CraftBukkit/Spigot
7bf6f20cec SPIGOT-7220: TNT drop rate isn't 100%
By: md_5 <git@md-5.net>
2023-03-04 11:47:05 +11:00
CraftBukkit/Spigot
14206127d6 #1119: Add HopperInventorySearchEvent to select the Inventory that the Hopper pulls/pushes into
By: James Peters <email@jamesdpeters.com>
2023-03-04 09:05:17 +11:00
CraftBukkit/Spigot
c8aa873369 SPIGOT-7261: Add AsyncStructureSpawnEvent
By: Lauriichan <laura.endress@syntaxphoenix.com>
2023-03-04 08:36:00 +11:00
CraftBukkit/Spigot
ed2f6b4efc #1142: Calculate explosion damage separately for each affected EntityComplexPart
Currently the Ender Dragon takes roughly 3x the explosion damage when compared to vanilla 1.19.3. This is caused by a single damage value being calculated for the EntityEnderDragon and then being uniformly applied to every EntityComplexPart belonging to that dragon.

This is resolved by restoring the vanilla behavior of calculating explosion damage separately for each EntityComplexPart.

By: Jacob Martin <jjm_223@hotmail.com>
2023-02-27 20:34:19 +11:00
CraftBukkit/Spigot
db08041df9 SPIGOT-7224: Add events for brewing stands and campfires starting their actions
By: FreeSoccerHDX <freesoccerhdx@gmail.com>
2023-02-05 11:06:25 +11:00
CraftBukkit/Spigot
a5b2050ee5 #1129: Fix state corruption while handling explosion damage on EntityComplexPart
An IllegalStateException may occur when an entity is damaged by fire or a potion effect immediately after an EntityComplexPart is damaged by an explosion.

This is fixed by performing the instanceof EntityComplexPart check prior to setting CraftEventFactory.entityDamage.

By: Jacob Martin <jjm_223@hotmail.com>
2022-12-29 14:06:51 +11:00
CraftBukkit/Spigot
be664f5cc4 #1125: Add support for NoteBlock sounds in Skulls
By: Doc <nachito94@msn.com>
2022-12-23 12:26:06 +11:00
CraftBukkit/Spigot
bd71072036 SPIGOT-7210: Fix structures in custom worlds
By: md_5 <git@md-5.net>
2022-12-16 11:13:10 +11:00
CraftBukkit/Spigot
8b26bb8f3e Update to Minecraft 1.19.3
By: md_5 <git@md-5.net>
2022-12-08 03:00:00 +11:00
CraftBukkit/Spigot
159ae52462 #1107: Add getHand() to all relevant events
By: Parker Hawke <hawkeboyz2@hotmail.com>
2022-10-02 09:07:14 +11:00
CraftBukkit/Spigot
34ab403aa0 SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
By: DerFrZocker <derrieple@gmail.com>
2022-09-28 20:09:43 +10:00
CraftBukkit/Spigot
8b2749a446 SPIGOT-7137: StructureGrowEvent isFromBonemeal and getPlayer have incorrect values
By: md_5 <git@md-5.net>
2022-08-14 10:54:23 +10:00
CraftBukkit/Spigot
f8db65033c Update to Minecraft 1.19.1
By: md_5 <git@md-5.net>
2022-07-28 04:00:00 +10:00
CraftBukkit/Spigot
35388a73b0 SPIGOT-7095: StructureGrowEvent doesn't fire for mangrove propagules growing to a tree
By: md_5 <git@md-5.net>
2022-07-10 14:12:30 +10:00
CraftBukkit/Spigot
c6f488dfd5 SPIGOT-7072: Call events for stepping on sculk sensors and sculk shriekers
By: BlackHole <black-hole@live.com>
2022-06-23 20:25:36 +10:00
CraftBukkit/Spigot
6e92592b55 SPIGOT-7068: SKULK and SKULK_VEIN BlockSpreadEvents Still do not reference the correct source (SKULK_CATALYST)
By: DerFrZocker <derrieple@gmail.com>
2022-06-19 21:48:24 +10:00
CraftBukkit/Spigot
0d983f9b9a SPIGOT-7060: SCULK and SCULK_VEIN BlockSpreadEvents do not reference the correct source
By: md_5 <git@md-5.net>
2022-06-14 21:21:46 +10:00
CraftBukkit/Spigot
52f9281656 #1065: Add missing calls for BlockSpreadEvent when Sculk spreads
By: Brokkonaut <hannos17@gmx.de>
2022-06-11 13:20:38 +10:00
CraftBukkit/Spigot
766668f0db SPIGOT-7041: Custom BiomeProvider not used when world set to type FLAT
By: md_5 <git@md-5.net>
2022-06-10 11:08:00 +10:00
CraftBukkit/Spigot
d9d74754ba SPIGOT-7043: EnderChest does not implement Lidded
By: md_5 <git@md-5.net>
2022-06-10 10:57:43 +10:00
CraftBukkit/Spigot
25f3b50f6b Update to Minecraft 1.19
By: md_5 <git@md-5.net>
2022-06-08 02:00:00 +10:00
CraftBukkit/Spigot
aba0972e9a #1045: Revert changes to persistence required checks
By: DerFrZocker <derrieple@gmail.com>
2022-05-03 23:13:03 +10:00
CraftBukkit/Spigot
465b2801f1 SPIGOT-7010: Changing dropper item results in using dispensing behaviour
By: md_5 <git@md-5.net>
2022-04-28 19:16:28 +10:00
CraftBukkit/Spigot
c9a265249c #1039: Use correct ops in GeneratorSettings
By: Martoph <sager1018@gmail.com>
2022-03-27 16:24:09 +11:00
CraftBukkit/Spigot
f046a30653 SPIGOT-5140: Call EntityChangeBlockEvent when a ChorusFlower is destroyed by a projectile
By: Brokkonaut <hannos17@gmx.de>
2022-03-21 13:17:54 +11:00
CraftBukkit/Spigot
9ee989ea81 Update to Minecraft 1.18.2
By: md_5 <git@md-5.net>
2022-03-01 02:00:00 +11:00
CraftBukkit/Spigot
b9534e1c48 #1009: Add Furnace#getRecipesUsed
By: Doc <nachito94@msn.com>
2022-02-15 18:48:54 +11:00
CraftBukkit/Spigot
77b8e4803a #1010: Add PDC to World
By: DerFrZocker <derrieple@gmail.com>
2022-02-15 09:36:00 +11:00
CraftBukkit/Spigot
314b83ffae SPIGOT-6918: Add SpawnCategory API and configurations for Axolotls
By: Doc <nachito94@msn.com>
2022-02-07 18:47:27 +11:00
CraftBukkit/Spigot
602f8cb433 #989: Add PDC to Structures
By: Martoph <sager1018@gmail.com>
2022-01-07 09:43:05 +11:00
CraftBukkit/Spigot
46f0dde817 SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Only cancel knockback if the damage event was canceled
By: DerFrZocker <derrieple@gmail.com>
2022-01-03 18:07:01 +01:00
CraftBukkit/Spigot
94c2fa1b14 SPIGOT-6852: BlockReceiveGameEvent#getBlock returning wrong block
By: md_5 <git@md-5.net>
2021-12-14 07:52:43 +11:00
CraftBukkit/Spigot
667cb32115 Update to Minecraft 1.18.1
By: md_5 <git@md-5.net>
2021-12-11 00:11:02 +11:00
CraftBukkit/Spigot
24b8f3c641 #971: Remove strong chunk reference in PDC
A previous fix for SPIGOT-6814 implemented a callback function for the
PDC implementation that could be set to actively define a chunk as
unsaved, allowing chunks that have not been mutated through block
changes to still require saving if the chunks pdc was mutated.

This implementation however would pass a callback that references the
chunk access internally, meaning the PDC now actively holds onto a
callback that holds a reference to the entire chunk.

Aditionally, this change also impacted the pdc for item metas and
entities for really no reason whatsoever.

This commit re-implements the fix by introducing a new child of the pdc
implementation that the chunk now uses as its pdc. This specific
implementation maintains a dirty flag that is set to `true` on any form
of mutation and set back to false by the chunk that owns the PDC
whenever the chunk itself is flag as no longer dirty.

By: Bjarne Koll <lynxplay101@gmail.com>
2021-12-05 08:52:51 +11:00
CraftBukkit/Spigot
a0201b0f02 SPIGOT-6795: Fix BlockFertilizeEvent not being triggered for Azaleas
By: Rafael S. M. Santos <eu@rafaelsms.com>
2021-12-01 08:27:58 +11:00
CraftBukkit/Spigot
4dbb83e45d SPIGOT-6817: Revert back to old block state behaviour again
By: md_5 <git@md-5.net>
2021-11-29 11:03:16 +11:00
CraftBukkit/Spigot
6b0484122e SPIGOT-6814: (Chunk) PersistentData is lost after restart
By: DerFrZocker <derrieple@gmail.com>
2021-11-29 09:28:19 +11:00
CraftBukkit/Spigot
799bfc92e2 Update to Minecraft 1.18-pre8
By: md_5 <git@md-5.net>
2021-11-25 08:00:00 +11:00
CraftBukkit/Spigot
3e7bd2643c Improve multi-dimension code
By: md_5 <git@md-5.net>
2021-11-23 18:39:43 +11:00
CraftBukkit/Spigot
820ad30036 SPIGOT-6802: Fix major issues with --forceUpgrade
More to come

By: md_5 <git@md-5.net>
2021-11-23 17:13:52 +11:00
CraftBukkit/Spigot
43702a9e10 Update to Minecraft 1.18-pre5
By: md_5 <git@md-5.net>
2021-11-22 09:00:00 +11:00
CraftBukkit/Spigot
9e3a0e859f SPIGOT-6772: Use entity mailbox and re-schedule entities if they get unloaded
By: DerFrZocker <derrieple@gmail.com>
2021-11-01 18:54:44 +11:00
CraftBukkit/Spigot
a2a88c50af #945: Allow setting BrewEvent results
By: Doc <nachito94@msn.com>
2021-10-30 18:16:35 +11:00
CraftBukkit/Spigot
55f4d6c7cb SPIGOT-6760: Chest#getInventory only returns one half of a double chest when one or both halves are blocked
By: md_5 <git@md-5.net>
2021-10-16 18:48:21 +11:00
CraftBukkit/Spigot
82e8261d70 SPIGOT-6754: We ignore any still present TileEntity now when we create a BlockState for a block of type AIR.
During block destruction, the type of the block may already have been set to AIR while the TileEntity has not yet been removed.
Also, TileEntity#getOwner() skips the whole BlockState construction now if the block is of type AIR.

This removes the previous workaround again of returning a dummy CraftBlockEntityState in this case.

By: blablubbabc <lukas@wirsindwir.de>
2021-10-10 07:55:53 +11:00
CraftBukkit/Spigot
188d3b23d0 SPIGOT-2903: Add Structure API
By: Sander Knauff <sanderknauff@hotmail.com>
2021-10-05 11:56:35 +11:00
CraftBukkit/Spigot
2d0a775210 #934: Support for configuring Water Underground Creatures spawn settings
By: Doc <nachito94@msn.com>
2021-10-05 11:29:52 +11:00
CraftBukkit/Spigot
f27c8f74f8 #877: Improve and simplify CraftBlockState
By: blablubbabc <lukas@wirsindwir.de>
2021-09-29 18:56:16 +10:00
CraftBukkit/Spigot
5c075d59dc SPIGOT-6547: Chunk#getEntities() doesn't return all entities immediately after chunk load
By: DerFrZocker <derrieple@gmail.com>
2021-09-01 18:55:18 +10:00
CraftBukkit/Spigot
08e5ad2b2f SPIGOT-6720: Fix bed explosion checks
By: Doc <nachito94@msn.com>
2021-08-27 19:17:43 +10:00
CraftBukkit/Spigot
c8ef43f1b5 SPIGOT-6722: Close entity manager when unloading world
By: DerFrZocker <derrieple@gmail.com>
2021-08-27 19:14:09 +10:00
CraftBukkit/Spigot
c2e4e91b1b SPIGOT-5880, SPIGOT-5567: New ChunkGenerator API
## **Current API**
The current world generation API is very old and limited when you want to make more complex world generation. Resulting in some hard to fix bugs such as that you cannot modify blocks outside the chunk in the BlockPopulator (which should and was per the docs possible), or strange behavior such as SPIGOT-5880.

## **New API**
With the new API, the generation is more separate in multiple methods and is more in line with Vanilla chunk generation. The new API is designed to as future proof as possible. If for example a new generation step is added it can easily also be added as a step in API by simply creating the method for it. On the other side if a generation step gets removed, the method can easily be called after another, which is the case with surface and bedrock. The new API and changes are also fully backwards compatible with old chunk generators.

### **Changes in the new api**
**Extra generation steps:**
Noise, surface, bedrock and caves are added as steps. With those generation steps three extra methods for Vanilla generation are also added. Those new methods provide the ChunkData instead of returning one. The reason for this is, that the ChunkData is now backed by a ChunkAccess. With this, each step has the information of the step before and the Vanilla information (if chosen by setting a 'should' method to true). The old method is deprecated.

**New class BiomeProvider**
The BiomeProvider acts as Biome source and wrapper for the NMS class WorldChunkManager. With this the underlying Vanilla ChunkGeneration knows which Biome to use for the structure and decoration generation. (Fixes: SPIGOT-5880). Although the List of Biomes which is required in BiomeProvider, is currently not much in use in Vanilla, I decided to add it to future proof the API when it may be required in later versions of Minecraft.
The BiomeProvider is also separated from the ChunkGenerator for plugins which only want to change the biome map, such as single Biome worlds or if some biomes should be more present than others.

**Deprecated isParallelCapable**
Mojang has and is pushing to a more multi threaded chunk generation. This should also be the case for custom chunk generators. This is why the new API only supports multi threaded generation. This does not affect the old API, which is still checking this.

**Base height method added**
This method was added to also bring the Minecraft generator and Bukkit generator more in line. With this it is possible to return the max height of a location (before decorations). This is useful to let most structures know were to place them. This fixes SPIGOT-5567. (This fixes not all structures placement, desert pyramids for example are still way up at y-level 64, This however is more a vanilla bug and should be fixed at Mojangs end).

**WorldInfo Class**
The World object was swapped for a WorldInfo object. This is because many methods of the World object won't work during world generation and would mostly likely result in a deadlock. It contains any information a plugin should need to identify the world.

**BlockPopulator Changes**
Instead of directly manipulating a chunk, changes are now made to a new class LimitedRegion, this class provides methods to populated the chunk and its surrounding area. The wrapping is done so that the population can be moved into the place where Minecraft generates decorations. Where there is no chunk to access yet. By moving it into this place the generation is now async and the surrounding area of the chunk can also be used.

For common methods between the World and LimitedRegion a RegionAccessor was added.

By: DerFrZocker <derrieple@gmail.com>
2021-08-15 08:08:16 +10:00
CraftBukkit/Spigot
3483bd08b3 #913: Handle campfire damage with EntityDamageByBlockEvent
By: Doc <nachito94@msn.com>
2021-08-11 19:05:08 +10:00
CraftBukkit/Spigot
8650786dad SPIGOT-6645: Call EntityChangeBlockEvent before PlayerHarvestBlockEvent
By: Brokkonaut <hannos17@gmx.de>
2021-07-19 18:54:13 +10:00
CraftBukkit/Spigot
5eb7a2ed61 SPIGOT-6656: CauldronLevelChangeEvent is not fired correctly when dripstone fills the cauldron
By: md_5 <git@md-5.net>
2021-07-18 10:14:55 +10:00
CraftBukkit/Spigot
96ffc08c35 #874: Add FurnaceStartSmeltEvent
By: Rabbitual <38820203+Rabbitual@users.noreply.github.com>
2021-07-17 11:19:51 +10:00
CraftBukkit/Spigot
215fa0caef SPIGOT-6649: Call BlockFadeEvent when Nylium fades to Netherrack
By: Brokkonaut <hannos17@gmx.de>
2021-07-15 20:29:38 +10:00
CraftBukkit/Spigot
a061943cac SPIGOT-5561: Warning in logs when changing a Mob Spawner to Air on chunk load
By: DerFrZocker <derrieple@gmail.com>
2021-07-13 19:22:27 +10:00
CraftBukkit/Spigot
18a453f567 SPIGOT-6637: Revert "#874: Add FurnaceStartSmeltEvent"
This reverts commit 38faf28378.

By: md_5 <git@md-5.net>
2021-07-11 12:26:27 +10:00
CraftBukkit/Spigot
38faf28378 #874: Add FurnaceStartSmeltEvent
By: Rabbitual <38820203+rabbitual@users.noreply.github.com>
2021-07-11 09:26:46 +10:00
CraftBukkit/Spigot
0a1df9ec02 SPIGOT-6624: Explosions do not destroy blocks out of vanilla heights in custom dimensions
By: dYens <dani_raiders@hotmail.com>
2021-07-07 07:27:16 +10:00
CraftBukkit/Spigot
e8c9836ec9 Update to Minecraft 1.17.1
By: md_5 <git@md-5.net>
2021-07-07 00:00:00 +10:00
CraftBukkit/Spigot
917e89ed06 SPIGOT-5710: POI data mismatch when cancelling BlockPlaceEvent for villager workstations
By: DerFrZocker <derrieple@gmail.com>
2021-07-03 15:39:52 +10:00
CraftBukkit/Spigot
bfa7716ca1 SPIGOT-6613: Missing BlockIgniteEvent for candles + projectiles
By: md_5 <git@md-5.net>
2021-06-30 18:56:27 +10:00
CraftBukkit/Spigot
fc07fa5704 SPIGOT-6576: BlockExpEvent does not show XP when breaking a furnace
By: md_5 <git@md-5.net>
2021-06-19 08:45:08 +10:00
CraftBukkit/Spigot
4b86eeff64 SPIGOT-6570: Missing InventoryType: COMPOSTER
By: md_5 <git@md-5.net>
2021-06-17 08:29:15 +10:00
CraftBukkit/Spigot
df28f86cce SPIGOT-6562: Add more specific sculk sensor event
By: md_5 <git@md-5.net>
2021-06-16 08:34:34 +10:00
CraftBukkit/Spigot
e4f5bec8b3 SPIGOT-6561: Add events for dripleaf tilting
By: md_5 <git@md-5.net>
2021-06-15 08:49:10 +10:00
CraftBukkit/Spigot
1daedfe082 SPIGOT-6519: Fix end gateway teleports
By: md_5 <git@md-5.net>
2021-06-12 11:07:06 +10:00
CraftBukkit/Spigot
536256d6ff SPIGOT-6508: Rename conflicted getServer
By: md_5 <git@md-5.net>
2021-06-11 21:33:49 +10:00
CraftBukkit/Spigot
b3a8254758 Update to Minecraft 1.17
By: md_5 <git@md-5.net>
2021-06-11 15:00:00 +10:00
CraftBukkit/Spigot
ee04dc8508 SPIGOT-6492: PortalCreateEvent#getBlocks() returns not all blocks by reason fire
By: DerFrZocker <derrieple@gmail.com>
2021-06-07 18:39:30 +10:00
CraftBukkit/Spigot
d5fb854202 SPIGOT-6480: Players cannot take books from lecterns that were opened by plugins
By: blablubbabc <lukas@wirsindwir.de>
2021-05-29 18:52:49 +10:00
CraftBukkit/Spigot
17a73066d0 SPIGOT-5877: Add support for Vanilla custom dimensions
By: Martoph <sager1018@gmail.com>
2021-04-16 10:36:05 +10:00
CraftBukkit/Spigot
97cd7810a3 Add mc-dev imports
By: md_5 <git@md-5.net>
2021-04-07 15:03:29 +10:00
CraftBukkit/Spigot
79672394a1 Remove some outdated PAIL comments
By: md_5 <git@md-5.net>
2021-04-04 17:14:53 +10:00
CraftBukkit/Spigot
7af71a460f SPIGOT-6237: WorldCreator#generatorSettings not working
By: Martoph <sager1018@gmail.com>
2021-04-04 14:02:32 +10:00
CraftBukkit/Spigot
90df44b39a SPIGOT-6398: Fix crash when bonemealing bamboo and the BlockSpreadEvent is cancelled
By: Brokkonaut <hannos17@gmx.de>
2021-03-20 09:01:18 +11:00
CraftBukkit/Spigot
9da047989c Repackage NMS
By: md_5 <git@md-5.net>
2021-03-16 09:00:00 +11:00
CraftBukkit/Spigot
18496e998f Repackage patches
By: md_5 <git@md-5.net>
2021-03-16 09:00:00 +11:00