(Dieser Artikel gehört zu einer Reihe von Kommentaren)
Erster Artikel: Einführung Vorheriger Artikel: Artikel hinzufügen Nächster Artikel:
Fügen Sie einen Block hinzu. Ich habe den Schreibstil von 1.14.4 ein wenig geändert (dies bedeutet nicht, dass sich die Implementierungsmethode aufgrund des Versions-Upgrades geändert hat).
\src\main\java\jp\koteko\liveinwater\
├ block
│ └ Blocks.java
├ item
└ LiveInWater.java
Blocks.java
package jp.koteko.liveinwater.block;
import jp.koteko.liveinwater.LiveInWater;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import java.util.ArrayList;
import java.util.List;
@Mod.EventBusSubscriber(modid = LiveInWater.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class Blocks {
public static List<Block> blockList = new ArrayList<Block>();
public static Block WATERTREE_ROOT_BLOCK = register("watertree_root_block", new Block(AbstractBlock.Properties.create(Material.WOOD).hardnessAndResistance(2.5F).sound(SoundType.WOOD)));
private static Block register(String key, Block blockIn){
blockList.add(blockIn);
return blockIn.setRegistryName(LiveInWater.MOD_ID, key);
}
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
for (Block block : blockList) {
event.getRegistry().register(block);
}
}
}
Gehen Sie beim Blockieren genauso vor wie bei der Artikelregistrierung in Letztes Mal. Fügen Sie Elemente gleichzeitig mit der Deklaration / Initialisierung zur Liste hinzu und registrieren Sie alle Elemente in der Liste mit einer for-Schleife. Wenn es sich nur um einen nicht funktionierenden Block handelt, handelt es sich um eine Instanz der Klasse "Block". Geben Sie dem Argument des Konstruktors eine Instanz von "AbstractBlock.Properties".
\src\main\java\jp\koteko\liveinwater\
├ block
├ item
│ └ Items.java
└ LiveInWater.java
Items.java
package jp.koteko.liveinwater.item;
import jp.koteko.liveinwater.LiveInWater;
import jp.koteko.liveinwater.block.Blocks;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import java.util.ArrayList;
import java.util.List;
@Mod.EventBusSubscriber(modid = LiveInWater.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class Items {
public static List<Item> itemList = new ArrayList<Item>();
public static final Item WATERTREE_ROOT = register("watertree_root", new Item((new Item.Properties()).group(ItemGroup.MATERIALS)));
public static final Item WATERTREE_ROOT_BLOCK = register("watertree_root_block", Blocks.WATERTREE_ROOT_BLOCK, ItemGroup.BUILDING_BLOCKS);
private static Item register(String key, Item itemIn) {
itemList.add(itemIn);
return itemIn.setRegistryName(LiveInWater.MOD_ID, key);
}
private static Item register(String key, Block blockIn, ItemGroup itemGroupIn) {
return register(key, new BlockItem(blockIn, (new Item.Properties()).group(itemGroupIn)));
}
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
for (Item item : itemList) {
event.getRegistry().register(item);
}
}
}
Da der Block gleichzeitig auch als Element vorhanden ist, registrieren Sie das Element ebenfalls.
Die Methode "register" wurde überladen (Definieren einer Methode mit demselben Namen und unterschiedlichen Argumenten), um das Registrieren von Blockelementen zu vereinfachen. Wenn Sie den registrierten Namen, den Block und die Artikelgruppe übergeben, wird ein "BlockItem" mit der darin festgelegten Gruppe erstellt und in das "Register" des Artikels geworfen.
BlockItem
ist eine Unterklasse von Item
, und der Block als Item ist eine Instanz dieser Klasse.
\src\main\resources
└ assets
└ liveinwater
├ blockstates
│ └ watertree_root_block.json
├ lang
│ └ en_us.json
│ └ ja_jp.json
├ models
│ ├ block
│ │ └ watertree_root_block.json
│ └ item
│ └ watertree_root_block.json
└ textures
├ block
│ └ watertree_root_block.png
└ item
lang\en_us.json
{
"item.liveinwater.watertree_root_block": "WaterTree Root"
}
lang\ja_jp.json
{
"item.liveinwater.watertree_root_block": "Wasserbaumwurzel"
}
blockstates\watertree_root_block.json
{
"variants": {
"": { "model": "liveinwater:block/watertree_root_block" }
}
}
" model ":" [MOD_ID] / [model file path] "
Wenn Sie das Modell abhängig vom Status des Blocks ändern möchten (z. B. einen Block mit einer Richtung oder einen Verbindungsblock wie einen Zaun), bearbeiten Sie diese Datei. Wenn Sie sie jedoch nicht benötigen, sieht sie folgendermaßen aus.
models\block\watertree_root_block.json
{
"parent": "block/cube_all",
"textures": {
"all": "liveinwater:block/watertree_root_block"
}
}
[MOD_ID]: [Texturdateipfad]
parent
gibt block / cube_all
an.
Dies ist ein einfaches kubisches Modell, das dieselbe Textur über die gesamte Oberfläche widerspiegelt.
models\item\watertree_root_block.json
{
"parent": "liveinwater:block/watertree_root_block"
}
Geben Sie für das Blockelement die Modelldatei des Blocks in "Eltern" an.
watertree_root_block.png Erstellen und platzieren Sie eine Textur.
Seit Minecraft 1.9 wurde die Routentabelle als Mechanismus zur Verwaltung von Drops eingeführt. Hiermit werden auch Blocktropfen gesetzt.
\src\main\resources
├ assets
└ data
└ liveinwater
└ loot_tables
└ blocks
└ watertree_root_block.json
Platzieren Sie blocks \ watertree_root_block.json
im Ordner data \ liveinwater
, der in Vorheriger Artikel vorbereitet wurde.
watertree_root_block.json
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
],
"entries": [
{
"type": "minecraft:item",
"name": "liveinwater:watertree_root_block"
}
]
},
{
"rolls": 1,
"conditions": [
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
}
],
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:binomial_with_bonus_count",
"parameters": {
"extra": 3,
"probability": 0.5714286
}
}
],
"name": "liveinwater:watertree_root"
}
]
},
{
"rolls": 1,
"conditions": [
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
}
],
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:dirt"
}
]
}
]
}
Ein Beispiel ist "Wenn Sie es mit dem Silk Touch-Werkzeug zerstören, wird der Block selbst ( watertree_root_block
) fallen gelassen, andernfalls werden ein Bodenblock (schmutz
) und ein Gegenstand ( watertree_root
) zufällig fallen gelassen. " Detaillierte Erläuterungen finden Sie auf der Referenzseite.
(Ich habe verschiedene Dinge ausprobiert, aber es gibt eine doppelte Beschreibung und es kann sich um einen redundanten Schreibstil handeln.)
Minimale Konfigurationsroutentabelle zum Löschen des Blocks
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "[MOD_ID]:[ITEM_NAME]"
}
]
}
]
}
type
wählt aus, worum es in der Routentabelle geht. Jeder Pool, der "Pools" gegeben wird, wird nacheinander angewendet, und das Ergebnis wird aus jedem Eintrag ausgewählt, der "Einträgen" durch die Lotterie der "Rolls" -Zeiten gegeben wird. Angegeben, um "Name" vom Typ "Typ" im Eintrag zurückzugeben.
Starte das Spiel und überprüfe. Es wurde bestätigt, dass der Block und sein Gegenstand hinzugefügt werden konnten, die Anzeige korrekt war und der Block selbst mit Seidenberührung fallen gelassen wurde und der Boden und Gegenstand mit Nicht-Seidenberührung fallen gelassen wurden.
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [2. Fügen Sie einen Block hinzu] Minecraft 1.14.4 Forge Mod Teil 4 erstellen [Blöcke hinzufügen] [Routentabelle - Minecraft-Wiki](https://minecraft-ja.gamepedia.com/%E3%83%AB%E3%83%BC%E3%83%88%E3%83%86%E3%83%BC % E3% 83% 96% E3% 83% AB) loot_tables_1.14.md · GitHub
Recommended Posts