[Без ModLoader] Основы программирования для Minecraft
#101
Написал 26.04.2011 - 15:01
#102
Написал 27.04.2011 - 21:42
#103
Написал 30.04.2011 - 22:06
#104
Написал 30.04.2011 - 22:09
#107
Написал 02.05.2011 - 14:14
В чем проблема?
Вот код
#108
Написал 02.05.2011 - 14:15
#109
Написал 02.05.2011 - 15:19
#110
Написал 02.05.2011 - 23:13
#111
Написал 06.05.2011 - 11:19
Через поиск получаем список файлов, в которых упоминается слово "bow"
---- Файл ItemBow.java
В этом файле описывает класс Лук, в котором
есть метод onItemRightClick - то есть нажатие правой кнопки мыши.
в этом методе происходит проверка условия, Имеется ли в инвентаре игрока объект "arrow", если да, то
world.playSoundAtEntity - создание звука выстрела, потом
странное условие проверки мира на Мультиплеерность, затем
world.entityJoinedWorld(new EntityArrow(world, entityplayer)); - создается сущность летящей стрелы, которой передаются направление взгляда игрока.
--- Файл Item .java
public static Item bow = (new ItemBow(5)).setIconCoord(5, 1).setItemName("bow");
довольно понятная, расписанная выше строчка, в ней создается объект Лук с Айди 5+256 = 261,
определяется картинка (запомним эту функции, чтобы потом подробней изучить чтобы изменить внешний вид "нового" лука), и третий параметр это тупоИМя в инвентаре.
-- Файл RecipesWeapons.java Содержит Рецепты оружия, там неинтересно и так все понятно и расписано выше.
Осуществляем поиск по СЛОВУ Arrow , среди полученных результатов поиска будут такие файлы, как
--- файл RenderArrow - написано как прорисовывать стрелу, И ОТКУДА БРАТЬ КАРТИНКУ СТРЕЛЫ.
--- Файл EntityArrow - вот оно!! Где то тут должна быть описана начальная скорость стрелы...
Начальная скорость стрелы/снаряда устанавливается при вызове функции :
setArrowHeading(motionX, motionY, motionZ, 1.5F, 1.0F);
где 1.5F это стандартная скорость снаряда. Т.е при стрельбе без наклона вверх пролетит около 14-15 клеток. При стрельбе в 45 градусов пролетит 40-50 клеток.
если хотим чтобы летело дальше, увеличиваем до 3.0F , при 4.5F снаряд полетит совсем далеко, по практически прямой траектории =)
F показывает что значение типа float , D - double
P.S Если кто-то решил создать свою новую Ентити, то не забудь ее прописать в ЕнтитиЛист..
А как тогда увеличить урон от стрелы?
#112
Написал 06.05.2011 - 11:41
#113
Написал 09.05.2011 - 14:18
Использую чистую версию МК ( МайнКрафта) . Для начала проверю последовательность действий, описанных в на первой страницы этой темы, на самом простом примере, то есть БЕЗ ИЗМЕНЕНИЙ java файлов МК.
1. Копирую папки bin и resources из МК в папку MCP/jars
2. decompile.bat - все норм
3. recompile.bat -все норм
4. startclient.bat - грузится , открывается МК - фурычет норм
5. А теперь согласно пунктам, хочу посмотреть в MCP/conf/ файлы client_obfuscation.txt и server_obfuscation.txt, "добавьте в них файлы, которые вы модифицировали, и запустите reobf.bat. " нету там таких что делать? ) причем, не выполнив все эти пункты я даже не могу проверить роботоспособность своего мода.
Кстати, по поводу мода - теперь про него распишу:
Я хочу добавить в игру новый предмет - пистолет, и новый предмет пули(пуля).
я создал в папке MCP/src такие файлы:
EntityBullet.java - скопировал с файла EntityArrow.java , только заменил слова с Arrow на Bullet ну и соответственно и на bullet с маленькой буквы когда item.arrow описывалось. Изменил только:
public void setVelocity(double d, double d1, double d2)
{
motionX = d*2; -домножил на два
motionY = d1*2; -домножил на два
motionZ = d2; - оставил без изменения
ItemPistol.java - скопировал с ItemBow.java - так же поменял названия с bow на pistol
в строчке
world.playSoundAtEntity(entityplayer, "random.pistol", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 0.8F)); я поменял с "randomw.bow" на "random.pistol" - файл pistol.ogg уже создан, и когда у меня МОД БУДЕТ ГОТОВ Я ЕГО добавлю в папку МК , так как нужные звуки для стрельбы лежат в МК\resources\newsound\random ( не в jar архиве)
RenderBullet.java - скопировал с RenderArrow.java Заменил arrow на bullet. Причем учел что использовалась переменная entityarrow внутри класса, заменил на entitybullet.
В пути к картинке прописал loadTexture("/item/bullets.png"); файл уже bullets.png имеется готовый , и будет помещен по выполнению МОДА в MK/Minecraft.jar/item/...
теперь файлы которые я просто изменил (то есть добавил строчки):
- Item.java
+
public static Item pistol = (new ItemPistol(103)).setIconCoord(5, 5).setItemName("pistol");
public static Item bullet = (new Item(104)).setIconCoord(5, 6).setItemName("bullet");
- EntityList.java
+
addMapping(net.minecraft.src.EntityBullet.class, "Bullet", 43);
- RecipesWeapons.java
+
craftingmanager.addRecipe(new ItemStack(Item.pistol, 1), new Object[] {
" # ", "# ", " # ", Character.valueOf('#'), Item.stick
});
craftingmanager.addRecipe(new ItemStack(Item.bullet, 16), new Object[] {
"# ", "# ", "# ", Character.valueOf('#'), Item.stick
});
- то есть пистолет и пули делаются из трех палок.
Теперь главное. МОДОПРОИЗВОДСТВО :
1. я чистые bin и resources я кидаю в jars
2. Запускаю decompile.bat - внешне все ок, но на всякий случай вот скрин
http://rghost.ru/5666821
3. Добавляю/изменяю файлы в src\minecraft\net\minecraft\src\... - те которые я выше описывал
4. Запускаю recompile.bat - вроде тоже ВСЕ НОРМАЛЬНО !!!
скриншот консоли прилагается
http://rghost.ru/5668571
5. А что делать дальше? Проверяю на startclient.bat - игра грузиться, у меня даже что-то получается сделать - Пули, правда текстур к ним нет, так как это тестовый режим - , причем пистолет ТОЖЕ СОЗДАЕТСЯ и стреляет он с повышенной дальностью. Правда на него нету текстур и нету на него звуков. Но все работает.
Теперь встает вопрос, как все это хозяйство отправить в основную игру МК ??? Как я писал выше в папке МК/conf никаких client_obfuscation.txt и server_obfuscation.txt нету.....
Нотч
Помогите плиз! =) И кстати, спасибо ВАМ большое за этот форум, СПАСИБО его создателям и поддержателям. Во всем инете - только здесь максимально подробно расписано и рассказано про модостроительство!!! =*
#114
Написал 09.05.2011 - 14:52
#115
Написал 09.05.2011 - 15:23
#116
Написал 09.05.2011 - 17:30
#117
Написал 10.05.2011 - 22:46
#118
Написал 11.05.2011 - 07:19
#119
Написал 11.05.2011 - 07:23
Если ты хочешь, чтобы пули отображались как пули - открой RenderManager и добавь туда строчку:Я пошарил по чужеземным форумам, нашел что теперь не надо чтолибо дописывать в файл в папке conf , - MCP теперь делает это всё сам (определяет какие файлы надо добавить) , и кладет результат в папку \reobf На данный момент у меня грузиться картинка пистолета (в инвентаре и в руке), картинка пуль(в инвентаре и в руке), и пистолет и пули создаются согласно прописанному рецепту, но ЗВУК выстрела отсутствует + стреляет белыми кубами. " Хорошо, я посмотрю что можно сделать " " В рот мне ноги, это же Нотч" Нотч На данный момент осталось всего две проблемы - Первая проблема- не проигрывается звук pistol.ogg из папки random ( папка рандом не находится в minecraft.jar) "pistol.ogg" был взят из half-life звук выстрела пистолета .wav и переконвертированный в .ogg При попадании снаряда в землю проигрывался звук drr.ogg - типа стрела воткнулась, Он проигрывался потому что я забыл поменять какой звук проигрывать этом случае. Стоило мне поменять этот звук на новый ric.ogg (попадание пули в препятствие) как перестал проигрывать и звук рикошета - по умолчанию у EntityArrow был звук drr.ogg , в EntutyBullet у меня стоит ric.ogg ( звук взятый wav тоже из half-life) = Предварительный вариант решения - найти ОСОБЫЙ конвертер звуков в ogg формат для Minecraft'a Вторая проблемы - пули, заместо летящих снарядов (в моем случае пуль из bullets.png) показываются как маленький белый квадратик.. EntityBullet (бывший EntityArrow) использует для загрузки текстур файл bullets.png , И ДЛЯ эксперимента - я создал копию arrow2.png и переименовал ее bullets.png И ВСЕ РАВНО ЗАМЕСТО ПУЛЬ ИЛИ В ДАННОМ СЛУЧАЕ СНОВА СТРЕЛ - летают белые квадратики... хотя повторяю, для эксперимента я использовал переименовываемый родной arrow.png В чем дело? ??? Если бы заместо звука выстрела или шикошета поставить родной файл ogg из Minecrafta переименованный под pistol.ogg и ric.ogg - то этот звук все равно не проигрывается. = ( Значит дело не в звуках, а в чем-то другом. Скорее всего в необычных для МК именах.. pistol ric - именно не проигрываются те звуки чьи имена были добавлены мной. Значит где-то они все описываются, не просто лежат файлы в папке random, но и хранятся в каком нить списке. Если заранее кладу файлы pistol.ogg и ric.ogg в resource перед использованием decompile.bat - все равно они не проигрываются и это не помогает
entityRenderMap[paste][/paste]put(EntityBullet[paste][/paste]class, new RenderSnowball(Item[paste][/paste]Bullet[paste][/paste]getIconIndex(0)));
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных