Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create the worldgen module #2737

Merged
merged 2 commits into from
Feb 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,19 @@
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.event.terraingen.OreGenEvent;
import net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType;
import net.minecraftforge.fml.common.IWorldGenerator;
import net.minecraftforge.fml.common.eventhandler.Event.Result;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

import com.google.common.collect.ImmutableSet;

import java.util.Random;
import java.util.Set;

import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.*;

public class WorldGeneratorImpl implements IWorldGenerator {

public static final WorldGeneratorImpl INSTANCE = new WorldGeneratorImpl();

private static final Set<EventType> ORE_EVENT_TYPES = ImmutableSet.of(COAL, DIAMOND, GOLD, IRON, LAPIS, REDSTONE,
QUARTZ, EMERALD);
public static final int GRID_SIZE_X = 3;
public static final int GRID_SIZE_Z = 3;

private WorldGeneratorImpl() {}

@SubscribeEvent(priority = EventPriority.HIGH)
public static void onOreGenerate(OreGenEvent.GenerateMinable event) {
EventType eventType = event.getType();
if (ConfigHolder.worldgen.disableVanillaOres && ORE_EVENT_TYPES.contains(eventType)) {
event.setResult(Result.DENY);
}
}

@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
IChunkProvider chunkProvider) {
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/gregtech/modules/GregTechModules.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package gregtech.modules;

import gregtech.api.GTValues;
import gregtech.api.modules.IModuleContainer;

public class GregTechModules implements IModuleContainer {
public final class GregTechModules implements IModuleContainer {

public static final String MODULE_CORE = "core";
public static final String MODULE_TOOLS = "tools";
public static final String MODULE_INTEGRATION = "integration";
public static final String MODULE_WORLDGEN = "worldgen";

// Integration modules
public static final String MODULE_JEI = "jei_integration";
Expand All @@ -21,6 +23,6 @@ public class GregTechModules implements IModuleContainer {

@Override
public String getID() {
return "gregtech";
return GTValues.MODID;
}
}
53 changes: 53 additions & 0 deletions src/main/java/gregtech/worldgen/WorldgenModule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package gregtech.worldgen;

import gregtech.api.GTValues;
import gregtech.api.modules.GregTechModule;
import gregtech.common.ConfigHolder;
import gregtech.modules.BaseGregTechModule;
import gregtech.modules.GregTechModules;

import net.minecraftforge.event.terraingen.OreGenEvent;
import net.minecraftforge.fml.common.eventhandler.Event;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;

import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;

import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.*;

@GregTechModule(
moduleID = GregTechModules.MODULE_WORLDGEN,
containerID = GTValues.MODID,
name = "GregTech Worldgen",
description = "GregTech Worldgen Module.")
public class WorldgenModule extends BaseGregTechModule {

public static final Logger LOGGER = LogManager.getLogger("GregTech Worldgen");

private static final Set<OreGenEvent.GenerateMinable.EventType> VANILLA_ORE_GEN_EVENT_TYPES = EnumSet.of(
COAL, DIAMOND, GOLD, IRON, LAPIS, REDSTONE, QUARTZ, EMERALD);

@Override
public @NotNull Logger getLogger() {
return LOGGER;
}

@Override
public @NotNull List<Class<?>> getOreGenBusSubscribers() {
return Collections.singletonList(WorldgenModule.class);
}

@SubscribeEvent(priority = EventPriority.HIGH)
public static void onGenerateMineable(@NotNull OreGenEvent.GenerateMinable event) {
if (ConfigHolder.worldgen.disableVanillaOres && VANILLA_ORE_GEN_EVENT_TYPES.contains(event.getType())) {
event.setResult(Event.Result.DENY);
}
}
}