mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-25 10:44:37 +01:00
Implement character talents
This commit is contained in:
@@ -61,7 +61,7 @@ public final class DatabaseManager {
|
||||
|
||||
// Add our custom fastutil codecs
|
||||
var codecProvider = CodecRegistries.fromCodecs(
|
||||
new IntSetCodec(), new IntListCodec(), new Int2IntMapCodec(), new ItemParamMapCodec()
|
||||
new IntSetCodec(), new IntListCodec(), new Int2IntMapCodec(), new ItemParamMapCodec(), new BitsetCodec()
|
||||
);
|
||||
|
||||
// Set mapper options
|
||||
|
||||
46
src/main/java/emu/nebula/database/codecs/BitsetCodec.java
Normal file
46
src/main/java/emu/nebula/database/codecs/BitsetCodec.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package emu.nebula.database.codecs;
|
||||
|
||||
import org.bson.BsonReader;
|
||||
import org.bson.BsonType;
|
||||
import org.bson.BsonWriter;
|
||||
import org.bson.codecs.Codec;
|
||||
import org.bson.codecs.DecoderContext;
|
||||
import org.bson.codecs.EncoderContext;
|
||||
|
||||
import emu.nebula.util.Bitset;
|
||||
|
||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||
import it.unimi.dsi.fastutil.longs.LongList;
|
||||
|
||||
/**
|
||||
* Custom mongodb codec for encoding/decoding fastutil int sets.
|
||||
*/
|
||||
public class BitsetCodec implements Codec<Bitset> {
|
||||
|
||||
@Override
|
||||
public Class<Bitset> getEncoderClass() {
|
||||
return Bitset.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encode(BsonWriter writer, Bitset bitset, EncoderContext encoderContext) {
|
||||
writer.writeStartArray();
|
||||
for (long value : bitset.getData()) {
|
||||
writer.writeInt64(value);
|
||||
}
|
||||
writer.writeEndArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bitset decode(BsonReader reader, DecoderContext decoderContext) {
|
||||
LongList array = new LongArrayList();
|
||||
|
||||
reader.readStartArray();
|
||||
while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
|
||||
array.add(reader.readInt64());
|
||||
}
|
||||
reader.readEndArray();
|
||||
|
||||
return new Bitset(array.toLongArray());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user