More Work on Neon Flies and add Auto Spawn

This commit is contained in:
2022-08-06 01:33:35 +02:00
parent 00a7aa8fb0
commit d628631949
18 changed files with 145 additions and 81 deletions

View File

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

View File

@@ -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());
}
}

View File

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

View File

@@ -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();
}
}

View File

@@ -0,0 +1,10 @@
{
"type": "forge:add_spawns",
"biomes": "minecraft:swamp",
"spawners": {
"type": "hyperlighting:neonfly",
"weight": 10,
"minCount": 8,
"maxCount": 25
}
}