@@ -3,12 +3,12 @@ let searchKeyword = '', searchableAbbr = '';
3
3
4
4
let hShake ;
5
5
let notificationCount = '' ;
6
- const checkDate = ( date = new Date ( ) ) => ( date . getDate ( ) == 1 && date . getMonth ( ) + 1 == 4 ) ? true : false ;
7
6
8
7
const downloadMirrorUrl = 'https://ghfast.top/<T>' ;
9
8
const fIconUrl = 'https://www.faviconextractor.com/favicon/<T>?larger=true' ;
10
9
const ghRepoMirrorUrl = '' ;
11
10
11
+ const checkDate = ( date = new Date ( ) ) => ( date . getDate ( ) == 1 && date . getMonth ( ) + 1 == 4 ) ? true : false ;
12
12
const fIconGet = ( ( url , p ) => '<img src="' + ( p ? p : fIconUrl . replace ( '<T>' , url . replace ( / h t t p s ? : \/ \/ / , '' ) . replace ( / \/ .* / , '' ) ) ) + '" width="16" height="16" loading="lazy"/> ' )
13
13
const downloadSVG = '<span class="svg right"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M320 336h76c55 0 100-21.21 100-75.6s-53-73.47-96-75.6C391.11 99.74 329 48 256 48c-69 0-113.44 45.79-128 91.2-60 5.7-112 35.88-112 98.4S70 336 136 336h56M192 400.1l64 63.9 64-63.9M256 224v224.03" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="56"></path></svg></span>' ;
14
14
const downloadMirror = ( ( url ) => $ ( '.github-proxy' ) . is ( ':checked' ) && String ( url ) . startsWith ( 'https://github.com/' ) ? downloadMirrorUrl . replace ( '<T>' , url ) : url ) ; // 针对中国大陆地区 | for Chinese Mainland
@@ -39,7 +39,7 @@ let goingapf = false;
39
39
al . current ( languages , { url : true , yaml : true } ) ;
40
40
const i18n = ( ( callback = ( ) => { } ) => {
41
41
if ( isapf ) {
42
- const apflang = navigator . language . startsWith ( 'zh' ) ? 'lzh' : 'en-UD' ;
42
+ const apflang = al . getUserLang ( ) . startsWith ( 'zh- ' ) ? 'lzh' : 'en-UD' ;
43
43
if ( ! goingapf ) {
44
44
al . current ( languages , { url : true , yaml : true } , apflang , ( ) => {
45
45
goingapf = true ;
@@ -67,6 +67,23 @@ const i18n = ((callback = () => {}) => {
67
67
} ) ;
68
68
69
69
70
+ // 公告栏
71
+ const announcement_init = ( ( ) => {
72
+ $ ( '.announcement-bar li' ) . removeAttr ( 'class' ) . each ( ( i , e ) => $ ( e ) . addClass ( `announcement-${ i + 1 } ` ) ) ;
73
+ } ) ;
74
+ const announcement_switch = ( ( ) => {
75
+ setInterval ( function ( ) {
76
+ for ( let i = 1 ; ; ++ i ) {
77
+ if ( $ ( `.announcement-${ i } ` ) . length ) {
78
+ let z = i - 1 ;
79
+ if ( z < 1 ) z = $ ( `.announcement-bar li` ) . length + 1 ;
80
+ $ ( `.announcement-${ i } ` ) . removeClass ( `announcement-${ i } ` ) . addClass ( `announcement-${ z } ` ) ;
81
+ } else break ;
82
+ }
83
+ } , 5000 ) ;
84
+ } ) ;
85
+
86
+
70
87
// 不记录历史滚动位置
71
88
if ( history . scrollRestoration ) {
72
89
history . scrollRestoration = 'manual' ;
@@ -76,7 +93,7 @@ if (history.scrollRestoration) {
76
93
// 读取 JSON5 文件
77
94
const read = ( ( file , isPath = false ) => {
78
95
return JSON5 . parse ( $ . ajax ( {
79
- url : isPath ? file : `data/${ file } .json5` ,
96
+ url : isPath ? file : `data/${ file } .json5` ,
80
97
dataType : 'json' ,
81
98
async : false
82
99
} ) . responseText ) ;
@@ -103,8 +120,8 @@ const hashChanged = (() => {
103
120
// 自动展开/收起:<details> 元素
104
121
try {
105
122
// 通过检测哈希属性
106
- if ( hash == '#全部展开' ) toggleDetails ( 'pre' , true ) ;
107
- if ( hash == '#全部收起' ) toggleDetails ( 'pre' , false ) ;
123
+ if ( hash == '#全部展开' ) toggleDetails ( 'pre, footer ' , true ) ;
124
+ if ( hash == '#全部收起' ) toggleDetails ( 'pre, footer ' , false ) ;
108
125
if ( hash . endsWith ( '-展开' ) ) {
109
126
toggleDetails ( slicedHash , true ) ;
110
127
location . hash = slicedHash ;
@@ -143,3 +160,64 @@ const forum = read('forum');
143
160
const cfg = read ( "scripts/cfg/apf.cfg.json5" , true ) ;
144
161
let isapf = checkDate ( ) || cfg . testMode ;
145
162
import ( "./apf.js" ) . then ( apf => ( globalThis . apf = apf , apf . main ( ) ) ) ;
163
+
164
+ // 版本
165
+ const getVersion = ( ( content , type ) => {
166
+ const s = '| ' + type + ' = ' ;
167
+ if ( content . indexOf ( s ) == - 1 ) return '' ;
168
+ return content . split ( s ) [ 1 ] . split ( '\n' ) [ 0 ] . replace ( / ^ * = * / , '' ) ;
169
+ } ) ;
170
+ $ . ajax ( {
171
+ url : 'https://zh.minecraft.wiki/index.php?title=Template:Version&action=raw' , // Chinese Minecraft Wiki, CC BY-NC-SA 3.0
172
+ async : true ,
173
+ success : ( r => {
174
+ const result = r . split ( '-->' ) [ 1 ] . split ( '}}\n}}' ) [ 0 ] . trim ( ) ;
175
+ const version = {
176
+ java : getVersion ( result , 'java' ) ,
177
+ javaSnap : getVersion ( result , 'java-snap' ) ,
178
+ bedrock : getVersion ( result , 'bedrock' ) ,
179
+ bedrockBeta : getVersion ( result , 'bedrock-beta' )
180
+ } ;
181
+ let w = 'minecraft.wiki'
182
+ const l = al . getUserLang ( ) . split ( '-' ) [ 0 ] ;
183
+ const wiki = { cs : { } ,
184
+ de : { java : '$' , javaSnap : '$' , bedrock : 'Bedrock_Edition_$' , bedrockBeta : 'Bedrock_Edition_beta_$' } ,
185
+ en : { java : 'Java_Edition_$' , javaSnap : 'Java_Edition_$' , bedrock : 'Bedrock_Edition_$' , bedrockBeta : 'Bedrock_Edition_beta_$' } ,
186
+ el : { } ,
187
+ es : { java : 'Java_Edition_$' , javaSnap : 'Java_Edition_$' , bedrock : 'Bedrock_Edition_$' , bedrockBeta : 'Bedrock_Edition_beta_$' } ,
188
+ fr : { java : 'Édition_Java_$' , javaSnap : 'Édition_Java_$' , bedrock : 'Édition_Bedrock_$' , bedrockBeta : 'Édition_Bedrock_bêta_$' } ,
189
+ hu : { } ,
190
+ id : { } ,
191
+ it : { java : 'Java_Edition_$' , javaSnap : 'Java_Edition_$' , bedrock : 'Bedrock_Edition_$' , bedrockBeta : 'Bedrock_Edition_beta_$' } ,
192
+ ja : { java : 'Java_Edition_$' , javaSnap : 'Java_Edition_$' , bedrock : 'Bedrock_Edition_$' , bedrockBeta : 'Bedrock_Edition_beta_$' } ,
193
+ ko : { java : 'Java_Edition_$' , javaSnap : 'Java_Edition_$' , bedrock : 'Bedrock_Edition_$' , bedrockBeta : 'Bedrock_Edition_베타_$' } ,
194
+ lzh : { } ,
195
+ nl : { java : '$' , javaSnap : '$' , bedrock : 'Bedrockeditie_$' , bedrockBeta : 'Bedrockeditie_$' } ,
196
+ pl : { } ,
197
+ pt : { java : 'Edição_Java_$' , javaSnap : 'Edição_Java_$' , bedrock : 'Edição_Bedrock_$' , bedrockBeta : 'Edição_Bedrock_beta_$' } ,
198
+ ru : { java : '$_(Java_Edition)' , javaSnap : '$_(Java_Edition)' , bedrock : '$_(Bedrock_Edition)' , bedrockBeta : 'Beta_$_(Bedrock_Edition)' } ,
199
+ th : { java : 'รุ่น_Java_$' , javaSnap : 'รุ่น_Java_$' , bedrock : 'รุ่น_Bedrock_$' , bedrockBeta : 'รุ่น_Bedrock_beta_$' } ,
200
+ tr : { } ,
201
+ uk : { java : '$_(Java_Edition)' , javaSnap : '$_(Java_Edition)' , bedrock : '$_(Bedrock_Edition)' , bedrockBeta : 'Beta_$_(Bedrock_Edition)' } ,
202
+ zh : { java : 'Java版$' , javaSnap : '$' , bedrock : '基岩版$' , bedrockBeta : '基岩版$' } ,
203
+ }
204
+ if ( Object . keys ( wiki ) . indexOf ( l ) != - 1 && l != 'en' ) w = l + '.minecraft.wiki' ;
205
+ else l = 'en' ;
206
+ w = 'href="https://' + w + '/w/' ;
207
+ const q = ( ( v ) => {
208
+ if ( ! wiki [ l ] || ! wiki [ l ] [ v ] ) return '' ;
209
+ return w + wiki [ l ] [ v ] . replace ( '$' , version [ v ] ) + '"' ;
210
+ } ) ;
211
+ if ( version . javaSnap ) {
212
+ version . javaSnap = ` <text al="news.development"></text><a ${ q ( 'javaSnap' ) } target="_blank">${ version . javaSnap } </a>` ;
213
+ }
214
+ if ( version . bedrockBeta ) {
215
+ version . bedrockBeta = ` <text al="news.beta"></text><a ${ q ( 'bedrockBeta' ) } target="_blank">${ version . bedrockBeta } </a>` ;
216
+ }
217
+ version . java = `<text al="news.release"></text><a ${ q ( 'java' ) } target="_blank">${ version . java } </a>${ version . javaSnap } ` ;
218
+ version . bedrock = `<text al="news.release"></text><a ${ q ( 'bedrock' ) } target="_blank">${ version . bedrock } </a>${ version . bedrockBeta } ` ;
219
+ const news = `<li><text al="news.java"></text>${ version . java } </li><li><text al="news.bedrock"></text>${ version . bedrock } </li>` ;
220
+ $ ( '.announcement-bar li:nth-child(2)' ) . after ( news ) ;
221
+ i18n ( announcement_init ) ;
222
+ } )
223
+ } ) ;
0 commit comments