森の自習記録
Zoomの自習会場
自習グラフ
自習室の使い方 あえたやさんの自習
package oremod.world.feature;
import net.minecraft.core.Registry;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.levelgen.VerticalAnchor;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.placement.*;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import oremod.OreMod;
import java.util.List;
import java.util.function.Supplier;
public class ModPlacedFeatures {
// 登録は DeferredRegister ではなく Registry.register を使う(PlacedFeature は IForgeRegistryEntry を実装していないため)
public static PlacedFeature MY_ORE_PLACED;
public static void registerPlacedFeatures(FMLCommonSetupEvent event) {
// ModConfiguredFeatures.MY_ORE は RegistryObject>
// holder を取り出す(存在しない場合は例外)
ConfiguredFeature, ?> configured = ModConfiguredFeatures.MY_ORE_KEY. // RegistryObject#get() を使う
// PlacedFeature を作成
MY_ORE_KEY = new PlacedFeature(
(Supplier>) // 1.18 の環境では ConfiguredFeature の holder を直接渡す API もあるが、
// Registry.register に登録するために ConfiguredFeature をそのまま使う実装にする
// (ここでは簡潔のためコンストラクタに configured を渡す形にしている)
configured,
List.of(
CountPlacement.of(20),
InSquarePlacement.spread(),
HeightRangePlacement.uniform(
VerticalAnchor.absolute(0),
VerticalAnchor.absolute(64)
),
BiomeFilter.biome()
)
);
// BuiltinRegistries.PLACED_FEATURE を使って登録する(ここがポイント)
ResourceLocation id = new ResourceLocation(OreMod.MODID, "my_ore_placed");
Registry.register(BuiltinRegistries.PLACED_FEATURE, id, MY_ORE_PLACED);
};
}