@@ -11,14 +11,15 @@ import {
1111 parseDataPackPath ,
1212 parseResourceLocation ,
1313} from '../../util/minecraftUtil'
14- import { eulerFromQuaternion , roundTo , tinycolorToDecimal } from '../../util/misc'
14+ import { eulerFromQuaternion , roundTo } from '../../util/misc'
1515import { MSLimiter } from '../../util/msLimiter'
1616import { Variant } from '../../variants'
1717import type { IRenderedAnimation } from '../animationRenderer'
1818import mcbFiles from '../datapackCompiler/mcbFiles'
1919import { IntentionalExportError } from '../exporter'
2020import { AJMeta , PackMeta , type PackMetaFormats , SUPPORTED_MINECRAFT_VERSIONS } from '../global'
2121import { JsonText } from '../jsonText'
22+ import { JsonTextParser } from '../jsonText/parser'
2223import type { AnyRenderedNode , IRenderedRig } from '../rigRenderer'
2324import {
2425 arrayToNbtFloatArray ,
@@ -535,46 +536,35 @@ async function generateRootEntityPassengers(
535536 break
536537 }
537538 case 'text_display' : {
538- const color = new tinycolor ( node . background_color )
539-
540539 passenger
541540 . set ( 'id' , new NbtString ( 'minecraft:text_display' ) )
542- . set ( 'background' , new NbtInt ( tinycolorToDecimal ( color ) ) )
541+ . set ( 'background' , new NbtInt ( JsonText . hexToInt ( node . background_color ) ) )
543542 . set ( 'line_width' , new NbtInt ( node . line_width ) )
544543 . set ( 'shadow' , new NbtByte ( node . shadow ? 1 : 0 ) )
545544 . set ( 'see_through' , new NbtByte ( node . see_through ? 1 : 0 ) )
546545 . set ( 'alignment' , new NbtString ( node . align ) )
547546
548- switch ( version ) {
549- case '1.20.4' :
550- case '1.20.5' :
551- case '1.21.0' :
552- case '1.21.2' :
553- case '1.21.4' :
554- passenger . set (
555- 'text' ,
556- // String JSON text format
557- new NbtString (
558- new JsonText ( node . text ) . toString ( true , version ) ??
559- `{ "text": "Invalid Text Component", "color": "red" }`
560- )
561- )
562- break
563- case '1.21.5' :
564- passenger . set (
565- 'text' ,
566- // SNBT JSON text format
567- // Hacky workaround for deepslate not supporting MC's new escape sequences.
568- new NbtString (
569- '$$$' + node . type + '_' + node . storage_name + '_text_placeholder$$$'
570- )
547+ if ( ! compareVersions ( '1.21.5' , version ) /* >= 1.21.5 */ ) {
548+ passenger . set (
549+ 'text' ,
550+ // SNBT JSON text format
551+ // Hacky workaround for deepslate not supporting MC's new escape sequences.
552+ new NbtString (
553+ '$$$' + node . type + '_' + node . storage_name + '_text_placeholder$$$'
571554 )
572- break
573- default : {
574- throw new Error (
575- `Unsupported Minecraft version '${ version } ' for text display!`
555+ )
556+ } else if ( ! compareVersions ( '1.20.4' , version ) /* >= 1.20.4 */ ) {
557+ passenger . set (
558+ 'text' ,
559+ // String JSON text format
560+ new NbtString (
561+ new JsonTextParser ( { minecraftVersion : version } )
562+ . parse ( node . text )
563+ . toString ( true , version )
576564 )
577- }
565+ )
566+ } else {
567+ throw new Error ( `Unsupported Minecraft version '${ version } ' for text display!` )
578568 }
579569
580570 if ( node . config ) {
@@ -652,12 +642,15 @@ async function generateRootEntityPassengers(
652642
653643 let result = passengers . toString ( )
654644
655- for ( const display of Object . values ( rig . nodes ) . filter ( n => n . type === 'text_display' ) ) {
656- result = result . replace (
657- '"$$$' + display . type + '_' + display . storage_name + '_text_placeholder$$$"' ,
658- new JsonText ( display . text ) . toString ( true , version ) ??
659- `{ "text": "Invalid Text Component", "color": "red" }`
660- )
645+ if ( ! compareVersions ( '1.21.5' , version ) /* >= 1.21.5 */ ) {
646+ for ( const display of Object . values ( rig . nodes ) . filter ( n => n . type === 'text_display' ) ) {
647+ result = result . replace (
648+ '"$$$' + display . type + '_' + display . storage_name + '_text_placeholder$$$"' ,
649+ new JsonTextParser ( { minecraftVersion : version } )
650+ . parse ( display . text )
651+ . toString ( true , version )
652+ )
653+ }
661654 }
662655
663656 return result
0 commit comments