java core будет полезночто именно из Джавы нужно знать
я тебе раскрою секрет, что 1.15, что 1.16 это одинаковые версии. Отличии лишь только в Создании блока, и брони.На 1.16.5 там почти ничего нету
не совсем, у меня не работала регистрация и броньКак раз создание блока и брони одинаковое.
Различие в содании измерения и слоях биомов
package com.algorithmlx.liaveres.common.object.blocks;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
public class MatterCrystalBlock extends Block {
public MatterCrystalBlock(String name) {
super(Properties.create(Material.ROCK)
.doesNotBlockMovement()
.tickRandomly()
.hardnessAndResistance(340282356779733661637539395458142568447F)
.sound(SoundType.STONE)
.setLightLevel((state) -> 11));
this.setRegistryName(name);
}
}
package com.algorithmlx.liaveres.common.registry;
import com.algorithmlx.liaveres.LiaVeres;
import com.algorithmlx.liaveres.common.object.blocks.MatterCrystalBlock;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ObjectHolder;
import java.util.Objects;
import static com.algorithmlx.liaveres.LiaVeres.ModId;
@Mod.EventBusSubscriber(modid = ModId, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModBlocks {
@ObjectHolder(ModId + ":matter_crystal_block")
public static Block MatterCrystalBlock = null;
@SubscribeEvent
public static void registerBlocks(final RegistryEvent.Register<Block> e) {
registerBlock(e, new MatterCrystalBlock("matter_crystal_block"));
}
@SubscribeEvent
public static void registerItems(final RegistryEvent.Register<Item> e) {
registerItem(e, MatterCrystalBlock);
}
private static void registerBlock(RegistryEvent.Register<Block> event, Block block) {
event.getRegistry().register(block);
}
private static void registerItem(RegistryEvent.Register<Item> event, Block block) {
event.getRegistry().register(new BlockItem(block, new Item.Properties()
.group(LiaVeres.lv_itemgroup))
.setRegistryName(Objects.requireNonNull(block.getRegistryName())));
}
}
Fabric API для кого? И миксины можно не трогатьУ фабрика отсуствует АПИ и это заменено миксинами, в которые новичку лучше не лезть
package com.algorithmlx.liaveres.common.registry;
import com.algorithmlx.liaveres.LiaVeres;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.block.Block;
import net.minecraft.block.Material;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
public class ModBlocks {
public static final Block MATTER_CRYSTAL_BLOCK = new Block(FabricBlockSettings.of(Material.METAL).breakByTool(FabricToolTags.PICKAXES, 5).requiresTool().strength(500F, 1800000000.0f).sounds(BlockSoundGroup.METAL));
public static void registerBlocks(){
Registry.register(Registry.BLOCK, new Identifier(LiaVeres.ModId, "matter_crystal_block"), MATTER_CRYSTAL_BLOCK);
}
}
Вообще на 1.14+ лучше юзать DeferredRegisterрегистрацию
Регистрация и автоматом создание блока на Ткани:package com.algorithmlx.liaveres.common.registry; import com.algorithmlx.liaveres.LiaVeres; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.block.Block; import net.minecraft.block.Material; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; public class ModBlocks { public static final Block MATTER_CRYSTAL_BLOCK = new Block(FabricBlockSettings.of(Material.METAL).breakByTool(FabricToolTags.PICKAXES, 5).requiresTool().strength(500F, 1800000000.0f).sounds(BlockSoundGroup.METAL)); public static void registerBlocks(){ Registry.register(Registry.BLOCK, new Identifier(LiaVeres.ModId, "matter_crystal_block"), MATTER_CRYSTAL_BLOCK); } }
object EmBlocks : AutoRegisterer<Block>(ForgeRegistries.BLOCKS)
{
val dragonCoal: Block by register("dragon_coal_block", defaultCoalBlock())
val naturalCoal: Block by register("natural_coal_block", defaultCoalBlock())
val phantomCoal: Block by register("phantom_coal_block", defaultCoalBlock())
val immortalCoal: Block by register("immortal_coal_block", defaultCoalBlock())
val dragonSteel: Block by register("dragon_steel_block", defaultSteelBlock())
val naturalSteel: Block by register("natural_steel_block", defaultSteelBlock())
val phantomSteel: Block by register("phantom_steel_block", defaultSteelBlock())
val immortalSteel: Block by register("immortal_steel_block", defaultSteelBlock())
val blastFurnace : Block by register("blast_furnace", BlastFurnaceBlock)
private fun defaultCoalBlock() = Block(AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(6f))
private fun defaultSteelBlock() = Block(AbstractBlock.Properties.create(Material.IRON).hardnessAndResistance(9f))
}
Который нифига не работаетлучше юзать DeferredRegister
Котлин для меня тёмный лесKotlin:object EmBlocks : AutoRegisterer<Block>(ForgeRegistries.BLOCKS) { val dragonCoal: Block by register("dragon_coal_block", defaultCoalBlock()) val naturalCoal: Block by register("natural_coal_block", defaultCoalBlock()) val phantomCoal: Block by register("phantom_coal_block", defaultCoalBlock()) val immortalCoal: Block by register("immortal_coal_block", defaultCoalBlock()) val dragonSteel: Block by register("dragon_steel_block", defaultSteelBlock()) val naturalSteel: Block by register("natural_steel_block", defaultSteelBlock()) val phantomSteel: Block by register("phantom_steel_block", defaultSteelBlock()) val immortalSteel: Block by register("immortal_steel_block", defaultSteelBlock()) val blastFurnace : Block by register("blast_furnace", BlastFurnaceBlock) private fun defaultCoalBlock() = Block(AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(6f)) private fun defaultSteelBlock() = Block(AbstractBlock.Properties.create(Material.IRON).hardnessAndResistance(9f)) }
Тебе ScreenShot скинуть?Он работает. Ты скорее всего просто не подписал его.