package com.minemaarten.signals.commands; import java.util.List; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.entity.item.EntityMinecartEmpty; import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; import com.minemaarten.signals.rail.network.mc.MCTrain; import com.minemaarten.signals.rail.network.mc.RailNetworkManager; public class CommandSignals extends CommandBase{ @Override public String getName(){ return "signals"; } @Override public String getUsage(ICommandSender sender){ return "signals <action> <arguments>"; } @Override public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException{ if(args.length == 0) throw new WrongUsageException("command.signals.noArgs"); String subCommand = args[0]; if(subCommand.equals("rebuildNetwork")) { RailNetworkManager.getServerInstance().rebuildNetwork(); sender.sendMessage(new TextComponentTranslation("command.signals.networkCleared")); } else if(subCommand.equals("debug") && sender.getName().startsWith("Player" /* Playerx */)) { if(debug(server, sender, args)) { sender.sendMessage(new TextComponentString("DEBUG EXECUTED")); } else { sender.sendMessage(new TextComponentString("Could not execute debug!")); } } else { throw new WrongUsageException("command.signals.invalidSubCommand", subCommand); } } private boolean debug(MinecraftServer server, ICommandSender sender, String[] args){ World overworld = server.getWorld(0); if(args.length < 2) { sender.sendMessage(new TextComponentString("Trains loaded: " + RailNetworkManager.getServerInstance().getState().getTrainStream().filter(x -> !((MCTrain)x).getCarts().isEmpty()).count())); return true; } else { int z = Integer.parseInt(args[1]); for(int i = 0; i < 10000; i++) { EntityMinecartEmpty cart = new EntityMinecartEmpty(overworld, i, 64, z); cart.forceSpawn = true; boolean success = overworld.spawnEntity(cart); if(i % 1000 == 0) { sender.sendMessage(new TextComponentString("Spawned " + i + " / 100.000")); } } return true; } } @Override public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos targetPos){ return args.length == 1 ? getListOfStringsMatchingLastWord(args, "rebuildNetwork") : super.getTabCompletions(server, sender, args, targetPos); } }