package net.minecraft.world.entity.monster.cubemob;

import net.minecraft.world.entity.Mob;

import net.minecraft.network.syncher.EntityDataAccessor;

import com.bergerkiller.bukkit.common.wrappers.DataWatcher;
import com.bergerkiller.bukkit.common.wrappers.DataWatcher.Key;

// Note: since 26.2. Before, this is remapped to just Slime as that's the only cube mob.
class AbstractCubeMob extends Mob {
#if version >= 26.2
    protected static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:ID_SIZE;
#elseif version >= 1.17
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:ID_SIZE;
#elseif version >= 1.16.2
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bo;
#elseif version >= 1.16
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bv;
#elseif version >= 1.15
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bw;
#elseif version >= 1.14
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bz;
#elseif version >= 1.13
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bC;
#elseif version >= 1.12
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bv;
#elseif version >= 1.11
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bu;
#elseif version >= 1.10
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bv;
#elseif version >= 1.9.4
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bu;
#elseif version >= 1.9
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:bt;
#else
    private static optional final (DataWatcher.Key<Integer>) EntityDataAccessor<Integer> DATA_SIZE:###;
#endif

    <code>
    public static final Key<Integer> DATA_SIZE = Key.Type.SLIME_SIZE_TYPE.createKey(T.DATA_SIZE, 16);
    </code>
}

class Slime extends AbstractCubeMob {
}
