Данный раздел предназначается для публикаций предложений с кодом игры, но не все умеют писать код игры. Исходя из этой темы, Вы научитесь писать код игры.
Рассмотрим создание блока на примере BlockStone.java
package net.minecraft.src;
import java.util.Random;
public class BlockStone extends Block
{
public BlockStone(int par1, int par2)
{
super(par1, par2, Material.rock);
}
public int idDropped(int par1, Random par2Random, int par3)
{
return Block.cobblestone.blockID;
}
}
package net.minecraft.src;
2) Пропишем классы:
import java.util.Random;
3) Объявим блок Камень с рендером блока
public class BlockStone extends Block
{
4) "Создадим" блок и добавим материал
public BlockStone(int par1, int par2)
{
super(par1, par2, Material.rock);
}
5) Добавим дроп блоку
public int idDropped(int par1, Random par2Random, int par3)
{
return Block.cobblestone.blockID;
}
}
Block.java
Для примера создадим блок на основе камня с возможностью издавать свет и назовём его "Example"
Растолкую:
1) Объявляем блок
2) Подключаем к файлу с исходником (в примере у нас BlockStone)
3) Пишем ID и номер текстуры блока:
4) Пишет характеристики блока (В данном случае у нас камень)
5) Добавим блоку светимость:
6) Добавим блоку звук:
7) Добавим имя блоку - Example
8) Завершим код:
Та-дам, блок существует в игре!
public static final Block Example = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10.0F).setLightValue(1.0F).setStepSound(soundStoneFootstep).setBlockName("Example");
1) Объявляем блок
public static final Block Example
2) Подключаем к файлу с исходником (в примере у нас BlockStone)
new BlockStone
3) Пишем ID и номер текстуры блока:
(1, 1)
4) Пишет характеристики блока (В данном случае у нас камень)
.setHardness(1.5F).setResistance(10.0F)
5) Добавим блоку светимость:
.setLightValue(1.0F)
6) Добавим блоку звук:
.setStepSound(soundStoneFootstep)
7) Добавим имя блоку - Example
.setBlockName("Example")
8) Завершим код:
;
Та-дам, блок существует в игре!
Item.java
Создадим итем - кожа.
1) Публикуем итем
2) Указываем итем (Если нету пути к определённому файлу, то просто пишем Item) и ID
3) добавим иконку (7 столб (ряд), 6 текстура)
4) Добавим имя итему
При желании можно добавить эффект частиц, на пример как у ред-стоуна (если это блок (на пример ))
public static Item leather = (new Item(78)).setIconCoord(7, 6).setItemName("leather");
1) Публикуем итем
public static Item leather =
2) Указываем итем (Если нету пути к определённому файлу, то просто пишем Item) и ID
(new Item(78))
3) добавим иконку (7 столб (ряд), 6 текстура)
.setIconCoord(7, 6)
4) Добавим имя итему
.setItemName("leather");
При желании можно добавить эффект частиц, на пример как у ред-стоуна (если это блок (на пример ))
.setPotionEffect(PotionHelper.redstoneEffect);
CraftingManager.java
Исходя из названия скрола уже всё ясно - здесь мы научимся добавлять крафт нашему итему.
Возьмём к примеру итем "карта":
1) Добавляем крафт и класс (ItemStack)
2) Добавим итем, который получится на выходе и кол-во
3) Добавим крафт:
Получается:
Возьмём к примеру итем "карта":
this.addRecipe(new ItemStack(Item.map, 1), new Object[] {"###", "#X#", "###", '#', Item.paper, 'X', Item.compass});
1) Добавляем крафт и класс (ItemStack)
this.addRecipe(new ItemStack
2) Добавим итем, который получится на выходе и кол-во
(Item.map, 1),
3) Добавим крафт:
new Object[] {"###", "#X#", "###", '#', Item.paper, 'X', Item.compass});
Получается:
Полублоки
За полублоки отвечает код
Рендер блока:
Чтобы сделать горизонтальный полублок, достаточно сделать так:
Чтобы сделать вертикальный полублок, достаточно сделать так
Чтобы сделать 1/4 блока, достаточно сделать так
Но не стоит забывать про X-Ray:
Дабы полублок не отталкивал нас:
[/scroll]
Рендер блока:
public void setBlockBoundsForItemRender()
{
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}
Чтобы сделать горизонтальный полублок, достаточно сделать так:
public void setBlockBoundsForItemRender()
{
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
}
Чтобы сделать вертикальный полублок, достаточно сделать так
public void setBlockBoundsForItemRender()
{
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F);
}
Чтобы сделать 1/4 блока, достаточно сделать так
public void setBlockBoundsForItemRender()
{
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F);
}
Но не стоит забывать про X-Ray:
public boolean isOpaqueCube()
{
return false;
}
Дабы полублок не отталкивал нас:
public boolean renderAsNormalBlock()
{
return false;
}
admin писал(а):
- все дополнительные файлы с исходниками оформляются так же, как основной- все дополнительные файлы с изменениями уже существующих исходников оформляются ввиде diff
- если блок использует несколько текстур, то их индекс должен задаваться в конструкторе только одним числом(baseIndex), а все последующие считаться как baseIndex + N
В данной теме представлен чистый код игры без использования сторонних ресурсов (лоадеров и прочих)
Если Вы собрались выкладывать своё предложением с кодом, то воспользуйтесь данной темой. По всем вопросом ко мне в ЛС.