Search in sources :

Example 6 with Player

use of org.spongepowered.api.entity.living.player.Player in project TotalEconomy by Erigitic.

the class TEJobManager method onPlayerFish.

/**
     * Used for the catch option in jobs. Will check if the job has the catch node and if it does it will check if the
     * item that was caught is present in the config of the player's job. If it is, it will grab the job exp reward as
     * well as the pay.
     *
     * @param event FishingEvent.Stop
     */
@Listener
public void onPlayerFish(FishingEvent.Stop event) {
    if (event.getCause().first(Player.class).isPresent()) {
        // no transaction, so execution can stop
        if (event.getItemStackTransaction().size() == 0) {
            return;
        }
        Transaction<ItemStackSnapshot> itemTransaction = event.getItemStackTransaction().get(0);
        ItemStack itemStack = itemTransaction.getFinal().createStack();
        Player player = event.getCause().first(Player.class).get();
        UUID playerUUID = player.getUniqueId();
        String playerJob = getPlayerJob(player);
        Optional<TEJob> optPlayerJob = getJob(playerJob, true);
        if (optPlayerJob.isPresent()) {
            if (itemStack.get(FishData.class).isPresent()) {
                FishData fishData = itemStack.get(FishData.class).get();
                String fishName = fishData.type().get().getName();
                Optional<TEActionReward> reward = Optional.empty();
                List<String> sets = optPlayerJob.get().getSets();
                for (String s : sets) {
                    Optional<TEJobSet> optSet = getJobSet(s);
                    if (!optSet.isPresent()) {
                        logger.warn("[TE] Job " + getPlayerJob(player) + " has nonexistent set \"" + s + "\"");
                        continue;
                    }
                    reward = optSet.get().getRewardFor("catch", fishName);
                }
                if (reward.isPresent()) {
                    int expAmount = reward.get().getExpReward();
                    BigDecimal payAmount = reward.get().getMoneyReward();
                    boolean notify = accountConfig.getNode(playerUUID.toString(), "jobnotifications").getBoolean();
                    TEAccount playerAccount = (TEAccount) accountManager.getOrCreateAccount(player.getUniqueId()).get();
                    if (notify) {
                        notifyPlayer(player, payAmount);
                    }
                    addExp(player, expAmount);
                    playerAccount.deposit(totalEconomy.getDefaultCurrency(), payAmount, Cause.of(NamedCause.of("TotalEconomy", totalEconomy.getPluginContainer())));
                    checkForLevel(player);
                }
            }
        }
    }
}
Also used : Player(org.spongepowered.api.entity.living.player.Player) TEAccount(com.erigitic.config.TEAccount) BigDecimal(java.math.BigDecimal) FishData(org.spongepowered.api.data.manipulator.mutable.item.FishData) ItemStackSnapshot(org.spongepowered.api.item.inventory.ItemStackSnapshot) ItemStack(org.spongepowered.api.item.inventory.ItemStack) Listener(org.spongepowered.api.event.Listener)

Example 7 with Player

use of org.spongepowered.api.entity.living.player.Player in project TotalEconomy by Erigitic.

the class TEJobManager method startSalaryTask.

/**
     * Start the timer that pays out the salary to each player after a specified time in seconds
     */
private void startSalaryTask() {
    Scheduler scheduler = totalEconomy.getGame().getScheduler();
    Task.Builder payTask = scheduler.createTaskBuilder();
    payTask.execute(() -> {
        for (Player player : totalEconomy.getServer().getOnlinePlayers()) {
            Optional<TEJob> optJob = getJob(getPlayerJob(player), true);
            if (!optJob.isPresent()) {
                player.sendMessage(Text.of(TextColors.RED, "[TE] Cannot pay your salary! Contact your administrator!"));
                return;
            }
            if (optJob.get().salaryEnabled()) {
                BigDecimal salary = optJob.get().getSalary();
                TEAccount playerAccount = (TEAccount) accountManager.getOrCreateAccount(player.getUniqueId()).get();
                TransactionResult result = playerAccount.deposit(totalEconomy.getDefaultCurrency(), salary, Cause.of(NamedCause.of("TotalEconomy", totalEconomy.getPluginContainer())));
                if (result.getResult() == ResultType.SUCCESS) {
                    player.sendMessage(Text.of(TextColors.GRAY, "Your salary of ", TextColors.GOLD, totalEconomy.getDefaultCurrency().format(salary), TextColors.GRAY, " has just been paid."));
                } else {
                    player.sendMessage(Text.of(TextColors.RED, "[TE] Failed to pay your salary! You may want to contact your admin - TransactionResult: ", result.getResult().toString()));
                }
            }
        }
    }).delay(jobsConfig.getNode("salarydelay").getInt(), TimeUnit.SECONDS).interval(jobsConfig.getNode("salarydelay").getInt(), TimeUnit.SECONDS).name("Pay Day").submit(totalEconomy);
}
Also used : Task(org.spongepowered.api.scheduler.Task) Player(org.spongepowered.api.entity.living.player.Player) TransactionResult(org.spongepowered.api.service.economy.transaction.TransactionResult) Scheduler(org.spongepowered.api.scheduler.Scheduler) TEAccount(com.erigitic.config.TEAccount) BigDecimal(java.math.BigDecimal)

Example 8 with Player

use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.

the class BuildWorldWrapper method createFor.

private PlayerCombatParser createFor(Cancellable event) {
    return new PlayerCombatParser() {

        @Override
        public void processPvP(Player attacker, Player defender) {
            Optional<PvPService> optService = Sponge.getServiceManager().provide(PvPService.class);
            if (optService.isPresent()) {
                PvPService service = optService.get();
                if (service.getPvPState(attacker).allowByDefault() && service.getPvPState(defender).allowByDefault()) {
                    return;
                }
            }
            attacker.sendMessage(Text.of(TextColors.RED, "PvP is opt-in only in build worlds!"));
            event.setCancelled(true);
        }
    };
}
Also used : Player(org.spongepowered.api.entity.living.player.Player) PvPService(com.skelril.skree.service.PvPService) PlayerCombatParser(com.skelril.nitro.combat.PlayerCombatParser)

Example 9 with Player

use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.

the class CustomTerragu method process.

public void process(ChangeBlockEvent.Break event) {
    if (event.getTransactions().size() > 1) {
        return;
    }
    Optional<Player> optPlayer = event.getCause().first(Player.class);
    if (optPlayer.isPresent()) {
        Player player = optPlayer.get();
        Optional<Direction> optClickedDir = Optional.ofNullable(clickMap.get(player));
        Optional<org.spongepowered.api.item.inventory.ItemStack> optStack = player.getItemInHand(HandTypes.MAIN_HAND);
        if (optStack.isPresent() && optClickedDir.isPresent()) {
            if (optStack.get().getItem() == this) {
                ItemStack stack = tf(optStack.get());
                for (Transaction<BlockSnapshot> snapshot : event.getTransactions()) {
                    if (!snapshot.getOriginal().getLocation().isPresent()) {
                        return;
                    }
                    int maxDist = getMaxEditDist(stack);
                    int dmg = destroyLine(player, optClickedDir.get(), maxDist - 1, snapshot.getOriginal());
                    stack.damageItem(dmg, tf(player));
                    player.setItemInHand(HandTypes.MAIN_HAND, tf(stack));
                }
            }
        }
    }
}
Also used : EntityPlayer(net.minecraft.entity.player.EntityPlayer) Player(org.spongepowered.api.entity.living.player.Player) BlockSnapshot(org.spongepowered.api.block.BlockSnapshot) ItemStack(net.minecraft.item.ItemStack) Direction(org.spongepowered.api.util.Direction)

Example 10 with Player

use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.

the class ZoneItemUtil method rescindGroupInvite.

public static void rescindGroupInvite(ItemStack stack) {
    Optional<String> zone = getZone(stack);
    for (Player aPlayer : Sponge.getServer().getOnlinePlayers()) {
        ItemStack[] itemStacks = tf(aPlayer).inventory.mainInventory;
        for (int i = 0; i < itemStacks.length; ++i) {
            if (hasSameZoneID(stack, itemStacks[i]) && isZoneSlaveItem(stack)) {
                if (!zone.isPresent()) {
                    aPlayer.sendMessage(Text.of(TextColors.RED, "A group you were invited to has been destroyed."));
                } else {
                    aPlayer.sendMessage(Text.of(TextColors.RED, "A " + zone.get() + " group you were invited to has been destroyed."));
                }
                itemStacks[i] = null;
            }
        }
        tf(aPlayer).inventoryContainer.detectAndSendChanges();
    }
}
Also used : EntityPlayer(net.minecraft.entity.player.EntityPlayer) Player(org.spongepowered.api.entity.living.player.Player) ItemStack(net.minecraft.item.ItemStack)

Aggregations

Player (org.spongepowered.api.entity.living.player.Player)113 Listener (org.spongepowered.api.event.Listener)34 ItemStack (org.spongepowered.api.item.inventory.ItemStack)28 Entity (org.spongepowered.api.entity.Entity)25 World (org.spongepowered.api.world.World)19 BigDecimal (java.math.BigDecimal)16 Text (org.spongepowered.api.text.Text)13 ItemStackFactory.newItemStack (com.skelril.nitro.item.ItemStackFactory.newItemStack)12 Vector3d (com.flowpowered.math.vector.Vector3d)10 PlayerCombatParser (com.skelril.nitro.combat.PlayerCombatParser)10 Living (org.spongepowered.api.entity.living.Living)10 Location (org.spongepowered.api.world.Location)10 List (java.util.List)9 MarketService (com.skelril.skree.service.MarketService)8 Optional (java.util.Optional)8 ItemStack (net.minecraft.item.ItemStack)8 DamageEntityEvent (org.spongepowered.api.event.entity.DamageEntityEvent)8 TextColors (org.spongepowered.api.text.format.TextColors)8 TEAccount (com.erigitic.config.TEAccount)7 ArrayList (java.util.ArrayList)7