Про нбт уже понял, как именно можно брать и спавнить моба по имени?Ivasik написал(а):Начнём с того, что можно ещё проще сейвить моба, т.е. брать его имя и затем по имени спавнить, как это в яйцах сделано. По поводу всех твоих операция с ПКМ по мобу, добавь в самом начале условие if (!world.isRemote) так ты сможешь проверить, то что у тебя данный код будет выполнен не на клиенте. По поводу НБТ, смотри гайды, на самом деле всё просто, NBTCompund tag = new NBTTagCompound(); при записи(сохранении) делаешь set("НазваниеПеременной", Данные), при чтении(загрузке) создаёшь переменную в которую делаешь get(). Если до сих пор не понятно, по гугли на тему NBT. Всё вопросы сразу отпадут.
Agravaine написал(а):Не смущает что он дёргает Minecraft класс?
На код не смотрел, уж больно выколиглазный.Agravaine написал(а):Не смущает что он дёргает Minecraft класс?
Так и не понял, как брать а потом спавнить моба по имени?Zarak написал(а):Про нбт уже понял, как именно можно брать и спавнить моба по имени?Ivasik написал(а):Начнём с того, что можно ещё проще сейвить моба, т.е. брать его имя и затем по имени спавнить, как это в яйцах сделано. По поводу всех твоих операция с ПКМ по мобу, добавь в самом начале условие if (!world.isRemote) так ты сможешь проверить, то что у тебя данный код будет выполнен не на клиенте. По поводу НБТ, смотри гайды, на самом деле всё просто, NBTCompund tag = new NBTTagCompound(); при записи(сохранении) делаешь set("НазваниеПеременной", Данные), при чтении(загрузке) создаёшь переменную в которую делаешь get(). Если до сих пор не понятно, по гугли на тему NBT. Всё вопросы сразу отпадут.
world.spawnEntity(что то подобное)Zarak написал(а):Так и не понял, как брать а потом спавнить моба по имени?Zarak написал(а):Про нбт уже понял, как именно можно брать и спавнить моба по имени?Ivasik написал(а):Начнём с того, что можно ещё проще сейвить моба, т.е. брать его имя и затем по имени спавнить, как это в яйцах сделано. По поводу всех твоих операция с ПКМ по мобу, добавь в самом начале условие if (!world.isRemote) так ты сможешь проверить, то что у тебя данный код будет выполнен не на клиенте. По поводу НБТ, смотри гайды, на самом деле всё просто, NBTCompund tag = new NBTTagCompound(); при записи(сохранении) делаешь set("НазваниеПеременной", Данные), при чтении(загрузке) создаёшь переменную в которую делаешь get(). Если до сих пор не понятно, по гугли на тему NBT. Всё вопросы сразу отпадут.
Флакон души из enderioZarak написал(а):Допустим, я хочу создать предмет, который при ПКМ по мобе сохраняет его , и при ПКМ по алмазной руде спавнит его.Также волнует, как получить ХП, моба.
hohserg написал(а):Флакон души из enderioZarak написал(а):Допустим, я хочу создать предмет, который при ПКМ по мобе сохраняет его , и при ПКМ по алмазной руде спавнит его.Также волнует, как получить ХП, моба.
hohserg написал(а):Можно посмотреть, как сделано в 1.7.10 и повторить
@Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
RayTraceResult ray = Minecraft.getMinecraft().objectMouseOver;
ItemStack item = player.getHeldItem(hand);
if (item.getMetadata() == 0) {
if (ray != null && ray.typeOfHit == RayTraceResult.Type.ENTITY
&& ray.entityHit instanceof EntityLivingBase) {
if (!world.isRemote) {
EntityLivingBase entity = (EntityLivingBase) ray.entityHit;
if (!(entity instanceof EntityPlayer)) {
int id = EntityList.getID(entity.getClass());
NBTTagCompound tag = new NBTTagCompound();
tag.setInteger("id", id);
item.setTagCompound(tag);
entity.setDead();
item.setItemDamage(1);
}
}
}
} else {
NBTTagCompound tag = item.getTagCompound();
int ID = tag.getInteger("id");
Entity mob = EntityList.newEntity(EntityList.getClassFromID(ID), player.getEntityWorld());
player.getEntityWorld().spawnEntity(mob);
player.sendMessage(new TextComponentString("" + mob));
player.sendMessage(new TextComponentString("" + ID));
player.sendMessage(new TextComponentString("" + EntityList.getClassFromID(ID)));
}
return super.onItemRightClick(world, player, hand);
}
Minebot написал(а):У тебя точно код доходит до спавна? Эксепшенов нет? Класс Minecraft будет крашить сервер, если его запустить отдельно от клиента, поэтому тебе придется делать пакеты. Надо с клиента передавать ID моба, на которого ты смотришь на сервер и там уже его спавнить/сохранять в предмет. Про пакеты можешь глянуть в учебнике
Minebot написал(а):У тебя точно код доходит до спавна? Эксепшенов нет? Класс Minecraft будет крашить сервер, если его запустить отдельно от клиента, поэтому тебе придется делать пакеты. Надо с клиента передавать ID моба, на которого ты смотришь на сервер и там уже его спавнить/сохранять в предмет. Про пакеты можешь глянуть в учебнике
Можно будет так читерить, получать мобов, которых не было в миреMinebot написал(а):Надо с клиента передавать ID моба, на которого ты смотришь на сервер и там уже его спавнить/сохранять в предмет