Dylan K. Taylor
fbcf4649eb
Avoid unnecessary Entity::getWorld() calls in loops
2023-11-17 13:58:41 +00:00
Dylan K. Taylor
94d98fb5c4
Migrate all but two remaining legacy enums to native PHP 8.1 enums
2023-09-07 19:32:45 +01:00
Dylan K. Taylor
7cdab75b05
Merge branch 'minor-next' into major-next
2023-03-20 22:12:54 +00:00
João
2751e1ec02
replacing new Vector3(0, 0, 0) with Vector3::zero() ( #5640 )
2023-03-20 12:54:28 +00:00
Dylan K. Taylor
607bdfa42f
Timings: added new timers for entity move collision checks and projectile move ray tracing
...
projectiles get their own distinct sub-timer, since the logic is completely different from regular entities.
2023-03-19 15:49:35 +00:00
Dylan K. Taylor
abd4ef01eb
Merge branch 'minor-next' into major-next
2023-03-15 23:02:41 +00:00
Dylan K. Taylor
cc8660629b
First look at shared EntityEventBroadcaster,
...
this improves performance in PvP servers and other areas where lots of players or entities exist in one space.
fixes #5622
2023-03-15 18:22:56 +00:00
Dylan K. Taylor
2a81a421f3
Merge branch 'next-minor' into next-major
2022-12-24 17:23:30 +00:00
Dylan K. Taylor
3d038b28ff
SplashPotion: const-ify missed NBT key
2022-12-24 15:19:56 +00:00
Dylan K. Taylor
f38b15cf83
Added tag for fire blocks
2022-12-19 15:22:09 +00:00
Dylan K. Taylor
6e2685cbbb
Merge branch 'next-minor' into next-major
2022-12-18 22:25:32 +00:00
Dylan K. Taylor
bf44edd179
Constify a bunch of NBT keys, pass 1
2022-12-18 22:12:15 +00:00
Dylan K. Taylor
a205d64732
Merge branch 'next-minor' into next-major
2022-11-12 17:02:56 +00:00
IvanCraft623
a7ac6070dc
Correct damage calculation for non-arrow projectiles ( #5394 )
2022-11-07 20:05:53 +00:00
Dylan K. Taylor
92783a6db9
Merge branch 'next-minor' into next-major
2022-10-13 21:06:39 +01:00
IvanCraft623
421379fc77
SplashPotion: Use World::getCollidingEntities()
instead of World::getNearbyEntities()
( #5326 )
...
fixes spectator players receiving effects from splash potions
2022-10-11 22:57:35 +01:00
Dylan K. Taylor
c67e42a723
Add a hook to enable blocks to react to projectiles colliding with them
...
this enables implementing blocks such as the target block.
2022-07-07 01:44:13 +01:00
Dylan K. Taylor
1ff69136a3
Merge branch 'next-major' into modern-world-support
2022-06-07 20:01:40 +01:00
Dylan K. Taylor
aa9f8781ff
Merge branch 'next-minor' into next-major
2022-06-07 19:56:26 +01:00
Dylan K. Taylor
5c85aa6e58
Eliminate remaining usages of legacy block ID+meta on disk
...
flower pots loaded from vanilla worlds should now correctly display the plant inside
2022-06-05 21:49:51 +01:00
Dylan K. Taylor
d2613039ed
Replace BlockLegacyIds usages with BlockTypeIds where possible
2022-06-05 21:17:10 +01:00
Dylan K. Taylor
38d6284671
Use PHP-CS-Fixer to enforce file header presence
2022-06-04 17:34:49 +01:00
Dylan K. Taylor
7b8eeb42f6
Use typed properties in src/entity package
...
[bc break]
2022-06-01 21:19:02 +01:00
Dylan K. Taylor
b7e2b3e94a
Entity: Require declaration of gravity and drag via abstract methods
...
this guarantees that subclasses will actually declare them.
[bc break]
2022-06-01 20:51:18 +01:00
Dylan K. Taylor
fc53f3721a
Avoid direct mutations of Entity->location
2022-01-20 21:49:14 +00:00
Dylan K. Taylor
8f525ab399
Replace disallowed operators in src/entity/
2022-01-20 19:14:28 +00:00
Rush2929
b34e6f53eb
Changed visibility of Projectile->move to Protected. ( #4585 )
2021-11-19 23:21:10 +00:00
Dylan K. Taylor
f827a555d5
Merge branch 'stable'
2021-11-01 18:13:24 +00:00
Dylan K. Taylor
08f3c18de9
Arrow: do not add pickups to creative players' inventories
...
closes #2932
2021-10-30 17:16:46 +01:00
Dylan K. Taylor
0ad663ff50
Merge remote-tracking branch 'origin/stable'
2021-10-05 01:17:59 +01:00
Dylan K. Taylor
73cc841d0b
Entity: rename checkBlockCollisions() to checkBlockIntersections()
2021-09-05 14:00:27 +01:00
Rush2929
c2558573e2
Fix offhand pickup ( #4412 )
2021-08-29 12:45:23 +01:00
SalmonDE
7fd712c1ff
Refactor Block & Tile: getPos() to getPosition() ( #4395 )
...
this also changes the name of the class property 'pos' to 'position' as well as Block->getPosOffset() to Block->getPositionOffset()
2021-08-23 14:01:32 +01:00
Rush2929
1ce9474fce
Picked up items can now be added to offhand slots. ( #4360 )
2021-08-22 20:36:12 +01:00
Rush2929
eb9188c309
Replace InventoryPickup*Event with EntityItemPickupEvent ( #4384 )
...
The rationale here is that inventories don't actually pick items up - their holders do.
It's especially misleading to say that an inventory is picking up an item in creative mode when the picked-up item can't actually be added to the target inventory in the first place.
This change allows a range of new functionality, such as:
- Allowing survival players to pick items up even when their inventories are full, similarly to creative players
- Changing the destination inventory of collected items (e.g. items could be redirected to the offhand or ender chest inventory, while still allowing other plugins to understand what's happening)
As an added bonus, this obsoletes one more use case for Inventory->getHolder(), bringing us one step closer to removing the cyclic reference nightmare from inventories.
The choice of naming (EntityItemPickup, instead of EntityPickupItem) is to be consistent with other events, where the word order is SubjectObjectActionEvent.
2021-08-20 22:59:35 +01:00
Dylan K. Taylor
5387456e44
Move potion types to enum
2021-06-19 21:39:23 +01:00
Dylan K. Taylor
6fea09ded4
SplashPotion: Require potionId in constructor
2021-06-19 19:47:44 +01:00
Jason
532d57eec7
Arrow: Save and load critical state ( #4241 )
...
Fixes #3596
2021-06-09 14:00:36 +01:00
Dylan K. Taylor
5a14c1cb89
Entity: don't rebuild metadata every tick unless an associated property changed
...
this should improve performance back to PM3 levels.
2021-05-17 20:05:52 +01:00
Dylan K. Taylor
e53b57732b
Entity: replace separate height/width/eyeHeight fields with an EntitySizeInfo structure
...
this will make it easier to implement stuff like sleeping (properly), swimming and gliding without needing to duplicate all the fields.
2021-01-08 00:11:01 +00:00
Dylan K. Taylor
bcc3e87730
Timings: rename core timers to remove 'timer' from the names
...
this makes them shorter and more consistent.
2020-12-23 17:52:25 +00:00
Dylan K. Taylor
e925423749
Entity: fix chunk tracking consistency issues, fixed attempted chunk loading in origin world when teleporting to a different position in a different world
2020-12-10 18:13:18 +00:00
Dylan K. Taylor
8be0c0da0d
Implemented a silent property on entities and Entity->broadcastSound()
...
fixes #3516
2020-10-31 16:07:18 +00:00
Dylan K. Taylor
7b02cc3efd
Implemented #3836 : Replace setCancelled() in events with cancel() and uncancel()
...
The motivation for this is to prevent passing a dynamic argument to cancellation, which in almost all cases is a bug in user code. This same mistake also appears in a few places in the PM core (as seen in this commit), but in those cases the mistakes were mostly harmless since they were taking place before the event was actually called.
closes #3836
2020-09-26 14:31:56 +01:00
Dylan K. Taylor
626680c6c1
Use new Location objects instead of mutating Entity->location directly
...
I'm actually not a big fan of needing to recreate the whole thing just to modify the coordinates. This seems kind of stupid.
2020-09-25 18:43:49 +01:00
Dylan K. Taylor
279abb871d
Remove all usages of CompoundTag->hasTag()
...
in pretty much every case, these usages really wanted to read the tag's contents anyway, which can be combined with a getTag() and instanceof call for more concise and static analysis friendly code.
In the few cases where the tag contents wasn't needed, it still wanted to check the type, which, again, can be done in a more static analysis friendly way by just using getTag() and instanceof.
2020-07-10 21:01:43 +01:00
Dylan K. Taylor
ff00595a48
Remove some more Vector3 mutations
2020-06-27 20:58:02 +01:00
Dylan K. Taylor
d38c17835d
Properly switch to string entity IDs
2020-06-20 13:43:31 +01:00
Dylan K. Taylor
4b528aa637
NBT is no longer needed to create an entity
...
it's still able to be provided, but shouldn't be needed in the majority of cases (constructor args and/or API methods should be sufficient).
2020-06-19 10:51:27 +01:00
Dylan K. Taylor
1205432c34
Extract mandatory parameters into constructor parameters
...
the goal is obviously to ditch NBT entirely here, but there's more work to be done before that becomes possible.
2020-06-19 10:51:27 +01:00