package com.bioxx.tfc2.commands;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.PlayerNotFoundException;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.play.server.SPacketChunkData;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.WorldServer;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.gen.ChunkProviderServer;
public class RegenChunkCommand extends CommandBase
{
@Override
public String getCommandName()
{
return "regen";
}
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] params)
{
EntityPlayerMP player;
try {
player = getCommandSenderAsPlayer(sender);
} catch (PlayerNotFoundException e) {
return;
}
WorldServer world = server.worldServerForDimension(player.getEntityWorld().provider.getDimension());
if(params.length == 1)
{
int radius = Integer.parseInt(params[0]);
for(int i = -radius; i <= radius; i++)
{
for(int k = -radius; k <= radius; k++)
{
int x = (((int)player.posX+i*16) >> 4);
int z = (((int)player.posZ+k*16) >> 4);
BlockPos pos = new BlockPos((int)player.posX+i*16, 0, (int)player.posZ+k*16);
ChunkProviderServer cps = world.getChunkProvider();
Chunk c = cps.chunkGenerator.provideChunk(x, z);
c.onChunkLoad();
c.populateChunk(cps, cps.chunkGenerator);
Chunk old = world.getChunkProvider().provideChunk(x, z);
old.setStorageArrays(c.getBlockStorageArray());
old.setChunkModified();
}
}
for(int i = -radius; i <= radius; i++)
{
for(int k = -radius; k <= radius; k++)
{
int x = (((int)player.posX+i*16) >> 4);
int z = (((int)player.posZ+k*16) >> 4);
BlockPos pos = new BlockPos((int)player.posX+i*16, 0, (int)player.posZ+k*16);
ChunkProviderServer cps = ((ChunkProviderServer)world.getChunkProvider());
net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(x, z, world, cps.chunkGenerator, cps);
player.connection.sendPacket(new SPacketChunkData(cps.provideChunk(x, z), 0xffffffff));
}
}
}
}
@Override
public String getCommandUsage(ICommandSender icommandsender)
{
return "";
}
}