From 0cfa6b306afc57e42fa8738dad02f4d040140681 Mon Sep 17 00:00:00 2001 From: Cisien Date: Sat, 18 Oct 2014 17:32:51 -0700 Subject: [PATCH 1/2] 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 74e4e50c7..41ffe3a5c 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 6df61de76..67753fdc3 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 ab03c9f2b..8a0b00799 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 a30afb28e..af5402f3d 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 ); } } From 9bb0722495e3fe972f577db50007d0eed361625a Mon Sep 17 00:00:00 2001 From: Cisien Date: Sat, 18 Oct 2014 20:29:02 -0700 Subject: [PATCH 2/2] Fixed certus worldgen --- src/api/java/appeng/api | 2 +- src/main/java/appeng/core/Registration.java | 15 +++++++--- .../features/registries/WorldGenRegistry.java | 28 ++++++++++++++++--- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/api/java/appeng/api b/src/api/java/appeng/api index 41ffe3a5c..bbe2ad8e7 160000 --- a/src/api/java/appeng/api +++ b/src/api/java/appeng/api @@ -1 +1 @@ -Subproject commit 41ffe3a5caf12e8d80b7f629b788fe3c98e0279f +Subproject commit bbe2ad8e709a366faf34e6efac9aef37cb3d8013 diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 8a0b00799..777a0ee38 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -724,10 +724,17 @@ public class Registration { AEApi.instance().registries().worldgen().disableWorldGenForProviderID( type, StorageWorldProvider.class ); - for(int dimension : AEConfig.instance.meteoriteDimensionWhitelist) - { - AEApi.instance().registries().worldgen().enableWorldGenForDimension( type, dimension ); - } + //nether + AEApi.instance().registries().worldgen().disableWorldGenForDimension( type, -1 ); + + //end + AEApi.instance().registries().worldgen().disableWorldGenForDimension( type, 1 ); + } + + //whitelist from config + for(int dimension : AEConfig.instance.meteoriteDimensionWhitelist) + { + AEApi.instance().registries().worldgen().enableWorldGenForDimension( WorldGenType.Meteorites, dimension ); } /** diff --git a/src/main/java/appeng/core/features/registries/WorldGenRegistry.java b/src/main/java/appeng/core/features/registries/WorldGenRegistry.java index af5402f3d..2b91e023d 100644 --- a/src/main/java/appeng/core/features/registries/WorldGenRegistry.java +++ b/src/main/java/appeng/core/features/registries/WorldGenRegistry.java @@ -13,6 +13,7 @@ public class WorldGenRegistry implements IWorldGen { final HashSet> badProviders = new HashSet>(); + final HashSet badDimensions = new HashSet(); final HashSet enabledDimensions = new HashSet(); } @@ -41,13 +42,21 @@ 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()].enabledDimensions.contains( w.provider.dimensionId ) ) + boolean isBadProvider = types[type.ordinal()].badProviders.contains( w.provider.getClass() ); + boolean isBadDimension = types[type.ordinal()].badDimensions.contains( w.provider.dimensionId ); + boolean isGoodDimension = types[type.ordinal()].enabledDimensions.contains( w.provider.dimensionId ); + + if ( isBadProvider || isBadDimension ) { - return true; + return false; } - return false; + if ( !isGoodDimension && type == WorldGenType.Meteorites) + { + return false; + } + + return true; } @Override @@ -62,6 +71,17 @@ public class WorldGenRegistry implements IWorldGen types[type.ordinal()].badProviders.add( provider ); } + @Override + public void disableWorldGenForDimension(WorldGenType type, int dimensionID) + { + if ( type == null ) + { + throw new IllegalArgumentException( "Bad Type Passed" ); + } + + types[type.ordinal()].badDimensions.add( dimensionID ); + } + @Override public void enableWorldGenForDimension(WorldGenType type, int dimensionID) {