- 56
- 1
Всем снова здравствуйте!
---
В прошлой своей теме я задал ещё один вопрос про пакеты, но видимо из-за того, что уже пометил там решение, ни кто не заметил моего вопроса.
Вот суть моей проблемы:
У меня есть IEEP:
При определенном действии игрока, я отправляю с клиента на сервер пакет о том, что игрок выбрал расу, и устанавливаю ему расу на сервере. После чего, отправляю пакет с сервера на клиент, аналогично устанавливая расу.
В чем собственно дело. В одиночной игре всё работает замечательно. Игрок видит измененную модель, все хорошо. С мультиплеером у меня проблемы. Другие игроки не видят модель. Я пытался делать все тоже самое, только отправлять пакет на клиент не через sendTo, а через sendToAll, но тогда все другие игроки получают модель того игрока, который выбрал расу, но всё ещё не могут видеть измененную модель у игрока, который её выбирал. Надеюсь, понятно сумел рассказать.
Может ли кто-нибудь подсказать, как правильно отправить пакет с сервера к клиентам, что бы у них оставалась такой же модель, но сами они могли видеть измененную модель выбравшего расу игрока?
P.s могу так же скинуть свои пакеты, которые я пересылаю
---
В прошлой своей теме я задал ещё один вопрос про пакеты, но видимо из-за того, что уже пометил там решение, ни кто не заметил моего вопроса.
Вот суть моей проблемы:
У меня есть IEEP:
IEEP и Расы:
public class WFMPlayerRaceInfo implements IExtendedEntityProperties {
public final static String PLAYER_RACE = "PlayerRace";
private final EntityPlayer player;
private String playerRace;
@Override
public void init(Entity entity, World world) {
}
public WFMPlayerRaceInfo(EntityPlayer player)
{
this.player = player;
this.playerRace = WFMRace.HUMAN.name();
}
public static void register(EntityPlayer player)
{
player.registerExtendedProperties(WFMPlayerRaceInfo.PLAYER_RACE, new WFMPlayerRaceInfo(player));
}
public static WFMPlayerRaceInfo get(EntityPlayer player)
{
return (WFMPlayerRaceInfo) player.getExtendedProperties(PLAYER_RACE);
}
@Override
public void saveNBTData(NBTTagCompound compound)
{
NBTTagCompound properties = new NBTTagCompound();
properties.setString("CurrentRace", this.playerRace);
compound.setTag(PLAYER_RACE, properties);
}
public String getPlayerRace() {
return this.playerRace;
}
public void setPlayerRace(String playerRace) {
this.playerRace = playerRace;
}
@Override
public void loadNBTData(NBTTagCompound compound)
{
NBTTagCompound properties = (NBTTagCompound) compound.getTag(PLAYER_RACE);
this.playerRace = properties.getString("CurrentRace");
System.out.println("[TUT PROPS] Faction from NBT: " + this.playerRace);
}
}
Расы:
public enum WFMRace {
HUMAN,
ORC,
OGRE,
SAURUS,
SKAVEN,
NORTHMAN,
NEHEKHARIAN,
SKELETON,
BEASTMAN_GOR;
public static WFMRace forPlayerFaction(LOTRFaction faction) {
if (faction == null) {
return HUMAN;
}
if (faction == LOTRFaction.OGRE_KINGDOMS) {
return OGRE;
} else if (faction == LOTRFaction.ORCS_AND_GOBLINS) {
return BEASTMAN_GOR;
} else if (faction == LOTRFaction.LIZARDMEN) {
return SAURUS;
} else if (faction == LOTRFaction.SKAVEN) {
return SKAVEN;
} else {
return HUMAN;
}
}
public static WFMRace forID(int ID) {
for(WFMRace f : WFMRace.values()) {
if(f.ordinal() != ID) continue;
return f;
}
return null;
}
}
В чем собственно дело. В одиночной игре всё работает замечательно. Игрок видит измененную модель, все хорошо. С мультиплеером у меня проблемы. Другие игроки не видят модель. Я пытался делать все тоже самое, только отправлять пакет на клиент не через sendTo, а через sendToAll, но тогда все другие игроки получают модель того игрока, который выбрал расу, но всё ещё не могут видеть измененную модель у игрока, который её выбирал. Надеюсь, понятно сумел рассказать.
Может ли кто-нибудь подсказать, как правильно отправить пакет с сервера к клиентам, что бы у них оставалась такой же модель, но сами они могли видеть измененную модель выбравшего расу игрока?
P.s могу так же скинуть свои пакеты, которые я пересылаю