@@ -22,31 +22,30 @@ function processJsonElement(element, bpElement, rpElement, options = {}) {
2222 }
2323
2424 if ( Array . isArray ( element ) ) {
25- for ( let i = 0 ; i < element . length ; i ++ ) {
26- process ( i , element [ i ] ) ;
27- }
25+ for ( let i = 0 ; i < element . length ; i ++ ) process ( i , element [ i ] ) ;
2826 } else if ( typeof element === "object" && element !== null ) {
2927 for ( const [ key , value ] of Object . entries ( element ) ) {
3028 if ( key . startsWith ( "bp_" ) ) {
31- if ( key . startsWith ( "bp_server_" ) ) {
32- if ( ! options . isServer ) continue ;
33- const sub = bpElement [ key . slice ( "bp_server_" . length ) ] ;
34- if ( Array . isArray ( sub ) ) {
35- bpElement [ key . slice ( 10 ) ] = sub . concat ( value ) ;
36- } else if ( typeof sub === "object" && sub !== null ) {
37- bpElement [ key . slice ( 10 ) ] = { ...sub , ...value } ;
38- }
39- } else if ( key . startsWith ( "bp_editor_" ) ) {
40- if ( ! options . isEditor ) continue ;
41- const sub = bpElement [ key . slice ( "bp_editor_" . length ) ] ;
42- if ( Array . isArray ( sub ) ) {
43- bpElement [ key . slice ( 10 ) ] = sub . concat ( value ) ;
44- } else if ( typeof sub === "object" && sub !== null ) {
45- bpElement [ key . slice ( 10 ) ] = { ...sub , ...value } ;
29+ const bpSpecialPrefixes = [
30+ { prefix : "bp_gametest_" , condition : options . debugMode } ,
31+ { prefix : "bp_server_" , condition : options . isServer } ,
32+ { prefix : "bp_editor_" , condition : options . isEditor } ,
33+ ] ;
34+ let handled = false ;
35+ for ( const { prefix, condition } of bpSpecialPrefixes ) {
36+ if ( key . startsWith ( prefix ) ) {
37+ if ( condition ) {
38+ const sliceLen = prefix . length ;
39+ const subKey = key . slice ( sliceLen ) ;
40+ const sub = bpElement [ subKey ] ;
41+ if ( Array . isArray ( sub ) ) bpElement [ subKey ] = sub . concat ( value ) ;
42+ else if ( typeof sub === "object" && sub !== null ) bpElement [ subKey ] = { ...sub , ...value } ;
43+ }
44+ handled = true ;
45+ break ;
4646 }
47- } else {
48- bpElement [ key . slice ( 3 ) ] = value ;
4947 }
48+ if ( ! handled ) bpElement [ key . slice ( 3 ) ] = value ;
5049 } else if ( key . startsWith ( "rp_" ) ) {
5150 rpElement [ key . slice ( 3 ) ] = value ;
5251 } else {
@@ -62,7 +61,7 @@ function processManifest(debugMode, isServer, isEditor) {
6261
6362 // load base manifest
6463 const manifest = JSON . parse ( fs . readFileSync ( "mc_manifest.json" , "utf8" ) ) ;
65- processJsonElement ( manifest , bp_manifest , rp_manifest , { isServer, isEditor } ) ;
64+ processJsonElement ( manifest , bp_manifest , rp_manifest , { isServer, isEditor, debugMode } ) ;
6665
6766 const version = manifest . header . version ;
6867 bp_manifest . header . name += " " + version ;
@@ -93,9 +92,9 @@ function processManifest(debugMode, isServer, isEditor) {
9392}
9493
9594export default function ( args ) {
96- const debugMode = args . target === "debug" ;
95+ const debugMode = args . gametest || args . target === "debug" ;
9796 const isServer = args . target === "server" || args . target === "server" ;
98- const isEditor = args . editor === true ;
97+ const isEditor = args . editor ;
9998 processManifest ( debugMode , isServer , isEditor ) ;
10099
101100 if ( args . watch ) {
0 commit comments