Hello i have a class
public class HdvManager extends PersistentState {
public static final String KEY = PostmanMod.MOD_ID + "_hdv";
private final MinecraftServer server;
private final List<HdvTradeOffer> trades = new ArrayList<>();
private HdvManager(MinecraftServer server) {
this.server = server;
}
public static HdvManager get(MinecraftServer server) {
var type = new PersistentState.Type<>(
() -> new HdvManager(server),
(nbt, registries) -> HdvManager.readNbt(server, nbt, registries),
null
);
return server.getOverworld().getPersistentStateManager().getOrCreate(
type,
KEY
);
}
public void addTrade(HdvTradeOffer hdvTradeOffer) {
this.trades.add(hdvTradeOffer);
}
public HdvTradeOfferList getTrades() {
return new HdvTradeOfferList(trades);
}
public void tick() {
}
@Override
public NbtCompound writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registries) {
NbtList trades = new NbtList();
for (HdvTradeOffer entry : this.trades) {
String key = String.valueOf(trades.indexOf(entry));
trades.add(entry.serialize(new NbtCompound(), registries));
}
nbt.put("trades", trades);
return nbt;
}
private static HdvManager readNbt(MinecraftServer server, NbtCompound nbt, RegistryWrapper.WrapperLookup registries) {
var manager = new HdvManager(server);
NbtList trades = nbt.getList("trades", NbtElement.COMPOUND_TYPE);
for (int i = 0; i < trades.size(); i++) {
var trade = trades.getCompound(i);
manager.trades.add(HdvTradeOffer.deserialize(registries, trade));
}
return manager;
}
}
How does i save nbtdata in the server ? i can read but how can i write ?