Added Feature: #0654 - API support for disabling AE2 world gen in specific dimensions

This commit is contained in:
AlgorithmX2
2014-08-05 21:03:30 -05:00
parent 7ce587a235
commit 61d79a804f
5 changed files with 111 additions and 8 deletions
@@ -9,6 +9,7 @@ import appeng.api.features.IRecipeHandlerRegistry;
import appeng.api.features.IRegistryContainer;
import appeng.api.features.ISpecialComparisonRegistry;
import appeng.api.features.IWirelessTermRegistery;
import appeng.api.features.IWorldGen;
import appeng.api.movable.IMovableRegistry;
import appeng.api.networking.IGridCacheRegistry;
import appeng.api.storage.ICellRegistry;
@@ -28,7 +29,7 @@ public class RegistryContainer implements IRegistryContainer
private MovableTileRegistry MoveableReg = new MovableTileRegistry();
private MatterCannonAmmoRegistry matterCannonReg = new MatterCannonAmmoRegistry();
private PlayerRegistry playerreg = new PlayerRegistry();
private IRecipeHandlerRegistry recipeReg = new RecipeHandlerRegistry();
private IRecipeHandlerRegistry recipeReg = new RecipeHandlerRegistry();
@Override
public IWirelessTermRegistery wireless()
@@ -97,8 +98,15 @@ private IRecipeHandlerRegistry recipeReg = new RecipeHandlerRegistry();
}
@Override
public IRecipeHandlerRegistry recipes() {
public IRecipeHandlerRegistry recipes()
{
return recipeReg;
}
@Override
public IWorldGen worldgen()
{
return WorldGenRegistry.instance;
}
}
@@ -0,0 +1,71 @@
package appeng.core.features.registries;
import java.util.HashSet;
import net.minecraft.world.World;
import net.minecraft.world.WorldProvider;
import appeng.api.features.IWorldGen;
public class WorldGenRegistry implements IWorldGen
{
private class TypeSet
{
HashSet<Class<? extends WorldProvider>> badProviders = new HashSet();
HashSet<Integer> badDimentions = new HashSet();
};
TypeSet[] types;
static final public WorldGenRegistry instance = new WorldGenRegistry();
private WorldGenRegistry() {
types = new TypeSet[WorldGenType.values().length];
for (WorldGenType type : WorldGenType.values())
{
types[type.ordinal()] = new TypeSet();
}
}
@Override
public boolean isWorldGenEnabled(WorldGenType type, World w)
{
if ( type == null )
throw new IllegalArgumentException( "Bad Type Passed" );
if ( w == null )
throw new IllegalArgumentException( "Bad Provider Passed" );
if ( types[type.ordinal()].badProviders.contains( w.provider.getClass() ) || types[type.ordinal()].badDimentions.contains( w.provider.dimensionId ) )
return false;
return true;
}
@Override
public void disableWorldGenForProviderID(WorldGenType type, Class<? extends WorldProvider> provider)
{
if ( type == null )
throw new IllegalArgumentException( "Bad Type Passed" );
if ( provider == null )
throw new IllegalArgumentException( "Bad Provider Passed" );
types[type.ordinal()].badProviders.add( provider );
}
@Override
public void disableWorldGenForDimension(WorldGenType type, int dimid)
{
if ( type == null )
throw new IllegalArgumentException( "Bad Type Passed" );
types[type.ordinal()].badDimentions.add( dimid );
}
}