package micdoodle8.mods.galacticraft.core.dimension;
import net.minecraft.world.biome.WorldChunkManager;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.WorldProviderSpace;
import micdoodle8.mods.galacticraft.core.world.gen.ChunkProviderOrbit;
import micdoodle8.mods.galacticraft.core.world.gen.WorldChunkManagerOrbit;
/***
* Properties of a WorldProviderSpaceStation
* 1. Spinnable with Spin Thrusters (if you don't want spin, create your own SpinManager subclass which does nothing)
* (note: your SkyProvider needs to rotate according to setSpinDeltaPerTick()
* 2. Oregen from other mods is inhibited in this dimension
* 3. AstroMiner placement is inhibited in this dimension
* 4. The player on arrival into this dimension (after rocket flight) will be in 1st person view
*
*/
public abstract class WorldProviderSpaceStation extends WorldProviderSpace
{
private SpinManager spinManager = new SpinManager(this);
public SpinManager getSpinManager()
{
return spinManager;
}
@Override
public void setDimension(int var1)
{
super.setDimension(var1);
}
/**
* Called only once from WorldProvider.registerWorld()
* so this provides a handy initialisation method
*/
@Override
public void registerWorldChunkManager()
{
super.registerWorldChunkManager();
this.getSpinManager().registerServerSide();
}
@Override
public Class<? extends IChunkProvider> getChunkProviderClass()
{
return ChunkProviderOrbit.class;
}
@Override
public Class<? extends WorldChunkManager> getWorldChunkManagerClass()
{
return WorldChunkManagerOrbit.class;
}
@Override
public void updateWeather()
{
super.updateWeather();
spinManager.updateSpin();
}
@SideOnly(Side.CLIENT)
public abstract void setSpinDeltaPerTick(float angle);
@SideOnly(Side.CLIENT)
public abstract float getSkyRotation();
@SideOnly(Side.CLIENT)
public abstract void createSkyProvider();
}