(Dieser Artikel gehört zu einer Reihe von Kommentaren)
Erster Artikel: Einführung Vorheriger Artikel: 1. Elemente hinzufügen Nächster Artikel: 3. Registerkarte "Creative hinzufügen"
Fügen Sie einen Block hinzu. Das Hinzufügen von Blöcken ähnelt dem Hinzufügen von Elementen, ist also ** einfach **! Verwenden Sie die Methode zum Erstellen einer Klasse, die Blöcke auf dieselbe Weise wie für Elemente verwaltet.
\src\main\java\jp\koteko\example_mod\
├ ExampleMod.java
└ lists
├ BlockList.java
└ ItemList.java
BlockList.java
package jp.koteko.example_mod.lists;
import jp.koteko.example_mod.ExampleMod;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(modid = ExampleMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class BlockList {
public static Block ExampleBlock = new Block(Block.Properties.create(Material.IRON))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"));
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
event.getRegistry().registerAll(
ExampleBlock
);
}
@SubscribeEvent
public static void registerBlockItems(RegistryEvent.Register<Item> event) {
event.getRegistry().registerAll(
new BlockItem(ExampleBlock, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"))
);
}
}
Übrigens, lassen Sie uns die von Anfang an vorbereitete Registrierungsbeschreibung in der Hauptdatei löschen.
ExampleMod.java
//...
public class ExampleMod
{
//...
//Von hier löschen
//@Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
//public static class RegistryEvents {
// @SubscribeEvent
// public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
// // register a new block here
// LOGGER.info("HELLO from Register Block");
// }
//}
//Bisher gelöscht
}
Jetzt starten wir das Spiel. Blöcke wurden hinzugefügt!
Wie Sie dem Code entnehmen können, entspricht das Hinzufügen eines Blocks im Wesentlichen dem Hinzufügen eines Elements. Beachten Sie jedoch, dass ein Block sowohl als Block als auch als Element vorhanden ist, also seine Registrierung Ist auch notwendig.
Der Teil, um den Block zu registrieren
public class BlockList {
//Deklarieren und initialisieren Sie den Block als Mitgliedsvariable
// Material.IRON spezifiziert so etwas wie Eisen als Blockeigenschaft
//Die mit setRegistryName zu registrierende Block-ID wird festgelegt.
// "example_block"Block-ID, in der der Teil von niedriger registriert ist
public static Block ExampleBlock = new Block(Block.Properties.create(Material.IRON))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"));
//Registrierung blockieren
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
event.getRegistry().registerAll(
ExampleBlock
);
}
//Artikelregistrierung
//Da es eine BlockItem-Klasse gibt, lautet das Argument, das als neu registriert werden soll(Block, Item.Propaties)
@SubscribeEvent
public static void registerBlockItems(RegistryEvent.Register<Item> event) {
event.getRegistry().registerAll(
new BlockItem(ExampleBlock, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"))
);
}
}
\src\main\resources
└ assets
└ example_mod
├ blockstates
│ └ example_block.json
├ lang
│ └ en_us.json
│ └ ja_jp.json
├ models
│ ├ block
│ │ └ example_block.json
│ └ item
│ └ example_block.json
└ textures
├ blocks
│ └ example_block.png
└ items
blockstates\example_block.json
{
"variants": {
"": { "model": "example_mod:block/example_block" }
}
}
"MOD_ID: block / [Modelldateiname]" " Sie können die Textur für jeden Statuswert des Blocks festlegen, sie wird hier jedoch weggelassen.
en_us.json
{
"item.example_mod.example_ingot": "Example Ingot",
"block.example_mod.example_block": "Example Block"
}
ja_jp.json
{
"item.example_mod.example_ingot": "Beispiel Barren",
"block.example_mod.example_block": "Beispielblock"
}
models\block\example_block.json
{
"parent": "block/cube_all",
"textures": {
"all": "example_mod:blocks/example_block"
}
}
Geben Sie einen einfachen Cube mit "parent" an: "block / cube_all". Geben Sie die Textur auf der gesamten Oberfläche mit "all" an.
models\item\example_block.json
{
"parent": "example_mod:block/example_block"
}
Geben Sie die Blockmodelldatei in "übergeordnet" an.
Versuche das Spiel erneut zu starten.
** Artikel wurden hinzugefügt! ** **.
F. Auch wenn ich es kaputt mache, wird es kein Gegenstand? ** A. Lass uns plündern. ** **.
\src\main\resources
├ assets
└ data
└ example_mod
└ loot_tables
└ blocks
└ example_block.json
example_block.json
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "example_mod:example_block"
}
]
}
]
}
F. Ich möchte es als Lichtquelle verwenden
F. Ich möchte das Zerstörungswerkzeug einstellen
** A. Beachten Sie net.minecraft.block.Block
. ** **.
Block.java
// ...
public static class Properties {
private Material material;
private MaterialColor mapColor;
private boolean blocksMovement = true;
private SoundType soundType = SoundType.STONE;
private int lightValue;
private float resistance;
private float hardness;
// ...
// ...
public Block.Properties doesNotBlockMovement() {
this.blocksMovement = false;
return this;
}
public Block.Properties slipperiness(float slipperinessIn) {
this.slipperiness = slipperinessIn;
return this;
}
public Block.Properties sound(SoundType soundTypeIn) {
this.soundType = soundTypeIn;
return this;
}
public Block.Properties lightValue(int lightValueIn) {
this.lightValue = lightValueIn;
return this;
}
public Block.Properties hardnessAndResistance(float hardnessIn, float resistanceIn) {
this.hardness = hardnessIn;
this.resistance = Math.max(0.0F, resistanceIn);
return this;
}
// ...
Das dem Konstruktor gegebene Argument "Block.Properties" enthält den Wert, der sich auf die Eigenschaften des Blocks bezieht. Accessoren für diese Werte sind ebenfalls definiert. Ein Beispiel wird unten mit Bezug auf diese gezeigt.
BlockList.java
public class BlockList {
public static Block ExampleBlock = new Block(
Block.Properties.create(Material.IRON)
.hardnessAndResistance(2.0f, 3.0f)
.lightValue(15)
.harvestLevel(3)
.harvestTool(ToolType.SHOVEL))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"));
}
F. Ich möchte eine Funktion hinzufügen A. Der Kommentarartikel ist aufgrund des Entwicklungsinhalts unentschlossen.
Minecraft 1.14.4 Forge Mod Teil 4 erstellen [Blöcke hinzufügen] [Solved][1.14.2] Custom Blocks not dropping Items - Modder Support - Forge Forums
3. Registerkarte "Creative hinzufügen"
Recommended Posts