Skip to content

Commit 8f82943

Browse files
committed
Improved code for MentorCommand
1 parent 530af00 commit 8f82943

File tree

1 file changed

+97
-106
lines changed

1 file changed

+97
-106
lines changed

src/main/java/info/tregmine/commands/MentorCommand.java

+97-106
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@ public class MentorCommand extends AbstractCommand {
2222

2323
private static int onlineTeachers = 0;
2424

25+
26+
private Queue<GenericPlayer> mentors;
27+
2528
public MentorCommand(Tregmine tregmine) {
2629
super(tregmine, "mentor");
30+
mentors = tregmine.getMentorQueue();
2731
onlineTeachers = tregmine.getOnlineTeachers();
2832
}
2933

@@ -118,121 +122,108 @@ public static void startMentoring(Tregmine tregmine, GenericPlayer student, Gene
118122

119123
@Override
120124
public boolean handlePlayer(GenericPlayer player, String[] args) {
121-
String action = "queue";
122-
if (args.length > 0) {
123-
action = args[0];
124-
}
125-
126-
if ("queue".equalsIgnoreCase(action)) {
127-
if (!player.canMentor()) {
128-
error(player, "You have not been granted mentoring abilities.");
129-
return true;
130-
}
131-
132-
if (player.getStudent() != null) {
133-
error(player, "You can only mentor one " + "student at any given time.");
134-
return true;
135-
}
136-
137-
Queue<GenericPlayer> students = tregmine.getStudentQueue();
138-
if (students.size() > 0) {
139-
GenericPlayer student = students.poll();
140-
startMentoring(tregmine, student, player);
141-
return true;
142-
}
125+
String action = args.length > 0 ? args[0] : "queue";
143126

144-
Queue<GenericPlayer> mentors = tregmine.getMentorQueue();
145-
mentors.offer(player);
146-
147-
player.sendMessage(GREEN + "You are now part of the mentor queue. " + "You are number "
148-
+ mentors.size() + ". Type /mentor cancel " + "to opt out.");
149-
} else if ("cancel".equalsIgnoreCase(action)) {
150-
if (player.getRank() == Rank.TOURIST) {
151-
GenericPlayer mentor = player.getMentor();
152-
153-
try (IContext ctx = tregmine.createContext()) {
154-
IMentorLogDAO mentorLogDAO = ctx.getMentorLogDAO();
155-
int mentorLogId = mentorLogDAO.getMentorLogId(player, mentor);
156-
mentorLogDAO.updateMentorLogEvent(mentorLogId, IMentorLogDAO.MentoringEvent.CANCELLED);
157-
} catch (DAOException e) {
158-
throw new RuntimeException(e);
127+
switch (action) {
128+
case "queue":
129+
if (!player.canMentor()) {
130+
error(player, "You have not been granted mentoring abilities.");
131+
return true;
159132
}
160133

161-
player.setMentor(null);
162-
mentor.setStudent(null);
163-
164-
mentor.sendMessage(player.getName() + "" + RED + " cancelled " + "mentoring with you.");
165-
player.sendMessage(GREEN + "Mentoring cancelled. Attempting to " + "find you a new mentor.");
166-
167-
findMentor(tregmine, player);
168-
} else {
169-
Queue<GenericPlayer> mentors = tregmine.getMentorQueue();
170-
if (!mentors.contains(player)) {
171-
error(player, "You are not part of the mentor queue. "
172-
+ "If you have already been assigned a student, you cannot " + "abort the mentoring.");
134+
if (player.getStudent() != null) {
135+
error(player, "You can only mentor one " + "student at any given time.");
173136
return true;
174137
}
175-
mentors.remove(player);
176-
177-
player.sendMessage(GREEN + "You are no longer part of the mentor queue.");
178-
}
179-
} else if ("complete".equalsIgnoreCase(action)) {
180-
if (!player.getRank().canMentor() && tregmine.getOnlineTeachers() >= 1) {
181-
error(player, "There are mentors available, you cannot skip mentoring.");
182-
return true;
183-
}
184-
if (tregmine.getOnlineTeachers() == 0 && player.getMentor() == null && player.getRank() == Rank.TOURIST) {
185-
try (IContext ctx = tregmine.createContext()) {
186-
player.setRank(Rank.SETTLER);
187-
188-
IPlayerDAO playerDAO = ctx.getPlayerDAO();
189-
playerDAO.updatePlayer(player);
190-
playerDAO.updatePlayerInfo(player);
191138

192-
IMentorLogDAO mentorLogDAO = ctx.getMentorLogDAO();
193-
int mentorLogId = mentorLogDAO.getMentorLogId(player, player);
194-
195-
mentorLogDAO.updateMentorLogEvent(mentorLogId, IMentorLogDAO.MentoringEvent.SKIPPED);
196-
player.sendMessage(ChatColor.GREEN + "You have been elevated to settler status.");
197-
} catch (DAOException e) {
198-
throw new RuntimeException(e);
139+
Queue<GenericPlayer> students = tregmine.getStudentQueue();
140+
if (students.size() > 0) {
141+
GenericPlayer student = students.poll();
142+
startMentoring(tregmine, student, player);
143+
return true;
199144
}
200-
return true;
201-
}
202-
GenericPlayer student = player.getStudent();
203-
if (student == null) {
204-
error(player, "You are not mentoring anyone right now.");
205-
return true;
206-
}
207-
if (student != null) {
208-
try (IContext ctx = tregmine.createContext()) {
209-
student.setRank(Rank.SETTLER);
210-
211-
IPlayerDAO playerDAO = ctx.getPlayerDAO();
212-
playerDAO.updatePlayer(student);
213-
playerDAO.updatePlayerInfo(student);
214-
215-
player.setStudent(null);
216-
student.setMentor(null);
217-
218-
IMentorLogDAO mentorLogDAO = ctx.getMentorLogDAO();
219-
int mentorLogId = mentorLogDAO.getMentorLogId(student, player);
220-
221-
mentorLogDAO.updateMentorLogEvent(mentorLogId, IMentorLogDAO.MentoringEvent.COMPLETED);
222-
player.sendMessage(GREEN + "Mentoring of " + student.getName() + GREEN + " has now finished!");
223-
player.giveExp(100);
224-
225-
student.sendMessage(GREEN + "Congratulations! You have now achieved "
226-
+ "settler status. We hope you'll enjoy your stay on Tregmine!");
227-
} catch (DAOException e) {
228-
throw new RuntimeException(e);
145+
mentors.offer(player);
146+
147+
player.sendMessage(GREEN + "You are now part of the mentor queue. " + "You are number "
148+
+ mentors.size() + ". Type /mentor cancel " + "to opt out.");
149+
break;
150+
case "cancel":
151+
if (player.getRank() == Rank.TOURIST) {
152+
GenericPlayer mentor = player.getMentor();
153+
154+
try (IContext ctx = tregmine.createContext()) {
155+
IMentorLogDAO mentorLogDAO = ctx.getMentorLogDAO();
156+
int mentorLogId = mentorLogDAO.getMentorLogId(player, mentor);
157+
mentorLogDAO.updateMentorLogEvent(mentorLogId, IMentorLogDAO.MentoringEvent.CANCELLED);
158+
} catch (DAOException e) {
159+
throw new RuntimeException(e);
160+
}
161+
162+
player.setMentor(null);
163+
mentor.setStudent(null);
164+
165+
mentor.sendMessage(player.getName() + "" + RED + " cancelled " + "mentoring with you.");
166+
player.sendMessage(GREEN + "Mentoring cancelled. Attempting to " + "find you a new mentor.");
167+
168+
findMentor(tregmine, player);
169+
} else {
170+
Queue<GenericPlayer> mentors = tregmine.getMentorQueue();
171+
if (!mentors.contains(player)) return error(player, "You are not part of the mentor queue. "
172+
+ "If you have already been assigned a student, you cannot " + "abort the mentoring.");
173+
mentors.remove(player);
174+
175+
player.sendMessage(GREEN + "You are no longer part of the mentor queue.");
229176
}
230-
return true;
231-
}
232-
} else {
233-
return false;
177+
case "complete":
178+
if (!player.getRank().canMentor() && tregmine.getOnlineTeachers() >= 1) return error(player, "There are mentors available, you cannot skip mentoring.");
179+
if (tregmine.getOnlineTeachers() == 0 && player.getMentor() == null && player.getRank() == Rank.TOURIST) {
180+
try (IContext ctx = tregmine.createContext()) {
181+
player.setRank(Rank.SETTLER);
182+
183+
IPlayerDAO playerDAO = ctx.getPlayerDAO();
184+
playerDAO.updatePlayer(player);
185+
playerDAO.updatePlayerInfo(player);
186+
187+
IMentorLogDAO mentorLogDAO = ctx.getMentorLogDAO();
188+
int mentorLogId = mentorLogDAO.getMentorLogId(player, player);
189+
190+
mentorLogDAO.updateMentorLogEvent(mentorLogId, IMentorLogDAO.MentoringEvent.SKIPPED);
191+
player.sendMessage(ChatColor.GREEN + "You have been elevated to settler status.");
192+
} catch (DAOException e) {
193+
throw new RuntimeException(e);
194+
}
195+
return true;
196+
}
197+
GenericPlayer student = player.getStudent();
198+
if (student == null) return error(player, "You are not mentoring anyone right now.");
199+
if (student != null) {
200+
try (IContext ctx = tregmine.createContext()) {
201+
student.setRank(Rank.SETTLER);
202+
203+
IPlayerDAO playerDAO = ctx.getPlayerDAO();
204+
playerDAO.updatePlayer(student);
205+
playerDAO.updatePlayerInfo(student);
206+
207+
player.setStudent(null);
208+
student.setMentor(null);
209+
210+
IMentorLogDAO mentorLogDAO = ctx.getMentorLogDAO();
211+
int mentorLogId = mentorLogDAO.getMentorLogId(student, player);
212+
213+
mentorLogDAO.updateMentorLogEvent(mentorLogId, IMentorLogDAO.MentoringEvent.COMPLETED);
214+
player.sendMessage(GREEN + "Mentoring of " + student.getName() + GREEN + " has now finished!");
215+
player.giveExp(100);
216+
217+
student.sendMessage(GREEN + "Congratulations! You have now achieved "
218+
+ "settler status. We hope you'll enjoy your stay on Tregmine!");
219+
} catch (DAOException e) {
220+
throw new RuntimeException(e);
221+
}
222+
return true;
223+
}
224+
default:
225+
return false;
234226
}
235-
236227
return true;
237228
}
238229
}

0 commit comments

Comments
 (0)