提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
3行目: 3行目:
 
{{チュートリアルカテゴリー|difficulty=0|type=Block}}
 
{{チュートリアルカテゴリー|difficulty=0|type=Block}}
 
ワールド上で鉱石のようにブロックを生成する方法
 
ワールド上で鉱石のようにブロックを生成する方法
 +
 +
動作確認済みのバージョン:1.16.3
 
==鉱石を生成する==
 
==鉱石を生成する==
  
11行目: 13行目:
  
 
import net.fabricmc.api.ModInitializer;
 
import net.fabricmc.api.ModInitializer;
import net.minecraft.block.Blocks;
+
import net.minecraft.item.Item;
 +
import net.minecraft.block.Block;
 +
import net.minecraft.item.BlockItem;
 +
import net.minecraft.item.ItemGroup;
 
import net.minecraft.util.Identifier;
 
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.BuiltinRegistries;
 
 
import net.minecraft.util.registry.Registry;
 
import net.minecraft.util.registry.Registry;
import net.minecraft.world.gen.decorator.Decorator;
 
import net.minecraft.world.gen.decorator.RangeDecoratorConfig;
 
import net.minecraft.world.gen.feature.ConfiguredFeature;
 
import net.minecraft.world.gen.feature.Feature;
 
import net.minecraft.world.gen.feature.OreFeatureConfig;
 
  
 
public class SampleMod implements ModInitializer
 
public class SampleMod implements ModInitializer
32行目: 31行目:
 
         .configure(new OreFeatureConfig(
 
         .configure(new OreFeatureConfig(
 
           OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
 
           OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
           Blocks.OAK_LOG.getDefaultState(),//オークの原木を指定
+
           Blocks.OAK_LOG.getDefaultState(),
 
           9)) //鉱石(生成物)の最大サイズ
 
           9)) //鉱石(生成物)の最大サイズ
 
         .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(
 
         .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(
48行目: 47行目:
 
         }
 
         }
 
     }
 
     }
}
 
</source>
 
*SampleDefaultBiomeFeaturesMixin.java
 
<source lang = "java">
 
package com.example.ore.mixin;
 
 
import net.minecraft.world.biome.GenerationSettings;
 
import net.minecraft.world.gen.GenerationStep;
 
import net.minecraft.world.gen.feature.DefaultBiomeFeatures;
 
 
import com.example.ore.SampleMod;
 
 
import org.spongepowered.asm.mixin.Mixin;
 
import org.spongepowered.asm.mixin.injection.At;
 
import org.spongepowered.asm.mixin.injection.Inject;
 
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 
 
@Mixin(DefaultBiomeFeatures.class)
 
public class SampleDefaultBiomeFeaturesMixin {
 
  @Inject(method = "addDefaultOres(Lnet/minecraft/world/biome/GenerationSettings$Builder;)V", at = @At("TAIL"))
 
  private static void addDefaultOres(GenerationSettings.Builder builder, CallbackInfo ci) {
 
    builder.feature(GenerationStep.Feature.UNDERGROUND_ORES, SampleMod.ORE_OAK_LOG_OVERWORLD);
 
  }
 
 
}
 
}
 
</source>
 
</source>
80行目: 56行目:
 
   "package": "com.example.ore.mixin",
 
   "package": "com.example.ore.mixin",
 
   "compatibilityLevel": "JAVA_8",
 
   "compatibilityLevel": "JAVA_8",
  "$comment": "↓SampleDefaultBiomeFeaturesMixinをミックスインに追加",
 
 
   "mixins": [
 
   "mixins": [
     "SampleDefaultBiomeFeaturesMixin"
+
     "DefaultBiomeFeaturesMixin"
 
   ],
 
   ],
 
   "client": [
 
   "client": [
93行目: 68行目:
 
</source>
 
</source>
 
==解説==
 
==解説==
*SampleMod.java
 
ここでの構成は、「src/java/main/com/example/ore/SampleMod.java」となっている。
 
 
<source lang = "java">
 
<source lang = "java">
public static ConfiguredFeature<?, ?> ORE_OAK_LOG_OVERWORLD = Feature.ORE
+
public static final Block SAMPLE_BLOCK = new Block(FabricBlockSettings.of(Material.METAL).build());
        .configure(new OreFeatureConfig(
 
          OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
 
          Blocks.OAK_LOG.getDefaultState(),
 
          9))
 
        .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(
 
          0,
 
          0,
 
          64)))
 
        .spreadHorizontally()
 
        .repeat(20);
 
 
</source>
 
</source>
Blocks.OAK_LOGでminecraft:oak_logを指定している。<br />
+
素材を金属として設定。
追加したブロックにしたいなら、Blocks.OAK_LOGをクラス名.ブロック(例:SampleMod.SAMPLE_BLOCK)に指定すればよい。
+
ブロックを作成。
*SampleDefaultBiomeFeaturesMixin.java
+
<source lang = "java">
ここでの構成は、「src/java/main/com/example/ore/mixin/SampleDefaultBiomeFeaturesMixin.java」となっている。
+
Registry.register(Registry.BLOCK, new Identifier(MOD_ID, "sample_block"), SAMPLE_BLOCK);
*samplemod.mixins.json
+
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "sample_block"), new BlockItem(SAMPLE_BLOCK, new Item.Settings().group(ItemGroup.MISC)));
ここでの構成は、「src/resources/samplemod.mixins.json」となっている。
 
名前は(MOD ID).mixins.jsonにして保存すること。
 
<source lang = "json">
 
  "mixins": [
 
    "SampleDefaultBiomeFeaturesMixin"
 
  ],
 
 
</source>
 
</source>
ここで「SampleDefaultBiomeFeaturesMixin.java」を指定している。
+
ブロックIDとアイテムIDの登録。
詳しくは[[Fabric/Mixin|Mixin]]を参照すること。
+
ブロックをアイテムとしてクリエイティブタグ、ItemGroup.MISC(その他)に登録。

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)