Skip to content

Commit

Permalink
Initial biome work
Browse files Browse the repository at this point in the history
  • Loading branch information
GirafiStudios committed Mar 5, 2022
1 parent a05344b commit 22eb316
Show file tree
Hide file tree
Showing 21 changed files with 708 additions and 405 deletions.
8 changes: 7 additions & 1 deletion src/main/java/com/teammetallurgy/atum/Atum.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.teammetallurgy.atum;

import com.mojang.serialization.Codec;
import com.teammetallurgy.atum.api.AtumAPI;
import com.teammetallurgy.atum.blocks.stone.khnumite.KhnumiteFaceBlock;
import com.teammetallurgy.atum.client.ClientHandler;
Expand All @@ -10,12 +11,15 @@
import com.teammetallurgy.atum.misc.AtumRegistry;
import com.teammetallurgy.atum.network.NetworkHandler;
import com.teammetallurgy.atum.world.SandstormHandler;
import com.teammetallurgy.atum.world.biome.AtumBiomeSource;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.properties.WoodType;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.dimension.LevelStem;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.eventbus.api.IEventBus;
Expand All @@ -40,7 +44,9 @@ public class Atum {
public static final Logger LOG = LogManager.getLogger(StringUtils.capitalize(MOD_ID));
public static final CreativeModeTab GROUP = new AtumItemGroup();
public static final ResourceKey<Level> ATUM = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(MOD_ID, "atum"));
//public static final Codec<AtumBiomeProvider> ATUM_LAYERD = Registry.register(Registry.BIOME_SOURCE, new ResourceLocation(MOD_ID, "atum_layered"), AtumBiomeProvider.CODEC); //TODO?
public static final ResourceKey<LevelStem> ATUM_LEVEL = ResourceKey.create(Registry.LEVEL_STEM_REGISTRY, new ResourceLocation(Atum.MOD_ID, "atum"));
public static final ResourceKey<DimensionType> ATUM_TYPE = ResourceKey.create(Registry.DIMENSION_TYPE_REGISTRY, new ResourceLocation(Atum.MOD_ID, "atum"));
public static final Codec<AtumBiomeSource> ATUM_MULTI_NOISE = Registry.register(Registry.BIOME_SOURCE, new ResourceLocation(MOD_ID, "atum_multi_noise"), AtumBiomeSource.CODEC);
public static final WoodType PALM = WoodType.create("atum_palm");
public static final WoodType DEADWOOD = WoodType.create("atum_deadwood");

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.teammetallurgy.atum.blocks.vegetation;

import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.init.AtumBlocks;
import com.teammetallurgy.atum.init.AtumItems;
import net.minecraft.core.BlockPos;
Expand Down Expand Up @@ -47,7 +48,7 @@ public void randomTick(@Nonnull BlockState state, ServerLevel world, @Nonnull Bl

if (!hasWater(world, pos)) {
Optional<ResourceKey<Biome>> biomeKey = world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(world.getBiome(pos));
if (biomeKey.isPresent() /*&& biomeKey.get() != AtumBiomes.OASIS*/) { //TODO Uncomment when biomes are re-added
if (biomeKey.isPresent() && biomeKey.get() != AtumBiomes.OASIS) {
world.setBlock(pos, AtumBlocks.SAND.defaultBlockState(), 2);
}
} else if (Block.isFaceFull(world.getBlockState(pos.above()).getCollisionShape(world, pos), Direction.DOWN)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.mojang.blaze3d.vertex.VertexFormat;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.api.IFogReductionItem;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.init.AtumItems;
import com.teammetallurgy.atum.items.artifacts.nuit.NuitsVanishingItem;
import com.teammetallurgy.atum.misc.AtumConfig;
Expand Down Expand Up @@ -56,7 +57,7 @@ public static void renderFog(EntityViewRenderEvent.FogDensity event) {
fogDensity += (float) (62 - player.blockPosition().getY()) * 0.00333F;
}
Optional<ResourceKey<Biome>> biome = world.getBiomeName(entity.blockPosition());
if (biome.isPresent() /*&& biome.get() == AtumBiomes.OASIS*/) { //TODO Uncomment when biomes are re-added
if (biome.isPresent() && biome.get() == AtumBiomes.OASIS) {
fogDensity = fogDensity / 2.0F;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.*;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.items.artifacts.ArtifactArmor;
import com.teammetallurgy.atum.misc.AtumConfig;
import com.teammetallurgy.atum.world.SandstormHandler;
Expand Down Expand Up @@ -100,7 +101,7 @@ private static void renderSand(PoseStack poseStack, float partialTicks, int... l
BlockPos playerPos = new BlockPos(player.getX(), player.getY(), player.getZ());
boolean sky = player.level.canSeeSkyFromBelowWater(playerPos);
Optional<ResourceKey<Biome>> biomeKey = world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(player.level.getBiome(playerPos));
if (!sky || playerPos.getY() < 50 /*|| biomeKey.isPresent() && biomeKey.get() == AtumBiomes.OASIS*/) { //TODO Uncomment when biomes are re-added
if (!sky || playerPos.getY() < 50 || biomeKey.isPresent() && biomeKey.get() == AtumBiomes.OASIS) {
intensity -= 0.006F * partialTicks;
intensity = Math.max(0, intensity);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@
import com.teammetallurgy.atum.blocks.wood.CrateBlock;
import com.teammetallurgy.atum.entity.ai.goal.CamelCaravanGoal;
import com.teammetallurgy.atum.entity.projectile.CamelSpitEntity;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.init.AtumEntities;
import com.teammetallurgy.atum.init.AtumItems;
import com.teammetallurgy.atum.inventory.container.entity.CamelContainer;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
Expand Down Expand Up @@ -52,6 +55,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Optional;
import java.util.UUID;

public class CamelEntity extends AbstractHorse implements RangedAttackMob, MenuProvider {
Expand Down Expand Up @@ -196,9 +200,9 @@ private int getCamelVariantBiome() {
Biome biome = this.level.getBiome(this.blockPosition());
int chance = this.random.nextInt(100);

/*Optional<ResourceKey<Biome>> optional = level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(biome);
Optional<ResourceKey<Biome>> optional = level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(biome);

if (optional.isPresent()) { //TODO Require functional biomes
if (optional.isPresent()) {
ResourceKey<Biome> biomeKey = optional.get();
if (biomeKey.equals(AtumBiomes.SAND_PLAINS)) {
return chance <= 50 ? 0 : 5;
Expand All @@ -211,9 +215,9 @@ private int getCamelVariantBiome() {
} else {
return 0;
}
} else {*/
} else {
return Mth.nextInt(random, 0, 5);
//}
}
}

@OnlyIn(Dist.CLIENT)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.teammetallurgy.atum.entity.animal;

import com.teammetallurgy.atum.api.AtumAPI;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.init.AtumEntities;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
Expand Down Expand Up @@ -54,7 +55,7 @@ protected int getRandomRabbitType(LevelAccessor world) {

Optional<ResourceKey<Biome>> optional = world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(biome);

/*if (optional.isPresent()) { //TODO Uncomment when biomes are re-added
if (optional.isPresent()) {
ResourceKey<Biome> biomeKey = optional.get();
if (biomeKey.equals(AtumBiomes.SAND_PLAINS)) {
return i <= 80 ? 0 : 1;
Expand All @@ -77,9 +78,9 @@ protected int getRandomRabbitType(LevelAccessor world) {
} else {
return 0;
}
} else {*/
} else {
return 0;
//}
}
}

@Override
Expand Down
63 changes: 51 additions & 12 deletions src/main/java/com/teammetallurgy/atum/init/AtumBiomes.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,32 @@
/*
package com.teammetallurgy.atum.init;

import com.google.common.collect.Lists;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.misc.AtumConfig;
import com.teammetallurgy.atum.misc.AtumRegistry;
import com.teammetallurgy.atum.world.biome.AtumBiomeMaker;
import com.teammetallurgy.atum.world.biome.BiomeRegion;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.biome.Biome;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ForgeRegistries;

@Mod.EventBusSubscriber(modid = Atum.MOD_ID)
public class AtumBiomes { //TODO
public static final ResourceKey<Biome> DEAD_OASIS = registerBiome(AtumBiomeMaker.makeDeadOasis("dead_oasis"), "dead_oasis", BiomeRegion.STRANGE_SANDS);
import java.util.List;

@Mod.EventBusSubscriber(modid = Atum.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class AtumBiomes {
public static final List<Biome> BIOMES = Lists.newArrayList();
private static final List<ResourceKey<Biome>> BIOME_KEYS = Lists.newArrayList();
public static final ResourceKey<Biome> DEAD_OASIS = registerBiome(AtumBiomeMaker.makeDeadOasis("dead_oasis"), "dead_oasis", BiomeRegion.STRANGE_SANDS); //Sub Biome
public static final ResourceKey<Biome> DENSE_WOODS = registerBiome(AtumBiomeMaker.makeDenseWoods("dense_woods"), "dense_woods", 10, BiomeRegion.DESSICATED_WOODS);
public static final ResourceKey<Biome> SPARSE_WOODS = registerBiome(AtumBiomeMaker.makeSparseWoods("sparse_woods"), "sparse_woods", 10, BiomeRegion.DESSICATED_WOODS);
public static final ResourceKey<Biome> DRIED_RIVER = registerBiome(AtumBiomeMaker.makeDriedRiver("dried_river"), "dried_river", BiomeRegion.STRANGE_SANDS);
public static final ResourceKey<Biome> DRIED_RIVER = registerBiome(AtumBiomeMaker.makeDriedRiver("dried_river"), "dried_river", BiomeRegion.STRANGE_SANDS); //River
public static final ResourceKey<Biome> LIMESTONE_CRAGS = registerBiome(AtumBiomeMaker.makeLimestoneCrags("limestone_crags"), "limestone_crags", 3, BiomeRegion.LIMESTONE_PEAKS);
public static final ResourceKey<Biome> LIMESTONE_MOUNTAINS = registerBiome(AtumBiomeMaker.makeLimestoneMountain("limestone_mountains"), "limestone_mountains", 5, BiomeRegion.LIMESTONE_PEAKS);
public static final ResourceKey<Biome> OASIS = registerBiome(AtumBiomeMaker.makeOasis("oasis"), "oasis", BiomeRegion.STRANGE_SANDS);
public static final ResourceKey<Biome> OASIS = registerBiome(AtumBiomeMaker.makeOasis("oasis"), "oasis", BiomeRegion.STRANGE_SANDS); //Sub Biome
public static final ResourceKey<Biome> SAND_DUNES = registerBiome(AtumBiomeMaker.makeSandDunes("sand_dunes"), "sand_dunes", 15, BiomeRegion.STRANGE_SANDS);
public static final ResourceKey<Biome> SAND_HILLS = registerBiome(AtumBiomeMaker.makeSandHills("sand_hills"), "sand_hills", 10, BiomeRegion.STRANGE_SANDS);
public static final ResourceKey<Biome> SAND_PLAINS = registerBiome(AtumBiomeMaker.makeSandPlains("sand_plains"), "sand_plains", 30, BiomeRegion.STRANGE_SANDS);
Expand All @@ -29,15 +36,15 @@ public static ResourceKey<Biome> registerBiome(Biome biome, String biomeName, Bi
}

public static ResourceKey<Biome> registerBiome(Biome biome, String biomeName, int weight, BiomeRegion biomeRegion) {
AtumRegistry.registerBiome(biome, biomeName);
registerBiome(biome, biomeName);
if (weight > 0) {
new AtumConfig.Biome(AtumConfig.BUILDER, biomeName, weight); //Write config
}
return AtumRegistry.registerBiomeKey(biomeName);
return registerBiomeKey(biomeName);
}

public static void addBiomeTags() {
for (ResourceKey<Biome> biome : AtumRegistry.BIOME_KEYS) {
for (ResourceKey<Biome> biome : BIOME_KEYS) {
BiomeDictionary.addTypes(biome, BiomeTags.ATUM);
if (biome != AtumBiomes.OASIS) {
BiomeDictionary.addTypes(biome, BiomeDictionary.Type.HOT, BiomeDictionary.Type.SANDY, BiomeDictionary.Type.SPARSE, BiomeDictionary.Type.DRY);
Expand All @@ -48,15 +55,47 @@ public static void addBiomeTags() {
BiomeDictionary.addTypes(SPARSE_WOODS, BiomeDictionary.Type.FOREST);
BiomeDictionary.addTypes(DRIED_RIVER, BiomeDictionary.Type.RIVER);
BiomeDictionary.addTypes(LIMESTONE_CRAGS, BiomeDictionary.Type.HILLS, BiomeDictionary.Type.RARE);
BiomeDictionary.addTypes(LIMESTONE_MOUNTAINS, BiomeDictionary.Type.MOUNTAIN);
BiomeDictionary.addTypes(LIMESTONE_MOUNTAINS, BiomeDictionary.Type.PEAK);
BiomeDictionary.addTypes(OASIS, BiomeTags.OASIS, BiomeDictionary.Type.LUSH, BiomeDictionary.Type.WET, BiomeDictionary.Type.RARE);
BiomeDictionary.addTypes(SAND_DUNES, BiomeDictionary.Type.HILLS);
BiomeDictionary.addTypes(SAND_HILLS, BiomeDictionary.Type.HILLS);
BiomeDictionary.addTypes(SAND_PLAINS, BiomeDictionary.Type.PLAINS);
}

@SubscribeEvent
public static void registerBiomes(RegistryEvent.Register<Biome> event) {
for (Biome biome : BIOMES) {
event.getRegistry().register(biome);
}
AtumBiomes.addBiomeTags();
}

/**
* Registers a biome
*
* @param biome The biome to be registered
* @param name The name to register the biome with
* @return The Biome that was registered
*/
public static void registerBiome(Biome biome, String name) {
biome.setRegistryName(new ResourceLocation(Atum.MOD_ID, name));
BIOMES.add(biome);
}

/**
* Registers a biome key
*
* @param biomeName The name to register the biome key with
* @return The Biome key that was registered
*/
public static ResourceKey<Biome> registerBiomeKey(String biomeName) {
ResourceKey<Biome> biomeKey = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(Atum.MOD_ID, biomeName));
BIOME_KEYS.add(biomeKey);
return biomeKey;
}

public static class BiomeTags {
public static final BiomeDictionary.Type ATUM = BiomeDictionary.Type.getType("ATUM");
public static final BiomeDictionary.Type OASIS = BiomeDictionary.Type.getType("OASIS");
}
}*/
}
40 changes: 0 additions & 40 deletions src/main/java/com/teammetallurgy/atum/misc/AtumRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@
import net.minecraft.core.particles.ParticleType;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.data.DataGenerator;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Mob;
Expand All @@ -33,7 +31,6 @@
import net.minecraft.world.item.SignItem;
import net.minecraft.world.item.StandingAndWallBlockItem;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
Expand All @@ -46,7 +43,6 @@
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
import net.minecraftforge.network.PlayMessages;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
import net.minecraftforge.registries.RegistryBuilder;
Expand All @@ -62,8 +58,6 @@ public class AtumRegistry {
//Registry lists
private static final List<Item> ITEMS = Lists.newArrayList();
private static final List<Block> BLOCKS = Lists.newArrayList();
public static final List<Biome> BIOMES = Lists.newArrayList();
public static final List<ResourceKey<Biome>> BIOME_KEYS = Lists.newArrayList();
private static final List<EntityType<?>> ENTITIES = Lists.newArrayList();
private static final List<ParticleType<?>> PARTICLES = Lists.newArrayList();
public static final List<EntityType<? extends CustomArrow>> ARROWS = Lists.newArrayList();
Expand Down Expand Up @@ -268,31 +262,6 @@ public static <T extends CustomArrow> EntityType<T> registerArrow(String name, E
return entityType;
}

/**
* Registers a biome
*
* @param biome The biome to be registered
* @param name The name to register the biome with
* @return The Biome that was registered
*/
public static Biome registerBiome(Biome biome, String name) {
biome.setRegistryName(new ResourceLocation(Atum.MOD_ID, name));
BIOMES.add(biome);
return biome;
}

/**
* Registers a biome key
*
* @param biomeName The name to register the biome key with
* @return The Biome key that was registered
*/
public static ResourceKey<Biome> registerBiomeKey(String biomeName) {
ResourceKey<Biome> biomeKey = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(Atum.MOD_ID, biomeName));
BIOME_KEYS.add(biomeKey);
return biomeKey;
}

/**
* Registers a particle
*
Expand Down Expand Up @@ -351,15 +320,6 @@ public static void registerBlocks(RegistryEvent.Register<Block> event) {
AtumBlocks.setBlockInfo();
}

@SubscribeEvent
public static void registerBiomes(RegistryEvent.Register<Biome> event) {
//new AtumBiomes();
for (Biome biome : BIOMES) {
event.getRegistry().register(biome);
}
//AtumBiomes.addBiomeTags(); //TODO Uncomment when biomes are re-added
}

@SubscribeEvent
public static void registerEntities(RegistryEvent.Register<EntityType<?>> event) {
new AtumEntities();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.google.common.collect.Lists;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.blocks.SandLayersBlock;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.init.AtumBlocks;
import com.teammetallurgy.atum.world.gen.structure.StructureHelper;
import net.minecraft.core.BlockPos;
Expand Down Expand Up @@ -57,7 +58,7 @@ public static boolean canPlaceSandLayer(WorldGenLevel world, BlockPos pos) {
BlockState state = world.getBlockState(pos);
BlockState stateDown = world.getBlockState(pos.below());
Optional<ResourceKey<Biome>> biomeKey = world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(world.getBiome(pos));
return (biomeKey.isPresent() /*&& biomeKey.get() != AtumBiomes.OASIS*/) //TODO Uncomment when biomes are re-added
return (biomeKey.isPresent() && biomeKey.get() != AtumBiomes.OASIS)
&& !StructureHelper.doesChunkHaveStructure(world, pos, StructureFeature.VILLAGE)
&& world.isEmptyBlock(pos.above())
&& state.getMaterial().isReplaceable()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ private boolean canPlaceSandAt(ServerLevel serverLevel, BlockPos pos) {
}

public void updateWeather(Level world) {
if (world instanceof ServerLevel && !world.isClientSide) {
ServerLevel serverLevel = (ServerLevel) world;
if (world instanceof ServerLevel serverLevel && !world.isClientSide) {
ServerLevelData worldInfo = serverLevel.getServer().getWorldData().overworldData();
int cleanWeatherTime = worldInfo.getClearWeatherTime();

Expand Down

0 comments on commit 22eb316

Please sign in to comment.