[Java] Créons un Minecraft Mod 1.14.4 [2. Ajouter un bloc]

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

Premier article: Introduction Article précédent: 1. Ajouter des éléments Article suivant: 3. Add Creative Tab

Ajouter un bloc

Ajoutez un bloc. L'ajout de blocs est similaire à l'ajout d'éléments, c'est donc ** facile **! Prenez la méthode de création d'une classe qui gère les blocs de la même manière que pour les éléments.

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

Soit dit en passant, supprimons la description d'enregistrement préparée depuis le début dans le fichier principal.

ExampleMod.java


//...
public class ExampleMod
{
    //...

    //Supprimer d'ici
    //@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");
    //    }
    //}
    //Supprimé jusqu'à présent
}

Maintenant, commençons le jeu. キャプチャ.PNG キャプチャ2.PNG Des blocs ont été ajoutés!

Comme vous pouvez le voir dans le code, l'ajout d'un bloc est fondamentalement identique à l'ajout d'un élément, mais une chose à noter est qu'un bloc existe en tant que bloc ainsi qu'en tant qu'élément, donc son enregistrement Est également nécessaire.

Une brève description du code

La pièce pour enregistrer le bloc


public class BlockList {
    //Déclarer et initialiser le bloc en tant que variable membre
    // Material.IRON spécifie quelque chose comme le fer comme propriété de bloc
    //L'ID de bloc à enregistrer avec setRegistryName est défini.
    // "example_block"ID de bloc dans lequel la partie de est enregistrée plus bas
    public static Block ExampleBlock = new Block(Block.Properties.create(Material.IRON))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"));

    //Bloquer l'inscription
    @SubscribeEvent
    public static void registerBlocks(RegistryEvent.Register<Block> event) {
        event.getRegistry().registerAll(
                ExampleBlock
        );
    }

    //Enregistrement d'article
    //Puisqu'il existe une classe BlockItem, l'argument à enregistrer comme nouveau avec this est(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"))
        );
    }
}
___ Après avoir confirmé que le bloc a été ajouté en toute sécurité, définissez les paramètres détaillés. Notez qu'en plus de chaque élément au moment de l'élément, le réglage des «états de bloc» est augmenté.
\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: bloc / [nom du fichier de modèle] " ` Vous pouvez définir la texture pour chaque valeur d'état du bloc, mais elle est omise ici.

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": "Exemple de lingot",
  "block.example_mod.example_block": "Exemple de bloc"
}

models\block\example_block.json


{
  "parent": "block/cube_all",
  "textures": {
    "all": "example_mod:blocks/example_block"
  }
}

Spécifiez un cube simple avec "" parent ":" block / cube_all "`. Spécifiez la texture sur toute la surface avec «" tout "».

models\item\example_block.json


{
  "parent": "example_mod:block/example_block"
}

Spécifiez le fichier de modèle de bloc dans " parent ".

Essayez de relancer le jeu. キャプチャ.PNG キャプチャ.PNG

** Des articles ont été ajoutés! ** **

développement

Q. Même si je le casse, il ne devient pas un objet? ** A. Soyons loottable. ** **

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

Q. Je veux l'utiliser comme source de lumière Q. Je souhaite configurer l'outil de destruction ** A. Observez 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;
      }
// ...

L'argument Block.Properties donné au constructeur contient la valeur liée aux caractéristiques du bloc. Des accesseurs pour ces valeurs sont également définis. Un exemple est présenté ci-dessous en référence à ces derniers.

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

キャプチャ.PNG

Q. Je veux ajouter une fonction A. L'article de commentaire est indécis en raison du contenu de développement.

référence

Création de Minecraft 1.14.4 Forge Mod, partie 4 [Ajout de blocs] [Solved][1.14.2] Custom Blocks not dropping Items - Modder Support - Forge Forums

Article suivant

3. Ajouter l'onglet Création

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 [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 [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 [8. Ajouter et générer du minerai]
[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 processus chronométré avec la minuterie de Java! !!
Créons un framework Web ultra-simple avec Java
[Java] Créer un filtre
[Bases de Java] Créons un triangle avec une instruction for
[Java] Créons un Minecraft Mod 1.14.4 [3. Ajouter un onglet de création]
[No.003] Créer un écran de liste de commandes pour le client
[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 [1. Ajouter un élément]
[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]
Créer une méthode java [Memo] [java11]
[Java] Créer un fichier temporaire
[Java twig] Créer un combinateur d'analyseur pour l'analyse syntaxique de descente récursive
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!
[Java twig] Créer un combinateur d'analyseur pour une analyse de syntaxe descendante récursive (également prendre des notes)
Allons-y avec Watson Assistant (anciennement Conversation) ⑤ Créez un chatbot avec Watson + Java + Slack
Créer un environnement de développement d'applications Web Java avec Docker pour Mac Part2
[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
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
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.
java j'ai essayé de casser un simple bloc
[Java] Créez quelque chose comme une API de recherche de produits
Essayez de créer un babillard en Java
Comment créer des pages pour le tableau "kaminari"
Créer un onglet personnalisé avec SwiftUI 2.0
Créez votre propre application Android pour l'apprentissage Java
Créer Scala Seq à partir de Java, faire de Scala Seq une liste Java