Commit graph

6089 commits

Author SHA1 Message Date
Noah van der Aa
902965e66a
net.minecraft.network.protocol.common(.custom) 2024-12-14 19:06:58 +01:00
Shane Freeder
1a214aed6a
net/minecraft/world/entity/item 2024-12-14 17:58:14 +00:00
Owen1212055
822b963d3f net/minecraft/network/protocol/game/ 2024-12-14 12:57:50 -05:00
Nassim Jahnke
e50b519542
Next one unfortunately is LivingEntity 2024-12-14 18:45:01 +01:00
Noah van der Aa
02fb33c3ee
net.minecraft.network.chat 2024-12-14 18:44:19 +01:00
Noah van der Aa
52d26db5a0
net.minecraft.world.item.consume_effects 2024-12-14 18:44:19 +01:00
Noah van der Aa
1f128f76c7
net.minecraft.data.loot.packs 2024-12-14 18:44:19 +01:00
Lulu13022002
d7eab570bd
components 2024-12-14 18:41:16 +01:00
Owen1212055
016503a85f net/minecraft/world/entity/animal/goat/ 2024-12-14 12:28:50 -05:00
Lulu13022002
cb84eaf87a
some fixes 2024-12-14 18:22:52 +01:00
Noah van der Aa
d027a2c341
net.minecraft.resources 2024-12-14 18:17:05 +01:00
Owen1212055
71cac092ea net/minecraft/world/inventory fixes 2024-12-14 12:14:44 -05:00
Nassim Jahnke
ea14971545
More entity classes 2024-12-14 18:12:30 +01:00
Owen1212055
64e61681f4 net/minecraft/world/inventory 2024-12-14 11:56:00 -05:00
Shane Freeder
3672a7d70f
net/minecraft/world/entity/npc 2024-12-14 16:44:20 +00:00
Shane Freeder
6002fbc152
/net/minecraft/world/level/levelgen/structure/templatesystem 2024-12-14 16:44:20 +00:00
Noah van der Aa
14f6b329a5
net.minecraft.world.level.border 2024-12-14 17:43:55 +01:00
Noah van der Aa
3efd1caa64
net.minecraft.server.packs(.repository) 2024-12-14 17:39:31 +01:00
Noah van der Aa
68961d9f5e
net.minecraft.server.gui 2024-12-14 17:35:50 +01:00
Noah van der Aa
2a9bf40295
net.minecraft.world.entity.animal (thank you wheel of pain) 2024-12-14 17:27:12 +01:00
Bjarne Koll
dde17defa5
net/minecraft/world/entity/vehicle 2024-12-14 17:17:22 +01:00
Bjarne Koll
216f3118ae
net/minecraft/world/level/block/entity/trialspawner 2024-12-14 17:17:22 +01:00
Lulu13022002
bfcb0e71c9
server/network 2024-12-14 17:05:42 +01:00
MiniDigger | Martin
41494c70b0 net/minecraft/util/datafix/** 2024-12-14 16:42:52 +01:00
MiniDigger | Martin
f803e7cc28 update mache, rebuild patches for concurrency fix 2024-12-14 16:08:32 +01:00
Noah van der Aa
649f20ca93
net.minecraft.util.thread 2024-12-14 15:51:03 +01:00
Noah van der Aa
6fdbfef28e
net.minecraft.world.level.entity 2024-12-14 15:02:14 +01:00
Noah van der Aa
7d70dbf927
net.minecraft.world.damagesource 2024-12-14 14:47:37 +01:00
Noah van der Aa
5eb4ceb6a4
net.minecraft.world.item.enchantment 2024-12-14 14:40:36 +01:00
Noah van der Aa
729c6e5369
Random small stuff 2024-12-14 14:31:00 +01:00
Nassim Jahnke
679c2f7c9f
More more entity classes 2024-12-14 13:05:27 +01:00
Nassim Jahnke
07642b457e
More entity classes 2024-12-14 12:36:08 +01:00
Nassim Jahnke
03daab51f7
Entity class 2024-12-14 11:41:23 +01:00
Bjarne Koll
afa25753de
Fix compile issue in MinecraftServer 2024-12-14 05:48:25 +01:00
Bjarne Koll
f25c1a33a0
Finish block entity 2024-12-14 05:45:11 +01:00
Jake Potrebic
368d2116ba
net.minecraft.world.entity.raid 2024-12-13 19:53:42 -08:00
Jake Potrebic
aa7204fd62
net.minecraft.commands.arguments.selector 2024-12-13 19:46:27 -08:00
Jake Potrebic
9793846a7e
net.minecraft.world.level.redstone 2024-12-13 19:42:44 -08:00
Jake Potrebic
c62af3a5b7
net.minecraft.world.level.saveddata.maps 2024-12-13 19:35:46 -08:00
Jake Potrebic
d064a57573
fix a bunch of imports 2024-12-13 19:24:28 -08:00
Jake Potrebic
64500a201f
net.minecraft.server 2024-12-13 19:12:33 -08:00
Jake Potrebic
ce9d79a81b
net.minecraft.world.entity.projectile.windcharge 2024-12-13 17:54:21 -08:00
Jake Potrebic
5b0289a248
net.minecraft.world.level.storage.loot.predicates 2024-12-13 17:50:51 -08:00
Jake Potrebic
9ef230aa31
net.minecraft.world.entity.projectile 2024-12-13 17:45:53 -08:00
Jake Potrebic
cb5feced53
net.minecraft.world.entity.monster.warden 2024-12-13 16:08:40 -08:00
Jake Potrebic
f98d879f07
net.minecraft.world.level.block.state.properties 2024-12-13 16:05:23 -08:00
Jake Potrebic
fe1744dfd1
net.minecraft.world.item.alchemy 2024-12-13 16:02:20 -08:00
Jake Potrebic
f60983ac06
net.minecraft.world.entity.animal.allay 2024-12-13 15:55:52 -08:00
Jake Potrebic
f0e7d7e5f7
net.minecraft.world.level.block.state 2024-12-13 15:50:44 -08:00
Jake Potrebic
f252b67a97
net.minecraft.core.dispenser 2024-12-13 13:30:09 -08:00
Lulu13022002
83c42080d6
chat/contents 2024-12-13 21:49:47 +01:00
Lulu13022002
c6a426beda
warden AI 2024-12-13 21:36:11 +01:00
Nassim Jahnke
f73e864f18
Commands 2024-12-13 21:21:57 +01:00
Lulu13022002
2509faa08e
mob spawn settings 2024-12-13 21:07:56 +01:00
Nassim Jahnke
c3d5f253fe
Moar 2024-12-13 20:30:07 +01:00
Bjarne Koll
4091c6ac4d
Follow up on block entities 2024-12-13 20:17:16 +01:00
MiniDigger | Martin
b95e27be6c skip setupMacheSource on patch changes to save some time 2024-12-13 20:16:59 +01:00
Bjarne Koll
e0fae5ef02
Part of block entities 2024-12-13 20:11:23 +01:00
Nassim Jahnke
0135513d3d
More mobs 2024-12-13 20:01:24 +01:00
Nassim Jahnke
3ef3394311
More mobs 2024-12-13 19:25:16 +01:00
Noah van der Aa
7d42b87010
net/minecraft/world + Tadpole? 2024-12-13 19:17:03 +01:00
Noah van der Aa
18a25937bc
pathfinding, packet utils 2024-12-13 18:57:25 +01:00
Nassim Jahnke
e20952c643
Make Tadpole apply 2024-12-13 18:55:47 +01:00
Jake Potrebic
b97663fdf9
remove applied patches 2024-12-13 09:44:26 -08:00
Nassim Jahnke
aa998246f7
More work 2024-12-13 18:40:56 +01:00
Jake Potrebic
e9b739bc48
some more directories 2024-12-13 09:40:09 -08:00
Noah van der Aa
1ed5242f38
Ender dragon 2024-12-13 18:36:33 +01:00
Nassim Jahnke
83b7370131
Players directory 2024-12-13 18:06:27 +01:00
Owen1212055
a68b56a864
advancement stuff 2024-12-13 11:39:43 -05:00
Bjarne Koll
ee51737be6
More work 2024-12-13 17:24:35 +01:00
Bjarne Koll
92ef45d166
First attempt 2024-12-13 17:14:25 +01:00
Owen1212055
8324be321a
brig stuff 2024-12-13 11:02:13 -05:00
Nassim Jahnke
f2ff5966a6
First few files and initial rebuild 2024-12-13 16:52:45 +01:00
Nassim Jahnke
45ddf764d9
Move patches to unapplied 2024-12-12 12:30:31 +01:00
Jason Penilla
ff75689b08
Adjust build for config cache compat 2024-12-12 11:36:57 +01:00
Jason Penilla
8da8d2991f
Update dev bundle publishing 2024-12-12 11:36:57 +01:00
Jason Penilla
48c0f0ecd6
Fix commented sections of server build 2024-12-12 11:36:56 +01:00
Jason Penilla
d23702f449
Add back remapper for reobf testing and dev bundle 2024-12-12 11:36:56 +01:00
Jason Penilla
9368da77a9
Build updates 2024-12-12 11:36:55 +01:00
Jason Penilla
fe6dbf0377
Move paperweight use to -server 2024-12-12 11:36:44 +01:00
MiniDigger | Martin
40ec8fb606
Move to paperweight v2
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
2024-12-12 10:57:30 +01:00
Jake Potrebic
ca5499c7fa Switch Impl types to Holderable 2024-11-24 15:08:19 -08:00
Owen1212055
d300c94ec2 Properly resend entities
This resolves some issues which caused entities to not be resent correctly.
Entities that are interacted with need to be resent to the client, so we resend all the entity
data to the player whilst making sure not to clear dirty entries from the tracker. This makes
sure that values will be correctly updated to other players.

This also adds utilities to aid in further preventing entity desyncs.

This also also fixes the bug causing cancelling PlayerInteractEvent to cause items to continue
to be used despite being cancelled on the server.

For example, items being consumed but never finishing, shields being put up, etc.
The underlying issue of this is that the client modifies their synced data values,
and so we have to (forcibly) resend them in order for the client to reset their using item state.

See: https://github.com/PaperMC/Paper/pull/1896

== AT ==
public net.minecraft.server.level.ChunkMap$TrackedEntity serverEntity
2022-12-07 17:25:19 -05:00
Rick
ea24e2c6aa Fix incorrect command serialization by creating new Command
Fixes #11649 - As noted in the issue, when CommandNodes are serialized
they are used as the key in a Map. Their equals()/hashcode() should only
match if they are equal nodes (name & command), but due to the erasure of the command field pre-serialization, nodes with different commands can be mapped onto the same value. This causes the client to interpret both nodes as the same, causing suggestions where they should not.

This is fixed by creating a different no-op command for the
erasure, instead of them holding the same lambda.
2024-11-26 20:45:52 +01:00
96DarkCode96
2837612191 Fix Player.setPlayerListOrder to send update to clients 2024-12-10 15:45:47 +01:00
Intybyte
24f63384b2 Expand scoreboard tag count validation to API set 2024-10-21 01:41:04 +02:00
Owen1212055
25c25923e9 DataComponent API
Exposes the data component logic used by vanilla ItemStack to API
consumers as a version-specific API.
The types and methods introduced by this patch do not follow the general
API deprecation contracts and will be adapted to each new minecraft
release without backwards compatibility measures.

== AT ==
public net/minecraft/world/item/component/ItemContainerContents MAX_SIZE
public net/minecraft/world/item/component/ItemContainerContents items
2024-04-28 19:53:01 -04:00
Nassim Jahnke
2a20fde332 Add feature patch hook for overrides 2024-12-05 13:00:22 +01:00
Jake Potrebic
193eebecdf Tag Lifecycle Events
== AT ==
public net/minecraft/tags/TagEntry id
public net/minecraft/tags/TagEntry tag
public net/minecraft/tags/TagEntry required
2024-06-20 09:40:57 -07:00
Bjarne Koll
45d04f9749 Add registry entry and builders 2024-06-13 23:45:32 +02:00
Jake Potrebic
a1b891dd88 Registry Modification API
== AT ==
public net.minecraft.core.MappedRegistry validateWrite(Lnet/minecraft/resources/ResourceKey;)V
public net.minecraft.resources.RegistryOps lookupProvider
public net.minecraft.resources.RegistryOps$HolderLookupAdapter
2023-02-27 18:28:39 -08:00
MrPowerGamerBR
463f952cd4 Only attempt to find spawn position if there isn't a fixed spawn position set 2024-11-28 15:20:25 -03:00
kokiriglade
4bae091802 Expanded Art API 2024-11-23 18:58:49 +00:00
Kevin Raneri
b2d8133382 Configurable Entity Despawn Time 2024-09-30 09:50:55 -07:00
Abel
7294ae3022 API to allow/disallow tick sleeping 2024-11-12 22:25:20 +01:00
Abel
b4c394a1c6 API to check if the server is sleeping 2024-11-10 16:32:34 +01:00
Lulu13022002
7b83e91bb7 Fix NPE when EntityResurrectEvent is uncancelled 2024-11-18 20:27:58 +01:00
Bjarne Koll
c7c3d8a9cb Fix incorrect invulnerability damage reduction
Fixes incorrect spigot handling of the invulnerability damage
reduction applied when an already invulnerable entity is damaged with a
larger damage amount than the initial damage.
Vanilla still damages entities even if invulnerable if the damage to be
applied is larger than the previous damage taken. In that case, vanilla
applies the difference between the previous damage taken and the
proposed damage.

Spigot's damage modifier API takes over the computation of damage
reducing effects, however spigot invokes this handling with the initial
damage before computing the difference to the previous damage amount.
This leads to the reduction values to generally be larger than expected,
as they are computed on the not-yet-reduced value.
Spigot applies these reductions after calling the EntityDamageEvent and
*then* subtracts the previous damage point, leading to the final damage
amount being smaller than expected.

This patch cannot simply call the EntityDamageEvent with the reduced
damage, as that would lead to EntityDamageEvent#getDamage() returning
the already reduced damage, which breaks its method contract.
Instead, this patch makes use of the DamageModifier API, implementing
the last-damage-reduction as a DamageModifier.
2024-11-11 21:35:27 +01:00
Barnaby
318f7b2014 Reduce work done in CraftMapCanvas.drawImage by limiting size of image and using System.arraycopy instead of for loops and use bitwise operations to do bounds checks. 2024-06-29 12:06:51 +01:00
Jake Potrebic
9467a08b36 Improve performance of RecipeMap#removeRecipe 2024-10-31 20:36:41 -07:00
Gero
7acf73ce66 Call CraftPlayer#onEntityRemove for all online players 2024-11-09 22:27:58 +01:00
Bjarne Koll
66e1ce8504 Correct update cursor
Spigot uses a no longer valid ClientboundContainerSetSlotPacket with the
slot -1, which would update the carried stack in versions <=1.21.1 but
now leads to an IOOB.
1.21.2 instead introduced the ClientboundSetCursorItemPacket, which this
patch uses instead.
2024-11-01 14:58:57 +01:00
Jake Potrebic
b620df8e20 Fix inconsistencies in dispense events regarding stack size
The javadocs for BlockDispenseEvent suggest the ItemStack is a single
item which is being dispensed. Before this fix, sometimes it was the whole
stack before a single item had been taken. This fixes that so the stack size
is always 1.
2022-12-11 23:47:22 -08:00
Aikar
0d8c3dc008 Block Enderpearl Travel Exploit
Players are able to use alt accounts and enderpearls to travel
long distances utilizing the pearls in unloaded chunks and loading
the chunk later when convenient.

This disables that by not saving the thrower when the chunk is unloaded.

This is mainly useful for survival servers that do not allow freeform teleporting.

Note: Currently removed as enderpearls are ticked as long as their owner is online in 1.21.2.
Might be worth to re-add once an option to disable the above vanilla mechanic is added, to
fully prevent enderpearl travel exploits.

== AT ==
public net.minecraft.world.entity.projectile.Projectile ownerUUID
2018-04-30 17:15:26 -04:00
Jason Penilla
cf7a1191a9 Allow using old ender pearl behavior
When enabled, ender pearls will not load chunks and will save to the world instead of the player.

== AT ==
public net.minecraft.world.entity.projectile.Projectile cachedOwner
2024-10-27 12:36:53 -07:00
Jason Penilla
21f51ebd74 Avoid issues with certain tasks not processing during sleep
Execute processQueue tasks during sleep: needed for console tab completions, pre join event, etc.

Upstream has set precedent that the bukkit scheduler will still tick during sleep, which avoids some problems
with plugins not accounting for the new sleep feature, but can still lead to others. Because of this we have disabled
sleep by default, which avoids the problem and makes it more obvious to check if this is the cause of issues when
enabled. We also unload chunks during sleep to prevent memory leaks caused by plugin chunk loads.
2024-10-27 14:18:28 -07:00
Riley Park
855db272b1 Bundle spark 2024-07-16 14:55:23 -07:00
Spottedleaf
29e03d0439 Add startup flag to disable gamerule limits
-DPaper.DisableGameRuleLimits=true will disable gamerule limits

== AT ==
public net.minecraft.server.level.ChunkLevel ENTITY_TICKING_LEVEL
2024-10-25 14:20:40 -07:00
Jason Penilla
1218a52ac9 Fix CraftWorld#isChunkGenerated
The upstream implementation is returning true for non-full chunks.
2024-06-18 12:43:06 -07:00
Flo0
35f6f25e78 API for checking sent chunks 2024-04-08 16:43:16 +02:00
Shane Freeder
8f7365707a Always send Banner patterns to the client
The mojang client will not remove patterns from a Banner when none
are sent inside of an update packet, given that this is not an expected
flow for them, this is not all too surprising. So, we shall resort to always
sending the patterns over the network for update packets.
2024-10-20 18:23:59 +01:00
Nassim Jahnke
3d14e7af19 Separate dimensiondata executor 2024-11-28 10:35:58 +01:00
Spottedleaf
7ec2cf09a3 Add proper async player disconnections
Blocking can cause performance problems
2024-10-16 06:41:32 -07:00
Doc
e95dccb515 Add AnvilView#bypassEnchantmentLevelRestriction
Anvils, by default, limit applied enchantment levels to their respective
maximum level. The added API enables plugins to disable this behaviour,
allowing enchantments that are overleveled to be applied via the anvil.
2024-10-06 16:46:36 -03:00
Lulu13022002
f207099765 Add Offline PDC API 2022-07-09 17:28:42 +02:00
Axionize
66e26ebe48 Void damage configuration API 2024-09-29 14:20:42 -07:00
Mariell Hoversholm
411498e394 Add PlayerInsertLecternBookEvent 2024-09-29 16:21:26 +02:00
Jake Potrebic
5b0133e675 Call bucket events for cauldrons 2022-01-16 10:13:33 -08:00
Tamion
8b8acbb898 Add recipeBrewTime
== AT ==
public net.minecraft.world.inventory.BrewingStandMenu brewingStandData
2024-09-15 19:17:12 +02:00
Jake Potrebic
cea3e6b65b Improve entity effect API 2024-09-27 17:13:16 -07:00
masmc05
da18fc4d93 Add enchantWithLevels with enchantment registry set 2024-09-25 16:26:04 +03:00
Nassim Jahnke
c056e2319d Fix PlayerCommandPreprocessEvent on signed commands 2024-09-21 22:01:52 +02:00
Newwind
f5e9df0862 Disable pretty printing for advancement saving
Reduces json size by about 25%
Not sure why advancements even had pretty printing enabled.
My best guess was by accident on mojang's part, especially since stats json files don't have pretty printing.
2024-09-20 14:17:37 +02:00
Bjarne Koll
c8efaa46cb Remove wall-time / unused skip tick protection
Spigot still maintains some partial implementation of "tick skipping", a
practice in which the MinecraftServer.currentTick field is updated not
by an increment of one per actual tick, but instead set to
System.currentTimeMillis() / 50. This behaviour means that the tracked
tick may "skip" a tick value in case a previous tick took more than the
expected 50ms.

To compensate for this in important paths, spigot/craftbukkit
implements "wall-time". Instead of incrementing/decrementing ticks on
block entities/entities by one for each call to their tick() method,
they instead increment/decrement important values, like
an ItemEntity's age or pickupDelay, by the difference of
`currentTick - lastTick`, where `lastTick` is the value of
`currentTick` during the last tick() call.

These "fixes" however do not play nicely with minecraft's simulation
distance as entities/block entities implementing the above behaviour
would "catch up" their values when moving from a non-ticking chunk to a
ticking one as their `lastTick` value remains stuck on the last tick in
a ticking chunk and hence lead to a large "catch up" once ticked again.

Paper completely removes the "tick skipping" behaviour (See patch
"Further-improve-server-tick-loop"), making the above precautions
completely unnecessary, which also rids paper of the previous described
incompatibility with non-ticking chunks.
2024-09-16 23:07:29 +02:00
strnq
883f50eb19 Validate slot in PlayerInventory#setSlot
The CraftPlayerInventory implementation sends a container_set_slot
packet to the client which will error if an invalid slot is passed to
the setSlot method, making a validation necessary over simply silently
ignoring invalid slot values.
2024-09-14 12:53:13 +03:00
masmc05
1cd7fd4eec Item serialization as json 2024-08-11 03:01:52 +03:00
Jake Potrebic
90bc5f1e0b Add FeatureFlag API 2024-05-29 19:50:21 -07:00
Newwind
e29ea45639 Check dead flag in isAlive()
If a plugin sets the health of a living entity above 0 after it has already died, the entity will be "revived".
It will behave the exact same as before, except with the internal "dead" flag set, resulting in 2 behavior changes,
A: it's completely invulnerable to all damage
B: it's unable to pickup items

isValid() for these bugged entities will return true, isDead() will return false, despite the dead flag.
This patch checks that the mob isn't dead before saying its alive.

Also, even if the plugin is responsibly checking !isDead() before modifying health, on very rare circumstances
I am currently unable to replicate, these "revived" entities can still appear
2024-08-26 14:01:37 +02:00
Nathan
7b8f630280 Fire BlockExpEvent on grindstone use 2024-08-31 18:09:55 -06:00
Tamion
2742ad6a9a Fix InventoryOpenEvent cancellation 2024-08-19 18:05:26 +02:00
Gegy
be5187c2da Fix: synchronise sending chat to client with updating message signature cache
In the case where multiple messages from different players are being processed in parallel, there was a potential race condition where the messages would be sent to the client in a different order than the message signature cache was updated. However, the cache relies on the fact that the client and server get the exact same updates in the same order. This race condition would cause the caches to become corrupted, and any future message received by the client would fail to validate.

This also applies to the last seen state of the server, which becomes inconsistent in the same way as the message signature cache and would cause any messages sent to be rejected by the server too.
2024-08-26 19:45:07 +02:00
okx-code
ad8ae89c95 Add enchantment seed update API 2024-08-17 13:02:45 +01:00
Newwind
34c99b8c67 Remove set damage lootable item function from compasses
In VanillaChestLoot, compasses accidentally have a setdamage loot
function on them, but compasses don't take durability, resulting in a warning.
This patch simply removes attempting to add damage to the compass item.
2024-08-22 22:55:37 +02:00
Jake Potrebic
8a940ca0ba Fix SculkBloomEvent firing for block entity loading 2024-08-19 13:43:06 -07:00
Tamion
b724ae078d Fix CraftBukkit drag system
== AT ==
public net.minecraft.world.inventory.AbstractContainerMenu quickcraftSlots
public net.minecraft.world.inventory.AbstractContainerMenu quickcraftStatus
public net.minecraft.world.inventory.AbstractContainerMenu quickcraftType
public net.minecraft.world.inventory.AbstractContainerMenu resetQuickCraft()V
2024-05-26 22:20:21 +02:00
Lulu13022002
52acc18e4f Leashable API 2024-06-22 21:17:54 +02:00
Jake Potrebic
d72defffba Add even more Enchantment API
In a separate patch because RegistryKeySet is used
and the previous "more enchant api" patch is before that.
2024-07-19 08:42:45 -07:00
mja00
15c3f06938 Add skipping world symlink scan
In worlds that are extremely large (greater than 1TB), it can take an insanely long time to walk the entire world for symlinks.
This patch adds a system property to disable the symlink scan, which can be used to speed up world loading.
2024-08-12 06:27:15 -04:00
Newwind
4b761f97a3 Configuration for horizontal-only item merging
Most of the visual artifacts that result from having item merge radius above vanilla levels is from items merging vertically,
which realistically, only happens when a player is dropping items, or items are dropping from breaking a block.

Most of the scenarios where item merging makes sense involves the two item entities being on the same Y level. i.e on the ground next to each other.
This is even more apparent since paper fixed items being able to merge through blocks.

This patch allows us to configure items to only merge horizontally, which is what vanilla does.
This allows us to have both the reduced number of item entities a high item-merge radius provides,
without most of the visual artifacts caused by items merging vertically.
2024-08-07 13:25:55 +02:00
Jake Potrebic
f6f6664716 Add API for CanPlaceOn and CanDestroy NBT values 2018-09-12 18:53:55 +03:00
Nassim Jahnke
334058fa69 Check for block type in SculkSensorBlock#canActivate 2024-08-07 14:33:25 +02:00
Tamion
92fa922afd Fix PickupStatus getting reset 2024-07-21 19:11:22 +02:00
Newwind
15c4f72cf0 Make interaction leniency distance configurable
The server validates incoming interaction packets by ensuring the player
sending them is inside their interaction range. For this, the server adds
a magic value, by default 1.0, to the original interaction range to
account for latency issues.

This value however may be too low in high latency environments.
The patch exposes a new configuration option to configure said value.
2024-07-25 13:00:37 +02:00
Jason Penilla
91b690c240 Add plugin info at startup 2024-07-18 18:44:28 -07:00
Jake Potrebic
4ef8b976c9 Add ItemType#getItemRarity 2024-07-09 18:37:37 -07:00
Bjarne Koll
7b21e8c8d9 Only call EntityDamageEvents before actuallyHurt
The recent upstream update moved around the event logic for
EntiyDamageEvent and its derivatives.
However, the event was called on every call to #hurt as it was moved out
of actuallyHurt.

This patch moves the invocation directly before the #actuallyHurt calls,
respective invulnerable timings.
2024-07-08 22:01:08 +02:00
Jake Potrebic
471be1b4da fix horse inventories
Horse inventories now combine 2 inventories (like
result inventories).

== AT ==
public net/minecraft/world/inventory/HorseInventoryMenu SLOT_BODY_ARMOR
2024-07-06 13:57:10 -07:00
Jake Potrebic
d9e3bee3b5 Fix NPE for Jukebox#setRecord
Fallback to the global registry if no level exists
2024-06-17 17:41:09 -07:00
Jason Penilla
164078cd2a Prioritize Minecraft commands in function parsing and command blocks 2024-07-01 11:58:49 -07:00
Jake Potrebic
9f2cf09ec5 Make a PDC view accessible directly from ItemStack 2024-06-12 10:29:40 -07:00
Jake Potrebic
c441981c54 Proxy ItemStack to CraftItemStack 2024-05-14 11:57:43 -07:00
Owen1212055
c3d1a03428 Configurable Sand Duping 2024-06-15 22:01:39 -04:00
Shane Freeder
6863c9e6db disable forced empty world ticks 2023-03-21 23:51:46 +00:00
Jake Potrebic
9d89ebb121 Properly remove the experimental smithing inventory type 2023-06-08 14:45:18 -07:00
Bjarne Koll
c05db66ee6 Configurable damage tick when blocking with shield 2024-06-13 17:16:01 +02:00
Jake
d7b5168a81 Fix removing recipes from RecipeIterator
== AT ==
public net.minecraft.world.item.crafting.RecipeMap byKey
2024-06-15 18:50:18 +01:00
granny
826f299f4c check if itemstack is stackable first 2024-02-24 19:33:01 -08:00
Owen1212055
84d07ca942 Suspicious Effect Entry API
Exposes a new suspicious effect entry type that properly represents
storable effects in the context of suspicious effects as they only
define the potion effect type and duration.

This differentiates them from the existing PotionEffect API found in
bukkit and hence clarifies that storable values in the parts of the API
in which it replaces PotionEffect.

Co-authored-by: Yannick Lamprecht <yannicklamprecht@live.de>
2024-03-03 19:43:40 +01:00
Bjarne Koll
99cd3b6813 Adopt MaterialRerouting
Adopts the paper-api to the material rerouting infrastructure introduced
by upstream.
2024-06-13 11:02:36 +02:00
Shane Freeder
165e93c7c6 Fix sending disconnect packet in phases where it doesn't exist 2024-05-30 18:46:15 +01:00
Jake Potrebic
960d0c8179 Deprecate InvAction#HOTBAR_MOVE_AND_READD 2024-05-25 09:51:13 -07:00
SoSeDiK
64cbea9119 Add missing fishing event state 2024-05-01 07:44:50 +03:00
Tamion
276e09c3b0 Fix cancelling BlockPlaceEvent calling onRemove 2024-05-23 11:02:20 +02:00
Jake Potrebic
acdfeeea3d Prevent NPE if hooked entity was cleared 2024-05-12 21:57:23 -07:00
Nassim Jahnke
c6f962ba54 Prevent sending oversized item data in equipment and metadata
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2021-12-01 12:36:25 +01:00
Jason Penilla
ce6fd58a5e Allow Bukkit plugin to use Paper PluginLoader API 2024-05-21 13:18:15 -07:00
Jake Potrebic
e1b7819229 Fix equipment slot and group API
Adds the following:
- Add test for EquipmentSlotGroup
- Expose LivingEntity#canUseSlot

Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
2024-05-22 10:01:19 -07:00
Jake Potrebic
5d843f3120 Fix issues with Recipe API 2024-05-12 15:49:36 -07:00
Owen1212055
977543c545 Brigadier based command API
== AT ==
public net.minecraft.commands.arguments.blocks.BlockInput tag
public net.minecraft.commands.arguments.DimensionArgument ERROR_INVALID_VALUE
public net.minecraft.server.ReloadableServerResources registryLookup
public net.minecraft.server.ReloadableServerResources

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: Marc Baloup <marc.baloup@laposte.net>
2022-08-01 22:50:34 -04:00
Nassim Jahnke
aabe9f5264 Print data component type on encoding error 2024-05-09 15:11:34 +02:00
SoSeDiK
b50682ab2b More Chest Block API
== AT ==
public net.minecraft.world.level.block.ChestBlock isBlockedChestByBlock(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z
2024-05-01 08:22:13 +03:00
Jake Potrebic
31725bc039 General ItemMeta fixes
== AT ==
private-f net/minecraft/world/item/ItemStack components
public net/minecraft/world/food/FoodProperties DEFAULT_EAT_SECONDS
public org/bukkit/craftbukkit/block/CraftBlockStates getBlockState(Lorg/bukkit/World;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/entity/BlockEntity;)Lorg/bukkit/craftbukkit/block/CraftBlockState;
public net/minecraft/world/level/block/entity/BlockEntity saveId(Lnet/minecraft/nbt/CompoundTag;)V

Co-authored-by: GhastCraftHD <julius.gruenberg@leghast.de>
2024-04-27 20:56:17 -07:00
nostalfinals
445e9a65fb Added API to get player ha proxy address 2024-04-08 23:24:38 +08:00
SoSeDiK
d5b93a0167 Expose #hasColor to leather armor 2024-05-01 10:58:50 +03:00
Jake Potrebic
ae4acc6aeb improve checking handled tags in itemmeta 2023-07-10 16:10:15 -07:00
Jake Potrebic
50b91c7359 Revert to vanilla handling of LivingEntity#actuallyHurt 2024-04-27 09:44:53 -07:00
Lulu13022002
ee130088cc Fix damage modifier inconsistencies
Affect the falling stalactite damage type where the
reduction is not applied like in Vanilla.
Additionally fix the "is_freezing" damage type tag.
2024-04-27 21:51:58 +02:00
Jake Potrebic
97a4aeda2d Fix ItemFlags
Re-adds missing functionality for HIDE_DESTROYS and
HIDE_PLACED_ON. Also adds new flag in HIDE_STORED_ENCHANTS
which was split from HIDE_ADDITIONAL_TOOLTIP.

== AT ==
public net.minecraft.world.item.AdventureModePredicate predicates
2024-04-27 12:16:38 -07:00
Aikar
236dce4925 Handle Large Packets disconnecting client
If a players inventory is too big to send in a single packet,
split the inventory set into multiple packets instead.
2018-11-27 21:18:06 -05:00
Jake Potrebic
ba71d372a5 Fix shield disable inconsistency
In vanilla, if the damage source is tagged as a projectile,
it will not disable the shield if the attacker is holding
an axe item.
2024-04-26 19:08:37 -07:00
Aikar
3844905fa8 Support old UUID format for NBT
We have stored UUID in plenty of places that did not get DFU'd

So just look for old format and load it if it exists.
2020-06-29 03:26:17 -04:00
SoSeDiK
4c8c367eee Deep clone nbt tags in PDC 2022-05-26 03:30:05 +03:00
Jake Potrebic
49778e042c Add config for mobs immune to default effects 2020-12-02 21:03:02 -08:00
Aikar
eb626e1176 Protect Bedrock and End Portal/Frames from being destroyed
This fixes exploits that let players destroy bedrock by Pistons, explosions
and Mushrooom/Tree generation.

These blocks are designed to not be broken except by creative players/commands.
So protect them from a multitude of methods of destroying them.

A config is provided if you rather let players use these exploits, and let
them destroy the worlds End Portals and get on top of the nether easy.
2020-05-13 23:01:26 -04:00
Jake Potrebic
27979040fd Properly track the changed item from dispense events 2022-12-12 12:14:03 -08:00
Jake Potrebic
193d6ee2ca Per world ticks per spawn settings 2021-11-13 12:36:26 -08:00
Owen1212055
5a83b512a7 Item Mutation Fixes 2024-03-20 20:41:35 -04:00
Nassim Jahnke
3758965f88 Improve tag parser handling 2024-02-05 11:54:04 +01:00
Jake Potrebic
6c400a907b Fix possible StackOverflowError and NPE for some dispenses
For saddles, carpets, horse armor, and chests for horse-likes
a BlockDispenseEvent handler that always mutated the item without
changing the type would result in a SO error because when it went
to find the replacement dispense behavior (since the item "changed")
it didn't properly handle if the replacement was the same instance
of dispense behavior.

Additionally equippable mob heads, wither skulls, and carved pumpkins
are subject to the same possible error.

Furthermore since 1.21.2, the DISPENSER_REGISTRY map doesn't have a default
return value anymore and some dispense behaviors like equippable and
regular items will not have a defined behavior in that map and might throw
a NPE in that case.
2022-10-29 17:02:42 -07:00
Pierpaolo Coletta
368ca9c145 Fix creation of invalid block entity during world generation 2024-03-30 21:06:10 +01:00
Jake Potrebic
d42ef390ea Fix DamageSource API
Uses the correct entity in the EntityDamageByEntity event
Returns the correct entity for API's DamageSource#getCausingEntity
2024-03-09 14:13:04 -08:00
RodneyMKay
a87a5e10d9 Fire EntityDamageByEntityEvent for unowned wither skulls 2024-02-11 20:05:11 +01:00
Warrior
079a41f4c4 Disable memory reserve allocating 2024-01-18 23:25:09 +01:00
Jake Potrebic
93a2600891 Fix bees aging inside hives
Fixes bees incorrectly being aged up due to upstream's
resetting the ticks inside hive on a failed release
2021-08-21 21:54:16 -07:00
Gero
f42abdfad3 Configurable max block/fluid ticks 2024-02-19 17:39:59 +01:00
leguan
046fc5171f Add onboarding message for initial server start 2024-03-10 20:10:41 +01:00
Jake Potrebic
e06fe76018 More Raid API
== AT ==
public net.minecraft.world.entity.raid.Raid raidEvent
2022-03-04 09:46:33 -08:00
Janet Blackquill
e57ad97c91 Add CartographyItemEvent 2024-04-07 16:52:42 -04:00
Owen1212055
70cd7cfb23 Deprecate ItemStack#setType 2024-03-26 21:42:23 -04:00
Badbird5907
66ebf93c21 Add BlockBreakProgressUpdateEvent 2024-03-04 22:18:28 -05:00
vicisacat
93c49bbe31 Expanded Hopper API
== AT ==
public net.minecraft.world.level.block.entity.HopperBlockEntity setCooldown(I)V
public net.minecraft.world.level.block.entity.HopperBlockEntity cooldownTime
2024-03-15 17:35:40 +01:00
Yannick Lamprecht
61c73ee83e improve BanList types 2024-02-10 20:50:01 +01:00
David Mayr
10a15650f1 add number format api
== AT ==
public net.minecraft.network.chat.numbers.FixedFormat value
public net.minecraft.network.chat.numbers.StyledFormat style
2023-12-16 10:40:29 +01:00
vicisacat
380cb52e43 Add FluidState API 2023-11-17 20:22:43 +01:00
Warrior
b5cda1d98f Add getChunkSnapshot includeLightData parameter 2024-02-10 10:03:48 +01:00
Yannick Lamprecht
a2bbaf6744 ItemStack Tooltip API 2024-01-22 13:27:30 +01:00
Jake Potrebic
ef5bac21b2 Add Lifecycle Event system
This event system is separate from Bukkit's event system and is
meant for managing resources across reloads and from points in the
PluginBootstrap.
2023-07-18 17:49:38 -07:00
Luis
e5c2af7f5e Add api for spawn egg texture colors 2024-01-11 19:58:23 +01:00
Chase Henderson
0b0012faf2 Add ShulkerDuplicateEvent 2024-01-05 03:50:10 -05:00
Jake Potrebic
597ce940a4 Add PlayerTradeEvent and PlayerPurchaseEvent
Co-authored-by: Alexander <protonull@protonmail.com>
2020-07-02 16:12:10 -07:00
Spottedleaf
46c2fbfb74 Reduce allocation of Vec3D by entity tracker 2020-04-27 00:04:16 -07:00
FireInstall
0449ede4a6 Expose LootTable of DecoratedPot 2024-01-20 16:20:06 +01:00
Nassim Jahnke
898bf90054 Fixup NamespacedKey handling 2024-01-06 14:31:00 +01:00
Owen1212055
21837e419b Properly handle experience dropping on block break
This causes spawnAfterBreak to spawn xp by default, removing the need to manually add xp wherever this method is used.
For classes that use custom xp amounts, they can drop the resources with disabling
2023-12-30 15:00:06 -05:00
Nassim Jahnke
2506babe8e Validate ResourceLocation in NBT reading 2024-01-04 13:49:14 +01:00
Cryptite
b37ffd3a00 Add PlayerShieldDisableEvent
Called whenever a players shield is disabled. This is mainly caused by
attacking players or monsters that carry axes.

The event, while similar to the PlayerItemCooldownEvent, offers other
behaviour and can hence not be implemented as a childtype of said event.
Specifically, cancelling the event prevents the game events from being
sent to the player.

Plugins listening to just the PlayerItemCooldownEvent may not want said
sideeffects, meaning the disable event cannot share a handlerlist with
the cooldown event
2023-05-01 16:22:43 -05:00
Jake Potrebic
66ed50064c Add drops to shear events 2021-05-18 12:32:02 -07:00
Lukas Planz
57894618cf Add experience points API 2023-09-05 20:34:20 +02:00
Jake Potrebic
15fcde4b3c Fix NPE on null loc for EntityTeleportEvent
EntityTeleportEvent#setTo is marked as nullable and so is the
getTo method. This fixes the handling of a null "to" location
by treating it the same as the event being cancelled. This is
already existing behavior for the EntityPortalEvent (which
extends EntityTeleportEvent).
2023-12-09 19:15:59 -08:00
Jake Potrebic
5b1ab02f39 Improve Registry 2023-12-20 02:03:05 -08:00
Jake Potrebic
a264c42314 add more scoreboard API 2023-12-16 14:46:01 -08:00
Owen1212055
893616e851 Dont resend blocks on interactions
In general, the client now has an acknowledgment system which will prevent block changes made by the client to be reverted correctly.

It should be noted that this system does not yet support block entities, so those still need to resynced when needed.
2023-06-27 21:09:11 -04:00
Jake Potrebic
ddbfcd4403 Restore vanilla entity drops behavior
Instead of just tracking the itemstacks, this tracks with it, the
action to take with that itemstack to apply the correct logic
on dropping the item instead of generalizing it for all dropped
items like CB does.
2022-03-22 09:34:41 -07:00
hyper1423
ec3623bcc2 Fix CraftMetaItem#getAttributeModifier duplication check 2023-12-03 07:38:09 +09:00
Jake Potrebic
745260143e Add Structure check API 2023-03-27 10:20:00 -07:00
Jake Potrebic
fff5d44a12 Don't fire sync events during worldgen
Fixes EntityPotionEffectEvent
Fixes EntityPoseChangeEvent

Asynchronous chunk generation provides an opportunity for things
to happen async that previously fired synchronous-only events. This
patch is for mitigating those issues by various methods.

Also fixes correctly marking/clearing the entity generation flag.
This patch sets the generation flag anytime an entity is created
via StructureTemplate before loading from NBT to catch uses of
the flag during the loading logic. This patch clears the generation
flag from an entity when added to a ServerLevel for the situation
where generation happened directly to a ServerLevel and the
entity still has the flag set.
2023-11-23 10:33:25 -08:00
MrPowerGamerBR
5f134afc4b Lazily create LootContext for criterions
For each player on each tick, enter block triggers are invoked, and these create loot contexts that are promptly thrown away since the trigger doesn't pass the predicate

To avoid this, we now lazily create the LootContext if the criterion passes the predicate AND if any of the listener triggers require a loot context instance
2023-11-21 12:16:39 -03:00
booky10
4853ebd729 Fix missing event call for entity teleport API 2023-11-12 05:09:47 +01:00
TonytheMacaroni
c29a8dc160 Add UUID attribute modifier API 2023-11-09 20:34:44 -05:00
Jake Potrebic
d0b0b36801 Fix several issues with EntityBreedEvent
Upstream did not account for different hands when storing
the breed item for later use in the event. Also they only
stored a reference to the stack, not a copy so if the stack
changed after love mode was started, the breed item in the event
also changed. Also in several places, the breed item was stored after
it was decreased by one to consume the item.
2022-12-15 00:14:44 -08:00
booky10
ffa5164e4c Add hand to fish event for all player interactions 2023-07-03 01:55:32 +02:00
Tamion
cb16d3df2c Fix strikeLightningEffect powers lightning rods and clears copper 2023-09-30 12:36:14 +02:00
Tamion
e93201e90b Expand LingeringPotion API 2023-11-04 23:57:05 +01:00
booky10
b7be7d6807 Broadcast take item packets with collector as source
This fixes players (which can't view the collector) seeing item pickups with themselves as the target.
2023-10-29 02:36:10 +01:00
TonytheMacaroni
4866ee899b Add predicate for blocks when raytracing 2023-09-06 19:24:16 -04:00
TrollyLoki
d30ecac57d Add API to get the collision shape of a block before it's placed 2023-10-11 00:45:53 -04:00
astei
85e082a9b3 Optimize VarInts
https://github.com/PaperMC/Paper/pull/6957#issuecomment-985250854
2023-10-28 19:46:21 -04:00
David Scandurra
d1685ef68f Allow null itemstack for Player#sendEquipmentChange 2023-10-25 20:36:25 +02:00
Lulu13022002
93c87bedaf Fix NPE in SculkBloomEvent world access 2023-10-20 19:50:22 +02:00
Brokkonaut
a6ef388655 Don't check if we can see non-visible entities 2023-10-21 20:52:57 +01:00
booky10
2b6b81bde9 Add player idle duration API
Implements API for getting and resetting a player's idle duration.
2023-10-14 03:11:11 +02:00
LemonCaramel
de8998e411 Fix UnsafeValues#loadAdvancement 2023-09-24 20:19:44 +09:00
booky10
efc4457fa1 Update entity data when attaching firework to entity
== AT ==
public net.minecraft.world.entity.projectile.FireworkRocketEntity DATA_ATTACHED_TO_TARGET
2023-08-27 16:11:31 +02:00
Warrior
9f09c7a54d Fix missing map initialize event call
== AT ==
public net.minecraft.world.level.storage.DimensionDataStorage readSavedData(Ljava/util/function/Function;Lnet/minecraft/util/datafix/DataFixTypes;Ljava/lang/String;)Lnet/minecraft/world/level/saveddata/SavedData;
2023-09-24 18:35:28 +02:00
Jake Potrebic
48d9ecee25 Fix team sidebar objectives not being cleared
Objectives displayed in team sidebars were not cleared when switching
scoreboards. If a player's scoreboard has a displayed objective for the
'gold' sidebar, and their scoreboard was switched to one where they
still had a 'gold' team, it would still be displayed
2023-09-23 22:31:54 -07:00
Jake Potrebic
cfe07dca76 Fix NPE in AdvancementProgress#getDateAwarded 2023-09-23 22:07:15 -07:00
Spottedleaf
fa87f62891 Fix race condition on UpgradeData.BlockFixers class init
The CHUNKY_FIXERS field is modified during the constructors
of the BlockFixers, but the code that uses CHUNKY_FIXERS does
not properly ensure that BlockFixers has been initialised before
using it, leading to a possible race condition where instances of
BlockFixers are accessed before they have initialised correctly.

We can force the class to initialise fully before accessing the
field by calling any method on the class, and for convenience
we use values().
2023-08-08 17:29:33 -07:00
Owen1212055
d12a537299 Add missing logs for log-ips config option 2023-09-23 01:49:39 -04:00
Spottedleaf
65466558be Do not read tile entities in chunks that are positioned outside of the chunk
The tile entities are not accessible and so should not be loaded.
This can happen as a result of users moving regionfiles around,
which would cause a crash on Folia but would appear to function
fine on Paper.
2023-06-18 23:04:46 -07:00
Jake Potrebic
183683ecc5 Add missing InventoryHolders to inventories 2022-01-24 00:09:02 -08:00