[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Block hinzufügen]

(Dieser Artikel gehört zu einer Reihe von Kommentaren)

Erster Artikel: Einführung Vorheriger Artikel: Artikel hinzufügen Nächster Artikel:

Block hinzufügen

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).

Registrierung blockieren

\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".

Artikelregistrierung

\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.

Ressourceneinstellungen

\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.

Routentabelleneinstellungen

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.)

Die Mindestkonfiguration sieht folgendermaßen aus.

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.

Bestätigung

Starte das Spiel und überprüfe. キャプチャ.PNG 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.

Referenz

[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

Nächster Artikel

Recommended Posts

[Java] Erstellen wir einen Minecraft Mod 1.14.4 [2. Fügen Sie einen Block hinzu]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Block hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [4. Tools hinzufügen]
[Java] Lass uns einen Minecraft Mod 1.14.4 erstellen [5. Rüstung hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [7. Fortschritt hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [6. Rezept hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Element hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [3. Registerkarte "Creative hinzufügen"]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Einführung]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Einführung]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [99. Mod-Ausgabe]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Bäume hinzufügen und generieren]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [9. Bäume hinzufügen und generieren]
[Java] Lass uns einen Minecraft Mod 1.14.4 erstellen [8. Erz hinzufügen und erzeugen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [0. Basisdatei]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Extra Edition]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Basisdatei]
Lassen Sie uns eine Java-Entwicklungsumgebung erstellen (Aktualisierung)
Lassen Sie uns mit Java ein supereinfaches Webframework erstellen
[Java] Erstellen Sie einen Filter
Erstellen Sie eine Java-Methode [Memo] [java11]
[Java] Erstellen Sie eine temporäre Datei
So erstellen Sie ein leichtes Container-Image für Java-Apps
Erstellen eines MOB mit dem Minecraft Java Mythicmobs-Plug-In | Vorbereitung 1
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Wie unterschreibe ich Minecraft MOD?
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Erstellen Sie ein Java-Projekt mit Eclipse
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Erstellen Sie einen fließenden Server zum Testen
Lassen Sie uns Docker unter Windows 10 installieren und eine Überprüfungsumgebung für CentOS 8 erstellen!
Los geht's mit Watson Assistant (ehemals Conversation) ⑤ Erstellen Sie einen Chatbot mit Watson + Java + Slack
[Java] Erstellen und Anwenden eines Folienmasters
So erstellen Sie ein Maven-Repository für 2020
Erstellen Sie eine TODO-App in Java 7 Create Header
[Java] Erstellen wir eine DB-Zugriffsbibliothek!
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Java (add2)
Java (hinzufügen)
Erstellen wir eine vielseitige Dateispeicher (?) - Operationsbibliothek, indem wir die Dateispeicherung / -erfassung mit Java abstrahieren
Ich habe ein Diff-Tool für Java-Dateien erstellt
So erstellen Sie überall eine H2-Datenbank
Eine Geschichte über die Java 11-Unterstützung für Webdienste
Erstellen Sie eine CSR mit erweiterten Informationen in Java
Erstellen Sie mit Java + MySQL ein einfaches Bulletin Board
Erstellen wir eine REST-API mit WildFly Swarm.
[Windows] [IntelliJ] [Java] [Tomcat] Erstellen Sie mit IntelliJ eine Umgebung für Tomcat 9
Java Ich habe versucht, einen einfachen Block zu brechen
[Java] Erstellen Sie so etwas wie eine Produktsuch-API
Erstellen Sie mit SwiftUI 2.0 eine benutzerdefinierte Registerkartenansicht
[Java] Erstellen Sie eine Sammlung mit nur einem Element
Erstellen Sie Ihre eigene Android-App für das Java-Lernen
Erstellen Sie Scala Seq aus Java, machen Sie Scala Seq zu einer Java-Liste
Erstellen Sie eine Erweiterungsfunktion für Burp. ~ Einfach Tab hinzufügen ~
Erstellen Sie in Salesforce ein Tool zur Namensidentifizierung