Merge Patch into DEV

This commit is contained in:
Kam committed 2023-06-23 14:35:54 -04:00
commit 4fc84f316a
8 files changed
+393 -55

No files matched your search

@@ -4,6 +4,7 @@ import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import noppes.npcs.controllers.AnimationController;
import noppes.npcs.controllers.PlayerDataController;
import noppes.npcs.controllers.QuestController;
import noppes.npcs.controllers.data.Animation;
import noppes.npcs.controllers.data.PlayerData;
@@ -49,42 +50,52 @@ public class AnimationCommand extends CommandKamkeelBase {
data.get(0).save();
}
@SubCommand(desc = "enable animation")
public void on(ICommandSender sender, String[] args) throws CommandException {
data.get(0).animationData.setEnabled(true);
sendMessage(sender, String.format("Animations enabled for Player %s", data.get(0).player.getCommandSenderName()));
}
// @SubCommand(desc = "enable animation")
// public void on(ICommandSender sender, String[] args) throws CommandException {
// data.get(0).animationData.setEnabled(true);
// sendMessage(sender, String.format("Animations enabled for Player %s", data.get(0).player.getCommandSenderName()));
//
// }
//
// @SubCommand(
// desc = "Set animation",
// usage = "<animation>"
// )
// public void set(ICommandSender sender, String[] args) throws CommandException {
// if(args.length != 1){
// throw new CommandException("Please include the animation name:" + "<player> set <animation name>");
// }
// String animationName = args[0];
// selectedAnimation = AnimationController.getInstance().getAnimationFromName(animationName);
// if (selectedAnimation == null) {
// throw new CommandException("Unknown animation: " + animationName);
// }
//
// data.get(0).animationData.setAnimation(selectedAnimation);
// sendMessage(sender, String.format("Animation %s set for Player %s", selectedAnimation.getName(), data.get(0).player.getCommandSenderName()));
// }
//
// @SubCommand(desc = "disable animation")
// public void off(ICommandSender sender, String[] args) throws CommandException {
// data.get(0).animationData.setEnabled(false);
// sendMessage(sender, String.format("Animations disabled for Player %s", data.get(0).player.getCommandSenderName()));
// }
//
// @SubCommand(desc = "play animation")
// public void clear(ICommandSender sender, String[] args) throws CommandException {
// data.get(0).animationData.setEnabled(false);
// data.get(0).animationData.setAnimation(null);
// sendMessage(sender, String.format("Animations cleared for Player %s", data.get(0).player.getCommandSenderName()));
//
// }
@SubCommand(
desc = "Set animation",
usage = "<animation>"
desc="reload animations from disk",
permission = 4
)
public void set(ICommandSender sender, String[] args) throws CommandException {
if(args.length != 1){
throw new CommandException("Please include the animation name:" + "<player> set <animation name>");
}
String animationName = args[0];
selectedAnimation = AnimationController.getInstance().getAnimationFromName(animationName);
if (selectedAnimation == null) {
throw new CommandException("Unknown animation: " + animationName);
}
data.get(0).animationData.setAnimation(selectedAnimation);
sendMessage(sender, String.format("Animation %s set for Player %s", selectedAnimation.getName(), data.get(0).player.getCommandSenderName()));
}
@SubCommand(desc = "disable animation")
public void off(ICommandSender sender, String[] args) throws CommandException {
data.get(0).animationData.setEnabled(false);
sendMessage(sender, String.format("Animations disabled for Player %s", data.get(0).player.getCommandSenderName()));
}
@SubCommand(desc = "play animation")
public void clear(ICommandSender sender, String[] args) throws CommandException {
data.get(0).animationData.setEnabled(false);
data.get(0).animationData.setAnimation(null);
sendMessage(sender, String.format("Animations cleared for Player %s", data.get(0).player.getCommandSenderName()));
public void reload(ICommandSender sender, String args[]){
new AnimationController();
AnimationController.instance.load();
sendResult(sender, "Animations Reloaded");
}
}
@@ -30,6 +30,7 @@ public class CommandKamkeel extends CommandBase{
registerCommand(new NpcCommand());
registerCommand(new CloneCommand());
registerCommand(new ConfigCommand());
registerCommand(new AnimationCommand());
}
public void registerCommand(CommandKamkeelBase command){
@@ -66,7 +66,7 @@ public class DialogCategoryCommand extends CommandKamkeelBase {
sendError(sender, String.format("Unknown player '%s'", playername));
return;
}
DialogCategory dialogCategory = DialogController.Instance.categories.get(dialogCatId);
if (dialogCategory == null){
sendError(sender, "Unknown DialogCatID: " + dialogCatId);
@@ -1,5 +1,6 @@
package kamkeel.command;
import java.util.Collection;
import java.util.List;
import net.minecraft.command.CommandBase;
@@ -8,12 +9,14 @@ import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import noppes.npcs.NoppesUtilServer;
import noppes.npcs.client.EntityUtil;
import noppes.npcs.constants.EnumAvailabilityDialog;
import noppes.npcs.constants.EnumAvailabilityQuest;
import noppes.npcs.constants.EnumQuestCompletion;
import noppes.npcs.controllers.DialogController;
import noppes.npcs.controllers.PlayerDataController;
import noppes.npcs.controllers.data.Dialog;
import noppes.npcs.controllers.data.DialogOption;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.controllers.QuestController;
import noppes.npcs.controllers.data.*;
import noppes.npcs.entity.EntityDialogNpc;
public class DialogCommand extends CommandKamkeelBase {
@@ -120,4 +123,131 @@ public class DialogCommand extends CommandKamkeelBase {
NoppesUtilServer.openDialog(player, npc, dialog, 0);
sendResult(sender, String.format("Displayed Dialog \u00A7e%d\u00A77 to Player '\u00A7b%s\u00A77'", diagid, player.getCommandSenderName()));
}
@SubCommand(
desc = "Find dialog id number by its name",
usage = "<dialogName>"
)
public void id(ICommandSender sender, String args[]) throws CommandException {
if(args.length == 0){
sendError(sender, "Please provide a name for the dialog");
return;
}
String dialogName = String.join(" ", args).toLowerCase();
final Collection<Dialog> quests = DialogController.instance.dialogs.values();
int count = 0;
for(Dialog dialog : quests){
if(dialog.getName().toLowerCase().contains(dialogName)){
sendResult(sender, String.format("Dialog \u00A7e%d\u00A77 - \u00A7c'%s'", dialog.id, dialog.getName()));
count++;
}
}
if(count == 0){
sendResult(sender, String.format("No Dialog found with name: \u00A7c'%s'", dialogName));
}
}
@SubCommand(
desc = "List a dialogs availability options",
usage = "<dialogId>"
)
public void availability(ICommandSender sender, String args[]) throws CommandException {
if(args.length == 0){
sendError(sender, "Please provide an id for the dialog");
return;
}
int diagid;
try {
diagid = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
sendError(sender, "DialogID must be an integer: " + args[0]);
return;
}
Dialog dialog = DialogController.instance.dialogs.get(diagid);
if(dialog == null){
sendError(sender, "Unknown dialog id: " + args[0]);
return;
}
Availability avail = dialog.availability;
if(avail != null){
sendResult(sender, String.format("Availability Options for Dialog: \u00A7c%d", dialog.id));
sendResult(sender, "--------------------");
boolean diagFound = false;
if(avail.dialogId != -1 && avail.dialogAvailable != EnumAvailabilityDialog.Always){
sendResult(sender, String.format("%s Dialog: \u00A7c%d", avail.dialogAvailable.toString(), avail.dialogId));
diagFound = true;
}
if(avail.dialog2Id != -1 && avail.dialog2Available != EnumAvailabilityDialog.Always){
sendResult(sender, String.format("%s Dialog: \u00A7c%d", avail.dialog2Available.toString(), avail.dialog2Id));
diagFound = true;
}
if(avail.dialog3Id != -1 && avail.dialog3Available != EnumAvailabilityDialog.Always){
sendResult(sender, String.format("%s Dialog: \u00A7c%d", avail.dialog3Available.toString(), avail.dialog3Id));
diagFound = true;
}
if(avail.dialog4Id != -1 && avail.dialog4Available != EnumAvailabilityDialog.Always){
sendResult(sender, String.format("%s Dialog: \u00A7c%d", avail.dialog4Available.toString(), avail.dialog4Id));
diagFound = true;
}
if(!diagFound){
sendResult(sender, "No Dialog Availability Options");
}
sendResult(sender, "--------------------");
boolean questFound = false;
if(avail.questId != -1 && avail.questAvailable != EnumAvailabilityQuest.Always){
sendResult(sender, String.format("%s Quest: \u00A7c%d", avail.questAvailable.toString(), avail.questId));
questFound = true;
}
if(avail.quest2Id != -1 && avail.quest2Available != EnumAvailabilityQuest.Always){
sendResult(sender, String.format("%s Quest: \u00A7c%d", avail.quest2Available.toString(), avail.quest2Id));
questFound = true;
}
if(avail.quest3Id != -1 && avail.quest3Available != EnumAvailabilityQuest.Always){
sendResult(sender, String.format("%s Quest: \u00A7c%d", avail.quest3Available.toString(), avail.quest3Id));
questFound = true;
}
if(avail.quest4Id != -1 && avail.quest4Available != EnumAvailabilityQuest.Always){
sendResult(sender, String.format("%s Quest: \u00A7c%d", avail.quest4Available.toString(), avail.quest4Id));
questFound = true;
}
if(!questFound){
sendResult(sender, "No Quest Availability Options");
}
sendResult(sender, "--------------------");
}
}
@SubCommand(
desc = "Quick info on a dialog",
usage = "<dialogId>"
)
public void info(ICommandSender sender, String args[]) throws CommandException {
if(args.length == 0){
sendError(sender, "Please provide an id for the quest");
return;
}
int diagid;
try {
diagid = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
sendError(sender, "DialogID must be an integer: " + args[0]);
return;
}
Dialog dialog = DialogController.instance.dialogs.get(diagid);
if(dialog == null){
sendError(sender, "Unknown dialog id: " + args[0]);
return;
}
sendResult(sender, "--------------------");
sendResult(sender, String.format("\u00A7e%d\u00A77: \u00A7a%s", dialog.id, dialog.title));
sendResult(sender, String.format("Category: \u00A7b%s", dialog.category.getName()));
sendResult(sender, "--------------------");
}
}
@@ -11,8 +11,8 @@ import noppes.npcs.controllers.QuestController;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.controllers.data.Quest;
import noppes.npcs.controllers.data.QuestCategory;
import java.util.Collection;
import noppes.npcs.controllers.data.QuestData;
import java.util.List;
public class QuestCategoryCommand extends CommandKamkeelBase {
@@ -53,10 +53,10 @@ public class QuestCategoryCommand extends CommandKamkeelBase {
@SubCommand(
desc = "Complete a quest category for a player",
desc = "Finish a quest category for a player",
usage = "<player> <questcatid>"
)
public void complete(ICommandSender sender, String args[]) throws CommandException{
public void finish(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int questcatid;
try {
@@ -104,12 +104,102 @@ public class QuestCategoryCommand extends CommandKamkeelBase {
}
}
@SubCommand(
desc = "Clear a quest category from a player",
desc = "Stop a quest category for a players active quests",
usage = "<player> <questcatid>"
)
public void clear(ICommandSender sender, String args[]) throws CommandException{
public void stop(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int questcatid;
try {
questcatid = Integer.parseInt(args[1]);
}
catch (NumberFormatException ex) {
sendError(sender, "QuestCatID must be an integer: " + args[1]);
return;
}
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, String.format("Unknown player '%s'", playername));
return;
}
QuestCategory questCategory = QuestController.Instance.categories.get(questcatid);
if (questCategory == null){
sendError(sender, "Unknown QuestCatID: " + questcatid);
return;
}
int count = 0;
for(PlayerData playerdata : data){
for(Quest quest : questCategory.quests.values()){
if(playerdata.questData.activeQuests.containsKey(quest.id)){
playerdata.questData.activeQuests.remove(quest.id);
count++;
}
}
playerdata.save();
sendResult(sender, String.format("Stopped Quest Cat \u00A7c'%s' \u00A7e%d\u00A77 for Player '\u00A7b%s\u00A77'", questCategory.getName(), questcatid, playerdata.playername));
sendResult(sender, String.format("Stopped a total of \u00A7b%d \u00A77quests", count));
}
}
@SubCommand(
desc = "Start a quest category for a player",
usage = "<player> <questcatid>"
)
public void start(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int questcatid;
try {
questcatid = Integer.parseInt(args[1]);
}
catch (NumberFormatException ex) {
sendError(sender, "QuestCatID must be an integer: " + args[1]);
return;
}
List<PlayerData> data = PlayerDataController.Instance.getPlayersData(sender, playername);
if (data.isEmpty()) {
sendError(sender, String.format("Unknown player '%s'", playername));
return;
}
QuestCategory questCategory = QuestController.Instance.categories.get(questcatid);
if (questCategory == null){
sendError(sender, "Unknown QuestCatID: " + questcatid);
return;
}
int count = 0;
for(PlayerData playerdata : data){
for(Quest quest : questCategory.quests.values()){
if(!playerdata.questData.activeQuests.containsKey(quest.id)){
QuestData questData = new QuestData(quest);
playerdata.questData.activeQuests.put(quest.id, questData);
count++;
if(playerdata.player != null && questData.sendAlerts){
Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.MESSAGE, "quest.newquest", quest.title);
Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.CHAT, "quest.newquest", ": ", quest.title);
}
}
}
playerdata.save();
sendResult(sender, String.format("Started Quest Cat \u00A7c'%s' \u00A7e%d\u00A77 for Player '\u00A7b%s\u00A77'", questCategory.getName(), questcatid, playerdata.playername));
sendResult(sender, String.format("Started a total of \u00A7b%d \u00A77quests", count));
}
}
@SubCommand(
desc = "Remove a quest cat from active/finished",
usage = "<player> <questcatid>"
)
public void remove(ICommandSender sender, String args[]) throws CommandException{
String playername=args[0];
int questcatid;
try {
@@ -1,5 +1,6 @@
package kamkeel.command;
import java.util.Collection;
import java.util.List;
import net.minecraft.command.CommandException;
@@ -7,11 +8,13 @@ import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayerMP;
import noppes.npcs.Server;
import noppes.npcs.constants.EnumPacketClient;
import noppes.npcs.constants.EnumQuestCompletion;
import noppes.npcs.constants.EnumQuestRepeat;
import noppes.npcs.controllers.PlayerDataController;
import noppes.npcs.controllers.QuestController;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.controllers.data.Quest;
import noppes.npcs.controllers.data.QuestCategory;
import noppes.npcs.controllers.data.QuestData;
public class QuestCommand extends CommandKamkeelBase {
@@ -173,6 +176,109 @@ public class QuestCommand extends CommandKamkeelBase {
sendResult(sender, String.format("Removed Quest \u00A7e%d\u00A77 for Player '\u00A7b%s\u00A77'", questid, playerdata.playername));
}
}
@SubCommand(
desc = "Find quest id number by its name",
usage = "<questName>"
)
public void id(ICommandSender sender, String args[]) throws CommandException {
if(args.length == 0){
sendError(sender, "Please provide a name for the quest");
return;
}
String catName = String.join(" ", args).toLowerCase();
final Collection<Quest> quests = QuestController.instance.quests.values();
int count = 0;
for(Quest quest : quests){
if(quest.getName().toLowerCase().contains(catName)){
sendResult(sender, String.format("Quest \u00A7e%d\u00A77 - \u00A7c'%s'", quest.id, quest.getName()));
count++;
}
}
if(count == 0){
sendResult(sender, String.format("No Quest found with name: \u00A7c'%s'", catName));
}
}
@SubCommand(
desc = "Find prerequisite quests for an id",
usage = "<questId>"
)
public void prereq(ICommandSender sender, String args[]) throws CommandException {
if(args.length == 0){
sendError(sender, "Please provide an id for the quest");
return;
}
int questid;
try {
questid = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
sendError(sender, "QuestID must be an integer: " + args[1]);
return;
}
Quest quest = QuestController.instance.quests.get(questid);
if (quest == null){
sendError(sender, "Unknown QuestID");
return;
}
final Collection<Quest> quests = QuestController.instance.quests.values();
sendResult(sender, "Prerequisites:");
sendResult(sender, "--------------------");
boolean foundOne = false;
for(Quest allQuest : quests){
if(allQuest.nextQuestid == questid){
foundOne = true;
sendResult(sender, String.format("Quest %d: \u00A7a'%s'", allQuest.id, allQuest.title));
}
}
if(!foundOne){
sendResult(sender, String.format("No Prerequisites found for Quest \u00A7c%d", questid));
}
sendResult(sender, "--------------------");
}
@SubCommand(
desc = "Quick info on a quest",
usage = "<questId>"
)
public void info(ICommandSender sender, String args[]) throws CommandException {
if(args.length == 0){
sendError(sender, "Please provide an id for the quest");
return;
}
int questid;
try {
questid = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
sendError(sender, "QuestID must be an integer: " + args[1]);
return;
}
Quest quest = QuestController.instance.quests.get(questid);
if (quest == null){
sendError(sender, "Unknown QuestID");
return;
}
sendResult(sender, "--------------------");
sendResult(sender, String.format("\u00A7e%d\u00A77: \u00A7a%s", quest.id, quest.title));
sendResult(sender, String.format("Category: \u00A7b%s", quest.category.getName()));
sendResult(sender, String.format("Type: \u00A76%s", quest.type.toString()));
sendResult(sender, String.format("Repeatable: \u00A76%s", quest.repeat.toString()));
sendResult(sender, String.format("Complete: \u00A76%s", quest.completion.toString()));
if(quest.completion == EnumQuestCompletion.Npc){
sendResult(sender, String.format("NPC: \u00A76%s", quest.completerNpc));
}
if(quest.nextQuestid != -1){
sendResult(sender, String.format("Next Quest ID: \u00A7c%d", quest.nextQuestid));
}
sendResult(sender, "--------------------");
}
@SubCommand(
desc="reload quests from disk",
+1 -1
View File
@@ -76,7 +76,7 @@ public class LogWriter {
logger.setUseParentHandlers(false);
Handler consoleHandler = new ConsoleHandler();
consoleHandler.setFormatter(handler.getFormatter());
consoleHandler.setLevel(Level.ALL);
consoleHandler.setLevel(Level.FINEST);
logger.addHandler(consoleHandler);
logger.setLevel(Level.ALL);
info(new Date().toString());
@@ -36,24 +36,24 @@ public class GuiNpcManagePlayerData extends GuiNPCInterface2 implements IScrollD
{
super.initGui();
scroll = new GuiCustomScroll(this,0);
scroll.setSize(190, 175);
scroll.setSize(303, 175);
scroll.guiLeft = guiLeft + 4;
scroll.guiTop = guiTop + 16;
addScroll(scroll);
addLabel(new GuiNpcLabel(0,"All Players", guiLeft + 10, guiTop + 6));
this.addButton(new GuiNpcButton(0, guiLeft + 200, guiTop + 10,98, 20, "selectWorld.deleteButton"));
this.addButton(new GuiNpcButton(1, guiLeft + 200, guiTop + 32,98, 20, "Players"));
this.addButton(new GuiNpcButton(2, guiLeft + 200, guiTop + 54,98, 20, "Quest Data"));
this.addButton(new GuiNpcButton(3, guiLeft + 200, guiTop + 76,98, 20, "Dialog Data"));
this.addButton(new GuiNpcButton(4, guiLeft + 200, guiTop + 98,98, 20, "Transport Data"));
this.addButton(new GuiNpcButton(5, guiLeft + 200, guiTop + 120,98, 20, "Bank Data"));
this.addButton(new GuiNpcButton(6, guiLeft + 200, guiTop + 142,98, 20, "Faction Data"));
this.addButton(new GuiNpcButton(0, guiLeft + 313, guiTop + 10,98, 20, "selectWorld.deleteButton"));
this.addButton(new GuiNpcButton(1, guiLeft + 313, guiTop + 32,98, 20, "Players"));
this.addButton(new GuiNpcButton(2, guiLeft + 313, guiTop + 54,98, 20, "Quest Data"));
this.addButton(new GuiNpcButton(3, guiLeft + 313, guiTop + 76,98, 20, "Dialog Data"));
this.addButton(new GuiNpcButton(4, guiLeft + 313, guiTop + 98,98, 20, "Transport Data"));
this.addButton(new GuiNpcButton(5, guiLeft + 313, guiTop + 120,98, 20, "Bank Data"));
this.addButton(new GuiNpcButton(6, guiLeft + 313, guiTop + 142,98, 20, "Faction Data"));
this.addButton(new GuiNpcButton(7, guiLeft + 200, guiTop + 193,98, 20, "Regen PlayerMap"));
this.addButton(new GuiNpcButton(7, guiLeft + 313, guiTop + 193,98, 20, "Regen PlayerMap"));
addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 4, guiTop + 193, 190, 20, search));
addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 4, guiTop + 193, 303, 20, search));
getTextField(0).enabled = selection == EnumPlayerData.Players;
initButtons();