Files
jgl_sunlit_patch/kubejs/server_scripts/pigracingCommand.js
T
2026-07-31 10:34:32 +09:00

63 lines
2.1 KiB
JavaScript

ServerEvents.commandRegistry((event) => {
const { commands: Commands, arguments: Arguments } = event;
event.register(
Commands.literal("pigrace").then(
Commands.argument("pig", Arguments.STRING.create(event)).executes((c) =>
bet(c.source.player, Arguments.STRING.getResult(c, "pig"))
)
)
);
let bet = (player, pig) => {
const server = player.server;
const raceData = player.server.persistentData;
const options = ["red", "blue", "yellow", "green"];
const coins = [
"numismatics:crown",
"numismatics:sun",
"numismatics:neptunium_coin",
"numismatics:ancient_coin",
"numismatics:prismatic_coin",
];
const bet = player.offHandItem;
const betPigName = global.formatName(String(pig.toLowerCase()));
let betValue;
if (!raceData.pigraceInProgress) {
player.tell(Text.translatable("command.society.pig_race.no_active").red());
return -1;
}
if (!options.includes(pig.toLowerCase())) {
player.tell(Text.translatable("command.society.pig_race.invalid_pig").red());
return -1;
}
if (!coins.includes(bet.id)) {
player.tell(Text.translatable("command.society.pig_race.no_bet").red());
return -1;
}
betValue = betValue = global.calculateCoinValue(bet);
if (betValue < raceData.bets[0].bet) {
player.tell(Text.translatable("command.society.pig_race.insufficient_bet", `${raceData.bets[0].bet}`).red());
return -1;
}
for (let index = 0; index < raceData.bets.length; index++) {
if (String(player.username).equals(String(raceData.bets[index].player))) {
player.tell(Text.translatable("command.society.pig_race.already_bet").red());
return -1;
}
}
player.offHandItem = "minecraft:air";
server.tell(
Text.translatable(
"command.society.pig_race.success",
Text.gold(`${player.username}`),
Text.gold(`${global.formatPrice(betValue)}`),
global.getPigColoredName(betPigName)
).gray()
);
raceData.bets.push({ player: player.username, bet: betValue, betPig: betPigName });
return 1;
};
});