Files
CustomNPC-Plus/src/main/java/kamkeel/npcs/command/OverlayCommand.java
T

186 lines
6.8 KiB
Java
Raw Normal View History

2025-01-29 13:20:04 -05:00
package kamkeel.npcs.command;
2023-11-06 14:30:06 -05:00
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import noppes.npcs.api.ISkinOverlay;
import noppes.npcs.controllers.PlayerDataController;
2024-02-15 17:54:28 -05:00
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.controllers.data.SkinOverlay;
2023-11-06 14:30:06 -05:00
import java.util.List;
public class OverlayCommand extends CommandKamkeelBase {
@Override
public String getCommandName() {
return "overlay";
}
@Override
public String getDescription() {
return "Overlay operations";
}
2024-02-15 17:54:28 -05:00
2023-11-06 14:30:06 -05:00
@SubCommand(
desc = "set an overlay to a player",
usage = "<player> <num> <texture>"
)
public void set(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int overlayID;
try {
overlayID = Integer.parseInt(args[1]);
} catch (NumberFormatException ex) {
sendError(sender, "Overlay num must be an integer: " + args[1]);
return;
}
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, "Unknown player: " + playername);
return;
}
for(PlayerData playerdata : data){
SkinOverlay skinOverlay = new SkinOverlay(args[2]);
playerdata.skinOverlays.add(overlayID, skinOverlay);
playerdata.save();
sendResult(sender, String.format("Overlay added to Player '\u00A7b%s\u00A77' on ID \u00A7d%d", playerdata.playername, overlayID));
return;
}
}
@SubCommand(
desc = "remove an overlay from a player",
usage = "<player> <num>"
)
public void remove(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int overlayID;
try {
overlayID = Integer.parseInt(args[1]);
} catch (NumberFormatException ex) {
sendError(sender, "Overlay num must be an integer: " + args[1]);
return;
}
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, "Unknown player: " + playername);
return;
}
for(PlayerData playerdata : data){
if(playerdata.skinOverlays.has(overlayID)){
playerdata.skinOverlays.remove(overlayID);
playerdata.save();
sendResult(sender, String.format("Overlay removed to Player '\u00A7b%s\u00A77' on ID \u00A7d%d", playerdata.playername, overlayID));
}
else {
2023-11-06 21:46:13 -05:00
sendError(sender, String.format("No overlay found for Player '\u00A7b%s\u00A74' on ID \u00A7d%d", playerdata.playername, overlayID));
2023-11-06 14:30:06 -05:00
}
return;
}
}
@SubCommand(
desc = "modify an overlay for a player",
usage = "<player> <num> <blend/glow> <true/false>"
)
public void modify(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int overlayID;
try {
overlayID = Integer.parseInt(args[1]);
} catch (NumberFormatException ex) {
sendError(sender, "Overlay num must be an integer: " + args[1]);
return;
}
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, "Unknown player: " + playername);
return;
}
if(!args[2].equalsIgnoreCase("blend") && !args[2].equalsIgnoreCase("glow")){
sendError(sender, "Unknown Entry: " + args[2]);
return;
}
boolean isBlend = args[2].equalsIgnoreCase("blend");
if(!args[3].equalsIgnoreCase("true") && !args[3].equalsIgnoreCase("false")){
sendError(sender, "Unknown Bool: " + args[3]);
return;
}
boolean isTrue = args[3].equalsIgnoreCase("true");
for(PlayerData playerdata : data){
if(!playerdata.skinOverlays.has(overlayID)){
sendError(sender, String.format("Player '\u00A7b%s\u00A7c' does not have Overlay ID \u00A7d%d", playerdata.playername, overlayID));
return;
}
ISkinOverlay skinOverlay = playerdata.skinOverlays.get(overlayID);
if(skinOverlay == null){
sendError(sender, String.format("Player '\u00A7b%s\u00A7c' does not have Overlay ID \u00A7d%d", playerdata.playername, overlayID));
return;
}
if(isBlend){
skinOverlay.setBlend(isTrue);
}
else{
skinOverlay.setGlow(isTrue);
}
playerdata.skinOverlays.add(overlayID, skinOverlay);
playerdata.save();
sendResult(sender, String.format("Overlay ID \u00A7d%d \u00A77Player '\u00A7b%s\u00A77' Updated ", overlayID, playerdata.playername));
return;
}
}
@SubCommand(
desc = "clears all overlays from a player",
usage = "<player>"
)
public void clear(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, "Unknown player: " + playername);
return;
}
for(PlayerData playerdata : data){
playerdata.skinOverlays.clear();
playerdata.save();
sendResult(sender, String.format("Overlays cleared from Player '\u00A7b%s\u00A77'", playerdata.playername));
return;
}
}
@SubCommand(
desc = "List all overlays on a player",
usage = "<player>"
)
public void info(ICommandSender sender, String args[]) throws CommandException {
String playername=args[0];
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, "Unknown player: " + playername);
return;
}
for(PlayerData playerdata : data){
sendResult(sender, "--------------------");
if(playerdata.skinOverlays.size() == 0){
sendResult(sender, String.format("No Overlays found for Player '\u00A7b%s\u00A77'", playerdata.playername));
}
else {
for(ISkinOverlay overlay : playerdata.skinOverlays.overlayList.values()){
if(overlay != null){
sendResult(sender, String.format("%s", overlay.getTexture()));
}
}
}
sendResult(sender, "--------------------");
return;
}
}
}