124 Commits

Author SHA1 Message Date
Aikar
1b2830a3b3 SPIGOT-4441: Fix serializing Components to and from Legacy
While cfeef75cd97 might of semi helped being able to save black text
lore, it actually took a fundamental problem with the legacy serialization
code and expanded it to break even more aspects of the server when dealing
with Component to Legacy conversion.

This is causing data loss in Spigot with cases such as setting an item name
to white gets stripped resulting in it being italic.

Additionally, things such as book pages have been returning black formatting
codes for the end of the line even when the user doesn't have colors in the book.

The root issue is that the "Default Color" system is fundamentally wrong.

Components do not and should not care about what element of the game they
are being used by, and that's what the default color system did.

It results in components that if obtained from 1 source such as a Book
where the default / rendered color is black, is then copied to another
source such as an Entity name, the black is carried forward and shown
in the Entity name, when in reality it should have been white.

This commit reverts cfeef75cd97 and fixes the underlying serialization
issues when it comes to Legacy to and From conversions.

There was quite a number of issues with this code overall, in how
it handles inserting color codes, new line parsing and such.

Books was using mojangs own "getLegacyString" which doesn't match behavior.
We also do not want to use Mojangs method as there is no guarantee they don't
remove that in future.
Plus, everything about books uses the CB implementation anyways, and it should
be consistent (this was mandatory to avoid serialization format changes on old vs new)

These changes as is results in Item Stacks already serialized will not
change contents when they go to component and back, so this won't impact
any existing data.

Newly created books though for example will change behavior in that they
will no longer insert black color codes in the serialized data and will
only represent intentional color changes by the creator of the book.
This will result in cleaner data on them, and books are the only thing
I'm aware of that has a behavioral shift due to the likelyhood of the
default color system kicking in on other parts of the string.

A unit test has been added to verify integrity of serialization to
ensure that any legacy string that is converted into Components will
always re-encode back in the same way when going back to Legacy.
2020-06-01 19:19:42 +10:00
md_5
ce66f6937b Misc checkstyle fixes 2020-04-14 12:34:43 +10:00
md_5
de42aa13f3 Update to Minecraft 1.15 2019-12-11 09:00:00 +11:00
blablubbabc
8d0f37228d SPIGOT-4752: Fixed inconsistency between isChunkLoaded and chunk load/unload events 2019-05-25 10:47:30 +10:00
md_5
89c52b7b0e Update to Minecraft 1.14.1 2019-05-14 10:00:00 +10:00
md_5
8ad02cd9c7 SPIGOT-4900: Rearchitect multiworld support for better compat with new villager AI 2019-05-12 11:15:48 +10:00
md_5
e3df3d5cda Add Override annotations where appropriate 2019-04-28 11:38:01 +10:00
md_5
6606cd88d2 SPIGOT-4753: Add Pose API 2019-04-27 10:27:05 +10:00
Bjarne Koll
42f88f72b5 Replace ItemTag API with new API that also expands to Tiles and Entities 2019-04-25 14:42:39 +10:00
md_5
5fea790398 Apply import ordering rules to CraftBukkit classes 2019-04-23 14:56:58 +10:00
md_5
a2d787f6eb Update to Minecraft 1.14-pre5 2019-04-23 12:00:00 +10:00
blablubbabc
0e1cea5a4a Added Entity#setRotation.
Unlike Entity#teleport this can also be used while the entity is inside a vehicle.
2019-04-03 19:46:27 +11:00
md_5
b15abb12cb SPIGOT-4566: Don't special case NETHER_PORTAL teleport reason from plugins 2019-01-08 09:26:34 +11:00
Andrew Krieger
6e842759cc Cross World Entity Teleportation
Use Entity.teleportTo for cross-world teleportation in CraftEntity.
2019-01-05 16:21:07 +11:00
blablubbabc
4a47be6164 Add ray tracing and bounding box API 2018-10-26 20:00:00 +11:00
Senmori
ee5efeb0dc Add getFacing method to get the current cardinal direction an entity is facing. 2018-09-03 18:06:58 +10:00
blablubbabc
c3a8de0371 SPIGOT-227: Add entity persistent flag
Non-persistent entities won't get saved when the chunk saves the entities.
Entities that are passengers of a non-persistent entity won't get saved.
Players won't save their vehicle, if the player is directly or
indirectly riding a non-persistent entity.
2018-07-30 12:29:43 +10:00
md_5
fa1340f7a6 SPIGOT-4022: Improve utility of Entity.getName for non-players 2018-07-17 06:36:08 +10:00
md_5
b6a757dec8 SPIGOT-4016: Fix clearing custom names 2018-07-16 14:39:01 +10:00
md_5
421c1728c8 Update to Minecraft 1.13-pre7 2018-07-15 10:00:00 +10:00
BlackHole
bacaf9274b SPIGOT-3824: Return the direct vehicle of an entity, not the root vehicle 2018-02-16 23:16:48 +01:00
md_5
adbfc1f98a SPIGOT-3649: Backwards check in playEffect 2017-11-13 08:47:04 +11:00
md_5
326c2e605f SPIGOT-3644: Fix missed yaw callsite update 2017-11-09 13:07:25 +11:00
md_5
c3047a5df7 SPIGOT-3629: Greatly expand entity effect API 2017-11-07 19:32:24 +11:00
md_5
2fae23c251 SPIGOT-3637: Adjust yaw yet again 2017-11-07 17:21:38 +11:00
md_5
a3b3a421ac SPIGOT-3565: Head yaw is "more accurate" for living entities 2017-09-28 16:23:14 +10:00
md_5
2a927e8638 Update to Minecraft 1.12.1 2017-08-03 23:00:00 +10:00
md_5
2a2d6d6295 Add PistonMoveReaction getters for Entity 2017-06-12 19:23:24 +10:00
md_5
921ba53556 SPIGOT-3283: Don't allow plugin induced infinite velocity / position 2017-06-02 18:44:37 +10:00
md_5
e13d119686 Update to Minecraft 1.12-pre6 2017-05-30 21:55:13 +10:00
BlackHole
c155d8dd32 SPIGOT-3277: Fix Entity.eject() 2017-05-28 22:27:57 +02:00
md_5
4377dac138 SPIGOT-3253: Fix entity yaw changes 2017-05-20 11:16:28 +10:00
md_5
5195487ec6 Update to Minecraft 1.12-pre2 2017-05-14 12:00:00 +10:00
bramhaag
dfee3d9f9f Add getWidth + getHeight for Entity 2017-03-19 10:51:59 +11:00
md_5
7e19325845 SPIGOT-2640: API for multiple passengers per entity 2017-01-04 10:53:07 +11:00
LukBukkit
5245147d00 SPIGOT-619: Force rotate head of entities when setting location. 2016-11-24 09:39:39 +11:00
md_5
c25ddf063a Update to Minecraft 1.11 2016-11-17 12:41:03 +11:00
Senmori
51263e9718 Implement Entity Scoreboard Tags 2016-11-06 12:18:27 +11:00
md_5
ae93d4fb49 SPIGOT-2705: Portal cooldown getter / setter. 2016-10-01 12:26:20 +10:00
md_5
1628ce6240 SPIGOT-2474: Use .die() to set entity remove status 2016-07-02 11:24:14 +10:00
md_5
a8a4bedd2a Update to Minecraft 1.10 2016-06-09 11:43:49 +10:00
Sansko1337
dd0e968c6a SPIGOT-713: APIs to manipulate Entity's silent status. 2016-06-03 20:30:48 +10:00
md_5
c5e9a169fa Minecraft 1.9.4 2016-05-10 21:47:39 +10:00
Sansko1337
ea49b2eee9 Implement getting / setting of Entity invulnerability 2016-03-27 10:08:45 +11:00
Matthew
c5d27c5f6f Only create PermissibleBase instance in CraftEntity the first time it is actually needed. Fixes static test cases for subclasses failing when perm field was instantiated. 2016-03-23 07:32:34 +11:00
Matthew
f332350969 Implement SpectralArrow entity 2016-03-18 14:30:14 +11:00
t00thpick1
4a8818c5fd SPIGOT-1638 / SPIGOT-1673: Rework Potions API 2016-03-12 12:38:22 +11:00
md_5
aa008dff0f Update to Minecraft 1.9 2016-03-01 09:32:45 +11:00
md_5
701ae54ffc SPIGOT-1192: Restore some behaviour to entity.getNearbyEntities 2015-09-18 15:15:56 +10:00
md_5
5e9f698fac SPIGOT-1165: Restore getNearbyEntities behaviour to include spectators. 2015-09-06 14:54:41 +10:00