2013-07-26 11:15:44 +02:00
|
|
|
package StevenDimDoors.mod_pocketDim.ticking;
|
|
|
|
|
|
|
|
import net.minecraft.world.World;
|
2013-08-29 08:14:24 +02:00
|
|
|
import net.minecraftforge.common.DimensionManager;
|
2013-07-26 11:15:44 +02:00
|
|
|
import StevenDimDoors.mod_pocketDim.DDProperties;
|
|
|
|
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
2013-09-02 17:47:12 +02:00
|
|
|
import StevenDimDoors.mod_pocketDim.core.DimLink;
|
2013-08-29 08:14:24 +02:00
|
|
|
import StevenDimDoors.mod_pocketDim.core.NewDimData;
|
|
|
|
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
2013-08-31 22:43:18 +02:00
|
|
|
import StevenDimDoors.mod_pocketDim.tileentities.TileEntityRift;
|
2013-08-29 08:14:24 +02:00
|
|
|
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
2013-07-26 11:15:44 +02:00
|
|
|
import cpw.mods.fml.common.FMLCommonHandler;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
|
|
|
|
|
|
public class RiftRegenerator implements IRegularTickReceiver {
|
|
|
|
|
2013-08-29 08:14:24 +02:00
|
|
|
private static final int RIFT_REGENERATION_INTERVAL = 200; //Regenerate random rifts every 200 ticks
|
|
|
|
private static final int RIFTS_REGENERATED_PER_DIMENSION = 5;
|
|
|
|
|
2013-07-26 11:15:44 +02:00
|
|
|
private DDProperties properties;
|
|
|
|
|
2013-07-27 04:50:05 +02:00
|
|
|
public RiftRegenerator(IRegularTickSender sender, DDProperties properties)
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
|
|
|
sender.registerForTicking(this, RIFT_REGENERATION_INTERVAL, false);
|
2013-07-27 04:50:05 +02:00
|
|
|
this.properties = properties;
|
2013-07-26 11:15:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void notifyTick()
|
|
|
|
{
|
2013-08-29 08:14:24 +02:00
|
|
|
regenerateRiftsInAllWorlds();
|
2013-07-26 11:15:44 +02:00
|
|
|
}
|
2013-08-29 08:14:24 +02:00
|
|
|
|
|
|
|
public static void regenerateRiftsInAllWorlds()
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
2013-08-29 08:14:24 +02:00
|
|
|
//Regenerate rifts that have been replaced (not permanently removed) by players
|
|
|
|
DDProperties properties = DDProperties.instance();
|
|
|
|
|
|
|
|
for (NewDimData dimension : PocketManager.getDimensions())
|
|
|
|
{
|
|
|
|
if (dimension.linkCount() > 0)
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
2013-08-29 08:14:24 +02:00
|
|
|
World world = DimensionManager.getWorld(dimension.id());
|
|
|
|
|
|
|
|
if (world != null)
|
|
|
|
{
|
|
|
|
for (int count = 0; count < RIFTS_REGENERATED_PER_DIMENSION; count++)
|
|
|
|
{
|
2013-09-02 17:47:12 +02:00
|
|
|
DimLink link = dimension.getRandomLink();
|
2013-08-29 08:14:24 +02:00
|
|
|
Point4D source = link.source();
|
|
|
|
if (!mod_pocketDim.blockRift.isBlockImmune(world, source.getX(), source.getY(), source.getZ()))
|
|
|
|
{
|
|
|
|
world.setBlock(source.getX(), source.getY(), source.getZ(), properties.RiftBlockID);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-07-26 11:15:44 +02:00
|
|
|
}
|
2013-08-29 08:14:24 +02:00
|
|
|
}
|
2013-07-26 11:15:44 +02:00
|
|
|
}
|
|
|
|
}
|