Skip to content

Commit 8a92a86

Browse files
Jurorno9BalaM314
authored andcommitted
/stop offline menu now menulist, pagemenu empty arr support
1 parent c4a5a15 commit 8a92a86

File tree

4 files changed

+50
-15
lines changed

4 files changed

+50
-15
lines changed

build/scripts/menus.js

Lines changed: 9 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/scripts/staffCommands.js

Lines changed: 17 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/menus.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,12 @@ export function pageMenu(title: string, description: string, elements: GUI_Eleme
126126
let pages = elements.length
127127
function drawpage(index: number) {
128128
let e: GUI_Element[] = [];
129-
e.push(...elements[index])
130-
e.push(new GUI_Page(index + 1, pages))
129+
if(!pages){
130+
e.push(new GUI_Cancel());
131+
}else{
132+
e.push(...elements[index])
133+
e.push(new GUI_Page(index + 1, pages))
134+
}
131135
menu(title, description, e, target, (res) => {
132136
// handle control element of the ui
133137
if (typeof res.data === 'string') {
@@ -143,17 +147,16 @@ export function pageMenu(title: string, description: string, elements: GUI_Eleme
143147
break;
144148
default:
145149
callback(res);
150+
break;
146151
}
147-
} else {
148-
callback(res);
149152
}
150153
})
151154
return;
152155
}
153156
drawpage(0);
154-
155157
}
156158
//TODO make list a GUI_Element[] instead of a single Container
159+
//TODO use GUI_Element for formatting instead of defaulting to single column
157160
export function listMenu(title: string, description: string, list: GUI_Container, target: FishPlayer, callback: (opts: { data: any, text: string, sender: FishPlayer, outputSuccess: (message: string) => void, outputFail: (message: string) => void; }) => void, pageSize: number = 10) {
158161
let pooledData: any[] = [];
159162
list.data().flat().forEach((data) => { pooledData.push(data) });

src/staffCommands.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { maxTime } from "./globals";
1010
import { updateMaps } from "./files";
1111
import * as fjsContext from "./fjsContext";
1212
import { fishState, ipPattern, uuidPattern } from "./globals";
13-
import { GUI_Cancel, GUI_Confirm, GUI_Container, menu } from './menus';
13+
import { GUI_Cancel, GUI_Confirm, GUI_Container, listMenu, menu } from './menus';
1414
import { FishPlayer } from "./players";
1515
import { Rank } from "./ranks";
1616
import { addToTileHistory, colorBadBoolean, formatTime, formatTimeRelative, getAntiBotInfo, logAction, match, serverRestartLoop, untilForever, updateBans } from "./utils";
@@ -223,7 +223,7 @@ export const commands = commandList({
223223
}
224224

225225

226-
menu("Stop", "Choose a player to mark", [new GUI_Container(possiblePlayers, "auto", p => p.lastName), new GUI_Cancel()], sender, ({data: optionPlayer, sender}) => {
226+
listMenu("Stop", "Choose a player to mark", new GUI_Container(possiblePlayers, "auto", (p:PlayerInfo) => {return p.lastName}), sender, ({data: optionPlayer}) => {
227227
if(args.time == null){
228228
menu("Stop", "Select stop time", [new GUI_Container(["2 days", "7 days", "30 days", "forever"])], sender, ({text: optionTime}) => {
229229
const time =
@@ -406,6 +406,7 @@ export const commands = commandList({
406406
return;
407407
}
408408
//Overload 3: ban by menu
409+
/*
409410
menu(`[scarlet]BAN[]`, "Choose a player to ban.", [new GUI_Container(setToArray(Groups.player), "auto", opt => opt.name), new GUI_Cancel()], sender, ({data:target}) => {
410411
if(target.admin) fail(`Cannot ban an admin.`);
411412
menu("Confirm", `Are you sure you want to ban ${target.name}?`, [new GUI_Confirm()], sender, ({data:confirm}) => {
@@ -418,6 +419,19 @@ export const commands = commandList({
418419
updateBans(player => `[scarlet]Player [yellow]${player.name}[scarlet] has been whacked by ${sender.prefixedName}.`);
419420
});
420421
});
422+
*/
423+
listMenu(`[scarlet]BAN[]`, "Choose a player to ban.", new GUI_Container(setToArray(Groups.player), "auto", opt => opt.name), sender, ({data:target}) => {
424+
if(target.admin) fail(`Cannot ban an admin.`);
425+
menu("Confirm", `Are you sure you want to ban ${target.name}?`, [new GUI_Confirm()], sender, ({data:confirm}) => {
426+
if(!confirm) fail("Cancelled.");
427+
admins.banPlayerIP(target.ip()); //this also bans the UUID
428+
api.ban({ip: target.ip(), uuid: target.uuid()});
429+
Log.info(`${target.ip()}/${target.uuid()} was banned.`);
430+
logAction("banned", sender, target.getInfo());
431+
outputSuccess(f`Banned player ${target}.`);
432+
updateBans(player => `[scarlet]Player [yellow]${player.name}[scarlet] has been whacked by ${sender.prefixedName}.`);
433+
});
434+
});
421435
}
422436
},
423437

0 commit comments

Comments
 (0)