Перейти к содержимому


Фотография

[ModLoader] Основы программирования для Minecraft


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 746

#541 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 04.01.2012 - 22:15

Если ломаю блок рукой то Saving chunks,потом вылет и такая ошибка.
java[paste][/paste]lang[paste][/paste]NullPointerException	at net[paste][/paste]minecraft[paste][/paste]src[paste][/paste]BlockNew[paste][/paste]idDropped(BlockNew[paste][/paste]java:14)	at net[paste][/paste]minecraft[paste][/paste]src[paste][/paste]Block[paste][/paste]dropBlockAsItemWithChance(Block[paste][/paste]java:480)	at net[paste][/paste]minecraft[paste][/paste]src[paste][/paste]Block[paste][/paste]dropBlockAsItem(Block[paste][/paste]java:464)	at net[paste][/paste]minecraft[paste][/paste]src[paste][/paste]Block[paste][/paste]harvestBlock(Block[paste][/paste]java:739)	at net[paste][/paste]minecraft[paste][/paste]src[paste][/paste]PlayerControllerSP[paste][/paste]sendBlockRemoved(PlayerControllerSP[paste][/paste]java:65)	at net[paste][/paste]minecraft[paste][/paste]src[paste][/paste]PlayerControllerSP[paste][/paste]sendBlockRemoving(PlayerControllerSP[paste][/paste]java:121)	at net[paste][/paste]minecraft[paste][/paste]client[paste][/paste]Minecraft[paste][/paste]sendClickBlockToController(Minecraft[paste][/paste]java:1081)	at net[paste][/paste]minecraft[paste][/paste]client[paste][/paste]Minecraft[paste][/paste]runTick(Minecraft[paste][/paste]java:1482)	at net[paste][/paste]minecraft[paste][/paste]client[paste][/paste]Minecraft[paste][/paste]func_40001_x(Minecraft[paste][/paste]java:686)	at net[paste][/paste]minecraft[paste][/paste]client[paste][/paste]Minecraft[paste][/paste]run(Minecraft[paste][/paste]java:627)	at java[paste][/paste]lang[paste][/paste]Thread[paste][/paste]run(Unknown Source)
Если чем-то другим то нормально(если киркой,то падает то,что в else.Если факелом то падает что надо).

#542 Sekai

Sekai

    Добытчик обсидиана

  • Пользователи
  • Сообщений: 1163
  • Откуда: Тольятти

Написал 04.01.2012 - 22:17

ты обратился не в ту тему, тут не учат программированию на джаве. А вообще попробуй майн без аргументовandruhaGamer у тебя в идДропед стоит проверка на айтем, но если вещи нет в руке то объект нулевой(null), а при обращении к элементам нулевого объекта вылетает исключениеперед проверками itemstack сделай условие if(itemstack!=null), в конце можешь поставить иначе и это будет условием что рука пустая
Noblesse oblige
ЧЕЕЕЕЕЕЕЕЕЕЕЕН! ^_,^

#543 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 04.01.2012 - 22:49

Вот ,сделал так,и опять ошибка (про null) ,я правильно делаю?
ItemStack itemstack = ModLoader[paste][/paste]getMinecraftInstance()[paste][/paste]thePlayer[paste][/paste]inventory[paste][/paste]getCurrentItem();	     if(itemstack!=null) 	   {		return Block[paste][/paste]chest[paste][/paste]blockID; 	   }       if(itemstack[paste][/paste]itemID == Block[paste][/paste]torchWood[paste][/paste]blockID)        {          return Block[paste][/paste]obsidian[paste][/paste]blockID;        }	   else        {          return Block[paste][/paste]torchWood[paste][/paste]blockID;        }


#544 Sekai

Sekai

    Добытчик обсидиана

  • Пользователи
  • Сообщений: 1163
  • Откуда: Тольятти

Написал 04.01.2012 - 23:11

нет, в твоем случае будет либо сундук если что-то в руке либо ошибка сделай так
ItemStack itemstack = ModLoader[paste][/paste]getMinecraftInstance()[paste][/paste]thePlayer[paste][/paste]inventory[paste][/paste]getCurrentItem();        if(itemstack==null) //если рука пустая      {      return Block[paste][/paste]chest[paste][/paste]blockID; //вернет сундук      }   //если не пустая то пойдет дальше, ошибок не будет       if(itemstack[paste][/paste]itemID == Block[paste][/paste]torchWood[paste][/paste]blockID)        {          return Block[paste][/paste]obsidian[paste][/paste]blockID;        }      else        {          return Block[paste][/paste]torchWood[paste][/paste]blockID;        }
но секай обычно делает так
ItemStack itemstack = ModLoader[paste][/paste]getMinecraftInstance()[paste][/paste]thePlayer[paste][/paste]inventory[paste][/paste]getCurrentItem();        if(itemstack!=null)       {       if(itemstack[paste][/paste]itemID == Block[paste][/paste]torchWood[paste][/paste]blockID)        {          return Block[paste][/paste]obsidian[paste][/paste]blockID;        }      else        {          return Block[paste][/paste]torchWood[paste][/paste]blockID;        }      } else {return Block[paste][/paste]chest[paste][/paste]blockID;}
в данном случае любой способ нормальный, но обычно лучше использовать второй
Noblesse oblige
ЧЕЕЕЕЕЕЕЕЕЕЕЕН! ^_,^

#545 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 04.01.2012 - 23:29

С этим все получилось,спасибо теперь новая проблема ItemStack itemstack = ModLoader.getMinecraftInstance().thePlayer.inventory.getCurrentItem(); if(itemstack==null) { return 0; } if(itemstack.itemID == mod_glazier.glazier) //Ругается на это так incomparable types { return Block.glass.blockID; } else { return 0; } }

#546 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 04.01.2012 - 23:42

Скрытый текст
mod_glazier.glazier - это что еще? Может все таки .class

V6xCzSN.png


#547 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 04.01.2012 - 23:43

mod_glazier/название мода/.glazier-название предмета.Не правильно?

#548 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 04.01.2012 - 23:47

incomparable types - несравнимый тип

V6xCzSN.png


#549 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 04.01.2012 - 23:48

Я уже понял,переводил)Но что делать то?Может я неправильно пишу mod_glazier.glazier?Просто блоки так пишутся,например mod_glazier.newblock (вроде так)P.s MappeR В стиме был я)

#550 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 05.01.2012 - 00:03

Понял, просто у меня 3 часа и я жестоко туплю. Проверь регистр. Вдруг там ошибся.// Я спать.

V6xCzSN.png


#551 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 05.01.2012 - 00:09

С регистром все в порядке,я написал так-mod_glazier.newblock.blockID и все норм,блоком добывается,может у mod_glazier.glazier есть что-то вроде blockID,например itemID(пробовал-не подходит).ДА 100%,если написать mod_glazier.newblock,будет таже ошибка,всетаки я что-то не дописываю,на что именно?mod_glazier.glazier.*****,что там?Помогите)Урааа!!!Получилось! там вот такая фигня) mod_glazier.glazier.shiftedIndex

#552 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 07.01.2012 - 10:01

Никак не могу отрыть код генерации дерева. Скажите, где его искать то?
И еще. Как сделать так, что бы при переплавке блока, итема из твоего мода получался итем из ванилки.

Со всем разобрался. Но ни###### не понял ничего из кода дерева. Кто поможет добавить свое дерево?

V6xCzSN.png


#553 RedMen

RedMen

    Добытчик дерева

  • Пользователи
  • Сообщений: 184

Написал 07.01.2012 - 21:24

Кто поможет добавить свое дерево?

Я могу помочь. Если что пиши в личку
404: User Not Found

Posted Image

^Мы открылись! НЯ! НЯ! НЯ!^


#554 andruhaGamer

andruhaGamer

    Странник

  • Пользователи
  • Сообщений: 57

Написал 08.01.2012 - 02:14

Помогите,как сделать чтобы когда игрок стоит на определенном блоке,блок проверял что у игрока одето в слоте для обуви?

#555 Chancellor

Chancellor

    Странник

  • Пользователи
  • Сообщений: 50

Написал 08.01.2012 - 12:23

Здравствуйте. Возможно, я слепой, или тупой, но совершенно не могу разобраться, как сделать так, чтобы из блока при разрушении выпадало несколько разных блоков. Дублирование команды "public int idDropped(int i, Random random, int j)" невозможно. Потратил уже три дня на изучение кода, но так ничего толком и не понял. Пытался скопировать части кода из файла лодки, которая, при разбивании, со стопроцентной вероятностью, даёт дерево и палки. Не вышло. Изучал код блока гравия, но там поставлено условие: либо сам блок гравия, либо кремень. Изучал даже код пшеницы, которая может дать и семена, и сноп пшеницы. В файле используется команда "dropBlockAsItemWithChance", которая, в принципе, если скопировать её вместе со всеми расчётными формулами, работает, и я даже получал желаемый результат. Но, признаться, в этих формулах на вычисление вероятности я разбираюсь отвратительно, и мне нужна стопроцентная вероятность выпадения блока, вместо уже имеющейся, но метод ненаучного подбора ничего не дал - не работает. Нет ли какого-нибудь способа совместить несколько команд выпадения предметов в одном файле, чтобы к каждому можно было присвоить выпадение определённого (или случайного в рамках 1-N) количества, и чтобы при этом команды не вступали в конфликт? Заранее извиняюсь, если вопрос плохой или детский. Спасибо.И ещё небольшой вопрос к тем, кто делал текстуры для своих модов: какой бы вы мне посоветовали использовать графический редактор, небольшой по весу (не Photoshop, например), но способный убирать этот мерзкий белый фон на текстурах предметов? Ещё раз спасибо.

Изображение


#556 RedMen

RedMen

    Добытчик дерева

  • Пользователи
  • Сообщений: 184

Написал 08.01.2012 - 12:44

Скрытый текст
Два предмета из одного блока? Это возможно только шансово(т.е. как у гравия) А графический редактор: Paint.NET или GIMP
404: User Not Found

Posted Image

^Мы открылись! НЯ! НЯ! НЯ!^


#557 Sekai

Sekai

    Добытчик обсидиана

  • Пользователи
  • Сообщений: 1163
  • Откуда: Тольятти

Написал 08.01.2012 - 12:55

Два предмета из одного блока? Это возможно только шансово(т.е. как у гравия)

лолвут?
public void onBlockRemoval(World world, int i, int j, int k){world[paste][/paste]entityJoinedWorld(new EntityItem(world, (float)i, (float)j, (float)k, new ItemStack(Block[paste][/paste]dirt[paste][/paste]blockID, 1))); //сделать столько раз сколько блоков, заменяя Block[paste][/paste]dirt[paste][/paste]blockID на тот блок что тебе нуженsuper[paste][/paste]onBlockRemoval(world, i, j, k);}

Noblesse oblige
ЧЕЕЕЕЕЕЕЕЕЕЕЕН! ^_,^

#558 Chancellor

Chancellor

    Странник

  • Пользователи
  • Сообщений: 50

Написал 08.01.2012 - 13:19

Что-то ничего не выходит. Мод напрочь отказывается компилироваться. На всякий случай даже полностью скопировал код, подумав, что ошибка в коде блока, который я хотел бы создать. Пишет "cannot find symbol symbol : constructor ItemStack(int,int). Странно, ведь команда правильная.За редактор спасибо.

Изображение


#559 Sekai

Sekai

    Добытчик обсидиана

  • Пользователи
  • Сообщений: 1163
  • Откуда: Тольятти

Написал 08.01.2012 - 13:29

мой фейл, исправь new ItemStack(Block.dirt.blockID, 1) на new ItemStack(Block.dirt, 1)
Noblesse oblige
ЧЕЕЕЕЕЕЕЕЕЕЕЕН! ^_,^

#560 Zmey5342

Zmey5342

    Странник

  • Пользователи
  • Сообщений: 18

Написал 08.01.2012 - 16:17

А будет такой же тутор только на 1.0.0?


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных