added /irepair
This commit is contained in:
@@ -1,14 +1,17 @@
|
|||||||
package io.github.itzispyder.ogredupealias.commands.commands;
|
package io.github.itzispyder.ogredupealias.commands.commands;
|
||||||
|
|
||||||
import io.github.itzispyder.ogredupealias.commands.CmdExHandler;
|
import io.github.itzispyder.ogredupealias.commands.CmdExHandler;
|
||||||
|
import io.github.itzispyder.ogredupealias.commands.TabComplBuilder;
|
||||||
|
import io.github.itzispyder.ogredupealias.utils.ArrayUtils;
|
||||||
|
import io.github.itzispyder.ogredupealias.utils.StringUtils;
|
||||||
import io.github.itzispyder.ogredupealias.utils.Text;
|
import io.github.itzispyder.ogredupealias.utils.Text;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.TabExecutor;
|
import org.bukkit.command.TabExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -16,15 +19,48 @@ import java.util.Objects;
|
|||||||
public class IRepairCommand implements TabExecutor {
|
public class IRepairCommand implements TabExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
try {
|
try {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
Arrays.stream(p.getInventory().getContents()).filter(Objects::nonNull).forEach(item -> {
|
|
||||||
item.setDurability(new ItemStack(item.getType()).getDurability());
|
if (args.length == 0) {
|
||||||
item.setAmount(item.getMaxStackSize());
|
Arrays.stream(p.getInventory().getContents()).filter(Objects::nonNull).forEach(this::repair);
|
||||||
});
|
sender.sendMessage(Text.builder("&3Repaired and restocked your inventory.").prefix().color().build());
|
||||||
sender.sendMessage(Text.builder("&3Repaired and restocked your inventory.").prefix().color().build());
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args[0]) {
|
||||||
|
case "all" -> {
|
||||||
|
Arrays.stream(p.getInventory().getContents()).filter(Objects::nonNull).forEach(this::repair);
|
||||||
|
sender.sendMessage(Text.builder("&3Repaired and restocked your inventory.").prefix().color().build());
|
||||||
|
}
|
||||||
|
case "hand" -> {
|
||||||
|
ItemStack hand = p.getInventory().getItemInMainHand();
|
||||||
|
if (hand.getType().isAir()) {
|
||||||
|
sender.sendMessage(Text.builder("&cCannot repair air.").prefix().color().build());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
repair(hand);
|
||||||
|
sender.sendMessage(Text.builder("&3Repaired and restocked your hand item.").prefix().color().build());
|
||||||
|
}
|
||||||
|
case "fillrest" -> {
|
||||||
|
Material type = Material.valueOf(args[1].toUpperCase());
|
||||||
|
ItemStack item = new ItemStack(type, type.getMaxStackSize());
|
||||||
|
Arrays.stream(p.getInventory().getContents()).filter(Objects::nonNull).forEach(this::repair);
|
||||||
|
while (p.getInventory().firstEmpty() != -1) p.getInventory().setItem(p.getInventory().firstEmpty(),item);
|
||||||
|
sender.sendMessage(Text.builder("&3Repaired and restocked your inventory, filled the rest with &7" + StringUtils.capitalizeWords(type.name()) + "&b.").prefix().color().build());
|
||||||
|
}
|
||||||
|
case "only" -> {
|
||||||
|
Material type = Material.valueOf(args[1].toUpperCase());
|
||||||
|
Arrays.stream(p.getInventory().getContents()).filter(Objects::nonNull).filter(item -> item.getType() == type).forEach(this::repair);
|
||||||
|
sender.sendMessage(Text.builder("&3Repaired and restocked your &7" + StringUtils.capitalizeWords(type.name()) + "&b.").prefix().color().build());
|
||||||
|
}
|
||||||
|
case "exclude" -> {
|
||||||
|
Material type = Material.valueOf(args[1].toUpperCase());
|
||||||
|
Arrays.stream(p.getInventory().getContents()).filter(Objects::nonNull).filter(item -> item.getType() != type).forEach(this::repair);
|
||||||
|
sender.sendMessage(Text.builder("&3Repaired and restocked everything but your &7" + StringUtils.capitalizeWords(type.name()) + "&b.").prefix().color().build());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
CmdExHandler handler = new CmdExHandler(ex,command);
|
CmdExHandler handler = new CmdExHandler(ex,command);
|
||||||
@@ -33,8 +69,23 @@ public class IRepairCommand implements TabExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
private void repair(ItemStack item) {
|
||||||
|
item.setDurability(new ItemStack(item.getType()).getDurability());
|
||||||
|
item.setAmount(item.getMaxStackSize());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
return new ArrayList<>();
|
return new TabComplBuilder(sender, command, alias, args)
|
||||||
|
.add(1, new String[] {
|
||||||
|
"fillrest",
|
||||||
|
"exclude",
|
||||||
|
"only",
|
||||||
|
"hand",
|
||||||
|
"all"
|
||||||
|
})
|
||||||
|
.add(2, ArrayUtils.Constants.MATERIAL_NAMES, !args[0].equals("all") && !args[0].equals("hand"))
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package io.github.itzispyder.ogredupealias.utils;
|
package io.github.itzispyder.ogredupealias.utils;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -30,4 +33,9 @@ public abstract class ArrayUtils {
|
|||||||
tList.forEach(list::add);
|
tList.forEach(list::add);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class Constants {
|
||||||
|
public static final List<String> MATERIAL_NAMES = toNewList(Arrays.stream(Material.values()).toList(),m -> m.name().toLowerCase());
|
||||||
|
public static final List<String> ENTITY_NAMES = toNewList(Arrays.stream(EntityType.values()).toList(),e -> e.name().toLowerCase());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package io.github.itzispyder.ogredupealias.utils;
|
||||||
|
|
||||||
|
public abstract class StringUtils {
|
||||||
|
|
||||||
|
public static String capitalize(String s) {
|
||||||
|
if (s.length() == 1) return s.toUpperCase();
|
||||||
|
s = s.toLowerCase();
|
||||||
|
return String.valueOf(s.charAt(0)).toUpperCase() + s.substring(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String capitalizeWords(String s) {
|
||||||
|
s = s.replaceAll("[_-]"," ");
|
||||||
|
String[] sArray = s.split(" ");
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (String str : sArray) sb.append(capitalize(str)).append(" ");
|
||||||
|
return sb.toString().trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -84,3 +84,4 @@ commands:
|
|||||||
permission: oda.commands.irepair
|
permission: oda.commands.irepair
|
||||||
aliases:
|
aliases:
|
||||||
- ipearlrepair
|
- ipearlrepair
|
||||||
|
- irestock
|
||||||
Reference in New Issue
Block a user