10 декабря 2019 года планируется обновление программного обеспечения сайта, MediaWiki, до версии 1.33. В ходе обновления сайт будет временно доступен только для чтения. Подробная информация об этом обновлении доступна на Справочной вики Gamepedia.

Обсуждение:Создание модификаций с помощью ModLoader

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Спасибо![править код]

Давно хотел свой плагин для ModLoader написать! Adeil

Ммм, а можно поподробнее. Например как мне создать нового моба или новый инструмент?

Конечно можно. Но это статья об основах моддинга. А для создания моба вам потребуется сделать модель, написать код поведения, а это уже совсем не основы. Killer1997 17:17, 10 сентября 2012 (UTC)

Киллер, я считаю,что инструкцию по добавлению моба добавить можно.И добавление структуры можно щитать основой модов?Ты еще назови создание структур легкотней!(нормальных структур) Можно поподробнее о крафте?

forge[править код]

А как работает моддинг с помощью Forge? А то надо для MCP.И как в MCP сделать такой же мод как к примеру IC2. Что-бы .zip файл, .class файлы!

На моей странице найдете заготовку моддинга с фордж, однако требуется много правок, поэтому в основном пространстве Minecraft wiki она появится не сразу

А что лучше? что полнее? в чем меньше проблем? в ModLoader или в Forge?(это уже другой спрашивает) А еще вопрос: можно ли моддить на языке ModLoader'а, но используя Forge??? --VyTeD(обсуждение) 05:09, 13 апреля 2013 (UTC)


Помогите[править код]

Пожалуйста, напишите готовый вид программы при добавлении крафта 3х3. А то я совсем не понимайт в джаве

А то у меня здесь 28 ошибок

package net.minecraft.src;

import java.util.Random;
                        
public class mod_cheat extends BaseMod
{                       
         public void load();
	 this.addRecipes();   
         {  
	   
           ModLoader.addRecipe(new ItemStack(Block.blockDiamond, 1), new Object [] {"###", "###", "###", '#', Block.dirt});
	              
         }
        
         public String getVersion()
         {                      
return "1.5.2";
         }
        
}

Качество статьи[править код]

Здравствуйте. Статья нарушает пункты 2 ("Статьи следует писать в научном стиле от третьего лица. В случае необходимости обращения к читателям используется местоимение вы."), 4 ("Статья должна полностью охватывать свою тему, показывая все доступные аспекты предмета обсуждения. С другой стороны, в ней не должно быть отклонений от выбранной темы.") раздела Содержание статей, пункты 1 и 2 раздела Структура статей, пункт 2 ("При написании большой новой статьи следует сначала создать её в своём личном пространстве ("Участник:<Имя_участника>/<Название_подстраницы>") и только после окончательного написания помещать в основное пространство. То же относится и к переводу статей.") правил. Однако, ввиду важности данной статьи, предлагаю перенести её к автору (Участник:Killer1997) либо к участнику, готовому исправить статью, в личное пространство. С уважением, Shahter |Обсуждение|Вклад|, на часах 08:22, 17 января 2013 (UTC)

Ответ: Качество Статьи[править код]

Статья нарушает пункты 2 ("Статьи следует писать в научном стиле от третьего лица. В случае необходимости обращения к читателям используется местоимение вы.") - Понял. Буду постепенно исправлять на ВЫ.

2 ("При написании большой новой статьи следует сначала создать её в своём личном пространстве ("Участник:<Имя_участника>/<Название_подстраницы>") и только после окончательного написания помещать в основное пространство - Дело в том что статья может получиться очень большой и тут проще сразу поместить ее в основное пространство, чтобы затем обновлять и дополнять. Так люди смогут создавать уже свои моды на основе готовых уроков. По сути - статья уже готова. Можно уже написать код и создать свой мод (см. название), но с другой стороны есть еще очень большое количество возможностей создания того же мода (генерация, создание брони и т.д.). Надеюсь я понятно объяснил этот аспект.

С уважением, CMTV.

Очепятка в статье.[править код]

Emerald - изумруд, а не алмаз. --95.165.160.107 18:33, 20 января 2013 (UTC)

Это вики, увидел ошибку - исправь -- Maxx (обсуждение | вклад) 18:37, 20 января 2013 (UTC)
Я вспомнил, в коде emerald - это алмаз, не знаю почему, но это так. -- Maxx (обсуждение | вклад) 19:34, 20 января 2013 (UTC)
История версий/Indev почитайте. --GreenStone(вклад) 19:45, 20 января 2013 (UTC)

Фатальная ошибка MCP[править код]

При попытке декомпилировать эту штуку, мне в командной строке пишется об ошибке, хотя вроде как все правильно. Лог:

21:14:37 - FATAL ERROR
Traceback (most recent call last):
  File "runtime\decompile.py", line 50, in decompile
    commands = Commands(conffile, verify=True, no_patch=no_patch)
  File "D:\Программы\MCP\runtime\commands.py", line 196, in __init__
    self.checkjava()
  File "D:\Программы\MCP\runtime\commands.py", line 710, in checkjava
    path = os.path.join(str(path), 'bin')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-11: ordinal not in range(128)

Как я понял, ему какой-то кодек не даёт encode персонажей с позицией овер 128 (что?). Версия игры и MCP в трейсбеке (1.4.7 и 7.2.6a). Java 7 Update 11. Устанавливаю полностью чистую игру, потом кидаю бин и ресурсы в jars, убираю META-INF, затем устанавливаю ModLoader из статьи и декомпилирую, а там... В чем может быть дело? AnonymousMiner

Удали папку с MCP, обнови java, перезапусти компьютер, и попробуй все заного. CMTV
Попробуй переименовать папку Программы в Programs, потому что он, похоже, не воспринимает русский. — ArtSin 18:00, 29 января 2013 (UTC)
Поставил МСР прямо в папку с игрой. Всё равно ругается:
08:21:55 - == MCP 7.26 (data: 7.26a, client: 1.4.7, server: 1.4.7) ==
08:21:55 - OS : win32
08:21:55 - FATAL ERROR
Traceback (most recent call last):
  File "runtime\decompile.py", line 50, in decompile
    commands = Commands(conffile, verify=True, no_patch=no_patch)
  File "C:\Documents and Settings\Admin\Application Data\.minecraft\MCP\runtime\commands.py", line 196, in __init__
    self.checkjava()
  File "C:\Documents and Settings\Admin\Application Data\.minecraft\MCP\runtime\commands.py", line 710, in checkjava
    path = os.path.join(str(path), 'bin')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-11: ordinal not in range(128)

Русских букв в пути нет, Java последней версии, ругань идёт всё равно :( AnonymousMiner 01:24, 25 февраля 2013 (UTC)

Извините, господа, проблема была в отсутствии JDK. AnonymousMiner 05:33, 25 февраля 2013 (UTC)

Отсутствует server jar файл[править код]

Делал все что было указанно в инструкции. При декомпилировании возникает ошибка - Missing server jar file. После чего декомпиляция завершается. Что это за server jar file? Bin и resourses скинул чистые ничего лишнего все по инструкции...

На это не нужно обращать внимания и всё -- Maxx (обсуждение | вклад) 17:47, 29 января 2013 (UTC)
Нет, я бы с удовольствием не обращал на это внимание, но дело в том, что при рекомпиляции и запуска тестового клиента высвечивается абсолютно идентичная ошибка и программы аварийно завершаются. Ничего не работает! Такое ощущение что недостает каких-то файлов. Но весь клиент полностью работоспособный. В чем же дело???
Сделай декомпиляцию и покажи скрин консоли -- Maxx (обсуждение | вклад) 19:29, 29 января 2013 (UTC)
Заметил еще ошибку при декомпиляции, вероятно проблема в ней ScreenDecompMCP.jpg
Скопируйте файл minecraft_server.jar в папку jars. Norrius 03:54, 30 января 2013 (UTC)

Ошибка почти у всех появляется. Не обращайте на нее внимание. Консоль просто выводит факт, что отсутствует файл сервера, это никак не влияет на декомпиляцию клиента. CMTV

камень[править код]

Как сделать так, чтобы при разбивании камня кулаком все равно выпадал предмет? Но эффективность кирки по прежнему действовала


Проблема с работой мода.[править код]

После всех действий, мод не работает, не появляется в инвентаре тот блок созданный мной по инструкции, при рекомпиляция ошибок не выявила, что делать? Он должен не появляться, а крафтиться в принципе! --VyTeD(обсуждение) 08:45, 26 апреля 2013 (UTC)

Не могу найти[править код]

Не могу найти папку,которая создалась после декомпиляции. \src\minecraft\net\minecraft\src не нашел де живет. Я уже нашел,не надо!

Не создалась папка[править код]

Папка src создалась, но в ней нет пути /minecraft/net/minecraft/src! Что делать? Miol B 10:25, 11 февраля 2013 (UTC)

Развитие статьи[править код]

А не планируется ли развитие статьи с добавлением уроков по созданию модов для более продвинутых пользователей? Ну, например, уроки по созданию новых биомов, структур, мобов.


Еще, хотелось бы узнать как создавать такие вещи, например как Handsaw из мода Redpower. Смысл заключается в том, что когда кладешь пилу и предмет в сетку крафта, на выходе забираешь обработанное изделие а инструмент остается в сетке, но теряет немного прочности. Как так сделать расскажите пожалуйста.

Вопрос про mod_*** файлы[править код]

Я не понял, при создании каждого нового блока надо создавать новый mod_***.java Файл? Или надо дополнять один и тот же файл?

При создании каждого нового блока/предмета/моба надо создавать новый файл.

Отлично.А то я начал делать мод и подумал что многовато файлов получается.

Файл mod_*** нужен только один! И в нем как раз определяютя все блоки и предметы

С уважением CMTV ,


Серьёзно, CMTV? И вы код каждого нового блока/предмета записываете в один файл? O_o То есть куча новых модов - и mod_*** содержит тонну знаков? Естественно, при создании каждого нового мода надо создавать новый файл mod_***.

Я хочу сделать один мод на много блоков.У меня уже 20 mod_*** файлов. Получается у меня 20 модов в одном?


Все блоки и предметы и т.д. можно регистрировать в одном mod_***. Если вам удобнее под каждый блок (предмет, моба и т.д.) создавать отельный mod_***, то пожалуйста.

И вы код каждого нового блока/предмета записываете в один файл? - Да а в чем проблема?

То есть куча новых модов - и mod_*** содержит тонну знаков? - каждый мод файл отвечает за один мод (по сути). Соответственно удобнее все блоки, предметы и т.д. одного мода запихивать в один mod_***.

Пример: вот у вас мод, который добавляет 5 блоков. Вы будете создавать 5 mod_*** файлов? Проще записать все в один мод файл. Тоесть так (код для примера - нерабочий):

package net.minecraft.src;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class mod_NewBlock extends BaseMod
{
//1 блок
public static final Block NewBlock = new BlockNew(160, 0).setStepSound(Block.soundMetalFootstep).setBlockName("NewBlock").setHardness(0.5F).setResistance(6000F);
//2 блок
public static final Block NewBlock = new BlockNew(160, 0).setStepSound(Block.soundMetalFootstep).setBlockName("NewBlock").setHardness(0.5F).setResistance(6000F);
//3 блок
public static final Block NewBlock = new BlockNew(160, 0).setStepSound(Block.soundMetalFootstep).setBlockName("NewBlock").setHardness(0.5F).setResistance(6000F);
//4 блок
public static final Block NewBlock = new BlockNew(160, 0).setStepSound(Block.soundMetalFootstep).setBlockName("NewBlock").setHardness(0.5F).setResistance(6000F);
//5 блок
public static final Block NewBlock = new BlockNew(160, 0).setStepSound(Block.soundMetalFootstep).setBlockName("NewBlock").setHardness(0.5F).setResistance(6000F);

public void load()
{
//Крафт имя 1 блок
NewBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/New Block.png");
ModLoader.registerBlock(NewBlock);
ModLoader.addName(NewBlock, "New Block");
ModLoader.addRecipe(new ItemStack(NewBlock, 1), new Object [] {"#@#", "#@#", "#@#", Character.valueOf('#'), Block.dirt, Character.valueOf('@'), Block.glass});
//Крафт имя 2 блок
NewBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/New Block.png");
ModLoader.registerBlock(NewBlock);
ModLoader.addName(NewBlock, "New Block");
ModLoader.addRecipe(new ItemStack(NewBlock, 1), new Object [] {"#@#", "#@#", "#@#", Character.valueOf('#'), Block.dirt, Character.valueOf('@'), Block.glass});
//Крафт имя 3 блок
NewBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/New Block.png");
ModLoader.registerBlock(NewBlock);
ModLoader.addName(NewBlock, "New Block");
ModLoader.addRecipe(new ItemStack(NewBlock, 1), new Object [] {"#@#", "#@#", "#@#", Character.valueOf('#'), Block.dirt, Character.valueOf('@'), Block.glass});
//Крафт имя 4 блок
NewBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/New Block.png");
ModLoader.registerBlock(NewBlock);
ModLoader.addName(NewBlock, "New Block");
ModLoader.addRecipe(new ItemStack(NewBlock, 1), new Object [] {"#@#", "#@#", "#@#", Character.valueOf('#'), Block.dirt, Character.valueOf('@'), Block.glass});
//Крафт имя 5 блок
NewBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/New Block.png");
ModLoader.registerBlock(NewBlock);
ModLoader.addName(NewBlock, "New Block");
ModLoader.addRecipe(new ItemStack(NewBlock, 1), new Object [] {"#@#", "#@#", "#@#", Character.valueOf('#'), Block.dirt, Character.valueOf('@'), Block.glass});
}
public String getVersion()
{
return "1.4.7";
}
}


С уважением CMTV

Хммм, CMTV, полагаю, что Я ошибался, не допуская такой вариант. Но всё же, по-моему, для создания модов удобней под разные моды создавать новые файлы. Хотя, например, при создании небольших модов на определённую тематику вполне возможно уместить их в один файл, но для больших модов лучше создавать новые файлы, дабы не путаться.

Согласен. Полагаю вопрос решен. (CMTV)

Торговля с жителями[править код]

У меня возникло несколько вопросов по данному поводу, а именно: в каком файле хранится информация о дефолтных сделках жителей? Мне нужно по задумке отредактировать именно их. И второй: как сделать так, чтобы я давал жителю не один предмет, а несколько? Я написал код:

package net.minecraft.src;

public class mod_*** extends BaseMod
{
TradeEntry test = new TradeEntry(295, 0.5f, true, 1, 2);

public String getVersion()
{
return "1.4.7";
}

public void load()
{
ModLoader.addTrade(0, test);
}
}

То есть, за один предмет 295 житель даст 1-2 изумруда. А как увеличить количество продаваемых итемов до, скажем, 20-25?

Все сделки хранятся в файле EntityVillager.java, на будущее, разобрался уже просто.

Кровать...[править код]

По определённым обстоятельствам нужно прописать генерацию кровати. При установке в коде блока 26 спавнится только одеяло (т.е. нижний блок), а ID второго блока - подушки - я не нашёл. Но мне очень нужно генерировать кровать. Как я могу это сделать? AnonymousMiner 15:35, 1 марта 2013 (UTC)

Спасибо. Хрен тут у вас чего дождешься. Пойду искать на ютубе. AnonymousMiner 09:22, 3 марта 2013 (UTC)

Шмотки...[править код]

Как тут шмот делать?


Возможно, скоро сделаю раздел. (CMTV)

Выдает ошибки[править код]

Bandicam 2013-03-04 21-54-57-988.jpg что делать???? помоги

Ошибка при декомпиляции!![править код]

Не лажу с модами(.png --VyTeD(обсуждение) 17:22, 22 апреля 2013 (UTC)

Здравствуйте. Попробуйте декомпилировать чистую версию Minecraft, т.е. без каких-либо модов. С уважением, Shahter |Обсуждение|Вклад|, на часах 19:26, 22 апреля 2013 (UTC)

При рекомпиляции все время ошибки, никак не убрать![править код]

ScreenRecompMCP.png Что делать? Если не трудно, замените код --VyTeD(обсуждение) 11:41, 26 апреля 2013 (UTC)

Ошибка при рекомпиляции[править код]

При рекомпиляции игры у меня выдается такая ошибка:"!!Cannot find server sources, try decompiling!!". Во втором видео я видел, что у вас вылезло что-то подобное при рекомпиляции, и вы какую-то часть текста в файле про New_Block в NotePad++ удалили. Что вы удалили ? С уважением, Donatello98

На эту ошибку не обращайте внимания. Всё должно работать и так, если вы правильно всё закодили. Смотрите ошибки до этого сообщения. --monocrome 14:01, 17 мая 2013 (UTC)

Ошибка при рекомпиляции 2[править код]

Я начал заниматься плавкой предметов в печах, и мне выдает такую ошибку при рекомпиляции. Я скопировал тот же самый код, где плавка предметов и почему-то выдаёт ошибку. Как решить эту проблему?

# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_21\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1
== ERRORS FOUND ==
src\minecraft\net\minecraft\src\mod_dlocked.java:10: error: method addSmelting i
n class ModLoader cannot be applied to given types;ModLoader.addSmelting (Block.blockGold, new ItemStack(
Item.ingotGold, 10), 1.1F);                                   ;
required: int,ItemStack,float
found: Block,ItemStack,float
reason: actual argument Block cannot be converted to int by method invocation
conversion
1 error
==================
!! Can not find server sources, try decompiling !!
Для продолжения нажмите любую клавишу . . .
Первый аргумент в вызове addSmelting() должен быть не Block, а int (id блока?). Norrius 12:38, 18 мая 2013 (UTC)

Рецепты предметов[править код]

Как создавать рецепты крафта предметов? В качестве примера, напишите, пожалуйста, код создания рецепта крафта 1-ой единицы угля (каменного) из 9 единиц угля (древесного). Не могли бы вы объяснить немного про нумерацию данных у предметов типа угля (каменного и древесного), дерева (берёзы, дуба, сосны, эвкалипта)? Имею ввиду, как вставлять в код.


С уважением, Donatello98

Ошибка при рекомпиляции (добавление блока в игру)[править код]

(все делал по инструкции)

Ошибка




== MCP 7.51 (data: 7.51, client: 1.5.2, server: 1.5.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_21\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\mod_BlockIceCube2.java:12: error: constructor Bl
ockIceCube2JF in class BlockIceCube2JF cannot be applied to given types;
                public static final Block BlockIceCube2 = new BlockIceCube2JF(40
0, 0).setStepSound(Block.soundSnowFootstep).setBlockName("BlockIceCube2").setHar
dness(9.3F).setResistance(1F).setLightValue(0.780F);
                                                          ^

  required: int
  found: int,int
  reason: actual and formal argument lists differ in length
src\minecraft\net\minecraft\src\mod_BlockIceCube2.java:16: error: cannot find sy
mbol
        BlockIceCube2.blockIndexInTexture = ModLoader.addOverride("/terrain.png"
, "/textures/BlockIceCube2.png");
                     ^

  symbol:   variable blockIndexInTexture
  location: variable BlockIceCube2 of type Block
src\minecraft\net\minecraft\src\mod_BlockIceCube2.java:16: error: cannot find sy
mbol
        BlockIceCube2.blockIndexInTexture = ModLoader.addOverride("/terrain.png"
, "/textures/BlockIceCube2.png");
                                                     ^

  symbol:   method addOverride(String,String)
  location: class ModLoader
3 errors
==================

!! Can not find server sources, try decompiling !!
Для продолжения нажмите любую клавишу . . .

Код мода


package net.minecraft.src;

import java.util.Random;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

public class mod_BlockIceCube2 extends BaseMod
{
		public static final Block BlockIceCube2 = new BlockIceCube2JF(400, 0).setStepSound(Block.soundSnowFootstep).setBlockName("BlockIceCube2").setHardness(9.3F).setResistance(1F).setLightValue(0.780F);
		public void load()
{
	ModLoader.addName(BlockIceCube2, "Ice 2");
	BlockIceCube2.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/BlockIceCube2.png");
	ModLoader.registerBlock(BlockIceCube2);
	
}

public String getVersion()
{
return "For minecraft 1.5.2";
}
}

Код блока



package net.minecraft.src;

import java.util.Random;

public class BlockIceCube2JF extends BlockBreakable
{
public BlockIceCube2JF(int par1)
	{
         super(par1, "ice 2", Material.ice, false);
         this.setCreativeTab(CreativeTabs.tabBlock);
	}

public int quantityDropped(Random par1Random)
	{
         return (0);
	}
}



--johnrodor 18:44, 4 июня 2013 (UTC)

Сервер[править код]

Есть ли какой-нибудь урок по тому, как создавать/ адаптировать моды под серверную часть? Заранее спасибо. P.S. Спасибо за статью! 188.187.54.115 15:01, 5 июня 2013 (UTC)

Как сделать так, чтобы еду можно было есть всегда?[править код]

Как сделать так, чтобы еду можно было есть всегда, а не только когда голоден? Мне вот нужно бинты сделать, а найти нужный код не могу =\ Если можно, поточнее...

Решение: выдрать из кода условный оператор проверки сытости. Bedrock-сан (обс.) (вклад) 14:57, 6 июня 2013 (UTC)

Предложения по улучшению статьи[править код]

Почему бы в конце урока (или в начале) не показать код мода полностью? Думаю, что так можно посмотреть чего не хватает. Под кодом мода я подразумеваю код со всем, что только можно сделать, например, в блоке и разбить на разделы. В статье так и сделано, но хотелось бы еще и в каком-то одном месте это увидеть, чтобы не искать в статье. Заранее спасибо.

Обьясните в чем конкретно ошибки.[править код]

Вот ошибки:


Вот код мода:


Один файл - несколько текстур[править код]

Как известно, в серии загрузчиков ModLoader нельзя создавать больше, чем некое определенное количество спрайтов с текстурами блоков и предметов. Как возможно организовать структуру, при которой в файле с некоторым именем (с размерами, кратными 16, естественно) некоторая текстура, располагающаяся на пересечении n-ного столбца и m-той строки, присваивается одному из предметов? Метод ModLoader.addOverride(...), видимо, неприменим.

Другие предметы - Лук[править код]

В статье написано, как создавать еду и инструменты. А если я хочу создать другие функциональные инструменты, например, другой лук? Хотелось бы узнать, как это можно сделать. 95.37.131.224 10:24, 17 марта 2014 (UTC)

Ошибка при компиляции[править код]

package net.minecraft.src;

public class mod_HellSword extends BaseMod { public static final Item NewSword = (new ItemSword(203, EnumToolMaterial.IRON)).setItemName("NewSword"); public void load() { NewSword.iconIndex = ModLoader.addOverride("/gui/items.png", "/textures/hellSword.png"); ModLoader.addRecipe(new ItemStack(NewSword, 1), new Object [] {"#", "#", "X", '#', Block.dirt, 'X', Item.stick}); ModLoader.addName(NewSword, "Hell Sword"); }

public String getVersion() { return "1.5.2"; } } RayanKrimmer (обс.) 03:29, 18 августа 2014 (UTC) Много чего перепробовал не помогает от 3х ошибок P.S. скрин прикрепить не могу неизвестная ошибка при загрузке картинки