Skip to content

Commit

Permalink
Biomes now generate
Browse files Browse the repository at this point in the history
Portal is now partial functional
  • Loading branch information
GirafiStudios committed Oct 7, 2020
1 parent c927361 commit d00f993
Show file tree
Hide file tree
Showing 21 changed files with 152 additions and 120 deletions.
6 changes: 4 additions & 2 deletions src/main/java/com/teammetallurgy/atum/Atum.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package com.teammetallurgy.atum;

import com.mojang.serialization.Codec;
import com.teammetallurgy.atum.blocks.stone.khnumite.KhnumiteFaceBlock;
import com.teammetallurgy.atum.client.ClientHandler;
import com.teammetallurgy.atum.commands.AtumWeather;
import com.teammetallurgy.atum.init.AtumFeatures;
import com.teammetallurgy.atum.integration.IntegrationHandler;
import com.teammetallurgy.atum.misc.AtumConfig;
import com.teammetallurgy.atum.misc.AtumItemGroup;
import com.teammetallurgy.atum.network.NetworkHandler;
import com.teammetallurgy.atum.world.biome.AtumBiomeMaker;
import com.teammetallurgy.atum.world.biome.AtumBiomeProvider;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.ResourceLocation;
Expand All @@ -34,6 +35,7 @@ public class Atum {
public static final Logger LOG = LogManager.getLogger(StringUtils.capitalize(MOD_ID));
public static final ItemGroup GROUP = new AtumItemGroup();
public static final RegistryKey<World> ATUM = RegistryKey.getOrCreateKey(Registry.WORLD_KEY, new ResourceLocation(Atum.MOD_ID, "atum"));
public static final Codec<AtumBiomeProvider> ATUM_LAYERD = Registry.register(Registry.BIOME_PROVIDER_CODEC, new ResourceLocation(MOD_ID, "atum_layered"), AtumBiomeProvider.CODEC);

public Atum() {
final IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus();
Expand All @@ -46,7 +48,7 @@ public Atum() {

private void setupCommon(FMLCommonSetupEvent event) {
IntegrationHandler.INSTANCE.init();
MinecraftForge.EVENT_BUS.register(AtumFeatures.PYRAMID_STRUCTURE);
//MinecraftForge.EVENT_BUS.register(AtumFeatures.PYRAMID_STRUCTURE); //TODO Uncomment
KhnumiteFaceBlock.addDispenserSupport();
NetworkHandler.initialize();
AtumConfig.Mobs.ENTITY_TYPE.forEach(AtumBiomeMaker::initMobSpawns);
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/com/teammetallurgy/atum/api/AtumAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,12 @@ public static class Tags {

public static final IOptionalNamedTag<Item> RELIC = tag(Atum.MOD_ID, "relic");
public static final IOptionalNamedTag<Item> TOOLTIP = tag(Atum.MOD_ID, "tooltip");
public static final IOptionalNamedTag<Block> BASE_STONE_ATUM = blockTag(Atum.MOD_ID, "base_stone_atum");
public static final IOptionalNamedTag<Block> INFINIBURN = blockTag(Atum.MOD_ID, "infiniburn");
public static final IOptionalNamedTag<Block> LIMESTONE_BRICKS = blockTag(Atum.MOD_ID, "limestone_bricks");
public static final IOptionalNamedTag<Block> LINEN_BLOCKS = blockTag(Atum.MOD_ID, "linen_blocks");
public static final IOptionalNamedTag<Block> SHRUB = blockTag(Atum.MOD_ID, "shrub");
public static final IOptionalNamedTag<Block> THREADED_BLOCKS = blockTag(Atum.MOD_ID, "threaded_blocks");
public static final IOptionalNamedTag<Block> LIMESTONE_BRICKS = blockTag(Atum.MOD_ID, "limestone_bricks");
public static final IOptionalNamedTag<Block> BASE_STONE_ATUM = blockTag(Atum.MOD_ID, "base_stone_atum");

public static IOptionalNamedTag<Item> tag(String modID, String name) {
return ItemTags.createOptional(new ResourceLocation(modID, name));
Expand Down
45 changes: 20 additions & 25 deletions src/main/java/com/teammetallurgy/atum/blocks/PortalBlock.java
Original file line number Diff line number Diff line change
@@ -1,31 +1,29 @@
package com.teammetallurgy.atum.blocks;

import com.google.common.cache.LoadingCache;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.api.AtumAPI;
import com.teammetallurgy.atum.init.AtumBlocks;
import com.teammetallurgy.atum.world.teleporter.TeleporterAtumStart;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.block.material.MaterialColor;
import net.minecraft.block.pattern.BlockPattern;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.item.ItemStack;
import net.minecraft.util.CachedBlockInfo;
import net.minecraft.util.Direction;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.*;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.util.math.shapes.VoxelShapes;
import net.minecraft.world.DimensionType;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.Tags;
import net.minecraftforge.common.util.ITeleporter;

import javax.annotation.Nonnull;

Expand All @@ -48,6 +46,11 @@ public VoxelShape getCollisionShape(@Nonnull BlockState state, @Nonnull IBlockRe
return VoxelShapes.empty();
}

@Override
public boolean isReplaceable(@Nonnull BlockState state, @Nonnull Fluid fluid) {
return false;
}

public boolean trySpawnPortal(World world, BlockPos pos) {
PortalBlock.Size size = new PortalBlock.Size(world, pos);

Expand Down Expand Up @@ -79,24 +82,16 @@ public void neighborChanged(@Nonnull BlockState state, @Nonnull World world, @No
}

@Override
public void onEntityCollision(@Nonnull BlockState state, @Nonnull World world, @Nonnull BlockPos pos, Entity entity) {
/*if (!entity.isOnePlayerRiding() && !entity.isBeingRidden() && entity instanceof ServerPlayerEntity && entity.timeUntilPortal <= 0) { //TODO
ServerPlayerEntity player = (ServerPlayerEntity) entity;
final DimensionType dimension = player.getServerWorld().func_230315_m_() == AtumDimensionType.ATUM ? DimensionType.OVERWORLD : AtumDimensionType.ATUM;
changeDimension(world, (ServerPlayerEntity) entity, dimension, new TeleporterAtum());
}*/
}

public static void changeDimension(World world, ServerPlayerEntity player, DimensionType dimension, ITeleporter teleporter) {
if (!world.isRemote) {
/*player.changeDimension(dimension, teleporter); //TODO
player.timeUntilPortal = 300;
if (player.dimension == AtumDimensionType.ATUM) {
BlockPos playerPos = new BlockPos(player);
if (world.isAirBlock(playerPos) && world.getBlockState(playerPos).isSolidSide(world, playerPos, Direction.UP)) {
player.setSpawnPoint(playerPos, true, false, AtumDimensionType.ATUM);
}
}*/
public void onEntityCollision(@Nonnull BlockState state, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Entity entity) {
if (world instanceof ServerWorld && !entity.isPassenger() && !entity.isBeingRidden() && entity.isNonBoss() && entity instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) entity;
RegistryKey<World> key = world.getDimensionKey() == Atum.ATUM ? World.OVERWORLD : Atum.ATUM;
ServerWorld destWorld = ((ServerWorld) world).getServer().getWorld(key);
if (destWorld == null) {
return;
}
//player.timeUntilPortal = 300; //TODO???
player.changeDimension(destWorld, new TeleporterAtumStart()); //TODO Use correct Teleporter
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.GameRules;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.ToolType;

import javax.annotation.Nonnull;

public class LimestoneBlock extends Block {
public static final BooleanProperty HAS_SCARAB = BooleanProperty.create("contains_scarab");

public LimestoneBlock() {
super(Block.Properties.create(Material.ROCK, MaterialColor.SAND).hardnessAndResistance(1.8F, 6.0F));
super(Block.Properties.create(Material.ROCK, MaterialColor.SAND).hardnessAndResistance(1.8F, 6.0F).setRequiresTool().harvestTool(ToolType.PICKAXE).harvestLevel(0));
this.setDefaultState(this.stateContainer.getBaseState().with(HAS_SCARAB, false));
}

Expand Down
24 changes: 12 additions & 12 deletions src/main/java/com/teammetallurgy/atum/init/AtumFeatures.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,20 +60,20 @@ public class AtumFeatures {
public static final Feature<BlockClusterFeatureConfig> ANPUTS_FINGERS = register("anputs_fingers", new AnputsFingersFeature(BlockClusterFeatureConfig.field_236587_a_));

//Structures
public static final Structure<NoFeatureConfig> GIRAFI_TOMB_STRUCTURE = register("girafi_tomb", new GirafiTombStructure(NoFeatureConfig.field_236558_a_));
public static final Structure<NoFeatureConfig> LIGHTHOUSE_STRUCTURE = register("lighthouse", new LighthouseStructure(NoFeatureConfig.field_236558_a_));
public static final Structure<NoFeatureConfig> TOMB_STRUCTURE = register("tomb", new TombStructure(NoFeatureConfig.field_236558_a_));
public static final Structure<NoFeatureConfig> RUIN_STRUCTURE = register("ruin", new RuinStructure(NoFeatureConfig.field_236558_a_));
public static final Structure<NoFeatureConfig> PYRAMID_STRUCTURE = register("pyramid", new PyramidStructure(NoFeatureConfig.field_236558_a_));
public static final Structure<AtumMineshaftConfig> MINESHAFT_STRUCTURE = register("mineshaft", new AtumMineshaftStructure(AtumMineshaftConfig.CODEC));
//public static final Structure<NoFeatureConfig> GIRAFI_TOMB_STRUCTURE = register("girafi_tomb", new GirafiTombStructure(NoFeatureConfig.field_236558_a_));
//public static final Structure<NoFeatureConfig> LIGHTHOUSE_STRUCTURE = register("lighthouse", new LighthouseStructure(NoFeatureConfig.field_236558_a_));
//public static final Structure<NoFeatureConfig> TOMB_STRUCTURE = register("tomb", new TombStructure(NoFeatureConfig.field_236558_a_));
//public static final Structure<NoFeatureConfig> RUIN_STRUCTURE = register("ruin", new RuinStructure(NoFeatureConfig.field_236558_a_));
//public static final Structure<NoFeatureConfig> PYRAMID_STRUCTURE = register("pyramid", new PyramidStructure(NoFeatureConfig.field_236558_a_));
//public static final Structure<AtumMineshaftConfig> MINESHAFT_STRUCTURE = register("mineshaft", new AtumMineshaftStructure(AtumMineshaftConfig.CODEC));

//Structure Features
public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> GIRAFI_TOMB_FEATURE = register(GIRAFI_TOMB_STRUCTURE, NoFeatureConfig.field_236559_b_);
public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> LIGHTHOUSE_FEATURE = register(LIGHTHOUSE_STRUCTURE, NoFeatureConfig.field_236559_b_);
public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> TOMB_FEATURE = register(TOMB_STRUCTURE, NoFeatureConfig.field_236559_b_);
public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> RUIN_FEATURE = register(RUIN_STRUCTURE, NoFeatureConfig.field_236559_b_);
public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> PYRAMID_FEATURE = register(PYRAMID_STRUCTURE, NoFeatureConfig.field_236559_b_);
public static final StructureFeature<AtumMineshaftConfig, ? extends Structure<AtumMineshaftConfig>> MINESHAFT_FEATURE = register(MINESHAFT_STRUCTURE, new AtumMineshaftConfig(0.0F, AtumMineshaftStructure.Type.LIMESTONE)); //TODO Doing the config like this, is probably a problem
//public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> GIRAFI_TOMB_FEATURE = register(GIRAFI_TOMB_STRUCTURE, NoFeatureConfig.field_236559_b_);
//public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> LIGHTHOUSE_FEATURE = register(LIGHTHOUSE_STRUCTURE, NoFeatureConfig.field_236559_b_);
//public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> TOMB_FEATURE = register(TOMB_STRUCTURE, NoFeatureConfig.field_236559_b_);
//public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> RUIN_FEATURE = register(RUIN_STRUCTURE, NoFeatureConfig.field_236559_b_);
//public static final StructureFeature<NoFeatureConfig, ? extends Structure<NoFeatureConfig>> PYRAMID_FEATURE = register(PYRAMID_STRUCTURE, NoFeatureConfig.field_236559_b_);
//public static final StructureFeature<AtumMineshaftConfig, ? extends Structure<AtumMineshaftConfig>> MINESHAFT_FEATURE = register(MINESHAFT_STRUCTURE, new AtumMineshaftConfig(0.0F, AtumMineshaftStructure.Type.LIMESTONE)); //TODO Doing the config like this, is probably a problem

//Feature Configs
public static final BlockClusterFeatureConfig OASIS_GRASS_CONFIG = (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(AtumBlocks.OASIS_GRASS.getDefaultState()), new SimpleBlockPlacer())).tries(30).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

//@Optional.Interface(iface = "baubles.api.IBauble", modid = "baubles")
public class AmuletItem extends Item /*implements IBauble*/ { //TODO Fix when Baubles is updated. Optional stuff is gone due to J9 limitations, so Baubles will have to come up with a new system most likely
public static final boolean IS_BAUBLES_INSTALLED = ModList.get().isLoaded("baubles");
//public static final boolean IS_BAUBLES_INSTALLED = ModList.get().isLoaded("baubles");

public AmuletItem(Item.Properties properties) {
super(properties.rarity(Rarity.RARE).group(Atum.GROUP));
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/com/teammetallurgy/atum/misc/AtumRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.GatherDataEvent;
import net.minecraftforge.registries.ForgeRegistries;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -236,7 +237,7 @@ public static Biome registerBiome(Biome biome, String name) {
* @return The Biome key that was registered
*/
public static RegistryKey<Biome> registerBiomeKey(String biomeName) {
RegistryKey<Biome> biomeKey = RegistryKey.getOrCreateKey(Registry.BIOME_KEY, new ResourceLocation(biomeName));
RegistryKey<Biome> biomeKey = RegistryKey.getOrCreateKey(ForgeRegistries.Keys.BIOMES, new ResourceLocation(Atum.MOD_ID, biomeName));
BIOME_KEYS.add(biomeKey);
return biomeKey;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public static Biome makeLimestoneCrags() {
public static Biome makeLimestoneMountain() {
BiomeGenerationSettings.Builder builder = (new BiomeGenerationSettings.Builder().withSurfaceBuilder(AtumSurfaceBuilders.SANDY_LIMESTONE));
if (AtumConfig.WORLD_GEN.lighthouseEnabled.get()) {
builder.withStructure(AtumFeatures.LIGHTHOUSE_FEATURE);
//builder.withStructure(AtumFeatures.LIGHTHOUSE_FEATURE); //TODO Uncomment
}
AtumFeatures.Default.addDeadwoodTrees(builder, 0, 0.1F, 1);
addDesertWolfSpawning(new MobSpawnInfo.Builder()); //TODO Test
Expand Down Expand Up @@ -199,7 +199,7 @@ public static Biome makeSandHills() {

public static Biome makeSandPlains() {
BiomeGenerationSettings.Builder builder = (new BiomeGenerationSettings.Builder());
builder.withStructure(AtumFeatures.GIRAFI_TOMB_FEATURE);
//builder.withStructure(AtumFeatures.GIRAFI_TOMB_FEATURE); //TODO Uncomment
AtumFeatures.Default.addDeadwoodTrees(builder, 0, 0.025F, 1);
addCamelSpawning(new MobSpawnInfo.Builder()); //TODO Test
AtumFeatures.Default.addCarvers(builder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.misc.AtumRegistry;
import com.teammetallurgy.atum.world.gen.layer.AtumLayerUtil;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.registry.Registry;
Expand All @@ -13,34 +14,43 @@
import net.minecraft.world.gen.layer.Layer;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.registries.ForgeRegistries;

import javax.annotation.Nonnull;
import java.util.List;
import java.util.stream.Collectors;

public class AtumBiomeProvider extends BiomeProvider {
public static final Codec<AtumBiomeProvider> CODEC = RecordCodecBuilder.create((builder) -> {
return builder.group(Codec.LONG.fieldOf("seed").stable().forGetter((atumBiomeProvider) -> {
return atumBiomeProvider.seed;
}), Codec.BOOL.fieldOf("large_biomes").orElse(false).stable().forGetter((atumBiomeProvider) -> {
return atumBiomeProvider.largeBiomes;
}), RegistryLookupCodec.getLookUpCodec(Registry.BIOME_KEY).forGetter((atumBiomeProvider) -> {
}), RegistryLookupCodec.getLookUpCodec(ForgeRegistries.Keys.BIOMES).forGetter((atumBiomeProvider) -> {
return atumBiomeProvider.lookupRegistry;
})).apply(builder, builder.stable(AtumBiomeProvider::new));
});
private final Layer genBiomes;
private static final List<RegistryKey<Biome>> biomes = Lists.newArrayList(AtumBiomes.DEAD_OASIS, AtumBiomes.DEADWOOD_FOREST, AtumBiomes.LIMESTONE_MOUNTAINS, AtumBiomes.OASIS, AtumBiomes.SAND_DUNES, AtumBiomes.SAND_HILLS, AtumBiomes.SAND_PLAINS);
private final long seed;
private final boolean largeBiomes;
private final Registry<Biome> lookupRegistry;

public AtumBiomeProvider(long seed, boolean largeBiomes, Registry<Biome> lookupRegistry) {
super(biomes.stream().map((key) -> () -> lookupRegistry.getOrThrow(key))); //Biomes to check if it can generate structures
super(AtumRegistry.BIOME_KEYS.stream().map(AtumBiomeProvider::getBiome).collect(Collectors.toList()));
this.seed = seed;
this.largeBiomes = largeBiomes;
this.lookupRegistry = lookupRegistry;
this.genBiomes = AtumLayerUtil.getNoiseLayer(seed, largeBiomes ? 6 : 4, 4);
}

public static Biome getBiome(RegistryKey<Biome> key) {
Biome biome = ForgeRegistries.BIOMES.getValue(key.getLocation());
if (biome == null) {
throw new RuntimeException("Attempted to get unregistered biome " + key);
}
return biome;
}

@Override
@Nonnull
protected Codec<? extends BiomeProvider> getBiomeProviderCodec() {
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit d00f993

Please sign in to comment.