Как правильно получить серверный мир.

68
0
Здравствуйте, хотел при клике лкм с предметом в руке спавнить моба, вроде все ок пакет отправляется, а моб спавнится. Но если игрок находится в аду (или краю) то майн вылетает.

Код:
World ServerWorld = MinecraftServer.getServer().getEntityWorld();// получаю мир
EntityPlayer ServerPlayer = MinecraftServer.getServer().getEntityWorld().getPlayerEntityByName(playername);//получаю игрока

ServerWorld.spawnEntityInWorld(new EntitySnowball(ServerWorld, ServerPlayer));// собственно спавню моба (для примера взял снежок)
Подскажите, что я делаю  не так. 

Версия Minecraft 1.6.4.


Заранее спасибо за ответ.
 
Код:
World ServerWorld = MinecraftServer.getServer().getEntityWorld();

так ты получаешь основной мир, а тебе нужен мир игрока. Откуда ты берешь playername? Оттуда же бери сущность игрока.
 
GloomyFolken написал(а):
Код:
World ServerWorld = MinecraftServer.getServer().getEntityWorld();

так ты получаешь основной мир, а тебе нужен мир игрока. Откуда ты берешь playername? Оттуда же бери сущность игрока.
Имя игрока я отправляю вместе с пакетом. А если я буду спавнить на клиенском мире то его не будит на серверном.
[merge_posts_bbcode]Добавлено: 25.03.2015 20:14:37[/merge_posts_bbcode]

А как тогда получить не основной мир , а мир игрока ? Что написать вместо 
Код:
getEntityWorld()

?
 
cfif31 написал(а):
Имя игрока я отправляю вместе с пакетом.
Это ОЧЕНЬ плохая идея. При получении пакета в твоем пакет хендлере есть Player, от которого пришел пакет. Cast'ишь его в EntityPlayer и юзаешь как надо.
 
GloomyFolken написал(а):
cfif31 написал(а):
Имя игрока я отправляю вместе с пакетом.
Это ОЧЕНЬ плохая идея. При получении пакета в твоем пакет хендлере есть Player, от которого пришел пакет. Cast'ишь его в EntityPlayer и юзаешь как надо.
Спасибо . Теперь майн не крашится , но в аду все равно не спавнится снежек. Опытным путем выявил что снежек спавнится на тех же координатах но в обычном миире.
[merge_posts_bbcode]Добавлено: 25.03.2015 22:19:00[/merge_posts_bbcode]

Все разобрался спасибо.

Оказывается надо было узнать Dimension игрока и потом уже 
Код:
 World ServerWorld = MinecraftServer.getServer().worldServerForDimension(ServerPlayer.dimension);
загрузить мир.

[merge_posts_bbcode]Добавлено: 25.03.2015 22:24:29[/merge_posts_bbcode]

Тему можно закрыть. Огромное спасибо GloomyFolken.
 
Назад
Сверху