diff options
Diffstat (limited to 'src/main/java/bloodasp/galacticgreg/ModRegisterer.java')
-rw-r--r-- | src/main/java/bloodasp/galacticgreg/ModRegisterer.java | 471 |
1 files changed, 268 insertions, 203 deletions
diff --git a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java index 51bd268b25..85f5b50953 100644 --- a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java +++ b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java @@ -1,212 +1,277 @@ package bloodasp.galacticgreg; -import bloodasp.galacticgreg.api.*; -import bloodasp.galacticgreg.api.Enums.AllowedBlockPosition; -import bloodasp.galacticgreg.api.Enums.DimensionType; -import net.minecraft.init.Blocks; -import net.minecraft.world.gen.ChunkProviderEnd; - 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.*; +import bloodasp.galacticgreg.api.Enums.AllowedBlockPosition; +import bloodasp.galacticgreg.api.Enums.DimensionType; + /** - * 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) + * 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; - } +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; + } } |