2013-07-26 11:15:44 +02:00
|
|
|
package StevenDimDoors.mod_pocketDim.ticking;
|
|
|
|
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
import StevenDimDoors.mod_pocketDim.DDProperties;
|
|
|
|
import StevenDimDoors.mod_pocketDim.LinkData;
|
|
|
|
import StevenDimDoors.mod_pocketDim.TileEntityRift;
|
|
|
|
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
|
|
|
import StevenDimDoors.mod_pocketDim.helpers.dimHelper;
|
|
|
|
import cpw.mods.fml.common.FMLCommonHandler;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
|
|
|
|
|
|
public class RiftRegenerator implements IRegularTickReceiver {
|
|
|
|
|
|
|
|
private static final int RIFT_REGENERATION_INTERVAL = 100; //Regenerate random rifts every 100 ticks
|
|
|
|
|
|
|
|
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()
|
|
|
|
{
|
|
|
|
regenerate();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void regenerate()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
//Regenerate rifts that have been replaced (not permanently removed) by players
|
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
while (i < 15 && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
|
|
|
|
{
|
|
|
|
i++;
|
|
|
|
LinkData link;
|
|
|
|
|
|
|
|
//actually gets the random rift based on the size of the list
|
|
|
|
link = (LinkData) dimHelper.instance.getRandomLinkData(true);
|
|
|
|
|
2013-08-03 12:12:56 +02:00
|
|
|
if (link != null)
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
2013-08-03 12:12:56 +02:00
|
|
|
World world = dimHelper.getWorld(link.locDimID);
|
2013-07-26 11:15:44 +02:00
|
|
|
|
2013-08-03 12:12:56 +02:00
|
|
|
if (world != null && !mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord))
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
2013-08-03 12:12:56 +02:00
|
|
|
if (dimHelper.instance.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID) != null)
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
2013-08-03 12:12:56 +02:00
|
|
|
world.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID);
|
|
|
|
TileEntityRift rift = (TileEntityRift) world.getBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord);
|
|
|
|
if (rift == null)
|
2013-07-26 11:15:44 +02:00
|
|
|
{
|
2013-08-03 12:12:56 +02:00
|
|
|
dimHelper.getWorld(link.locDimID).setBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord, new TileEntityRift());
|
2013-07-26 11:15:44 +02:00
|
|
|
}
|
2013-08-03 12:12:56 +02:00
|
|
|
rift.hasGrownRifts = true;
|
2013-07-26 11:15:44 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
2013-08-03 12:12:56 +02:00
|
|
|
System.err.println("An exception occurred in RiftRegenerator.regenerate():");
|
2013-07-26 11:15:44 +02:00
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|