package com.pretzel.dev.villagertradelimiter.nms; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import com.pretzel.dev.villagertradelimiter.nms.utils.nmsmappings.ClassWrapper; import com.pretzel.dev.villagertradelimiter.nms.utils.nmsmappings.ReflectionMethod; /** * Integer implementation for NBTLists * * @author tr7zw * */ public class NBTIntegerList extends NBTList { protected NBTIntegerList(NBTCompound owner, String name, NBTType type, Object list) { super(owner, name, type, list); } @Override protected Object asTag(Integer object) { try { Constructor con = ClassWrapper.NMS_NBTTAGINT.getClazz().getDeclaredConstructor(int.class); con.setAccessible(true); return con.newInstance(object); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { throw new NbtApiException("Error while wrapping the Object " + object + " to it's NMS object!", e); } } @Override public Integer get(int index) { try { Object obj = ReflectionMethod.LIST_GET.run(listObject, index); return Integer.valueOf(obj.toString()); } catch (NumberFormatException nf) { return 0; } catch (Exception ex) { throw new NbtApiException(ex); } } }