ReyMagos
Тег-бомбастер
- 412
- 7
- 121
У меня есть хэш мапа, которую я записываю в nbt:
И соответственно читаю:
В консоли выводится что-то такое:
То есть инфа в мапу записана.
Но что-то не работает. При чтение nbt все данные записывает сервер. Но потом когда я её беру с клиента и изменяю:
Он мне выводит,
И куда девалась прошлая мапа я не знаю. Попробовал аннотацию SideOnly в setSelectedRecipe() - вылетает. Пробовал world.isRemote - Просто ничего не происходит. В общем нужна помощь.
Java:
@Override
public void writeEntityToNBT(NBTTagCompound compound) {
super.writeEntityToNBT(compound);
LogManager.getLogger().info("\u001B[32m Writting to NBT selected recipes: " + this.selectedRecipes.toString() + "\u001B[0m");
NBTTagList selectedRecipesList = new NBTTagList();
for (Map.Entry<String, Integer> entry: this.selectedRecipes.entrySet()) {
NBTTagCompound tag = new NBTTagCompound();
Integer recipe = entry.getValue();
String name = entry.getKey();
tag.setInteger(name, recipe);
selectedRecipesList.appendTag(tag);
LogManager.getLogger().info("\u001B[32m Wrote to NBT selected recipe (one) for player: " + name + ". Recipe: " + recipe.toString() + "\u001B[0m");
}
compound.setTag("selectedRecipes", selectedRecipesList);
}
Java:
@Override
public void readEntityFromNBT(NBTTagCompound compound) {
super.readEntityFromNBT(compound);
LogManager.getLogger().info("\u001B[32m Reading from NBT selected recipes. Now the map is: " + this.selectedRecipes.toString() + "\u001B[0m");
list = compound.getTagList("selectedRecipes", 10);
for (int i = 0; i < list.tagCount(); i++) {
NBTTagCompound tag = list.getCompoundTagAt(i);
String name = Lists.newArrayList(tag.getKeySet()).get(0);
Integer recipe = tag.getInteger(name);
this.setSelectedRecipe(name, recipe);
LogManager.getLogger().info("\u001B[32m Read from NBT selected recipe. Player is: " + name + ". Recipe is: " + recipe + "\u001B[0m");
}
}
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: Reading from NBT selected recipes. Now the map is: {}
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: Setting new selected recipe (entity): 0 for player: Player620 to map: {}
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: After the setting (entity) map is: {Player620=0}
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: Read from NBT selected recipe. Player is: Player620. Recipe is: 0
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: Setting new selected recipe (entity): 0 for player: Player620 to map: {}
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: After the setting (entity) map is: {Player620=0}
[22:57:34] [Server thread/INFO] [redmod.entities.dwarf.EntityDwarf]: Read from NBT selected recipe. Player is: Player620. Recipe is: 0
Но что-то не работает. При чтение nbt все данные записывает сервер. Но потом когда я её беру с клиента и изменяю:
Java:
public void setSelectedRecipe(String name, int recipe) {
LogManager.getLogger().info("\u001B[32m Setting new selected recipe (entity): " + recipe + " for player: " + name + " to map: " + this.selectedRecipes.toString() + "\u001B[0m");
this.selectedRecipes.put(name, recipe);
LogManager.getLogger().info("\u001B[32m After the setting (entity) map is: " + this.selectedRecipes.toString() + "\u001B[0m");
}
[22:57:40] [main/INFO] [redmod.entities.dwarf.EntityDwarf]: Setting new selected recipe (entity): 0 for player: Player347 to map: {}
[22:57:40] [main/INFO] [redmod.entities.dwarf.EntityDwarf]: After the setting (entity) map is: {Player347=0}
[22:57:40] [main/INFO] [redmod.entities.dwarf.EntityDwarf]: After the setting (entity) map is: {Player347=0}