aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bloodasp/galacticgreg/ModRegisterer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bloodasp/galacticgreg/ModRegisterer.java')
-rw-r--r--src/main/java/bloodasp/galacticgreg/ModRegisterer.java283
1 files changed, 283 insertions, 0 deletions
diff --git a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java
new file mode 100644
index 0000000000..889cee0ca6
--- /dev/null
+++ b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java
@@ -0,0 +1,283 @@
+package bloodasp.galacticgreg;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.init.Blocks;
+import net.minecraft.world.gen.ChunkProviderEnd;
+
+import bloodasp.galacticgreg.api.AsteroidBlockComb;
+import bloodasp.galacticgreg.api.Enums;
+import bloodasp.galacticgreg.api.Enums.AllowedBlockPosition;
+import bloodasp.galacticgreg.api.Enums.DimensionType;
+import bloodasp.galacticgreg.api.GTOreTypes;
+import bloodasp.galacticgreg.api.ModContainer;
+import bloodasp.galacticgreg.api.ModDBMDef;
+import bloodasp.galacticgreg.api.ModDimensionDef;
+import bloodasp.galacticgreg.api.SpecialBlockComb;
+
+/**
+ * In this class, you'll find everything you need in order to tell GGreg what to do and where. Everything is done in
+ * here. If you're trying to use anything else, you're probably doing something wrong (Or I forgot to add it. In that
+ * case, find me on github and create an issue please)
+ */
+public class ModRegisterer {
+
+ /**
+ * Just a helper to convert a single element to a list
+ *
+ * @param pDef
+ * @return
+ */
+ private static List<ModDBMDef> singleToList(ModDBMDef pDef) {
+ List<ModDBMDef> tLst = new ArrayList<>();
+ tLst.add(pDef);
+ return tLst;
+ }
+
+ private static Method registerModContainer;
+
+ /**
+ * Use loose binding of the register-method. Should be enough to provide support for GGreg without the requirement
+ * to have it in a modpack at all
+ *
+ * @param pModContainer
+ */
+ public static void registerModContainer(ModContainer pModContainer) {
+ /*
+ * try { registerModContainer.invoke(null, pModContainer); } catch (Exception e) { e.printStackTrace(); }
+ */
+ }
+
+ /**
+ * Try to get the instance of GalacticGregs registry in order to register stuff
+ *
+ * @return
+ */
+ public boolean Init() {
+ return false;
+ /*
+ * try { Class gGregRegistry = Class.forName("bloodasp.galacticgreg.registry.GalacticGregRegistry");
+ * registerModContainer = gGregRegistry.getMethod("registerModContainer", ModContainer.class); return true; }
+ * catch (Exception e) { // GalacticGreg is not installed or something is wrong return false; }
+ */
+ }
+
+ public void Register() {
+ /*
+ * if (GalacticGreg.GalacticConfig.RegisterVanillaDim) registerModContainer(Setup_Vanilla()); if
+ * (GalacticGreg.GalacticConfig.RegisterGalacticCraftCore) registerModContainer(Setup_GalactiCraftCore()); if
+ * (GalacticGreg.GalacticConfig.RegisterGalacticCraftPlanets) registerModContainer(Setup_GalactiCraftPlanets());
+ * if (GalacticGreg.GalacticConfig.RegisterGalaxySpace) registerModContainer(Setup_GalaxySpace());
+ */
+ }
+
+ /**
+ * Vanilla MC (End Asteroids)
+ */
+ private ModContainer Setup_Vanilla() {
+ // --- Mod Vanilla (Heh, "mod")
+ ModContainer modMCVanilla = new ModContainer("Vanilla");
+
+ // If you happen to have an asteroid dim, just skip the blocklist, and setDimensionType() to
+ // DimensionType.Asteroid
+ // also don't forget to add at least one asteroid type, or nothing will generate!
+ ModDimensionDef dimEndAsteroids = new ModDimensionDef(
+ "EndAsteroids",
+ ChunkProviderEnd.class,
+ DimensionType.Asteroid);
+
+ dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack));
+ dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite));
+ dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite));
+ dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.EndStone));
+
+ // These Blocks will randomly be generated
+ dimEndAsteroids.addSpecialAsteroidBlock(new SpecialBlockComb(Blocks.glowstone));
+ dimEndAsteroids.addSpecialAsteroidBlock(new SpecialBlockComb(Blocks.lava, AllowedBlockPosition.AsteroidCore));
+
+ modMCVanilla.addDimensionDef(dimEndAsteroids);
+
+ return modMCVanilla;
+ }
+
+ /**
+ * Mod GalactiCraft Just another setup based on existing classes, due the fact that we're working with GalactiCraft
+ */
+ public static ModContainer Setup_GalactiCraftCore() {
+ ModContainer modGCraftCore = new ModContainer("GalacticraftCore");
+ ModDBMDef DBMMoon = new ModDBMDef("tile.moonBlock", 4);
+
+ ModDimensionDef tMoonDim = new ModDimensionDef(
+ "Moon",
+ "micdoodle8.mods.galacticraft.core.world.gen.ChunkProviderMoon",
+ Enums.DimensionType.Planet,
+ singleToList(DBMMoon));
+ modGCraftCore.addDimensionDef(tMoonDim);
+
+ return modGCraftCore;
+ }
+
+ /**
+ * As GalactiCraftPlanets is an optional mod, don't hardlink it here
+ *
+ * @return
+ */
+ private ModContainer Setup_GalactiCraftPlanets() {
+ ModContainer modGCraftPlanets = new ModContainer("GalacticraftMars");
+ ModDBMDef DBMMars = new ModDBMDef("tile.mars", 9);
+ ModDimensionDef dimMars = new ModDimensionDef(
+ "Mars",
+ "micdoodle8.mods.galacticraft.planets.mars.world.gen.ChunkProviderMars",
+ DimensionType.Planet,
+ singleToList(DBMMars));
+
+ // Overwrite ore blocks on mars with red granite ones. This will default to regular stone if not set
+ dimMars.setStoneType(GTOreTypes.RedGranite);
+ modGCraftPlanets.addDimensionDef(dimMars);
+
+ ModDimensionDef dimAsteroids = new ModDimensionDef(
+ "Asteroids",
+ "micdoodle8.mods.galacticraft.planets.asteroids.world.gen.ChunkProviderAsteroids",
+ DimensionType.Asteroid);
+ dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite));
+ dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite));
+ dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack));
+ modGCraftPlanets.addDimensionDef(dimAsteroids);
+
+ return modGCraftPlanets;
+ }
+
+ /**
+ * Mod GalaxySpace by BlesseNtumble
+ */
+ private ModContainer Setup_GalaxySpace() {
+ // First, we create a mod-container that will be populated with dimensions later.
+ // The Name must match your modID, as it is checked if this mod is loaded, in order
+ // to enable/disable the parsing/registering of dimensions
+ ModContainer modCGalaxySpace = new ModContainer("GalaxySpace");
+
+ // Now lets first define a block here for our dimension. You can add the modID, but you don't have to.
+ // It will automatically add the mods name that is defined in the modcontainer.
+ ModDBMDef DBMPhobos = new ModDBMDef("phobosstone");
+ ModDBMDef DBMDeimos = new ModDBMDef("deimossubgrunt");
+ ModDBMDef DBMCeres = new ModDBMDef("ceressubgrunt");
+ ModDBMDef DBMIO = new ModDBMDef("iorock", 4); // This meta-4 is a copy&paste bug in GSpace and might not work in
+ // further versions
+ ModDBMDef DBMGanymede = new ModDBMDef("ganymedesubgrunt");
+ ModDBMDef DBMCallisto = new ModDBMDef("callistosubice");
+ ModDBMDef DBMVenus = new ModDBMDef("venussubgrunt");
+ ModDBMDef DBMMercury = new ModDBMDef("mercurycore");
+ ModDBMDef DBMEnceladus = new ModDBMDef("enceladusrock");
+ ModDBMDef DBMTitan = new ModDBMDef("titanstone");
+ ModDBMDef DBMOberon = new ModDBMDef("oberonstone");
+ ModDBMDef DBMProteus = new ModDBMDef("proteusstone");
+ ModDBMDef DBMTriton = new ModDBMDef("tritonstone");
+ ModDBMDef DBMPluto = new ModDBMDef("plutostone");
+
+ // Now define the available dimensions, and their chunkprovider.
+ // Same as above, to not have any dependency in your code, you can just give it a string.
+ // But it's better to use the actual ChunkProvider class. The Name is used for the GalacticGreg config file.
+ // The resulting config setting will be: <ModID>_<Name you give here as arg0>_false = false
+ // make sure to never change this name once you've generated your config files, as it will overwrite everything!
+
+ // 25.10.2015 GSpace v2.5
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Pluto",
+ "blessentumble.planets.SolarSystem.pluto.dimension.ChunkProviderPluto",
+ DimensionType.Planet,
+ singleToList(DBMPluto)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Triton",
+ "blessentumble.moons.triton.dimension.ChunkProviderTriton",
+ DimensionType.Planet,
+ singleToList(DBMTriton)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Proteus",
+ "blessentumble.moons.proteus.dimension.ChunkProviderProteus",
+ DimensionType.Planet,
+ singleToList(DBMProteus)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Oberon",
+ "blessentumble.moons.oberon.dimension.ChunkProviderOberon",
+ DimensionType.Planet,
+ singleToList(DBMOberon)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Titan",
+ "blessentumble.moons.titan.dimension.ChunkProviderTitan",
+ DimensionType.Planet,
+ singleToList(DBMTitan)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Callisto",
+ "blessentumble.moons.SolarSystem.callisto.dimension.ChunkProviderCallisto",
+ DimensionType.Planet,
+ singleToList(DBMCallisto)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Ganymede",
+ "blessentumble.moons.ganymede.dimension.ChunkProviderGanymede",
+ DimensionType.Planet,
+ singleToList(DBMGanymede)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Ceres",
+ "blessentumble.planets.SolarSystem.ceres.dimension.ChunkProviderCeres",
+ DimensionType.Planet,
+ singleToList(DBMCeres)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Deimos",
+ "blessentumble.moons.SolarSystem.deimos.dimension.ChunkProviderDeimos",
+ DimensionType.Planet,
+ singleToList(DBMDeimos)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Enceladus",
+ "blessentumble.moons.SolarSystem.enceladus.dimension.ChunkProviderEnceladus",
+ DimensionType.Planet,
+ singleToList(DBMEnceladus)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Io",
+ "blessentumble.moons.io.dimension.ChunkProviderIo",
+ DimensionType.Planet,
+ singleToList(DBMIO)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Phobos",
+ "blessentumble.moons.phobos.dimension.ChunkProviderPhobos",
+ DimensionType.Planet,
+ singleToList(DBMPhobos)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Venus",
+ "blessentumble.planets.SolarSystem.venus.dimension.ChunkProviderVenus",
+ DimensionType.Planet,
+ singleToList(DBMVenus)));
+ modCGalaxySpace.addDimensionDef(
+ new ModDimensionDef(
+ "Mercury",
+ "blessentumble.planets.SolarSystem.mercury.dimension.ChunkProviderMercury",
+ DimensionType.Planet,
+ singleToList(DBMMercury)));
+
+ // GSpace 2.2-Beta: Kupierbelt
+ ModDimensionDef dimKupierBelt = new ModDimensionDef(
+ "Kuiperbelt",
+ "blessentumble.planets.SolarSystem.kuiperbelt.dimension.ChunkProviderKuiper",
+ DimensionType.Asteroid);
+ dimKupierBelt.setDimensionType(DimensionType.Asteroid);
+ dimKupierBelt.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite));
+ dimKupierBelt.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite));
+ modCGalaxySpace.addDimensionDef(dimKupierBelt);
+
+ return modCGalaxySpace;
+ }
+}