/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Jul 17, 2015, 5:13:06 PM (GMT)]
*/
package vazkii.botania.common.core.command;
import javax.annotation.Nonnull;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.translation.I18n;
import vazkii.botania.common.core.helper.MathHelper;
import vazkii.botania.common.world.SkyblockWorldEvents;
public class CommandSkyblockSpread extends CommandBase {
@Nonnull
@Override
public String getName() {
return "botania-skyblock-spread";
}
@Nonnull
@Override
public String getUsage(@Nonnull ICommandSender sender) {
return "<player> [<range>]";
}
@Override
public int getRequiredPermissionLevel() {
return 2;
}
@Override
public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) throws CommandException {
int maxAllowed = 1000000;
int minAllowed = 250;
int minDist = 100;
int maxrange = 200000;
if(args.length == 2)
maxrange = parseInt(args[1]);
if(maxrange > maxAllowed)
throw new CommandException("botaniamisc.skyblockRangeTooHigh");
if(maxrange < minAllowed)
throw new CommandException(I18n.translateToLocal("botaniamisc.skyblockRangeTooLow"));
EntityPlayer player = getPlayer(server, sender, args[0]);
if(player != null) {
BlockPos spawn = player.world.getSpawnPoint();
int x, z;
do {
x = player.world.rand.nextInt(maxrange) - maxrange / 2 + spawn.getX();
z = player.world.rand.nextInt(maxrange) - maxrange / 2 + spawn.getZ();
} while(MathHelper.pointDistancePlane(x, z, spawn.getX(), spawn.getZ()) < minDist);
SkyblockWorldEvents.spawnPlayer(player, new BlockPos(x, spawn.getY(), z), true);
}
}
}