use of com.minecolonies.coremod.colony.interactionhandling.ServerCitizenInteraction in project minecolonies by ldtteam.
the class CitizenDataView method deserialize.
@Override
public void deserialize(@NotNull final PacketBuffer buf) {
name = buf.readUtf(32767);
female = buf.readBoolean();
entityId = buf.readInt();
paused = buf.readBoolean();
isChild = buf.readBoolean();
homeBuilding = buf.readBoolean() ? buf.readBlockPos() : null;
workBuilding = buf.readBoolean() ? buf.readBlockPos() : null;
// Attributes
health = buf.readFloat();
maxHealth = buf.readFloat();
saturation = buf.readDouble();
happiness = buf.readDouble();
citizenSkillHandler.read(buf.readNbt());
job = buf.readUtf(32767);
colonyId = buf.readInt();
final CompoundNBT compound = buf.readNbt();
inventory = new InventoryCitizen(this.name, true);
final ListNBT ListNBT = compound.getList("inventory", 10);
this.inventory.read(ListNBT);
this.inventory.setHeldItem(Hand.MAIN_HAND, compound.getInt(TAG_HELD_ITEM_SLOT));
this.inventory.setHeldItem(Hand.OFF_HAND, compound.getInt(TAG_OFFHAND_HELD_ITEM_SLOT));
position = buf.readBlockPos();
citizenChatOptions.clear();
final int size = buf.readInt();
for (int i = 0; i < size; i++) {
final CompoundNBT compoundNBT = buf.readNbt();
final ServerCitizenInteraction handler = (ServerCitizenInteraction) MinecoloniesAPIProxy.getInstance().getInteractionResponseHandlerDataManager().createFrom(this, compoundNBT);
citizenChatOptions.put(handler.getInquiry(), handler);
}
sortedInteractions = citizenChatOptions.values().stream().sorted(Comparator.comparingInt(e -> e.getPriority().getPriority())).collect(Collectors.toList());
citizenHappinessHandler.read(buf.readNbt());
int statusindex = buf.readInt();
statusIcon = statusindex >= 0 ? VisibleCitizenStatus.getForId(statusindex) : null;
if (buf.readBoolean()) {
final IColonyView colonyView = IColonyManager.getInstance().getColonyView(colonyId, Minecraft.getInstance().level.dimension());
jobView = IJobDataManager.getInstance().createViewFrom(colonyView, this, buf);
} else {
jobView = null;
}
children.clear();
siblings.clear();
partner = buf.readInt();
final int siblingsSize = buf.readInt();
for (int i = 0; i < siblingsSize; i++) {
siblings.add(buf.readInt());
}
final int childrenSize = buf.readInt();
for (int i = 0; i < childrenSize; i++) {
children.add(buf.readInt());
}
final String parentA = buf.readUtf();
final String parentB = buf.readUtf();
parents = new Tuple<>(parentA, parentB);
}
use of com.minecolonies.coremod.colony.interactionhandling.ServerCitizenInteraction in project minecolonies by ldtteam.
the class CitizenData method deserializeNBT.
@Override
public void deserializeNBT(final CompoundNBT nbtTagCompound) {
name = nbtTagCompound.getString(TAG_NAME);
female = nbtTagCompound.getBoolean(TAG_FEMALE);
paused = nbtTagCompound.getBoolean(TAG_PAUSED);
isChild = nbtTagCompound.getBoolean(TAG_CHILD);
textureId = nbtTagCompound.getInt(TAG_TEXTURE);
if (nbtTagCompound.getAllKeys().contains(TAG_SUFFIX)) {
textureSuffix = nbtTagCompound.getString(TAG_SUFFIX);
} else {
textureSuffix = SUFFIXES.get(random.nextInt(SUFFIXES.size()));
}
lastPosition = BlockPosUtil.read(nbtTagCompound, TAG_POS);
if (nbtTagCompound.contains(TAG_RESPAWN_POS)) {
nextRespawnPos = BlockPosUtil.read(nbtTagCompound, TAG_RESPAWN_POS);
}
citizenSkillHandler.read(nbtTagCompound.getCompound(TAG_NEW_SKILLS));
saturation = nbtTagCompound.getDouble(TAG_SATURATION);
if (nbtTagCompound.getAllKeys().contains("job")) {
setJob(IJobDataManager.getInstance().createFrom(this, nbtTagCompound.getCompound("job")));
}
if (nbtTagCompound.getAllKeys().contains(TAG_INVENTORY)) {
final ListNBT nbttaglist = nbtTagCompound.getList(TAG_INVENTORY, 10);
this.inventory.read(nbttaglist);
this.inventory.setHeldItem(Hand.MAIN_HAND, nbtTagCompound.getInt(TAG_HELD_ITEM_SLOT));
this.inventory.setHeldItem(Hand.OFF_HAND, nbtTagCompound.getInt(TAG_OFFHAND_HELD_ITEM_SLOT));
}
if (name.isEmpty()) {
name = generateName(random, isFemale(), getColony());
}
if (nbtTagCompound.getAllKeys().contains(TAG_ASLEEP)) {
bedPos = BlockPosUtil.read(nbtTagCompound, TAG_BEDS);
isAsleep = nbtTagCompound.getBoolean(TAG_ASLEEP);
}
if (nbtTagCompound.getAllKeys().contains(TAG_JUST_ATE)) {
justAte = nbtTagCompound.getBoolean(TAG_JUST_ATE);
}
// Citizen chat options.
if (nbtTagCompound.getAllKeys().contains(TAG_CHAT_OPTIONS)) {
final ListNBT handlerTagList = nbtTagCompound.getList(TAG_CHAT_OPTIONS, Constants.NBT.TAG_COMPOUND);
for (int i = 0; i < handlerTagList.size(); ++i) {
final ServerCitizenInteraction handler = (ServerCitizenInteraction) MinecoloniesAPIProxy.getInstance().getInteractionResponseHandlerDataManager().createFrom(this, handlerTagList.getCompound(i).getCompound(TAG_CHAT_OPTION));
citizenChatOptions.put(handler.getInquiry(), handler);
}
}
this.citizenHappinessHandler.read(nbtTagCompound);
this.citizenMournHandler.read(nbtTagCompound);
if (nbtTagCompound.getAllKeys().contains(TAG_LEVEL_MAP) && !nbtTagCompound.getAllKeys().contains(TAG_NEW_SKILLS)) {
citizenSkillHandler.init((int) citizenHappinessHandler.getHappiness(getColony()));
final Map<String, Integer> levels = new HashMap<>();
final ListNBT levelTagList = nbtTagCompound.getList(TAG_LEVEL_MAP, Constants.NBT.TAG_COMPOUND);
for (int i = 0; i < levelTagList.size(); ++i) {
final CompoundNBT levelExperienceAtJob = levelTagList.getCompound(i);
final String jobName = levelExperienceAtJob.getString(TAG_NAME);
final int level = Math.min(levelExperienceAtJob.getInt(TAG_LEVEL), MAX_CITIZEN_LEVEL);
levels.put(jobName, level);
}
for (final Map.Entry<String, Integer> entry : levels.entrySet()) {
final Skill primary = Skill.values()[random.nextInt(Skill.values().length)];
final Skill secondary = Skill.values()[random.nextInt(Skill.values().length)];
citizenSkillHandler.incrementLevel(primary, entry.getValue() / 2);
citizenSkillHandler.incrementLevel(secondary, entry.getValue() / 4);
}
}
this.idle = nbtTagCompound.getBoolean(TAG_IDLE);
final String parentA = nbtTagCompound.getString(TAG_PARENT_A);
final String parentB = nbtTagCompound.getString(TAG_PARENT_B);
this.parents = new Tuple<>(parentA, parentB);
@NotNull final ListNBT siblingsNBT = nbtTagCompound.getList(TAG_SIBLINGS, Constants.NBT.TAG_INT);
for (int i = 0; i < siblingsNBT.size(); i++) {
siblings.add(siblingsNBT.getInt(i));
}
@NotNull final ListNBT childrenNBT = nbtTagCompound.getList(TAG_CHILDREN, Constants.NBT.TAG_INT);
for (int i = 0; i < childrenNBT.size(); i++) {
children.add(childrenNBT.getInt(i));
}
partner = nbtTagCompound.getInt(TAG_PARTNER);
this.isWorking = nbtTagCompound.getBoolean(TAG_ACTIVE);
}
use of com.minecolonies.coremod.colony.interactionhandling.ServerCitizenInteraction in project minecolonies by Minecolonies.
the class CitizenData method deserializeNBT.
@Override
public void deserializeNBT(final CompoundNBT nbtTagCompound) {
name = nbtTagCompound.getString(TAG_NAME);
female = nbtTagCompound.getBoolean(TAG_FEMALE);
paused = nbtTagCompound.getBoolean(TAG_PAUSED);
isChild = nbtTagCompound.getBoolean(TAG_CHILD);
textureId = nbtTagCompound.getInt(TAG_TEXTURE);
if (nbtTagCompound.getAllKeys().contains(TAG_SUFFIX)) {
textureSuffix = nbtTagCompound.getString(TAG_SUFFIX);
} else {
textureSuffix = SUFFIXES.get(random.nextInt(SUFFIXES.size()));
}
lastPosition = BlockPosUtil.read(nbtTagCompound, TAG_POS);
if (nbtTagCompound.contains(TAG_RESPAWN_POS)) {
nextRespawnPos = BlockPosUtil.read(nbtTagCompound, TAG_RESPAWN_POS);
}
citizenSkillHandler.read(nbtTagCompound.getCompound(TAG_NEW_SKILLS));
saturation = nbtTagCompound.getDouble(TAG_SATURATION);
if (nbtTagCompound.getAllKeys().contains("job")) {
setJob(IJobDataManager.getInstance().createFrom(this, nbtTagCompound.getCompound("job")));
}
if (nbtTagCompound.getAllKeys().contains(TAG_INVENTORY)) {
final ListNBT nbttaglist = nbtTagCompound.getList(TAG_INVENTORY, 10);
this.inventory.read(nbttaglist);
this.inventory.setHeldItem(Hand.MAIN_HAND, nbtTagCompound.getInt(TAG_HELD_ITEM_SLOT));
this.inventory.setHeldItem(Hand.OFF_HAND, nbtTagCompound.getInt(TAG_OFFHAND_HELD_ITEM_SLOT));
}
if (name.isEmpty()) {
name = generateName(random, isFemale(), getColony());
}
if (nbtTagCompound.getAllKeys().contains(TAG_ASLEEP)) {
bedPos = BlockPosUtil.read(nbtTagCompound, TAG_BEDS);
isAsleep = nbtTagCompound.getBoolean(TAG_ASLEEP);
}
if (nbtTagCompound.getAllKeys().contains(TAG_JUST_ATE)) {
justAte = nbtTagCompound.getBoolean(TAG_JUST_ATE);
}
// Citizen chat options.
if (nbtTagCompound.getAllKeys().contains(TAG_CHAT_OPTIONS)) {
final ListNBT handlerTagList = nbtTagCompound.getList(TAG_CHAT_OPTIONS, Constants.NBT.TAG_COMPOUND);
for (int i = 0; i < handlerTagList.size(); ++i) {
final ServerCitizenInteraction handler = (ServerCitizenInteraction) MinecoloniesAPIProxy.getInstance().getInteractionResponseHandlerDataManager().createFrom(this, handlerTagList.getCompound(i).getCompound(TAG_CHAT_OPTION));
citizenChatOptions.put(handler.getInquiry(), handler);
}
}
this.citizenHappinessHandler.read(nbtTagCompound);
this.citizenMournHandler.read(nbtTagCompound);
if (nbtTagCompound.getAllKeys().contains(TAG_LEVEL_MAP) && !nbtTagCompound.getAllKeys().contains(TAG_NEW_SKILLS)) {
citizenSkillHandler.init((int) citizenHappinessHandler.getHappiness(getColony()));
final Map<String, Integer> levels = new HashMap<>();
final ListNBT levelTagList = nbtTagCompound.getList(TAG_LEVEL_MAP, Constants.NBT.TAG_COMPOUND);
for (int i = 0; i < levelTagList.size(); ++i) {
final CompoundNBT levelExperienceAtJob = levelTagList.getCompound(i);
final String jobName = levelExperienceAtJob.getString(TAG_NAME);
final int level = Math.min(levelExperienceAtJob.getInt(TAG_LEVEL), MAX_CITIZEN_LEVEL);
levels.put(jobName, level);
}
for (final Map.Entry<String, Integer> entry : levels.entrySet()) {
final Skill primary = Skill.values()[random.nextInt(Skill.values().length)];
final Skill secondary = Skill.values()[random.nextInt(Skill.values().length)];
citizenSkillHandler.incrementLevel(primary, entry.getValue() / 2);
citizenSkillHandler.incrementLevel(secondary, entry.getValue() / 4);
}
}
this.idle = nbtTagCompound.getBoolean(TAG_IDLE);
final String parentA = nbtTagCompound.getString(TAG_PARENT_A);
final String parentB = nbtTagCompound.getString(TAG_PARENT_B);
this.parents = new Tuple<>(parentA, parentB);
@NotNull final ListNBT siblingsNBT = nbtTagCompound.getList(TAG_SIBLINGS, Constants.NBT.TAG_INT);
for (int i = 0; i < siblingsNBT.size(); i++) {
siblings.add(siblingsNBT.getInt(i));
}
@NotNull final ListNBT childrenNBT = nbtTagCompound.getList(TAG_CHILDREN, Constants.NBT.TAG_INT);
for (int i = 0; i < childrenNBT.size(); i++) {
children.add(childrenNBT.getInt(i));
}
partner = nbtTagCompound.getInt(TAG_PARTNER);
this.isWorking = nbtTagCompound.getBoolean(TAG_ACTIVE);
}
use of com.minecolonies.coremod.colony.interactionhandling.ServerCitizenInteraction in project minecolonies by Minecolonies.
the class CitizenDataView method deserialize.
@Override
public void deserialize(@NotNull final PacketBuffer buf) {
name = buf.readUtf(32767);
female = buf.readBoolean();
entityId = buf.readInt();
paused = buf.readBoolean();
isChild = buf.readBoolean();
homeBuilding = buf.readBoolean() ? buf.readBlockPos() : null;
workBuilding = buf.readBoolean() ? buf.readBlockPos() : null;
// Attributes
health = buf.readFloat();
maxHealth = buf.readFloat();
saturation = buf.readDouble();
happiness = buf.readDouble();
citizenSkillHandler.read(buf.readNbt());
job = buf.readUtf(32767);
colonyId = buf.readInt();
final CompoundNBT compound = buf.readNbt();
inventory = new InventoryCitizen(this.name, true);
final ListNBT ListNBT = compound.getList("inventory", 10);
this.inventory.read(ListNBT);
this.inventory.setHeldItem(Hand.MAIN_HAND, compound.getInt(TAG_HELD_ITEM_SLOT));
this.inventory.setHeldItem(Hand.OFF_HAND, compound.getInt(TAG_OFFHAND_HELD_ITEM_SLOT));
position = buf.readBlockPos();
citizenChatOptions.clear();
final int size = buf.readInt();
for (int i = 0; i < size; i++) {
final CompoundNBT compoundNBT = buf.readNbt();
final ServerCitizenInteraction handler = (ServerCitizenInteraction) MinecoloniesAPIProxy.getInstance().getInteractionResponseHandlerDataManager().createFrom(this, compoundNBT);
citizenChatOptions.put(handler.getInquiry(), handler);
}
sortedInteractions = citizenChatOptions.values().stream().sorted(Comparator.comparingInt(e -> e.getPriority().getPriority())).collect(Collectors.toList());
citizenHappinessHandler.read(buf.readNbt());
int statusindex = buf.readInt();
statusIcon = statusindex >= 0 ? VisibleCitizenStatus.getForId(statusindex) : null;
if (buf.readBoolean()) {
final IColonyView colonyView = IColonyManager.getInstance().getColonyView(colonyId, Minecraft.getInstance().level.dimension());
jobView = IJobDataManager.getInstance().createViewFrom(colonyView, this, buf);
} else {
jobView = null;
}
children.clear();
siblings.clear();
partner = buf.readInt();
final int siblingsSize = buf.readInt();
for (int i = 0; i < siblingsSize; i++) {
siblings.add(buf.readInt());
}
final int childrenSize = buf.readInt();
for (int i = 0; i < childrenSize; i++) {
children.add(buf.readInt());
}
final String parentA = buf.readUtf();
final String parentB = buf.readUtf();
parents = new Tuple<>(parentA, parentB);
}
Aggregations