use of io.github.nucleuspowered.nucleus.api.nucleusdata.Kit in project Nucleus by NucleusPowered.
the class KitListener method onPlayerInteractInventoryClose.
@Listener
public void onPlayerInteractInventoryClose(final InteractInventoryEvent.Close event, @Root final Player player, @Getter("getTargetInventory") final Container inventory) {
handler.getCurrentlyOpenInventoryCommandKit(inventory).ifPresent(x -> {
// Set the commands.
Kit kitInfo = x.getFirst();
List<String> c = Lists.newArrayList();
// For each slot, is it a written book?
x.getSecond().slots().forEach(slot -> slot.poll().ifPresent(item -> {
if (item.getType().equals(ItemTypes.WRITTEN_BOOK)) {
item.get(Keys.BOOK_PAGES).ifPresent(y -> c.add(fixup(y)));
} else if (item.getType().equals(ItemTypes.WRITABLE_BOOK)) {
item.get(Keys.BOOK_PAGES).ifPresent(page -> c.add(getCommandFromText(page)));
} else {
// Drop the item.
item.get(Keys.ITEM_BLOCKSTATE).ifPresent(z -> {
World world = player.getLocation().getExtent();
Entity e = world.createEntity(EntityTypes.ITEM, player.getLocation().getPosition());
e.offer(Keys.ITEM_BLOCKSTATE, z);
world.spawnEntity(e);
});
}
kitInfo.setCommands(c);
handler.saveKit(kitInfo);
}));
player.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.kit.command.edit.success", kitInfo.getName()));
handler.removeKitCommandInventoryFromListener(inventory);
});
handler.removeViewer(inventory);
}
use of io.github.nucleuspowered.nucleus.api.nucleusdata.Kit in project Nucleus by NucleusPowered.
the class KitArgument method parseValue.
@Nullable
@Override
protected Object parseValue(CommandSource source, CommandArgs args) throws ArgumentParseException {
String kitName = args.next();
if (kitName.isEmpty()) {
throw args.createError(Nucleus.getNucleus().getMessageProvider().getTextMessageWithFormat("args.kit.noname"));
}
Kit kit = kitHandler.getKit(kitName).orElseThrow(() -> args.createError(Nucleus.getNucleus().getMessageProvider().getTextMessageWithFormat("args.kit.noexist")));
if (!checkPermission(source, kit)) {
throw args.createError(Nucleus.getNucleus().getMessageProvider().getTextMessageWithFormat("args.kit.noperms"));
}
return kit;
}
use of io.github.nucleuspowered.nucleus.api.nucleusdata.Kit in project Nucleus by NucleusPowered.
the class KitGiveCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
Kit kit = args.<Kit>getOne(KIT_PARAMETER).get();
Player player = args.<Player>getOne(playerKey).get();
boolean skip = args.hasAny("i");
if (src instanceof Player && player.getUniqueId().equals(((Player) src).getUniqueId())) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.kit.give.self"));
}
Text playerName = Nucleus.getNucleus().getNameUtil().getName(player);
Text kitName = Text.of(kit.getName());
try {
NucleusKitService.RedeemResult redeemResult = KIT_HANDLER.redeemKit(kit, player, !skip, this.mustGetAll);
if (!redeemResult.rejected().isEmpty()) {
// If we drop them, tell the user
if (this.isDrop) {
player.sendMessage(this.plugin.getMessageProvider().getTextMessageWithTextFormat("command.kit.give.itemsdropped", playerName));
redeemResult.rejected().forEach(x -> Util.dropItemOnFloorAtLocation(x, player.getLocation()));
} else {
player.sendMessage(this.plugin.getMessageProvider().getTextMessageWithTextFormat("command.kit.give.fullinventory", playerName));
}
}
src.sendMessage(this.plugin.getMessageProvider().getTextMessageWithTextFormat("command.kit.give.spawned", playerName, kitName));
if (kit.isDisplayMessageOnRedeem()) {
player.sendMessage(this.plugin.getMessageProvider().getTextMessageWithFormat("command.kit.spawned", kit.getName()));
}
return CommandResult.success();
} catch (KitRedeemException ex) {
switch(ex.getReason()) {
case ALREADY_REDEEMED:
throw ReturnMessageException.fromKeyText("command.kit.give.onetime.alreadyredeemed", kitName, playerName);
case COOLDOWN_NOT_EXPIRED:
KitRedeemException.Cooldown kre = (KitRedeemException.Cooldown) ex;
throw ReturnMessageException.fromKeyText("command.kit.give.cooldown", playerName, Text.of(Util.getTimeStringFromSeconds(kre.getTimeLeft().getSeconds())), kitName);
case PRE_EVENT_CANCELLED:
KitRedeemException.PreCancelled krepe = (KitRedeemException.PreCancelled) ex;
throw new ReturnMessageException(krepe.getCancelMessage().orElseGet(() -> (Nucleus.getNucleus().getMessageProvider().getTextMessageWithFormat("command.kit.cancelledpre", kit.getName()))));
case NO_SPACE:
throw ReturnMessageException.fromKeyText("command.kit.give.fullinventorynosave", playerName);
case UNKNOWN:
default:
throw ReturnMessageException.fromKeyText("command.kit.give.fail", playerName, kitName);
}
}
}
use of io.github.nucleuspowered.nucleus.api.nucleusdata.Kit in project Nucleus by NucleusPowered.
the class KitHiddenCommand method executeCommand.
@Override
public CommandResult executeCommand(final CommandSource player, CommandContext args) throws Exception {
Kit kitInfo = args.<Kit>getOne(KIT_PARAMETER).get();
boolean b = args.<Boolean>getOne(toggle).get();
// This Kit is a reference back to the version in list, so we don't need
// to update it explicitly
kitInfo.setHiddenFromList(b);
KIT_HANDLER.saveKit(kitInfo);
player.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat(b ? "command.kit.hidden.off" : "command.kit.hidden.on", kitInfo.getName()));
return CommandResult.success();
}
use of io.github.nucleuspowered.nucleus.api.nucleusdata.Kit in project Nucleus by NucleusPowered.
the class KitListCommand method executeCommand.
@Override
public CommandResult executeCommand(final CommandSource src, CommandContext args) throws Exception {
Set<String> kits = KIT_HANDLER.getKitNames();
if (kits.isEmpty()) {
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.kit.list.empty"));
return CommandResult.empty();
}
PaginationService paginationService = Sponge.getServiceManager().provideUnchecked(PaginationService.class);
ArrayList<Text> kitText = Lists.newArrayList();
final KitUserDataModule user = src instanceof Player ? Nucleus.getNucleus().getUserDataManager().getUnchecked(((Player) src).getUniqueId()).get(KitUserDataModule.class) : null;
final boolean showHidden = kitPermissionHandler.testSuffix(src, "showhidden");
Stream<String> kitStream = KIT_HANDLER.getKitNames(showHidden).stream();
if (this.isSeparatePermissions) {
kitStream = kitStream.filter(kit -> src.hasPermission(KitHandler.getPermissionForKit(kit.toLowerCase())));
}
kitStream.forEach(kit -> kitText.add(createKit(src, user, kit, KIT_HANDLER.getKit(kit).get())));
PaginationList.Builder paginationBuilder = paginationService.builder().contents(kitText).title(plugin.getMessageProvider().getTextMessageWithFormat("command.kit.list.kits")).padding(Text.of(TextColors.GREEN, "-"));
paginationBuilder.sendTo(src);
return CommandResult.success();
}
Aggregations