You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.7 KiB
Java
53 lines
1.7 KiB
Java
package com.zivilon.cinder_loe.command;
|
|
|
|
import com.zivilon.cinder_loe.carriage.CarriageDestination;
|
|
import com.zivilon.cinder_loe.carriage.CarriageDestinationsData;
|
|
import com.zivilon.cinder_loe.network.PacketOpenCarriageGui;
|
|
import lotr.common.network.LOTRPacketHandler;
|
|
import net.minecraft.command.CommandBase;
|
|
import net.minecraft.command.CommandException;
|
|
import net.minecraft.command.ICommandSender;
|
|
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
|
import net.minecraft.world.World;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class CommandOpenCarriageMenu extends CommandBase {
|
|
@Override
|
|
public String getCommandName() {
|
|
return "open_carriage_menu";
|
|
}
|
|
|
|
@Override
|
|
public String getCommandUsage(ICommandSender sender) {
|
|
return "/open_carriage_menu";
|
|
}
|
|
|
|
@Override
|
|
public void processCommand(ICommandSender sender, String[] args) {
|
|
if (!(sender instanceof EntityPlayerMP)) {
|
|
throw new CommandException("Must be run by a player.");
|
|
}
|
|
|
|
EntityPlayerMP player = (EntityPlayerMP) sender;
|
|
World world = player.worldObj;
|
|
|
|
CarriageDestinationsData data = CarriageDestinationsData.get(world);
|
|
List<CarriageDestination> nearest = data.getNearestFour(player.posX, player.posZ);
|
|
|
|
List<String> names = new ArrayList<>();
|
|
List<Integer> costs = new ArrayList<>();
|
|
|
|
for (CarriageDestination dest : nearest) {
|
|
double dist = Math.sqrt(Math.pow(dest.x - player.posX, 2) + Math.pow(dest.z - player.posZ, 2));
|
|
int cost = Math.max(1, (int)(dist / 50));
|
|
names.add(dest.name);
|
|
costs.add(cost);
|
|
}
|
|
|
|
LOTRPacketHandler.networkWrapper.sendTo(new PacketOpenCarriageGui(names, costs), player);
|
|
}
|
|
}
|