Commit Graph

3515 Commits

Author SHA1 Message Date
SamB440
079b971f4d Add PlayerItemFrameChangeEvent 2021-11-15 18:09:46 +00:00
Mariell Hoversholm
65568bbe27 Add Raw Byte Entity Serialization 2021-10-24 16:19:26 -04:00
booky10
fbce8f41cc Add API for resetting a single score
It was only possible to reset all scores for a specific entry, instead of resetting only specific scores.
2021-11-05 21:01:36 +01:00
Seggan
34ba1d34bd Goat ram API 2021-08-05 13:10:31 -04:00
Jake Potrebic
1de93777a5 Add hasCollision methods to various places 2021-11-04 11:50:35 -07:00
Jake Potrebic
450f5fe793 Fix issues with mob conversion 2021-10-24 20:29:27 -07:00
syldium
9ae3b87be7 Add more advancement API
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2021-07-09 18:49:40 +02:00
dodison
4bfca492a5 Add critical damage API 2021-07-26 17:35:20 +02:00
William Blake Galbreath
5c9be07722 Left handed API 2021-10-14 12:36:46 -05:00
Jake Potrebic
8f72ada8c9 Get entity default attributes 2021-08-20 13:03:55 -07:00
Jakub Zacek
d496258f70 Add methods to find targets for lightning strikes 2021-10-04 08:29:36 +02:00
Jake Potrebic
9550762612 add back EntityPortalExitEvent
Was removed here: a2d787f6eb
2021-05-12 02:49:28 -07:00
Jake Potrebic
34f10b78da Add missing team sidebar display slots 2021-10-01 08:04:43 -07:00
Jake Potrebic
b4f3eb5fa1 More CommandBlock API 2021-05-28 21:47:39 -07:00
Jake Potrebic
c8e36cb205 Option to prevent data components copy in smithing recipes 2021-09-26 12:57:35 -07:00
Madeline Miller
ec4a7e5d87 Add helpers for left/right click to Action 2021-08-29 17:00:56 +10:00
Jake Potrebic
d445af24a5 Add BlockBreakBlockEvent 2021-01-03 17:58:25 -08:00
Jake Potrebic
1a5fc4f2b3 Change EnderEye target without changing other things 2021-08-21 12:14:00 -07:00
Jake Potrebic
21af6149df Make EntityUnleashEvent cancellable 2021-01-03 21:25:39 -08:00
Jake Potrebic
0efb068743 Added EntityDamageItemEvent 2020-12-22 13:51:06 -08:00
Jake Potrebic
957d209cb4 Add PlayerSetSpawnEvent 2021-05-19 18:58:24 -07:00
SirYwell
896a9e601a Rewrite LogEvents to contain the source jars in stack traces 2021-07-10 11:11:43 +02:00
Owen1212055
eda6a55bcb Stinger API 2021-06-22 23:16:11 -04:00
Trigary
357d34835f fix empty array elements in command arguments
Adjacent spaces caused empty array elements due to how String#split works.
This change removes those empty array elements without modifying anything else.
Adjacent spaces sent by players are removed in PlayerConnection, so this change doesn't affect players.
But it does affect the console, command blocks, Bukkit.dispatchCommand, etc.
2021-06-05 10:29:39 +02:00
Jake Potrebic
83f8fa22d2 Add PlayerSignCommandPreprocessEvent 2021-07-09 17:44:33 -07:00
Jake Potrebic
1284f0bf53 Adds PlayerArmSwingEvent 2021-03-12 19:20:03 -08:00
Owen1212055
a2a581ba6b Missing Entity API
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: William Blake Galbreath <blake.galbreath@gmail.com>
Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
Co-authored-by: booky10 <boooky10@gmail.com>
Co-authored-by: Amin <amin.haddou@frg.wwschool.de>
Co-authored-by: TrollyLoki <trollyloki@gmail.com>
Co-authored-by: FireInstall <kettnerl@hu-berlin.de>
Co-authored-by: maxcom1 <46265094+maxcom1@users.noreply.github.com>
Co-authored-by: TotalledZebra <Holappa57@gmail.com>
2021-05-28 21:06:59 -04:00
dfsek
fb8f31e8e3 Add more LimitedRegion API 2021-06-19 20:15:29 -07:00
Jason Penilla
a8e19d139e Add WaterBottleSplashEvent 2022-12-08 10:12:23 -07:00
TwoLeggedCat
0f0e14fad5 Add more line of sight methods 2021-05-29 14:33:18 -05:00
Owen1212055
efcb04d753 Add ElderGuardianAppearanceEvent 2021-03-19 23:39:21 -04:00
Owen1212055
399004b357 Add BellRevealRaiderEvent 2021-05-26 17:08:57 -04:00
HexedHero
693a785643 Add PufferFishStateChangeEvent 2021-05-10 16:58:38 +01:00
Jake Potrebic
93e2ecfd49 Add PlayerKickEvent causes 2021-05-15 20:30:34 -07:00
LemonCaramel
c9ba0ebadb More Lidded Block API 2021-05-23 17:49:31 +09:00
Jake Potrebic
547577ccb6 Add cause to Weather/ThunderChangeEvents 2020-12-02 18:25:31 -08:00
Jake Potrebic
00ebe90031 Improve item default attribute API 2021-05-08 15:02:00 -07:00
Jake Potrebic
f5eeda6d92 Add EntityInsideBlockEvent 2021-05-08 18:02:06 -07:00
Riley Park
482d7e4984 ItemStack#editMeta 2021-05-23 05:04:28 -07:00
BillyGalbreath
735b461673 Add Mob#lookAt API 2021-05-14 13:42:06 -05:00
Jake Potrebic
bff4794867 More Enchantment API
Co-authored-by: Luis <luisc99@icloud.com>
Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
2021-05-06 19:58:03 -07:00
Jake Potrebic
fce24f3b52 ItemStack repair check API 2021-05-15 22:10:50 -07:00
Jake Potrebic
d30a14d638 additions to PlayerGameModeChangeEvent 2021-05-15 10:04:50 -07:00
Connor Linfoot
8595225f18 Add basic Datapack API
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2021-05-16 15:07:34 +01:00
MeFisto94
613ffeaeed Add a "should burn in sunlight" API for Phantoms and Skeletons 2021-05-11 00:48:51 +02:00
Jake Potrebic
07e76ccd5b Inventory#close 2021-05-11 14:54:20 -07:00
Alvinn8
8ee512d806 Add Adventure message to PlayerAdvancementDoneEvent 2021-01-08 20:29:58 +01:00
Owen1212055
b00a393416 Add EntityBlockStorage#clearEntities() 2021-04-05 18:12:06 -04:00
HexedHero
f4e92bc267 Add more WanderingTrader API 2021-05-06 14:56:26 +01:00
Jake Potrebic
e9c4b62f7e add RespawnFlags to PlayerRespawnEvent 2021-04-22 17:17:54 -07:00
HexedHero
28c7aca637 PlayerMoveEvent Improvements 2021-04-29 10:31:44 +01:00
Spyridon Pagkalos
0bdc7d2ba9 Introduce beacon activation/deactivation events 2021-03-25 20:25:47 +02:00
Jake Potrebic
b1396d8f38 Added PlayerBedFailEnterEvent 2020-12-24 12:27:49 -08:00
Jake Potrebic
6b39120659 More World API 2020-07-07 10:53:22 -07:00
Jake Potrebic
d7351ddc36 Added PlayerDeepSleepEvent 2021-04-21 15:58:25 -07:00
Jake Potrebic
411f1ddea7 add get-set drop chance to EntityEquipment 2021-04-22 00:28:20 -07:00
Jake Potrebic
6293f3ad54 add consumeFuel to FurnaceBurnEvent 2021-04-22 16:45:15 -07:00
Jake Potrebic
c0e2f67d7c add isDeeplySleeping to HumanEntity 2021-04-08 17:36:15 -07:00
Nassim Jahnke
f4eab2ee51 Expose protocol version 2021-03-26 11:23:27 +01:00
Jake Potrebic
83c4827433 Improve Item Rarity API 2021-03-12 17:09:40 -08:00
Jake Potrebic
07c1829d7f Expand world key API 2021-01-06 00:34:10 -08:00
Jake Potrebic
bcd78c9bf2 Add Block#isValidTool
Deprecated for removal
2020-07-06 12:44:23 -07:00
Thonk
c6ff2b9aee Add recipe to cook events 2021-01-06 12:05:29 -08:00
Jake Potrebic
d3ff89b33b added PlayerNameEntityEvent 2020-07-05 00:34:24 -07:00
Jake Potrebic
de918f498a Add worldborder events 2021-01-04 22:40:26 -08:00
Tom
eb8dcb71a9 Expose Tracked Players 2021-02-26 16:24:25 -06:00
Ivan Pekov
80b653d06f Add missing effects
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2021-01-05 10:19:11 +02:00
ysl3000
eb0e3a82b8 living entity allow attribute registration 2020-10-24 16:37:21 +02:00
Aleksander Jagiello
2c77cdd67a Add getMainThreadExecutor to BukkitScheduler 2021-01-24 22:17:29 +01:00
BillyGalbreath
65807cfb9b Allow adding items to BlockDropItemEvent 2021-01-20 14:25:26 -06:00
William Blake Galbreath
c8fe881ce4 EntityMoveEvent 2020-02-11 21:56:38 -06:00
Trigary
d23a2f2782 add DragonEggFormEvent 2021-01-25 14:53:49 +01:00
Nassim Jahnke
f1ab420c8a Add dropLeash variable to EntityUnleashEvent 2021-01-29 15:13:04 +01:00
Jake Potrebic
fd337f2de1 Added PlayerStonecutterRecipeSelectEvent 2020-11-27 17:13:59 -08:00
Jake Potrebic
0a22b21f70 Added PlayerChangeBeaconEffectEvent 2020-06-24 15:12:18 -06:00
Madeline Miller
737250e0d0 Add BlockPreDispenseEvent 2021-01-17 13:15:54 +10:00
dfsek
0e8e918544 Add StructuresLocateEvent
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2020-09-15 21:59:16 -07:00
Jake Potrebic
25c065b4b2 Add RegistryAccess for managing registries 2022-03-02 13:36:21 -08:00
Mariell Hoversholm
41efb5322e Add sendOpLevel API 2020-12-29 15:02:57 +01:00
Madeline Miller
f3d8fe46e3 Add API to get exact interaction point in PlayerInteractEvent 2021-01-04 16:40:55 +10:00
Jake Potrebic
4c5a75dc4e Added PlayerLoomPatternSelectEvent 2020-11-25 16:33:42 -08:00
Jake Potrebic
f456a79c86 Added PlayerLecternPageChangeEvent 2020-11-23 12:58:16 -08:00
TheViperShow
d9df6170b8 Add BlockFailedDispenseEvent 2020-04-22 09:40:23 +02:00
Jake Potrebic
7603b30d74 Added ServerResourcesReloadedEvent 2020-12-02 20:04:16 -08:00
Jake Potrebic
8dbd7442c3 Added WorldGameRuleChangeEvent 2020-12-20 16:41:44 -08:00
JRoy
302525c73b Add EntityLoadCrossbowEvent 2020-10-07 12:04:17 -04:00
Jake Potrebic
87dce6f965 Zombie API - breaking doors 2020-11-18 11:32:15 -08:00
MisterVector
b2599f86e7 Add PlayerFlowerPotManipulateEvent 2019-08-13 19:44:19 -07:00
Madeline Miller
28333dc9b5 Add API to get Material from Boats and Minecarts 2020-12-31 12:48:38 +10:00
Aikar
0b52df89b3 Additional Block Material API's
Faster version for isSolid() that utilizes NMS's state for isSolid instead of the slower
process to do this in the Bukkit API

Adds API for buildable, replaceable, burnable too.
2020-12-30 17:27:27 -05:00
Jason Penilla
b3e72d20e1 Add TargetHitEvent API 2020-11-25 23:21:32 -08:00
Jake Potrebic
ff36991035 Added PlayerTradeEvent
[Amendment: Alexander <protonull@protonmail.com>]
PlayerTradeEvent is used for player purchases from villagers and wandering
traders, but not custom merchants created via Bukkit.createMerchant(). During
discussions in Discord it was decided that it'd be better to add a new event
that PlayerTradeEvent inherits from than change getVillager()'s annotation to
@Nullable, especially since that'd also infringe on the implication of the
event being about villager trades.
2020-07-02 16:10:10 -07:00
Jake Potrebic
3234f24141 Add OBSTRUCTED reason to BedEnterResult 2020-12-24 12:43:30 -08:00
Mark Vainomaa
b71dfe682d Expose LivingEntity hurt direction 2020-12-13 05:32:12 +02:00
ysl3000
c120a1ea13 Player Chunk Load/Unload Events 2020-10-05 21:24:45 +02:00
JRoy
cbfe48b1cc Add PlayerShearBlockEvent 2020-08-27 12:32:35 -04:00
Nassim Jahnke
a5f3b29310 More lightning API 2020-07-26 14:44:16 +02:00
Nassim Jahnke
60d243ecc4 Add PlayerItemCooldownEvent 2020-08-25 13:45:15 +02:00
Anrza
5fa4ae1e90 Add LivingEntity#clearActiveItem 2020-07-15 12:07:58 +02:00
Ineusia
72ab93ca8a Add Destroy Speed API
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2020-10-26 11:37:48 -05:00
Mariell Hoversholm
7ee931eaf2 Add API for quit reason 2020-11-14 16:19:58 +01:00
Jake Potrebic
40ac3e15db Beacon API - custom effect ranges 2020-06-24 12:38:15 -06:00
Alfie Smith
dac5c6c48a Item no age & no player pickup 2020-11-07 01:20:27 +00:00
Mariell Hoversholm
9c8829553b Add ignore discounts API 2020-11-09 20:33:38 +01:00
oxygencraft
4226c7f7a4 Add getOfflinePlayerIfCached(String) 2020-10-25 18:35:58 +11:00
Trigary
a3a9180c51 Player elytra boost API 2020-04-14 12:06:14 +02:00
William Blake Galbreath
60a89bc804 Villager#resetOffers 2019-10-07 00:15:28 -05:00
William Blake Galbreath
63c427de11 Entity#isTicking 2020-10-03 21:39:07 -05:00
MeFisto94
64f9dff6ef Expose the Entity Counter to allow plugins to use valid and non-conflicting Entity Ids 2020-08-28 01:41:31 +02:00
JRoy
110071a0e6 Add additional open container api to HumanEntity 2020-08-26 02:11:58 -04:00
ysl3000
124e1f8619 Create HoverEvent from ItemStack Entity 2020-07-06 22:17:37 +02:00
Jake Potrebic
f610d0b477 Add methods to get translation keys
Co-authored-by: MeFisto94 <MeFisto94@users.noreply.github.com>
2020-08-11 19:17:46 +02:00
BillyGalbreath
a3e3ba54a0 Add more Evoker API 2020-08-23 15:22:44 +02:00
William Blake Galbreath
52ec2a9db1 Add playPickupItemAnimation to LivingEntity 2020-08-23 19:36:08 +02:00
BillyGalbreath
cbfa49ddb6 Add moon phase API 2020-08-23 16:32:03 +02:00
DigitalRegent
5df47beccf Brand support 2020-04-06 20:30:09 +02:00
Eearslya Sleiarion
3670ee6672 Add BellRingEvent
Add a new event, BellRingEvent, to trigger whenever a player rings a
village bell. Passes along the bell block and the player who rang it.
2019-06-24 21:27:39 -07:00
William Blake Galbreath
48046af5ef Add PrepareResultEvent / PrepareGrindstoneEvent
Adds a new event for all crafting stations that generate a result slot item

Anvil, Grindstone and Smithing now extend this event

Grindstone is a backwards compat from a previous PrepareGrindstoneEvent
2020-07-03 11:58:56 -05:00
William Blake Galbreath
6c89cc29e4 Add entity liquid API 2020-07-02 18:11:33 -05:00
Jake Potrebic
e034549a33 added 2 new TargetReasons for 1.16 mob behavior 2020-07-03 15:05:54 -07:00
MiniDigger | Martin
53d5aca783 Support components in ItemMeta 2020-06-06 18:13:16 +02:00
LordKorea
20c3b04159 Add and implement PlayerRecipeBookClickEvent 2020-05-11 22:38:10 -04:00
Phoenix616
78acda62f2 Inventory getHolder method without block snapshot 2020-06-10 23:55:16 +01:00
JRoy
5b74f31a52 Potential bed API
Adds a new method to fetch the location of a player's bed without generating any sync loads.

getPotentialBedLocation - Gets the last known location of a player's bed. This does not preform any check if the bed is still valid and does not load any chunks.
2020-05-10 23:06:41 -04:00
Aikar
a23aa8c807 Spawn Reason API 2014-04-10 23:18:28 -04:00
Mariell Hoversholm
3dc7ae31ea Add villager reputation API 2020-04-22 23:13:49 +02:00
MiniDigger | Martin
ef291e36d1 Add Mob Goal API 2020-01-03 16:24:46 +01:00
zbk
cb3bc4f15f Villager Restocks API 2020-04-26 23:49:03 -04:00
Nassim Jahnke
ec2e3991b9 Add item slot convenience methods
Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
2020-04-25 23:31:28 +02:00
nossr50
83b1a9e372 Add PlayerAttackEntityCooldownResetEvent 2020-03-26 19:30:58 -07:00
MiniDigger | Martin
6143a7a97b Add Player Client Options API 2020-01-20 21:38:34 +01:00
Mariell Hoversholm
21792a6e4b Add Raw Byte ItemStack Serialization
Serializes using NBT which is safer for server data migrations than bukkits format.

Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
2020-04-30 16:56:31 +02:00
JRoy
a690b2a859 Expose MinecraftServer#isRunning
This allows for plugins to detect if the server is actually turning off in onDisable rather than just plugins reloading.
2020-04-10 21:24:35 -04:00
William Blake Galbreath
c0e42aed8a Add tick times API 2020-04-05 22:22:58 -05:00
Trigary
0ee773e88b add hand to BlockMultiPlaceEvent 2020-03-01 22:43:34 +01:00
BillyGalbreath
fbcf4759fb Entity Jump API 2020-02-08 23:26:18 -06:00
William Blake Galbreath
599bf3512d Add ThrownEggHatchEvent
Adds a new event similar to PlayerEggThrowEvent, but without the Player requirement
(dispensers can throw eggs to hatch them, too).
2020-02-09 00:19:08 -06:00
Shane Freeder
d4ef0cde59 PlayerDeathEvent#shouldDropExperience 2019-12-24 00:35:31 +00:00
Jake Potrebic
1cf2aaef30 Improve Block#breakNaturally API
Adds bool param to trigger world particle effects

Adds bool param to trigger exp drops for blocks

Co-authored-by: William Blake Galbreath <Blake.Galbreath@GMail.com>
2020-01-02 12:25:16 -06:00
William Blake Galbreath
9a251fbd95 Expose the internal current tick 2019-04-20 19:47:29 -05:00
Shane Freeder
2cee31307e Set true custom payload channel size limit
This fixes compatibility with some mods that are sending very long channel names. Also gives developers the ability to send longer channel names.
2019-10-18 17:39:05 +01:00
simpleauthority
9fc26a2efb Amend PlayerInteractAtEntityEvent javadoc for ArmorStands 2019-07-11 10:35:56 -07:00
simpleauthority
d2e1163917 Add BlockSoundGroup interface
This PR adds the getSoundGroup() method in Block which returns a BlockSoundGroup
2019-05-28 03:41:28 -07:00
William Blake Galbreath
d1b40a9a13 Mob Spawner API Enhancements 2019-04-19 12:41:19 -05:00
Spottedleaf
315e1108a6 Add Heightmap API
Changed to use upstream's heightmap API - Machine_Maker
2018-12-01 19:00:36 -08:00
Aikar
f9af4df79e PlayerDeathEvent#getItemsToKeep
Exposes a mutable array on items a player should keep on death

Example Usage: https://gist.github.com/aikar/5bb202de6057a051a950ce1f29feb0b4
2013-03-11 20:04:34 -04:00
Aikar
06e00bdd20 Server Tick Events
Fires event at start and end of a server tick
2019-03-27 21:58:55 -04:00
Aikar
2825ece820 Fix Spigot annotation mistakes
while some of these may of been true, they are extreme cases and cause
a ton of noise to plugin developers.

Use ApiStatus.Internal instead of Deprecated for actual internal API
that continues to have use (internally).

These do not help plugin developers if they bring moise noise than value.
2019-03-24 18:39:01 -04:00
Aikar
ded424db46 Fixes and additions to the spawn reason API
Expose an entities spawn reason on the entity.
Pre existing entities will return NATURAL if it was a non
persistenting Living Entity, SPAWNER for spawners,
or DEFAULT since data was not stored.

Additionally, add missing spawn reasons.

Co-authored-by: Aurora <aurora@relanet.eu>
Co-authored-by: Jakub Zacek <dawon@dawon.eu>
2019-03-24 00:21:23 -04:00
MisterVector
452f8cf88b Add PlayerPostRespawnEvent 2018-10-26 21:33:13 -07:00
Mark Vainomaa
86603709de Add GS4 Query event 2019-03-17 21:46:27 +02:00
Mark Vainomaa
13d4e540cf Add WhitelistToggleEvent 2019-03-13 20:04:43 +02:00
Aikar
719f0a0a7e BlockDestroyEvent
Adds an event for when the server is going to destroy a current block,
potentially causing it to drop. This event can be cancelled to avoid
the block destruction, such as preventing signs from popping when
floating in the air.

This can replace many uses of BlockPhysicsEvent
2019-02-06 00:19:33 -05:00
Aikar
fda116f002 Add ItemStack Recipe API helper methods
Allows using ExactChoice Recipes with easier methods

Redirects some of upstream's APIs to these new methods to avoid
usage of magic values and the deprecated RecipeChoice#getItemStack
2014-01-28 19:13:57 -05:00
Zach Brown
9b814929a7 Add APIs to replace OfflinePlayer#getLastPlayed
Currently OfflinePlayer#getLastPlayed could more accurately be described
as "OfflinePlayer#getLastTimeTheirDataWasSaved".

The API doc says it should return the last time the server "witnessed"
the player, whilst also saying it should return the last time they
logged in. The current implementation does neither.

Given this interesting contradiction in the API documentation and the
current defacto implementation, I've elected to deprecate (with no
intent to remove) and replace it with two new methods, clearly named and
documented as to their purpose.
2019-01-02 00:31:12 -06:00
Spottedleaf
1302332a7e Add PlayerConnectionCloseEvent
This event is invoked when a player has disconnected. It is guaranteed that,
if the server is in online-mode, that the provided uuid and username have been
validated.

The event is invoked for players who have not yet logged into the world, whereas
PlayerQuitEvent is only invoked on players who have logged into the world.

The event is invoked for players who have already logged into the world,
although whether or not the player exists in the world at the time of
firing is undefined. (That is, whether the plugin can retrieve a Player object
using the event parameters is undefined). However, it is guaranteed that this
event is invoked AFTER PlayerQuitEvent, if the player has already logged into
the world.

This event is guaranteed to never fire unless AsyncPlayerPreLoginEvent has
been called beforehand, and this event may not be called in parallel with
AsyncPlayerPreLoginEvent for the same connection.

Cancelling the AsyncPlayerPreLoginEvent guarantees the corresponding
PlayerConnectionCloseEvent is never called.

The event may be invoked asynchronously or synchronously. As it stands,
it is never invoked asynchronously. However, plugins should check
Event#isAsynchronous to be future-proof.

On purpose, the deprecated PlayerPreLoginEvent event is left out of the
API spec for this event. Plugins should not be using that event, and
how PlayerPreLoginEvent interacts with PlayerConnectionCloseEvent
is undefined.
2018-10-07 12:05:06 -07:00
DoNotSpamPls
ad83a72cf5 Change the reserved channel check to be sensible 2018-10-23 19:32:55 +03:00
BillyGalbreath
df6c6062ab Add more Zombie API 2018-10-07 04:29:51 -05:00
Shane Freeder
a9d195552e Support cancellation supression of EntityDismount/VehicleExit events"
Entities must be dismounted before teleportation in order to avoid
multiple issues in the server with regards to teleportation, shamefully,
too many plugins rely on the events firing, which means that not firing
these events caues more issues than it solves;

In order to counteract this, Entity dismount/exit vehicle events have
been modified to supress cancellation (and has a method to allow plugins
to check if this has been set), noting that cancellation will be silently
surpressed given that plugins are not expecting this event to not be cancellable.

This is a far from ideal scenario, however: given the current state of this
event and other alternatives causing issues elsewhere, I believe that
this is going to be the best soultion all around.

Improvements/suggestions welcome!
2018-11-18 15:53:43 +00:00
Shane Freeder
d9195b0be3 Make the default permission message configurable 2018-11-18 19:44:54 +00:00
BillyGalbreath
7b3013d59b Add more Witch API 2018-10-12 03:47:26 -05:00
Caleb Bassham
fb826f7221 Add spectator target events
- PlayerStartSpectatingEntityEvent
- PlayerStopSpectatingEntityEvent
2018-09-28 02:30:56 -05:00
BillyGalbreath
342e189485 Turtle API 2018-09-28 17:08:09 -05:00
BillyGalbreath
3ad277b100 Add sun related API 2018-10-07 00:54:15 -05:00
BillyGalbreath
51b4b8a059 Add LivingEntity#getTargetEntity 2018-09-22 00:32:53 -05:00
Phoenix616
63821bf96b PreSpawnerSpawnEvent
This adds a separate event before an entity is spawned by a spawner
which contains the location of the spawner too similarly to how the
SpawnerSpawnEvent gets called instead of the CreatureSpawnEvent for
spawners.

Dropped as it does not apply due to the earlier PreCreatureSpawnEvent patch not being applied
2018-09-18 23:50:10 +01:00
Aikar
6512e0749b Add Material Tags
This adds a bunch of useful and missing Tags to be able to identify items that
are related to each other by a trait.

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: Lena Kolb <lenakolb2204@gmail.com>
Co-authored-by: Layla Silbernberg <livsilbernberg@gmail.com>
Co-authored-by: Newwind <newwindserver@gmail.com>
2018-07-17 01:27:15 -04:00
Aikar
119dfa37f0 Material API additions 2018-10-06 21:14:29 -04:00
Tassu
6d98fbc47d Implement furnace cook speed multiplier API
Signed-off-by: Tassu <git@tassu.me>
2018-09-13 08:45:01 +03:00
Aikar
6a9c8c348b Performance & Concurrency Improvements to Permissions
Modifying of permissions was only half protected, enabling concurrency
issues to occur if permissions were modified async.

While no plugin really should be doing that, modifying operations
are not heavily called, so they are safe to add synchronization to.

Now, all modification API's will be synchronized ensuring safety.

Additionally, hasPermission was victim to a common java newbie mistake
of calling if (containsKey(k)) return get(k), resulting in 2 map lookups.

Optimized it to simply be a single get call cutting permission map
lookups in half.
2018-09-13 20:51:50 -04:00
Aikar
2983b658fc Mob Pathfinding API
Adds an API to allow plugins to instruct a Mob to Pathfind to a Location or Entity

This does not do anything to stop other AI rules from changing the location, so
it is still up to the plugin to control that or override after another goal changed
the location.

You can use EntityPathfindEvent to cancel new pathfinds from overriding your current.
2018-09-09 12:39:06 -04:00
Phoenix616
9bcb238879 Improve death events
This adds the ability to cancel the death events and to modify the sound
an entity makes when dying. (In cases were no sound should it will be
called with shouldPlaySound set to false allowing unsilencing of silent
entities)

It makes handling of entity deaths a lot nicer as you no longer need
to listen on the damage event and calculate if the entity dies yourself
to cancel the death which has the benefit of also receiving the dropped
items and experience which is otherwise only properly possible by using
internal code.
2018-08-21 01:32:28 +01:00
BillyGalbreath
9ccfc565ff Expose attack cooldown methods for Player 2018-09-04 15:01:54 -05:00
BillyGalbreath
c708d136f7 Add ray tracing methods to LivingEntity 2018-09-03 18:13:53 -05:00
Aikar
8ce80096b6 Async Chunks API
Adds API's to load or generate chunks asynchronously.

Also adds utility methods to Entity to teleport asynchronously.
2016-02-29 17:43:33 -06:00
Sotr
318265a167 Add source block constructor and getChangedBlockData() to BlockPhysicsEvent 2018-08-23 16:14:25 +08:00
cswhite2000
a366055b99 isChunkGenerated API 2018-08-21 19:39:46 -07:00
Zach Brown
6cc3102429 Inventory#removeItemAnySlot 2018-08-28 23:04:06 -04:00
BillyGalbreath
2c612508cb Add More Creeper API 2018-08-24 11:50:16 -05:00
BillyGalbreath
72098bd870 Add PhantomPreSpawnEvent 2018-08-25 19:56:42 -05:00
BillyGalbreath
b589db2d90 Slime Pathfinder Events 2018-08-24 08:18:27 -05:00
Spottedleaf
8170ae9d64 Allow Blocks to be accessed via a long key
The key can be retrieved via methods Location#toBlockKey() and
Block#getBlockKey()

World provides lookup for blocks by long key via method World#getBlockAtKey(long)

The formatting for the key is as follows:

10 bit y|27 bit z|27 bit x

The y value is considered unsigned while z and x are considered two's complement

Y range: [0, 1023]
X, Z range: [-67 108 864, 67 108 863]
2018-08-14 21:42:10 -07:00
Aikar
ffe27211fb Don't use snapshots for Timings Tile Entity reports 2018-08-15 01:19:37 -04:00
Aikar
99bdc0fc19 Ability to get Tile Entities from a chunk without snapshots 2018-08-15 01:04:58 -04:00
Aikar
1dd927ee10 Provide Chunk Coordinates as a Long API
Allows you to easily access the chunks X/z as a long, and a method
to look up by the long key too.
2018-08-04 19:37:35 -04:00
Mark Vainomaa
0961228e4c Add TNTPrimeEvent 2018-07-15 22:17:55 +03:00
BillyGalbreath
cc6614603e AnvilDamageEvent 2018-07-20 23:36:55 -05:00
willies952002
2a9bc8abb9 Expand ArmorStand API
Adds the following:
- Add proper methods for getting and setting items in both hands. Deprecates old methods
- Enable/Disable slot interactions
- Allow using degrees for ArmorStand rotations (via new Rotations class)

Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
2018-07-26 02:22:44 -04:00
Aikar
134ca58ee1 Expand Location Manipulation API
Adds set(x, y, z), add(base, x, y, z), subtract(base, x, y, z);
2018-07-25 01:36:07 -04:00
BillyGalbreath
431acee6c7 SkeletonHorse Additions 2018-07-27 22:36:17 -05:00
Riley Park
f55cc79973 Allow disabling armour stand ticking 2018-08-15 01:26:03 -07:00
BillyGalbreath
d50ba0d9d0 PlayerLaunchProjectileEvent 2018-07-21 03:10:50 -05:00
BillyGalbreath
c3ab659a8a PlayerElytraBoostEvent 2018-07-21 01:59:53 -05:00
BillyGalbreath
d8cc2cf7e6 EnderDragon Events 2018-07-21 01:51:05 -05:00
Aikar
aec70dca41 Entity#getChunk API
Get the chunk the entity is currently registered to
2018-07-04 02:25:48 -04:00
BillyGalbreath
aa4a072807 Allow setting the vex's summoner 2018-10-06 21:47:09 -05:00
Aikar
6d3de60244 InventoryCloseEvent Reason API
Allows you to determine why an inventory was closed, enabling plugin developers
to "confirm" things based on if it was player triggered close or not.
2018-07-03 21:52:52 -04:00
Brokkonaut
f8562d67ca Add World.getEntity(UUID) API 2018-07-03 16:07:16 +02:00
Aikar
c8a0abe8fd RangedEntity API
Allows you to determine if an entity is capable of ranged attacks,
and to perform an attack.
2018-06-26 21:34:40 -04:00
Aikar
77334adf24 LivingEntity Active Item API
API relating to items being actively used by a LivingEntity
such as a bow or eating food.

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2018-06-29 00:19:19 -04:00
Aikar
fe1b88829d ItemStack API additions for quantity/flags/lore 2018-06-22 22:59:18 -04:00
Aikar
9624ed131b Expand Explosions API
Add Entity as a Source capability, and add more API choices, and on Location.

Co-authored-by: Esoteric Enderman <90862990+EsotericEnderman@users.noreply.github.com>
Co-authored-by: Bjarne Koll <git@lynxplay.dev>
2017-12-19 16:24:42 -05:00
Brokkonaut
e95376162f Add entity knockback events
- EntityKnockbackEvent
- EntityPushedByEntityAttackEvent
- EntityKnockbackByEntityEvent

Co-authored-by: aerulion <aerulion@gmail.com>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2018-06-18 15:40:39 +02:00
Aikar
2533372193 PlayerReadyArrowEvent
Called when a player is firing a bow and the server is choosing an arrow to use.
Plugins can skip selection of certain arrows and control which is used.
2018-06-18 01:09:27 -04:00
BillyGalbreath
85e9ea4189 Add "getNearbyXXX" methods to Location 2018-06-18 00:41:46 -05:00
Aikar
2961c3844c EntityShootBowEvent consumeArrow and getArrowItem API
Adds ability to get what arrow was shot, and control if it should be consumed.
2013-06-15 19:52:04 -04:00
BillyGalbreath
e7267acf84 Make shield blocking delay configurable 2018-06-16 01:17:39 -05:00
Shane Freeder
5cc8f5a0e6 Add EntityTeleportEndGatewayEvent 2018-06-09 13:08:21 +01:00
Aikar
b513a8369d ItemStack#getMaxItemUseDuration
Allows you to determine how long it takes to use a usable/consumable item
2018-06-05 22:59:50 -04:00
Aikar
a4ea7eef0b WitchReadyPotionEvent
Control what potion the witch readies to use
2018-06-05 22:47:08 -04:00
Aikar
bf8735b85b PotionEffect clone methods 2018-06-03 04:10:13 -04:00
Aikar
0432bbd3a8 Location.toBlockLocation/toCenterLocation()
Convert location objects to their block coordinates, or the center of the block
2018-05-24 21:01:13 -04:00
Aikar
9970e9dfde WitchThrowPotionEvent
Fired when a witch throws a potion at a player
2018-05-16 20:39:09 -04:00
Aikar
045c3d85fe WitchConsumePotionEvent
Fires when a witch consumes the potion in their hand
2018-05-16 20:26:16 -04:00
Aikar
4be5a9c1a7 EndermanAttackPlayerEvent
Allow control over whether or not an enderman aggros a player.

This allows you to override/extend the pumpkin/stare logic.
2018-05-01 20:17:44 -04:00
Aikar
2a57740d34 Expand World.spawnParticle API and add Builder
Adds ability to control who receives it and who is the source/sender (vanish API)
the standard API is to send the packet to everyone in the world, which is ineffecient.

This adds a new Builder API which is much friendlier to use.
2017-08-29 23:58:48 -04:00
Aikar
623c56ab78 Location.isChunkLoaded() API 2018-04-30 19:27:31 -04:00
Aikar
f8d5489645 Additional world.getNearbyEntities API's
Provides more methods to get nearby entities, and filter by types and predicates
2018-04-30 17:55:28 -04:00
Aikar
228f9bab1c Enderman.teleportRandomly()
Ability to trigger the vanilla "teleport randomly" mechanic of an enderman.
2018-04-30 13:29:15 -04:00
Aikar
1281d5b384 EndermanEscapeEvent
Fires an event anytime an enderman intends to teleport away from the player

You may cancel this, enabling ranged attacks to damage the enderman for example.
2018-04-30 13:14:30 -04:00
Aikar
92482f8e92 Add Ban Methods to Player Objects
Allows a more logical API for banning players.

player.banPlayer("Breaking the rules");
2018-04-28 10:28:50 -04:00
Mark Vainomaa
a97f03a018 Add openSign method to HumanEntity 2018-04-01 02:28:43 +03:00
Minecrell
16b17bdc68 Add legacy ping support to PaperServerListPingEvent
Add a new method to StatusClient check if the client is a legacy
client that does not support all of the features provided in the
event.
2017-10-11 19:30:20 +02:00
Aikar
635e3fa1fa getPlayerUniqueId API
Gets the unique ID of the player currently known as the specified player name
In Offline Mode, will return an Offline UUID

This is a more performant way to obtain a UUID for a name than loading an OfflinePlayer
2018-03-22 01:39:28 -04:00
Aikar
4447307899 Player.setPlayerProfile API
This can be useful for changing name or skins after a player has logged in.
2018-03-18 12:28:55 -04:00
Minecrell
2eaa723e96 Add extended PaperServerListPingEvent
Add a new event that extends the original ServerListPingEvent
and allows full control of the response sent to the client.
2017-10-11 15:55:38 +02:00
Aikar
bb5e4dd0eb Add more fields to AsyncPreLoginEvent
Co-authored-by: Connor Linfoot <connorlinfoot@me.com>
Co-authored-by: MCMDEV <john-m.1@gmx.de>
2018-03-18 11:43:30 -04:00
Aikar
4198da1e99 Tameable#getOwnerUniqueId API
This is faster if all you need is the UUID, as .getOwner() will cause
an OfflinePlayer to be loaded from disk.
2018-02-24 00:55:52 -05:00
Aikar
f229e2c798 Optimize Hoppers 2018-01-18 01:00:27 -05:00
Zach Brown
0347d9b819 Add ArmorStand Item Meta
This is adds basic item meta for armor stands. It does not add all
possible metadata however.

There are armor, hand, and equipment types, as well as position data
that can also be added here. This initial addition should serve a
starting point for future additions in this area.
2018-01-27 17:06:24 -05:00
Aikar
bfdd7ccc77 Fill Profile Property Events
Allows plugins to populate profile properties from local sources to avoid calls out to Mojang API
to fill in textures for example.

If Mojang API does need to be hit, event fire so you can get the results.

This is useful for implementing a ProfileCache for Player Skulls
2018-01-02 00:31:08 -05:00
BillyGalbreath
6535733e66 Add PlayerAdvancementCriterionGrantEvent
Co-authored-by: The456gamer <the456gamer@the456gamer.dev>
2018-01-19 08:15:14 -06:00
Aikar
142b065979 Add setPlayerProfile API for Skulls
This allows you to create already filled textures on Skulls to avoid texture lookups
which commonly cause rate limit issues with Mojang API
2018-01-19 00:29:28 -05:00
Aikar
b1e4edb712 PlayerNaturallySpawnCreaturesEvent
This event can be used for when you want to exclude a certain player
from triggering monster spawns on a server.

Also a highly more effecient way to blanket block spawns in a world
2018-01-14 17:31:37 -05:00
Aikar
d1f7f3a5ae PreCreatureSpawnEvent
Adds an event to fire before an Entity is created, so that plugins that need to cancel
CreatureSpawnEvent can do so from this event instead.

Cancelling CreatureSpawnEvent rapidly causes a lot of garbage collection and CPU waste
as it's done after the Entity object has been fully created.

Mob Limiting plugins and blanket "ban this type of monster" plugins should use this event
instead and save a lot of server resources.

See: https://github.com/PaperMC/Paper/issues/917
2018-01-14 16:59:43 -05:00
Aikar
8bfc474fb4 Ability to apply mending to XP API
This allows plugins that give players the ability to apply the experience
points to the Item Mending formula, which will repair an item instead
of giving the player experience points.

Both an API To standalone mend, and apply mending logic to .giveExp has been added.
2017-12-20 17:38:07 -05:00
Aikar
bb15855d47 ExperienceOrb merging/stacking API
Adds ExperienceOrbMergeEvent
Fired when the server is about to merge 2 experience orbs
Plugins can cancel this if they want to ensure experience orbs do not lose important
metadata such as spawn reason, or conditionally move data from source to target.

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2017-12-19 22:56:24 -05:00
Aikar
bef438ad25 PlayerPickupExperienceEvent
Allows plugins to cancel a player picking up an experience orb
2017-12-19 22:00:41 -05:00
Aikar
332152c40d Display warning on deprecated recipe API
Any plugin still using this API will result in the server saving an inconsistent UUID to player data files,
which then triggers warnings such as "Tried to load unrecognized recipe: bukkit:9e5b92f5-e549-4f47-b0a8-9f89390ed77b removed now."
on the players login.

Plugin authors need to define a key to keep it consistent between server restarts.
2017-12-09 12:40:25 -05:00
Minecrell
5de53af38b Expose client protocol version and virtual host
Add a NetworkClient interface that provides access to:
  - The socket address
  - The protocol version
  - The virtual host (the hostname/port the client used to connect
    to the server)
2017-10-10 18:44:42 +02:00
Jason Penilla
7132df4810 AsyncTabCompleteEvent
Let plugins be able to control tab completion of commands and chat async.

This will be useful for frameworks like ACF so we can define async safe completion handlers,
and avoid going to main for tab completions.

Especially useful if you need to query a database in order to obtain the results for tab
completion, such as offline players.

Also Enforces mutability of the existing TabCompleteEvent.

Co-authored-by: Aikar <aikar@aikar.co>
2017-11-26 13:17:09 -05:00
Aikar
8306cc5b4f API to get a BlockState without a snapshot
This allows you to get a BlockState without creating a snapshot, operating
on the real tile entity.

This is useful for where performance is needed
2017-11-06 21:10:01 -05:00
pkt77
74e0518b1a Add PlayerArmorChangeEvent 2017-11-10 23:45:59 -05:00
Minecrell
c85ea66260 Add workaround for plugins modifying the parent of the plugin logger
Essentials uses a custom logger name ("Essentials") instead of the
plugin logger. Log messages are redirected to the plugin logger by
setting the parent of the "Essentials" logger to the plugin logger.

With our changes, the plugin logger is now also called "Essentials",
resulting in an infinite loop. Make sure plugins can't change the
parent of the plugin logger to avoid this.
2017-09-21 19:41:20 +02:00
Zach Brown
bb09886459 Add PlayerJumpEvent 2017-09-28 17:21:32 -04:00
Minecrell
31a575f5f7 Handle plugin prefixes in implementation logging configuration
Currently, plugin prefixes are prepended to the log message in
the PluginLogger before passing the message to the underlying
logging framework. This is bad design because they need to be
stripped manually when using custom appenders to log messages
in a different format.

Additionally, it makes integration of alternative logging APIs hard
because all logging must go through the PluginLogger. Avoid using
PluginLogger and create a regular logger using the plugin name.
The implementation should handle plugin prefixes by displaying
logger names when appropriate.
2017-09-21 16:14:13 +02:00
Minecrell
1caeaef01d Allow plugins to use SLF4J for logging
SLF4J is a commonly used abstraction for various logging frameworks
such as java.util.logging (JUL) or Log4j. Currently, plugins are
required to do all their logging using the provided JUL logger.
This is annoying for plugins that target multiple platforms or when
using libraries that log messages using SLF4J.

Expose SLF4J as optional logging API for plugins, so they can use
it without having to shade it in the plugin and going through
several layers of logging abstraction.
2017-09-21 16:33:12 +02:00
Aikar
9dc2eb6be7 ProfileWhitelistVerifyEvent
Fires when the server is validating if a player is whitelisted.

Allows you to do dynamic whitelisting and change of kick message
2017-07-03 18:11:34 -05:00
BillyGalbreath
eb5ae9c077 LivingEntity#setKiller 2017-07-31 01:49:43 -05:00
Aikar
8df1d2656c ensureServerConversions API
This will take a Bukkit ItemStack and run it through any conversions a server process would perform on it,
to ensure it meets latest minecraft expectations.
2016-05-04 23:55:48 -04:00