Вверх ↑
Ответов: 4557
#1: 2014-05-07 18:07:24 ЛС | профиль | цитата
Совсем старая тема.
Данный раздел предназначается для публикаций предложений с кодом игры, но не все умеют писать код игры. Исходя из этой темы, Вы научитесь писать код игры.

Рассмотрим создание блока на примере 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;
}
}
1) Зададим адрес к файлу:
package net.minecraft.src;
В данном случае: /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
Block.java
Для примера создадим блок на основе камня с возможностью издавать свет и назовём его "Example"
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
Создадим итем - кожа.

    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
Исходя из названия скрола уже всё ясно - здесь мы научимся добавлять крафт нашему итему.
Возьмём к примеру итем "карта":

        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});

Получается:
Полублоки
За полублоки отвечает код

Рендер блока:
    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;

}
[/scroll]

admin писал(а):
- все дополнительные файлы с исходниками оформляются так же, как основной
- все дополнительные файлы с изменениями уже существующих исходников оформляются ввиде diff
- если блок использует несколько текстур, то их индекс должен задаваться в конструкторе только одним числом(baseIndex), а все последующие считаться как baseIndex + N


В данной теме представлен чистый код игры без использования сторонних ресурсов (лоадеров и прочих)

Если Вы собрались выкладывать своё предложением с кодом, то воспользуйтесь данной темой. По всем вопросом ко мне в ЛС.
карма: 6
2
Голосовали:whirr, _Ferdinand_