Forge actually loads to worlds now

This commit is contained in:
dfsek committed 2021-04-29 21:48:32 -07:00
1 parent ee1c889d54
commit 756619edb6
4 files changed
+19 -12

No files matched your search

@@ -53,11 +53,13 @@ import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.WorldSettingsImport;
import net.minecraft.util.text.StringTextComponent; import net.minecraft.util.text.StringTextComponent;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.BiomeGenerationSettings; import net.minecraft.world.biome.BiomeGenerationSettings;
import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.IFeatureConfig; import net.minecraft.world.gen.feature.IFeatureConfig;
import net.minecraft.world.gen.feature.NoFeatureConfig; import net.minecraft.world.gen.feature.NoFeatureConfig;
@@ -93,7 +95,7 @@ import java.util.Map;
@Mod("terra") @Mod("terra")
@Mod.EventBusSubscriber(modid = "terra", bus = Mod.EventBusSubscriber.Bus.MOD) @Mod.EventBusSubscriber(modid = "terra", bus = Mod.EventBusSubscriber.Bus.MOD)
public class TerraForgePlugin implements TerraPlugin { public class TerraForgePlugin implements TerraPlugin {
public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(NoFeatureConfig.CODEC); public static final PopulatorFeature POPULATOR_FEATURE = (PopulatorFeature) new PopulatorFeature(NoFeatureConfig.CODEC).setRegistryName("terra", "terra");
public static final ConfiguredFeature<?, ?> POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configured(IFeatureConfig.NONE).decorated(DecoratedPlacement.NOPE.configured(NoPlacementConfig.INSTANCE)); public static final ConfiguredFeature<?, ?> POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configured(IFeatureConfig.NONE).decorated(DecoratedPlacement.NOPE.configured(NoPlacementConfig.INSTANCE));
private static TerraForgePlugin INSTANCE; private static TerraForgePlugin INSTANCE;
@@ -135,10 +137,6 @@ public class TerraForgePlugin implements TerraPlugin {
public TerraForgePlugin() { public TerraForgePlugin() {
if(INSTANCE != null) throw new IllegalStateException("Only one TerraPlugin instance may exist."); if(INSTANCE != null) throw new IllegalStateException("Only one TerraPlugin instance may exist.");
INSTANCE = this; INSTANCE = this;
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::setup);
MinecraftForge.EVENT_BUS.register(this);
} }
public static TerraForgePlugin getInstance() { public static TerraForgePlugin getInstance() {
@@ -151,7 +149,12 @@ public class TerraForgePlugin implements TerraPlugin {
@SubscribeEvent @SubscribeEvent
public static void register(RegistryEvent.Register<Biome> event) { public static void register(RegistryEvent.Register<Biome> event) {
INSTANCE.registry.forEach(pack -> pack.getBiomeRegistry().forEach((id, biome) -> event.getRegistry().register(createBiome(biome)))); // Register all Terra biomes. INSTANCE.setup(); // Setup now because we need the biomes, and this event happens after blocks n stuff
INSTANCE.registry.forEach(pack -> pack.getBiomeRegistry().forEach((id, biome) -> {
Biome minecraftBiome = createBiome(biome);
INSTANCE.logger().info("Registering biome " + minecraftBiome.getRegistryName());
event.getRegistry().register(minecraftBiome);
})); // Register all Terra biomes.
} }
@SubscribeEvent @SubscribeEvent
@@ -160,6 +163,11 @@ public class TerraForgePlugin implements TerraPlugin {
event.getRegistry().register(TerraLevelType.FORGE_WORLD_TYPE); event.getRegistry().register(TerraLevelType.FORGE_WORLD_TYPE);
} }
@SubscribeEvent
public static void registerPop(RegistryEvent.Register<Feature<?>> event) {
event.getRegistry().register(POPULATOR_FEATURE);
}
private static Biome createBiome(BiomeBuilder biome) { private static Biome createBiome(BiomeBuilder biome) {
BiomeTemplate template = biome.getTemplate(); BiomeTemplate template = biome.getTemplate();
Map<String, Integer> colors = template.getColors(); Map<String, Integer> colors = template.getColors();
@@ -204,10 +212,10 @@ public class TerraForgePlugin implements TerraPlugin {
.specialEffects(vanilla.getSpecialEffects()) .specialEffects(vanilla.getSpecialEffects())
.mobSpawnSettings(vanilla.getMobSettings()) .mobSpawnSettings(vanilla.getMobSettings())
.generationSettings(generationSettings.build()) .generationSettings(generationSettings.build())
.build(); .build().setRegistryName("terra", createBiomeID(template.getPack(), template.getID()));
} }
public void setup(FMLCommonSetupEvent event) { public void setup() {
this.dataFolder = Paths.get("config", "Terra").toFile(); this.dataFolder = Paths.get("config", "Terra").toFile();
saveDefaultConfig(); saveDefaultConfig();
config.load(this); config.load(this);
@@ -223,9 +231,6 @@ public class TerraForgePlugin implements TerraPlugin {
logger.info("Loaded packs."); logger.info("Loaded packs.");
Registry.register(Registry.CHUNK_GENERATOR, new ResourceLocation("terra:terra"), ForgeChunkGeneratorWrapper.CODEC);
Registry.register(Registry.BIOME_SOURCE, new ResourceLocation("terra:terra"), TerraBiomeSource.CODEC);
CommandManager manager = new TerraCommandManager(this); CommandManager manager = new TerraCommandManager(this);
try { try {
CommandUtil.registerAll(manager); CommandUtil.registerAll(manager);
@@ -9,6 +9,8 @@ import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.ChunkGenerator; import net.minecraft.world.gen.ChunkGenerator;
import net.minecraft.world.gen.DimensionSettings; import net.minecraft.world.gen.DimensionSettings;
import net.minecraftforge.common.world.ForgeWorldType; import net.minecraftforge.common.world.ForgeWorldType;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.registries.ForgeRegistries;
public class TerraLevelType implements ForgeWorldType.IChunkGeneratorFactory { public class TerraLevelType implements ForgeWorldType.IChunkGeneratorFactory {
public static final TerraLevelType TERRA_LEVEL_TYPE = new TerraLevelType(); public static final TerraLevelType TERRA_LEVEL_TYPE = new TerraLevelType();
@@ -10,7 +10,6 @@ import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryLookupCodec; import net.minecraft.util.registry.RegistryLookupCodec;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.feature.StructureFeature;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Objects; import java.util.Objects;
@@ -34,6 +34,7 @@ public class ForgeBlockData implements BlockData {
@Override @Override
public String getAsString() { public String getAsString() {
/* /*
StringBuilder data = new StringBuilder(Registry.BLOCK.getId(delegate.getBlock()).toString()); StringBuilder data = new StringBuilder(Registry.BLOCK.getId(delegate.getBlock()).toString());
if(!delegate.getProperties().isEmpty()) { if(!delegate.getProperties().isEmpty()) {