From 0cfa6b306afc57e42fa8738dad02f4d040140681 Mon Sep 17 00:00:00 2001 From: Cisien Date: Sat, 18 Oct 2014 17:32:51 -0700 Subject: [PATCH] Add config option to whitelist dimensions for meteorite gen --- src/api/java/appeng/api | 2 +- src/main/java/appeng/core/AEConfig.java | 3 +++ src/main/java/appeng/core/Registration.java | 11 ++++++----- .../features/registries/WorldGenRegistry.java | 15 +++++++++------ 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/api/java/appeng/api b/src/api/java/appeng/api index 74e4e50c..41ffe3a5 160000 --- a/src/api/java/appeng/api +++ b/src/api/java/appeng/api @@ -1 +1 @@ -Subproject commit 74e4e50c76e812cc227bea020f3c8646eacfedb1 +Subproject commit 41ffe3a5caf12e8d80b7f629b788fe3c98e0279f diff --git a/src/main/java/appeng/core/AEConfig.java b/src/main/java/appeng/core/AEConfig.java index 6df61de7..67753fdc 100644 --- a/src/main/java/appeng/core/AEConfig.java +++ b/src/main/java/appeng/core/AEConfig.java @@ -131,6 +131,7 @@ public class AEConfig extends Configuration implements IConfigurableObject, ICon public double meteoriteClusterChance = 0.1; public double meteoriteSpawnChance = 0.3; + public int[] meteoriteDimensionWhitelist = new int[] { 0 }; public int craftingCalculationTimePerTick = 5; @@ -237,6 +238,8 @@ public class AEConfig extends Configuration implements IConfigurableObject, ICon minMeteoriteDistance = get( "worldGen", "minMeteoriteDistance", minMeteoriteDistance ).getInt( minMeteoriteDistance ); meteoriteClusterChance = get( "worldGen", "meteoriteClusterChance", meteoriteClusterChance ).getDouble( meteoriteClusterChance ); meteoriteSpawnChance = get( "worldGen", "meteoriteSpawnChance", meteoriteSpawnChance ).getDouble( meteoriteSpawnChance ); + meteoriteDimensionWhitelist = get ("worldGen", "meteoriteDimensionWhitelist", meteoriteDimensionWhitelist).getIntList(); + quartzOresPerCluster = get( "worldGen", "quartzOresPerCluster", quartzOresPerCluster ).getInt( quartzOresPerCluster ); quartzOresClusterAmount = get( "worldGen", "quartzOresClusterAmount", quartzOresClusterAmount ).getInt( quartzOresClusterAmount ); diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index ab03c9f2..8a0b0079 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -678,7 +678,9 @@ public class Registration GameRegistry.registerWorldGenerator( new QuartzWorldGen(), 0 ); if ( AEConfig.instance.isFeatureEnabled( AEFeature.MeteoriteWorldGen ) ) + { GameRegistry.registerWorldGenerator( new MeteoriteWorldGen(), 0 ); + } IMovableRegistry mr = AEApi.instance().registries().movable(); @@ -722,11 +724,10 @@ public class Registration { AEApi.instance().registries().worldgen().disableWorldGenForProviderID( type, StorageWorldProvider.class ); - // end - AEApi.instance().registries().worldgen().disableWorldGenForDimension( type, 1 ); - - // nether - AEApi.instance().registries().worldgen().disableWorldGenForDimension( type, -1 ); + for(int dimension : AEConfig.instance.meteoriteDimensionWhitelist) + { + AEApi.instance().registries().worldgen().enableWorldGenForDimension( type, dimension ); + } } /** diff --git a/src/main/java/appeng/core/features/registries/WorldGenRegistry.java b/src/main/java/appeng/core/features/registries/WorldGenRegistry.java index a30afb28..af5402f3 100644 --- a/src/main/java/appeng/core/features/registries/WorldGenRegistry.java +++ b/src/main/java/appeng/core/features/registries/WorldGenRegistry.java @@ -13,7 +13,7 @@ public class WorldGenRegistry implements IWorldGen { final HashSet> badProviders = new HashSet>(); - final HashSet badDimensions = new HashSet(); + final HashSet enabledDimensions = new HashSet(); } @@ -41,10 +41,13 @@ public class WorldGenRegistry implements IWorldGen if ( w == null ) throw new IllegalArgumentException( "Bad Provider Passed" ); - if ( types[type.ordinal()].badProviders.contains( w.provider.getClass() ) || types[type.ordinal()].badDimensions.contains( w.provider.dimensionId ) ) - return false; + if ( !types[type.ordinal()].badProviders.contains( w.provider.getClass() ) + && types[type.ordinal()].enabledDimensions.contains( w.provider.dimensionId ) ) + { + return true; + } - return true; + return false; } @Override @@ -60,12 +63,12 @@ public class WorldGenRegistry implements IWorldGen } @Override - public void disableWorldGenForDimension(WorldGenType type, int dimensionID) + public void enableWorldGenForDimension(WorldGenType type, int dimensionID) { if ( type == null ) throw new IllegalArgumentException( "Bad Type Passed" ); - types[type.ordinal()].badDimensions.add( dimensionID ); + types[type.ordinal()].enabledDimensions.add( dimensionID ); } }