mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-01-02 22:02:23 +00:00
Command stuffs
This commit is contained in:
@@ -50,4 +50,6 @@ public interface ICommand
|
||||
* @return return true to mark it as handled
|
||||
*/
|
||||
public boolean handle(MortarSender sender, String[] args);
|
||||
|
||||
public KList<String> handleTab(MortarSender sender, String[] args);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package com.volmit.iris.util;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import org.bukkit.Sound;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
@@ -37,6 +41,35 @@ public abstract class MortarCommand implements ICommand
|
||||
description = "No Description";
|
||||
}
|
||||
|
||||
@Override
|
||||
public KList<String> handleTab(MortarSender sender, String[] args)
|
||||
{
|
||||
KList<String> v = new KList<>();
|
||||
if(args.length == 0)
|
||||
{
|
||||
for(MortarCommand i : getChildren())
|
||||
{
|
||||
v.add(i.getNode());
|
||||
}
|
||||
}
|
||||
|
||||
addTabOptions(sender, args, v);
|
||||
|
||||
if(v.isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if(sender.isPlayer() && IrisSettings.get().commandSounds)
|
||||
{
|
||||
sender.player().getWorld().playSound(sender.player().getLocation(), Sound.ENTITY_ITEM_FRAME_ROTATE_ITEM, 0.25f, 1.7f);
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
public abstract void addTabOptions(MortarSender sender, String[] args, KList<String> list);
|
||||
|
||||
public void printHelp(MortarSender sender)
|
||||
{
|
||||
boolean b = false;
|
||||
@@ -60,6 +93,12 @@ public abstract class MortarCommand implements ICommand
|
||||
{
|
||||
sender.sendMessage("There are either no sub-commands or you do not have permission to use them.");
|
||||
}
|
||||
|
||||
if(sender.isPlayer() && IrisSettings.get().commandSounds)
|
||||
{
|
||||
sender.player().getWorld().playSound(sender.player().getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 0.28f, 1.4f);
|
||||
sender.player().getWorld().playSound(sender.player().getLocation(), Sound.ITEM_AXE_STRIP, 0.35f, 1.7f);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract String getArgsUsage();
|
||||
|
||||
@@ -2,7 +2,9 @@ package com.volmit.iris.util;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
@@ -78,7 +80,9 @@ public class VirtualCommand
|
||||
vs.setTag(tag);
|
||||
|
||||
if(label != null)
|
||||
{
|
||||
vs.setCommand(label);
|
||||
}
|
||||
|
||||
if(chain.isEmpty())
|
||||
{
|
||||
@@ -104,6 +108,11 @@ public class VirtualCommand
|
||||
c.remove(0);
|
||||
if(cmd.hit(sender, c, vs.getCommand()))
|
||||
{
|
||||
if(vs.isPlayer() && IrisSettings.get().commandSounds)
|
||||
{
|
||||
vs.player().getWorld().playSound(vs.player().getLocation(), Sound.ITEM_AXE_STRIP, 0.35f, 1.8f);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -118,6 +127,53 @@ public class VirtualCommand
|
||||
return command.handle(vs, chain.toArray(new String[chain.size()]));
|
||||
}
|
||||
|
||||
public KList<String> hitTab(CommandSender sender, KList<String> chain, String label)
|
||||
{
|
||||
MortarSender vs = new MortarSender(sender);
|
||||
vs.setTag(tag);
|
||||
|
||||
if(label != null)
|
||||
vs.setCommand(label);
|
||||
|
||||
if(chain.isEmpty())
|
||||
{
|
||||
if(!checkPermissions(sender, command))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return command.handleTab(vs, new String[0]);
|
||||
}
|
||||
|
||||
String nl = chain.get(0);
|
||||
|
||||
for(KList<String> i : children.k())
|
||||
{
|
||||
for(String j : i)
|
||||
{
|
||||
if(j.equalsIgnoreCase(nl))
|
||||
{
|
||||
vs.setCommand(chain.get(0));
|
||||
VirtualCommand cmd = children.get(i);
|
||||
KList<String> c = chain.copy();
|
||||
c.remove(0);
|
||||
KList<String> v = cmd.hitTab(sender, c, vs.getCommand());
|
||||
if(v != null)
|
||||
{
|
||||
return v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!checkPermissions(sender, command))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return command.handleTab(vs, chain.toArray(new String[chain.size()]));
|
||||
}
|
||||
|
||||
private boolean checkPermissions(CommandSender sender, ICommand command2)
|
||||
{
|
||||
boolean failed = false;
|
||||
|
||||
@@ -6,9 +6,11 @@ import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandMap;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -16,14 +18,17 @@ import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.command.SimpleCommandMap;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public abstract class MortarPlugin extends JavaPlugin implements Listener
|
||||
public abstract class VolmitPlugin extends JavaPlugin implements Listener
|
||||
{
|
||||
public static boolean bad = false;
|
||||
private KMap<KList<String>, VirtualCommand> commands;
|
||||
@@ -471,6 +476,42 @@ public abstract class MortarPlugin extends JavaPlugin implements Listener
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String alias, @NotNull String[] args) {
|
||||
KList<String> chain = new KList<String>();
|
||||
|
||||
for(String i : args)
|
||||
{
|
||||
if(i.trim().isEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
chain.add(i.trim());
|
||||
}
|
||||
|
||||
for(KList<String> i : commands.k())
|
||||
{
|
||||
for(String j : i)
|
||||
{
|
||||
if(j.equalsIgnoreCase(alias))
|
||||
{
|
||||
VirtualCommand cmd = commands.get(i);
|
||||
|
||||
List<String> v = cmd.hitTab(sender, chain.copy(), alias);
|
||||
if(v != null)
|
||||
{
|
||||
return v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return super.onTabComplete(sender, command, alias, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, org.bukkit.command.Command command, String label, String[] args)
|
||||
{
|
||||
Reference in New Issue
Block a user