9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2026-01-02 22:02:23 +00:00

Command stuffs

This commit is contained in:
Daniel Mills
2020-10-28 04:51:30 -04:00
parent aa7a1ddd4e
commit 97019f1a2a
62 changed files with 537 additions and 70 deletions

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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;

View File

@@ -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)
{