Skip to content

Commit 7412397

Browse files
committed
added setter and typesafe getter functions to CompoundTag
1 parent 69a58cd commit 7412397

File tree

1 file changed

+161
-1
lines changed

1 file changed

+161
-1
lines changed

src/Tag/CompoundTag.php

+161-1
Original file line numberDiff line numberDiff line change
@@ -181,4 +181,164 @@ public function jsonSerialize()
181181
}
182182
return $data;
183183
}
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

Comments
 (0)