@@ -181,4 +181,164 @@ public function jsonSerialize()
181
181
}
182
182
return $ data ;
183
183
}
184
- }
184
+
185
+ /**
186
+ * Set a child tag by name
187
+ * If $name is null, the existing name of the tag object will be used
188
+ *
189
+ * @param string|null $name
190
+ * @param Tag $tag
191
+ * @return $this
192
+ * @throws Exception
193
+ */
194
+ public function set (?string $ name , Tag $ tag ): CompoundTag
195
+ {
196
+ $ this ->offsetSet ($ name , $ tag );
197
+ return $ this ;
198
+ }
199
+
200
+ /**
201
+ * @param string $name
202
+ * @return $this
203
+ */
204
+ public function delete (string $ name ): CompoundTag
205
+ {
206
+ $ this ->offsetUnset ($ name );
207
+ return $ this ;
208
+ }
209
+
210
+ /**
211
+ * Get a child tag by name
212
+ *
213
+ * @param string $name
214
+ * @return Tag|null
215
+ */
216
+ public function get (string $ name ): ?Tag
217
+ {
218
+ return $ this ->offsetGet ($ name );
219
+ }
220
+
221
+ /**
222
+ * @param string $name
223
+ * @return ByteArrayTag|null
224
+ */
225
+ public function getByteArray (string $ name ): ?ByteArrayTag
226
+ {
227
+ $ tag = $ this ->get ($ name );
228
+ return $ tag instanceof ByteArrayTag ? $ tag : null ;
229
+ }
230
+
231
+ /**
232
+ * @param string $name
233
+ * @return ByteTag|null
234
+ */
235
+ public function getByte (string $ name ): ?ByteTag
236
+ {
237
+ $ tag = $ this ->get ($ name );
238
+ return $ tag instanceof ByteTag ? $ tag : null ;
239
+ }
240
+
241
+ /**
242
+ * @param string $name
243
+ * @return CompoundTag|null
244
+ */
245
+ public function getCompound (string $ name ): ?CompoundTag
246
+ {
247
+ $ tag = $ this ->get ($ name );
248
+ return $ tag instanceof CompoundTag ? $ tag : null ;
249
+ }
250
+
251
+ /**
252
+ * @param string $name
253
+ * @return DoubleTag|null
254
+ */
255
+ public function getDouble (string $ name ): ?DoubleTag
256
+ {
257
+ $ tag = $ this ->get ($ name );
258
+ return $ tag instanceof DoubleTag ? $ tag : null ;
259
+ }
260
+
261
+ /**
262
+ * @param string $name
263
+ * @return FloatTag|null
264
+ */
265
+ public function getFloat (string $ name ): ?FloatTag
266
+ {
267
+ $ tag = $ this ->get ($ name );
268
+ return $ tag instanceof FloatTag ? $ tag : null ;
269
+ }
270
+
271
+ /**
272
+ * @param string $name
273
+ * @return IntArrayTag|null
274
+ */
275
+ public function getIntArray (string $ name ): ?IntArrayTag
276
+ {
277
+ $ tag = $ this ->get ($ name );
278
+ return $ tag instanceof IntArrayTag ? $ tag : null ;
279
+ }
280
+
281
+ /**
282
+ * @param string $name
283
+ * @return IntTag|null
284
+ */
285
+ public function getInt (string $ name ): ?IntTag
286
+ {
287
+ $ tag = $ this ->get ($ name );
288
+ return $ tag instanceof IntTag ? $ tag : null ;
289
+ }
290
+
291
+ /**
292
+ * @param string $name
293
+ * @param int|null $listContentTag - Required content type for the list, if null, any type can be returned
294
+ * @return ListTag|null
295
+ */
296
+ public function getList (string $ name , ?int $ listContentTag = null ): ?ListTag
297
+ {
298
+ $ tag = $ this ->get ($ name );
299
+ if (!$ tag instanceof ListTag || ($ listContentTag !== null && $ tag ->getContentTag () !== $ listContentTag )) {
300
+ return null ;
301
+ }
302
+ return $ tag ;
303
+ }
304
+
305
+ /**
306
+ * @param string $name
307
+ * @return LongArrayTag|null
308
+ */
309
+ public function getLongArray (string $ name ): ?LongArrayTag
310
+ {
311
+ $ tag = $ this ->get ($ name );
312
+ return $ tag instanceof LongArrayTag ? $ tag : null ;
313
+ }
314
+
315
+ /**
316
+ * @param string $name
317
+ * @return LongTag|null
318
+ */
319
+ public function getLong (string $ name ): ?LongTag
320
+ {
321
+ $ tag = $ this ->get ($ name );
322
+ return $ tag instanceof LongTag ? $ tag : null ;
323
+ }
324
+
325
+ /**
326
+ * @param string $name
327
+ * @return ShortTag|null
328
+ */
329
+ public function getShort (string $ name ): ?ShortTag
330
+ {
331
+ $ tag = $ this ->get ($ name );
332
+ return $ tag instanceof ShortTag ? $ tag : null ;
333
+ }
334
+
335
+ /**
336
+ * @param string $name
337
+ * @return StringTag|null
338
+ */
339
+ public function getString (string $ name ): ?StringTag
340
+ {
341
+ $ tag = $ this ->get ($ name );
342
+ return $ tag instanceof StringTag ? $ tag : null ;
343
+ }
344
+ }
0 commit comments