[1.7.10]Усложненные вещи. Урок №1. Создание жидкости.

45
0
Всем привет!
 Дорогие друзья сегодня я научу вас создавать жидкости(Типа нефти, лавы и т.д.)
Вот наш главный класс(Core): 
Код:
@Mod (modid = core.MODID, name = "Lessons", version = core.VERSION)

public class core
{
    public static final String MODID = "Lessons";
    public static final String VERSION = "1.0";


    public static Fluid Oil = new Fluid("Oil");
    public static Block blockfluid01;
    {
        FluidRegistry.registerFluid(oil);//регистрация самой жидкости
        blockfluid01 = new oil(oil, Material.water).setBlockName("oil");//блок и его настройки.
    }
    
    
    @EventHandler
    public void preLoad(FMLPreInitializationEvent event)
    {
        GameRegistry.registerBlock(blockfluid01, "OIl_Block");//Регистрация блока жидкости.

        LanguageRegistry.addName(blockfluid01, "Oil");//Название жидкости
    }

    
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {

    }

    @EventHandler
    public void serverStarting(FMLServerStartingEvent event)
    {
        
    }
}
Теперь нам нужно создать сам блок:
(oil.class)
Код:
public class oil extends BlockFluidClassic {

    @SideOnly(Side.CLIENT)
    protected IIcon stillIcon;
    @SideOnly(Side.CLIENT)
    protected IIcon flowingIcon;
    
    public Oil(Fluid fluid, net.minecraft.block.material.Material water) {
            super(fluid, (net.minecraft.block.material.Material) water);
            setCreativeTab(CreativeTabs.tabBlock);
/*
Вы можете создать дополнительные настройки, такие как
this.setLuminosity(Выбрать число 0-15);
Светимость жидкости.
this.setDensity(1000);
Заменяет ли жидкость другую.
This.setViskosity(6000 и меньше);
Как быстро жидкость течет.
this.setGaseos(false или true)
сделать жидкость газовообразной.
*/

    }
    
    @Override
    public IIcon getIcon(int side, int meta) {
            return (side == 0 || side == 1)? stillIcon : flowingIcon;
    }
    
    @SideOnly(Side.CLIENT)
    @Override
    public void registerBlockIcons(IIconRegister register) {
            stillIcon = register.registerIcon("lesson:OilStill");
            flowingIcon = register.registerIcon("lesson:OilFlowing");
    }
    
    @Override
    public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
            if (world.getBlock(x,  y,  z).getMaterial().isLiquid()) return false;
            return super.canDisplace(world, x, y, z);
    }
    
    @Override
    public boolean displaceIfPossible(World world, int x, int y, int z) {
            if (world.getBlock(x,  y,  z).getMaterial().isLiquid()) return false;
            return super.displaceIfPossible(world, x, y, z);
    }
    
}
Создаем текстуру
 Называем текстура вот так: OilStill и вторую OilFlowing.  
К ним нужно создать файлы:OilFlowing.png.mcmeta

Код:
"animation": {}[/font]
}
и OilStill.png.mcmeta
Код:
{
  "animation": {

  "frametime": 2

}
Это все.Так же в следующем уроке, я расскажу как сделать жидкость в ведре.
Пишите мне если найдете недочеты.
 
2,955
12
У класса жидкости есть еще некоторые дополнительные параметры.
[merge_posts_bbcode]Добавлено: 14.02.2015 12:58:35[/merge_posts_bbcode]

И пакеты с большой буквы - не всегда хорошо.
 
1,990
18
105
Скарлет (флудилка подвластна ей) или Анти может могут, я тут бессилен.
А в следующий раз лучше создавай тему в вопросах, с пометкой [Гайд|Перенос], что-то такого уровня, чтобы оставить на рассмотрение, переносить тему или нет.
 
509
2
Да,помечайте или хотя бы пишите мне в лс,если создаёте во флудилке
 
509
2
Dovakin написал(а):
Немножко оффтопа,скарлет,ты будешь делать журнал?
Времени нет,да и лень.
Готовлюсь к ОГЭ и ЕГЭ.
 
509
2
Спасибо, жду продолжения. Особенно, как эти жидкости добавлять в ведра и выливать из них.
 
1,057
50
234
Simlas написал(а):
Спасибо, жду продолжения. Особенно, как эти жидкости добавлять в ведра и выливать из них.

Ведро - это предмет с текстурой и extends ItemBucket

Наливается через эвент:
Код:
@SubscribeEvent
 public void onBucketFill(FillBucketEvent event)
{
World world = event.world;
MovingObjectPosition pos = event.target;
Block block = world.getBlock(pos.blockX, pos.blockY, pos.blockZ);
int meta = world.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ);

if (block == GSFluids.BlockLiquidMethane && meta == 0)
{
world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ);
event.result = new ItemStack(GSItems.MethaneBucket, 1, 0);
event.setResult(Result.ALLOW);
}


}
 
BlesseNtumble написал(а):
Simlas написал(а):
Спасибо, жду продолжения. Особенно, как эти жидкости добавлять в ведра и выливать из них.

Ведро - это предмет с текстурой и extends ItemBucket

Наливается через эвент:
Код:
@SubscribeEvent
 public void onBucketFill(FillBucketEvent event)
{
World world = event.world;
MovingObjectPosition pos = event.target;
Block block = world.getBlock(pos.blockX, pos.blockY, pos.blockZ);
int meta = world.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ);

if (block == GSFluids.BlockLiquidMethane && meta == 0)
{
world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ);
event.result = new ItemStack(GSItems.MethaneBucket, 1, 0);
event.setResult(Result.ALLOW);
}


}

Спасибо!
 
Сверху