More Work on Neon Flies and add Auto Spawn
This commit is contained in:
@@ -6,6 +6,7 @@ import me.hypherionmc.hyperlighting.client.renderer.entity.NeonFlyRenderer;
|
||||
import me.hypherionmc.hyperlighting.common.entities.NeonFlyEntity;
|
||||
import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
|
||||
import me.hypherionmc.hyperlighting.common.init.HLEntities;
|
||||
import me.hypherionmc.hyperlighting.common.worldgen.ForgeWorldGen;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderers;
|
||||
import net.minecraft.world.entity.SpawnPlacements;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
@@ -23,16 +24,18 @@ public class HyperLightingForge {
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientInit);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonInit);
|
||||
CommonRegistration.registerAll();
|
||||
|
||||
ForgeWorldGen.registerAll(FMLJavaModLoadingContext.get().getModEventBus());
|
||||
}
|
||||
|
||||
public void clientInit(FMLClientSetupEvent event) {
|
||||
new ClientRegistration().registerAll();
|
||||
ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, screen) -> new CraterConfigScreen(CommonRegistration.config, screen)));
|
||||
|
||||
EntityRenderers.register(HLEntities.FIREFLY.get(), NeonFlyRenderer::new);
|
||||
EntityRenderers.register(HLEntities.NEONFLY.get(), NeonFlyRenderer::new);
|
||||
}
|
||||
|
||||
public void commonInit(FMLCommonSetupEvent event) {
|
||||
|
||||
SpawnPlacements.register(HLEntities.NEONFLY.get(), SpawnPlacements.Type.NO_RESTRICTIONS, Heightmap.Types.WORLD_SURFACE, NeonFlyEntity::canSpawn);
|
||||
}
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ public class ForgeCommonHandler {
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onAttributeCreate(EntityAttributeCreationEvent event) {
|
||||
event.put(HLEntities.FIREFLY.get(), NeonFlyEntity.prepareAttributes().build());
|
||||
event.put(HLEntities.NEONFLY.get(), NeonFlyEntity.prepareAttributes().build());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,32 @@
|
||||
package me.hypherionmc.hyperlighting.common.worldgen;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import me.hypherionmc.hyperlighting.Constants;
|
||||
import me.hypherionmc.hyperlighting.common.worldgen.biomemodifiers.NeonFlyBiomeModifier;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import net.minecraftforge.common.world.BiomeModifier;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.registries.RegistryObject;
|
||||
|
||||
/**
|
||||
* @author HypherionSA
|
||||
* @date 05/08/2022
|
||||
*/
|
||||
public class ForgeWorldGen {
|
||||
|
||||
public static final DeferredRegister<Codec<? extends BiomeModifier>> BIOMEMODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Constants.MOD_ID);
|
||||
|
||||
public static final RegistryObject<Codec<NeonFlyBiomeModifier>> NEONFLY_CODEC = BIOMEMODIFIERS.register(Constants.MOD_ID, () ->
|
||||
RecordCodecBuilder.create(builder -> builder.group(
|
||||
Biome.LIST_CODEC.fieldOf("biomes").forGetter(NeonFlyBiomeModifier::biomes),
|
||||
PlacedFeature.CODEC.fieldOf("feature").forGetter(NeonFlyBiomeModifier::feature)
|
||||
).apply(builder, NeonFlyBiomeModifier::new)));
|
||||
|
||||
public static void registerAll(IEventBus bus) {
|
||||
BIOMEMODIFIERS.register(bus);
|
||||
}
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package me.hypherionmc.hyperlighting.common.worldgen.biomemodifiers;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import me.hypherionmc.hyperlighting.Constants;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.HolderSet;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import net.minecraftforge.common.world.BiomeModifier;
|
||||
import net.minecraftforge.common.world.ModifiableBiomeInfo;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.registries.RegistryObject;
|
||||
|
||||
import static me.hypherionmc.hyperlighting.common.worldgen.ForgeWorldGen.NEONFLY_CODEC;
|
||||
|
||||
|
||||
/**
|
||||
* @author HypherionSA
|
||||
* @date 05/08/2022
|
||||
*/
|
||||
public record NeonFlyBiomeModifier(HolderSet<Biome> biomes, Holder<PlacedFeature> feature) implements BiomeModifier {
|
||||
|
||||
private static final RegistryObject<Codec<? extends BiomeModifier>> SERIALIZER = RegistryObject.create(new ResourceLocation(Constants.MOD_ID, "neonfly_spawn_serializer"), ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Constants.MOD_ID);
|
||||
|
||||
|
||||
@Override
|
||||
public void modify(Holder<Biome> biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Codec<? extends BiomeModifier> codec() {
|
||||
return NEONFLY_CODEC.get();
|
||||
}
|
||||
}
|
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"type": "forge:add_spawns",
|
||||
"biomes": "minecraft:swamp",
|
||||
"spawners": {
|
||||
"type": "hyperlighting:neonfly",
|
||||
"weight": 10,
|
||||
"minCount": 8,
|
||||
"maxCount": 25
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user