Commit Graph

75 Commits

Author SHA1 Message Date
Parker Hawke
cfe00fa47c
#3490: Add ComponentBuilder#build() and ComponentSerializer#deserialize()
Components traditionally use the extra data to represent components as a single BaseComponent object. While BaseComponent typically mirrors this behaviour, somewhere along the development of BungeeChat this practice was made unclear. Because ComponentBuilder#create() returns an array of BaseComponents, it has sort of been silently accepted that all components should be represented as arrays, which is incorrect. This heavily influenced the direction of Spigot's component API (with additions such as CommandSender#sendMessage(BaseComponent[])) which emphasizes this misconception of "all components are arrays".

Adding new methods to ComponentBuilder and ComponentSerializer should steer use of the BungeeChat API to be more oriented towards single component instances, not arrays.
2023-09-19 07:14:18 +10:00
Outfluencer
19424aba9d
#3430: Add new fallback field to TranslatableComponent 2023-01-28 11:32:59 +11:00
Janmm14
2a716bbc7f
#3344: Fix legacy chat conversion losing format reset information.
In legacy chat format, colors and reset do not retain any formatting.

In order to prevent this behaviour from creating unnecessary long json containing many redundant `formatting: false`, the original `fromLegacyText(...)` idea was to just override the color to white and handle the format reset just internally.

However eventual previous format rejection (aka reset) information was lost when appending multiple legacy format strings to a `ComponentBuilder`.

With this change we save the "reset wish" in the `BaseComponent` and update `ComponentBuilder`'s append function to not copy over formatting if the component has the reset flag set.
2022-06-30 21:22:16 +10:00
Janmm14
06bf088d27
#3186: Replace String.format calls in exceptions with simple string concats 2021-09-17 18:14:21 +10:00
md_5
bda1605627
Minor formatting fixes 2021-07-22 11:46:41 +10:00
Janmm14
d49e97c423
#3099: Improve toArray calls by using an empty array as parameter.
From Intellij IDEA inspections: Since late updates of OpenJDK 6 this call was intrinsified, making the performance of the empty array version the same and sometimes even better, compared to the pre-sized version.
2021-05-28 08:23:43 +10:00
blablubbabc
baf2f60850
#3018: Serialize text component properties in the same order as Minecraft 2021-01-13 10:17:16 +11:00
BlackHole
9c078b78c3
#2985: Add Keybinds.SOCIAL_INTERACTIONS 2020-11-04 19:43:11 +11:00
Mystiflow
e93c762f16
#2921: ClickEvent without value exceptions in window title 2020-08-22 17:50:54 +10:00
WinX64
64e4f4658a
#2931: Fix exceptions on ChatColor.of(Color) due to truncation 2020-08-22 17:47:01 +10:00
Mystiflow
c1522ab94c
#2909: Don't serialise as array for single element contents 2020-07-16 18:53:23 +10:00
Mystiflow
0af4bfdbdf
#2905: HoverEvent getValue compat method 2020-07-15 09:05:05 +10:00
Mystiflow
fd4864d475
#2899: Various chat API stability updates
- Check if a value CAN be parsed as a BaseComponent[] before attempting to parse it through the Content deserialiser
- When removing enclosing quotes from deserialised NBT, don't remove all quotes as they may have been escaping
- Check for ALL the number suffix types
- Throw JSONParseException if: no selector in selector component, no translate in translate component
- JsonObject is not JsonPrimitive
- Cleaned up unit tests a bit
2020-07-09 19:14:01 +10:00
Mystiflow
bcc3460dda
#2893: Refactored Hover Code for Maintainability 2020-07-07 09:09:32 +10:00
Erik Eide
4794fccfb8
#2888: Correct font check in BaseComponent 2020-07-06 08:10:42 +10:00
Mystiflow
637e7e93e0
#2884: Mojangson in hover events cannot be parsed 2020-07-05 19:09:59 +10:00
Mystiflow
1d40b8a88a
#2866: Add support for contents in Hover Event 2020-07-01 10:57:09 +10:00
Max Lee
e21b0b3773
#2870: Add rgb values to all colors 2020-06-26 18:42:49 +10:00
Max Lee
c803f42a84
#2867: Add font setter to ComponentBuilder 2020-06-26 09:52:31 +10:00
md_5
739b496bf6
#2858: ChatColor#ordinal is missing 2020-06-24 08:34:05 +10:00
md_5
75af27acf1
Fix missing static on ChatColor.values 2020-06-24 07:19:46 +10:00
md_5
d0fd673b60
Minecraft 1.16 support + RGB ChatColor preview 2020-06-24 07:00:00 +10:00
md_5
727281e69e Make all BaseComponent.duplicate methods specific 2020-05-10 09:24:40 +10:00
Alex_qp
4e99a32537 #2808: TextComponent.duplicate should return TextComponent 2020-05-10 09:24:40 +10:00
md_5
68cc325ace #2755: Add ClickEvent.COPY_TO_CLIPBOARD 2020-01-19 10:18:54 +11:00
md_5
2c6a21d503 Remove stray import breaking build 2020-01-18 10:15:25 +11:00
BlackHole
b7e7274b98 #2750: Don't special case TextComponent constructor with a single extra 2020-01-16 10:45:29 +11:00
BlackHole
22d2cd3388 #2747: Fix TranslatableComponent.deserialize() 2020-01-13 09:19:07 +11:00
md_5
d20e622b7b Apply checkstyle to javadoc 2020-01-05 11:25:56 +11:00
CertainLach
465215686b #2740: Fix BaseComponent#equals() stack overflow 2020-01-05 10:44:40 +11:00
Mystiflow
d2ceccd646 #2725: Various improvements to chat API
* More versatile ComponentBuilder system
    - Allow creating a builder without an initial component
    - Duplicate the parts when component is created
    - Add getter for 'parts'
* Added cursor API for more fluid component modifying
* Don't legacy convert Titles on 1.11 or newer
* Simplify plain and legacy text converting code
    - Shares the addFormat method between all superclasses
    - Duplicate code in TranslatableComponent moved in separate method
2020-01-05 10:40:07 +11:00
md_5
8eb5683783 Bundle 1.14.2 translations 2019-06-09 19:35:11 +10:00
md_5
af10f82d14 Apply and enforce import ordering rules 2019-04-23 15:23:40 +10:00
md_5
5aaccd2e9e #2621: Fix score component serialization 2019-04-06 19:54:17 +11:00
kamcio96
7496b0a2c8 #2584: Add ComponentBuilder#appendLegacy 2019-01-20 20:02:32 +11:00
NayXegp
6c44ccd597 #2527: Minor cosmetic cleanups to imports etc
Please see https://github.com/SpigotMC/BungeeCord/pull/2527
2018-11-02 18:06:56 +11:00
md_5
ed6b03d24a Always use root locale for case conversions 2018-10-28 12:10:34 +11:00
md_5
9ea82e9541 Add multiple translation registries, support for Mojang JSON 2018-08-16 07:52:41 +10:00
Simon Chuu
77b0a38c26 #2457: Allow objects in with to be translated into a string (for integer, float, etc.) 2018-07-15 11:39:46 +10:00
PROgrm_JARvis
ceb9ea1e52 #2436: Extend chat module with Joiner functional interface support 2018-07-12 21:44:59 +10:00
CosmoConsole
f54f0e3f6a #2421: fromLegacyText - return formatted component even if empty 2018-05-13 10:10:07 +10:00
md_5
dce4ea193a #2396: Add way to select reset color when parsing legacy chat 2018-04-01 09:36:46 +10:00
Mystiflow
d7eef6ff2e #2388: Treat BaseComponent array appends as one. Fixes #2387.
Don't copy formatting of previous element in the array being appended
but instead from the last appended component in the builder.
Otherwise formatting will be overridden in an incorrect way from
legacy text conversions.

Added unit test failed before this change. Now passes.
2018-03-14 19:51:08 +11:00
Joe
7653a5f0f8 #2363: Chat Component API Improvements
- duplicateWithoutFormatting deprecated and now works to include extra. Less maintenance required for any component implementations.
- Improved copyFormatting API to allow for retention copying.
- API to append a single BaseComponent in a ComponentBuilder, previously had to wrap a
component in its own array to do this.
- BaseComponent retain API that functions the same as from
ComponentBuilder.
2018-03-05 18:25:48 +11:00
Senmori
a3b44aa612 #2342: Add score and selector components to chat API 2018-02-19 11:48:22 +11:00
md_5
9b2bb07d89 Fix some source code formatting 2018-01-28 10:23:52 +11:00
Gabscap
c0356eb72d #2333: Fix StringIndexOutOfBoundsException in TextComponent.fromLegacy 2018-01-28 09:59:34 +11:00
md_5
22bd43f725 Use root locale for upper / lowercasing 2018-01-12 08:17:44 +11:00
md_5
dda0638869 Make bungeecord-chat API classes final - the API does not (nor should) support subclassing. 2017-12-26 15:30:48 +11:00
BlackHole
fbc5f514e2 Add KeybindComponent API 2017-11-10 11:14:17 +11:00