package com.bergerkiller.bukkit.common.bases;
import com.bergerkiller.bukkit.common.reflection.classes.NibbleArrayRef;
import net.minecraft.server.NibbleArray;
/**
* Base class to work with Nibble Array implementations
*/
public class NibbleArrayBase extends NibbleArray {
public NibbleArrayBase(byte[] data, int dataBits) {
super(data, dataBits);
}
public NibbleArrayBase(int size, int dataBits) {
super(size, dataBits);
}
/**
* Gets the amount of bits a single value is stored as
*
* @return data element bit count
*/
public int getBitCount() {
return NibbleArrayRef.bitCount.get(this);
}
/**
* Gets the backing array, which is still referenced.
* Do not modify the returned array!
* Use toArray() if data not being referenced is important.
*
* @return data
*/
public byte[] getData() {
return NibbleArrayRef.getValueArray(this);
}
/**
* Allocates a new array and fills it with the contents of this NibbleArray
*
* @return nibble array data copy
*/
public byte[] toArray() {
return NibbleArrayRef.getArrayCopy(this);
}
/**
* @deprecated use {@link #set(int, int, int, int) set(x, y, z, value)} instead
*/
@Override
@Deprecated
public void a(int i, int j, int k, int l) {
this.set(i, j, k, l);
}
/**
* @deprecated use {@link #get(int, int, int) get(x, y, z)} instead
*/
@Override
@Deprecated
public int a(int i, int j, int k) {
return this.get(i, j, k);
}
/**
* Sets a value in this nibble array
*
* @param x - coordinate
* @param y - coordinate
* @param z - coordinate
* @param value to set to
*/
public void set(int x, int y, int z, int value) {
super.a(x, y, z, value);
}
/**
* Gets a value from this nibble array
*
* @param x - coordinate
* @param y - coordinate
* @param z - coordinate
* @return value
*/
public int get(int x, int y, int z) {
return super.a(x, y, z);
}
/**
* Creates a new NibbleArray base type with the data contained in this base<br>
* Data is still referenced through
*
* @return handle
*/
public Object toHandle() {
return new NibbleArray(this.getData(), this.getBitCount());
}
}