[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un bloc]

(Cet article fait partie d'une série d'articles de commentaires)

Premier article: Introduction Article précédent: Ajouter un élément Article suivant:

Ajouter un bloc

Ajoutez un bloc. J'ai un peu changé le style d'écriture de 1.14.4 (cela ne signifie pas que la méthode d'implémentation a changé en raison de la mise à jour de la version).

Bloquer l'inscription

\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);
        }
    }
}

Faites de même pour le blocage que l'enregistrement de l'élément dans Dernière fois. Ajoutez des éléments à List en même temps que la déclaration / initialisation, et register () tous les éléments de la liste avec une boucle for. S'il ne s'agit que d'un bloc non fonctionnel, ce sera une instance de la classe Block. Donnez une instance de ʻAbstractBlock.Properties` comme argument du constructeur.

Enregistrement d'article

\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);
        }
    }
}

Comme le bloc existe également en tant qu'élément en même temps, enregistrez également l'élément. Surcharge de la méthode register (définissant une méthode avec le même nom avec des arguments différents) pour faciliter l'enregistrement des éléments de bloc. Si vous passez le nom enregistré, le bloc et le groupe d'éléments, il créera un BlockItem avec le groupe défini à l'intérieur et le lancera dans le registre de l'élément. BlockItem est une sous-classe de ʻItem`, et les blocs en tant qu'éléments sont des instances de cette classe.

paramètres des ressources

\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": "Racine d'arbre d'eau"
}

blockstates\watertree_root_block.json


{
  "variants": {
    "": { "model": "liveinwater:block/watertree_root_block" }
  }
}

" model ":" [MOD_ID] / [chemin du fichier de modèle] " Si vous souhaitez modifier le modèle en fonction de l'état du bloc (par exemple, un bloc avec une direction ou un bloc de connexion tel qu'une clôture), modifiez ce fichier, mais si vous n'en avez pas besoin, il ressemble à ceci.

models\block\watertree_root_block.json


{
  "parent": "block/cube_all",
  "textures": {
    "all": "liveinwater:block/watertree_root_block"
  }
}

[MOD_ID]: [chemin du fichier de texture] parent spécifie block / cube_all. Il s'agit d'un modèle cubique simple qui reflète la même texture sur toute la surface.

models\item\watertree_root_block.json


{
  "parent": "liveinwater:block/watertree_root_block"
}

Pour l'élément de bloc, spécifiez le fichier modèle du bloc dans parent.

watertree_root_block.png Créez et placez une texture.

Paramètres de la table de routage

Depuis Minecraft 1.9, la table de routage a été introduite comme mécanisme de gestion des baisses. Les chutes de blocs sont également définies à l'aide de cela.

\src\main\resources
   ├ assets
   └ data
      └ liveinwater
         └ loot_tables
            └ blocks
               └ watertree_root_block.json

Placez blocks \ watertree_root_block.json dans le dossier data \ liveinwater préparé dans Article précédent.

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"
        }
      ]
    }
  ]
}

Un exemple est "Si vous le détruisez avec l'outil Silk Touch, déposez le bloc lui-même ( watertree_root_block), sinon déposez un bloc de sol (dirt) et un objet ( watertree_root) au hasard. " Des explications détaillées seront données sur la page de référence. (J'ai essayé diverses choses, mais il y a une description en double et il peut s'agir d'un style d'écriture redondant.)

La configuration minimale ressemble à ceci.

Table de routage de configuration minimale pour supprimer le bloc lui-même


{
  "type": "minecraft:block",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "[MOD_ID]:[ITEM_NAME]"
        }
      ]
    }
  ]
}

type sélectionne l'objet de la table de routage. Chaque pool donné aux «pools» est appliqué en séquence, et le résultat est sélectionné à partir de chaque entrée donnée aux «entrées» par la loterie des «rouleaux». Spécifié pour renvoyer «nom» de «type» dans l'entrée.

Vérification

Démarrez le jeu et vérifiez. キャプチャ.PNG Il a été confirmé que le bloc et son article pouvaient être ajoutés, que l'affichage était correct, et le bloc lui-même a été abandonné avec un toucher de soie et la terre et l'article ont été abandonnés sans toucher de soie.

référence

[Java] Créons un Minecraft Mod 1.14.4 [2. Ajoutez un bloc] Création de Minecraft 1.14.4 Forge Mod, partie 4 [Ajout de blocs] [Route Table - 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

Article suivant

Recommended Posts

[Java] Créons un Minecraft Mod 1.14.4 [2. Ajouter un bloc]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un bloc]
[Java] Créons un Minecraft Mod 1.14.4 [4. Ajouter des outils]
[Java] Créons un Minecraft Mod 1.14.4 [5. Ajouter une armure]
[Java] Créons un Minecraft Mod 1.14.4 [7. Add progress]
[Java] Créons un Minecraft Mod 1.14.4 [6. Ajouter une recette]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un élément]
[Java] Créons un Minecraft Mod 1.14.4 [3. Ajouter un onglet de création]
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
[Java] Créons un Minecraft Mod 1.14.4 [99. Mod output]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [9. Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [8. Ajouter et générer du minerai]
[Java] Créons un Minecraft Mod 1.14.4 [0. Fichier de base]
[Java] Créons un Minecraft Mod 1.14.4 [édition supplémentaire]
[Java] Créons un Minecraft Mod 1.16.1 [Fichier de base]
Créons un environnement de développement Java (mise à jour)
Créons un framework Web ultra-simple avec Java
[Java] Créer un filtre
Créer une méthode java [Memo] [java11]
[Java] Créer un fichier temporaire
Comment créer une image de conteneur légère pour les applications Java
Création d'un MOB à l'aide du plug-in Minecraft Java Mythicmobs | Préparation 1
Créons une application TODO en Java 4 Implémentation de la fonction de publication
Comment signer Minecraft MOD
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créons une application TODO en Java 8 Implémentation des fonctions d'édition
Créer un projet Java à l'aide d'Eclipse
Créons une application TODO avec Java 1 Brève explication de MVC
Créons une application TODO en Java 5 Changer l'affichage de TODO
Créer un serveur fluentd pour les tests
Installons Docker sur Windows 10 et créons un environnement de vérification pour CentOS 8!
Allons-y avec Watson Assistant (anciennement Conversation) ⑤ Créez un chatbot avec Watson + Java + Slack
[Java] Créer et appliquer un masque des diapositives
Comment créer un référentiel Maven pour 2020
Créer une application TODO dans Java 7 Créer un en-tête
[Java] Créons une bibliothèque d'accès à la base de données!
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Java (add2)
Java (ajouter)
Créons une bibliothèque d'opérations de stockage de fichiers polyvalente (?) En faisant abstraction du stockage / acquisition de fichiers avec Java
J'ai créé un outil Diff pour les fichiers Java
Comment créer une base de données H2 n'importe où
Une histoire sur la prise en charge de Java 11 pour les services Web
Créer un CSR avec des informations étendues en Java
Créez un tableau d'affichage simple avec Java + MySQL
Créons une API REST à l'aide de WildFly Swarm.
[Windows] [IntelliJ] [Java] [Tomcat] Créer un environnement pour Tomcat 9 avec IntelliJ
java j'ai essayé de casser un simple bloc
[Java] Créez quelque chose comme une API de recherche de produits
Créer un onglet personnalisé avec SwiftUI 2.0
[Java] Créer une collection avec un seul élément
Créez votre propre application Android pour l'apprentissage Java
Créer Scala Seq à partir de Java, faire de Scala Seq une liste Java
Créez une fonction d'extension pour Burp. ~ Ajoutez simplement un onglet ~
Créer un outil pour l'identification des noms dans Salesforce