[1.5.2][Tutorial]Уроки по созданию мода, с 5 по 8 главу.
Категория: Разное
!!!!При размещении уроков на другом сайте, указывайте автора!!!!
Что нужно для моддинга на forge?
Перед тем как начать делать мод, посмотрите первый туториал.
public class TestModBase {
Вписываем вот такую строку:
public static Item TestPickaxe = new TestPickaxe(2022, Stone).setUnlocalizedName("TestPickaxe");
Разбор:
public static final Item "TestPickaxe" - TestPickaxe название нашей кирки в коде( не в игре)
new TestPickaxe(2022, Stone) - TestPickaxe название нашей кирки в коде(не в игре), 2022 ID кирки, Stone тип кирки всего их 4(Wood,Stone,Iron,Diamond)
setUnlocalizedName("TestPickaxe") - ("TestPickaxe") название нашей кирки в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(TestPickaxe, "Test Pickaxe");
Разбор:
(TestPickaxe, "Test Pickaxe") - TestPickaxe название нашей кирки в коде(не в игре), "Test Pickaxe" название нашей кирки в игре.
Создаем файл кирки под названием TestPickaxe и пишем туда этот код:
package mods.testmod.src;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.src.*;
//ItemPickaxe означает то что это кирка
public class TestPickaxe extends ItemPickaxe
//Чтобы создать что то другое(меч или лопату) просто поменяйте extends ItemPickaxe
//Для лопаты - extends ItemSpade
//Для кирки - extends ItemPickaxe
//Для топора - extends ItemAxe
//Для Меча - extends ItemSword
//Для мотыги - extends ItemHoe
{
public TestPickaxe(int i, EnumToolMaterial material)
{
super(i, material);
}
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testpickaxe");
}
}
После слов:
public class TestModBase {
Пишет такую строку:
public static Item TestFood = new TestFood(2022, 1, 0.4F, false).setUnlocalizedName("TestFood");
Разбор:
public static final Block "TestFood" - TestFood название нашей еды в коде( не в игре)
new TestFood(2022) - TestFood название нашей еды в коде(не в игре), 2022 ID еды
setUnlocalizedName("TestFood") - ("TestFood") название нашей еды в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(TestFood, "Test Food");
Разбор:
(TestFood,"Test Food") - TestFood название нашей еды в коде(не в игре), "Test Food" название нашей еды в игре.
Создаем файл TestFood и вписываем в него такой код:
package mods.testmod.src;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.ItemFood;
/**
* Мы поставили родитель ItemFood, и теперь наша еда автоматически будет в категории tabFood.
**/
public class TestFood extends ItemFood
{
public TestFood(int par1, int par2, float par3, boolean par4)
{
super(par1, par2, par4);
maxStackSize = 64;
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testFood");
}
}
После слов:
public class TestModBase {
Пишет такую строку:
public static Item TestSoup = new TestSoup(2023, 2).setUnlocalizedName("TestFood");
Разбор:
public static final Block "TestSoup" - TestSoup название нашего супа в коде( не в игре)
new TestSoup(2023,2) - TestFood название нашего супа в коде(не в игре), 2022 ID супа, 2 это кол во восстановления половинок еды
setUnlocalizedName("TestSoup") - ("TestSoup") название нашего супа в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(TestSoup, "Test Soup");
Разбор:
(TestSoup,"Test Soup") - TestSoup название нашего супа в коде(не в игре), "Test Soup" название нашего супа в игре.
Создаем файл TestSoup и вписываем в него такой код:
package mods.testmod.src;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class TestSoup extends ItemFood
{
public TestSoup(int par1, int par2)
{
super(par1, par2, false);
this.setMaxStackSize(1);
}
public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
super.onEaten(par1ItemStack, par2World, par3EntityPlayer);
return new ItemStack(Item.bowlEmpty);//Когда мы покушаем в руке останется деревянная миска.
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testFood");
}
}
Чтобы добавить обычный крафт:
После этой надписи:
@Init
public void load(FMLInitializationEvent event)
{
Пишем вот это:
GameRegistry.addRecipe(new ItemStack(Block.oreDiamond, 1), new Object[]{
"XXX",
"X#X",
"XXX", Character.valueOf('X'), Block.cobblestone, ('#'), Block.dirt});
Разбор:
9 булыжника и 1 земля, дает 1 алмаз
Чтобы добавить бесформенный крафт:
После этой надписи:
@Init
public void load(FMLInitializationEvent event)
{
Пишем вот это:
GameRegistry.addShapelessRecipe(new ItemStack(Block.oreDiamond, 4), new Object[] {Item.stick, Block.dirt});
Разбор:
Из палочки и земли получаем 4 алмазной руды
Чтобы добавить крафт в печке:
После этой строки:
@Init
public void load(FMLInitializationEvent event)
{
Пишем вот такой код:
GameRegistry.addSmelting(Block.dirt.blockID, new ItemStack(Item.coal, 1), 1.0F);
Разбор:
Переплавляем землю получаем 1 уголь, 1.0F кол во кружочков с уровнем вы получите.
Когда вы уже сделаете мод, надо: Нажимайте recompile.bat, потом reobfuscate.bat, когда всё закончиться зайдите в папку reobf/minecraft/mods, и положите в папку testmod нашу папку с текстурами, textures, теперь нажимаем на папку mods правой кнопкой, Добавить в архив... выбираем формат .zip, пишем название мода, кидаем наш архив в клиент, в папку mods, играем!
- JDK 7
- MCP - Minecraft coder pack
- Forge-src
- Чистый клиент и сервер
- Eclipse classic
Перед тем как начать делать мод, посмотрите первый туториал.
public class TestModBase {
Вписываем вот такую строку:
public static Item TestPickaxe = new TestPickaxe(2022, Stone).setUnlocalizedName("TestPickaxe");
Разбор:
public static final Item "TestPickaxe" - TestPickaxe название нашей кирки в коде( не в игре)
new TestPickaxe(2022, Stone) - TestPickaxe название нашей кирки в коде(не в игре), 2022 ID кирки, Stone тип кирки всего их 4(Wood,Stone,Iron,Diamond)
setUnlocalizedName("TestPickaxe") - ("TestPickaxe") название нашей кирки в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(TestPickaxe, "Test Pickaxe");
Разбор:
(TestPickaxe, "Test Pickaxe") - TestPickaxe название нашей кирки в коде(не в игре), "Test Pickaxe" название нашей кирки в игре.
Создаем файл кирки под названием TestPickaxe и пишем туда этот код:
package mods.testmod.src;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.src.*;
//ItemPickaxe означает то что это кирка
public class TestPickaxe extends ItemPickaxe
//Чтобы создать что то другое(меч или лопату) просто поменяйте extends ItemPickaxe
//Для лопаты - extends ItemSpade
//Для кирки - extends ItemPickaxe
//Для топора - extends ItemAxe
//Для Меча - extends ItemSword
//Для мотыги - extends ItemHoe
{
public TestPickaxe(int i, EnumToolMaterial material)
{
super(i, material);
}
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testpickaxe");
}
}
После слов:
public class TestModBase {
Пишет такую строку:
public static Item TestFood = new TestFood(2022, 1, 0.4F, false).setUnlocalizedName("TestFood");
Разбор:
public static final Block "TestFood" - TestFood название нашей еды в коде( не в игре)
new TestFood(2022) - TestFood название нашей еды в коде(не в игре), 2022 ID еды
setUnlocalizedName("TestFood") - ("TestFood") название нашей еды в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(TestFood, "Test Food");
Разбор:
(TestFood,"Test Food") - TestFood название нашей еды в коде(не в игре), "Test Food" название нашей еды в игре.
Создаем файл TestFood и вписываем в него такой код:
package mods.testmod.src;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.ItemFood;
/**
* Мы поставили родитель ItemFood, и теперь наша еда автоматически будет в категории tabFood.
**/
public class TestFood extends ItemFood
{
public TestFood(int par1, int par2, float par3, boolean par4)
{
super(par1, par2, par4);
maxStackSize = 64;
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testFood");
}
}
После слов:
public class TestModBase {
Пишет такую строку:
public static Item TestSoup = new TestSoup(2023, 2).setUnlocalizedName("TestFood");
Разбор:
public static final Block "TestSoup" - TestSoup название нашего супа в коде( не в игре)
new TestSoup(2023,2) - TestFood название нашего супа в коде(не в игре), 2022 ID супа, 2 это кол во восстановления половинок еды
setUnlocalizedName("TestSoup") - ("TestSoup") название нашего супа в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(TestSoup, "Test Soup");
Разбор:
(TestSoup,"Test Soup") - TestSoup название нашего супа в коде(не в игре), "Test Soup" название нашего супа в игре.
Создаем файл TestSoup и вписываем в него такой код:
package mods.testmod.src;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class TestSoup extends ItemFood
{
public TestSoup(int par1, int par2)
{
super(par1, par2, false);
this.setMaxStackSize(1);
}
public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
super.onEaten(par1ItemStack, par2World, par3EntityPlayer);
return new ItemStack(Item.bowlEmpty);//Когда мы покушаем в руке останется деревянная миска.
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testFood");
}
}
Чтобы добавить обычный крафт:
После этой надписи:
@Init
public void load(FMLInitializationEvent event)
{
Пишем вот это:
GameRegistry.addRecipe(new ItemStack(Block.oreDiamond, 1), new Object[]{
"XXX",
"X#X",
"XXX", Character.valueOf('X'), Block.cobblestone, ('#'), Block.dirt});
Разбор:
9 булыжника и 1 земля, дает 1 алмаз
Чтобы добавить бесформенный крафт:
После этой надписи:
@Init
public void load(FMLInitializationEvent event)
{
Пишем вот это:
GameRegistry.addShapelessRecipe(new ItemStack(Block.oreDiamond, 4), new Object[] {Item.stick, Block.dirt});
Разбор:
Из палочки и земли получаем 4 алмазной руды
Чтобы добавить крафт в печке:
После этой строки:
@Init
public void load(FMLInitializationEvent event)
{
Пишем вот такой код:
GameRegistry.addSmelting(Block.dirt.blockID, new ItemStack(Item.coal, 1), 1.0F);
Разбор:
Переплавляем землю получаем 1 уголь, 1.0F кол во кружочков с уровнем вы получите.
Когда вы уже сделаете мод, надо: Нажимайте recompile.bat, потом reobfuscate.bat, когда всё закончиться зайдите в папку reobf/minecraft/mods, и положите в папку testmod нашу папку с текстурами, textures, теперь нажимаем на папку mods правой кнопкой, Добавить в архив... выбираем формат .zip, пишем название мода, кидаем наш архив в клиент, в папку mods, играем!
Тэги: Моддинг Modding 1.5.2 152