Search in sources :

Example 91 with Player

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

the class WildernessWorldWrapper method run.

@Override
public void run() {
    for (Player player : Sponge.getServer().getOnlinePlayers()) {
        int currentLevel = getLevel(player.getLocation()).orElse(-1);
        WildernessPlayerMeta meta = playerMetaMap.getOrDefault(player.getUniqueId(), new WildernessPlayerMeta());
        int lastLevel = meta.getLevel();
        // Always set the level so as to mark the player meta as relevant
        // if it is -1 no time stamp update shall be performed
        meta.setLevel(currentLevel);
        // Display a title change, unless the current level is -1 (outside of the Wilderness)
        if (currentLevel != -1 && currentLevel != lastLevel) {
            TextColor color = (allowsPvP(currentLevel) ? TextColors.RED : TextColors.WHITE);
            player.sendTitle(Title.builder().title(Text.of(color, "Wilderness Level")).subtitle(Text.of(color, currentLevel)).fadeIn(20).fadeOut(20).build());
            playerMetaMap.putIfAbsent(player.getUniqueId(), meta);
        }
    }
    playerMetaMap.entrySet().removeIf(entry -> System.currentTimeMillis() - entry.getValue().getLastChange() >= TimeUnit.MINUTES.toMillis(5));
}
Also used : Player(org.spongepowered.api.entity.living.player.Player) TextColor(org.spongepowered.api.text.format.TextColor)

Example 92 with Player

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

the class MainWorldWrapper method createFor.

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

        @Override
        public void processPvP(Player attacker, Player defender, @Nullable Entity indirectSource) {
            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;
                }
            }
            if (!(indirectSource instanceof Snowball) || !lobby.contains(attacker)) {
                attacker.sendMessage(Text.of(TextColors.RED, "PvP is opt-in only in the main world!"));
                event.setCancelled(true);
            }
        }

        @Override
        public void processNonLivingAttack(DamageSource attacker, Player defender) {
            if (attacker.getType() == DamageTypes.VOID) {
                defender.setLocation(defender.getWorld().getSpawnLocation());
                defender.offer(Keys.FALL_DISTANCE, 0F);
                event.setCancelled(true);
            }
        }
    };
}
Also used : Entity(org.spongepowered.api.entity.Entity) Snowball(org.spongepowered.api.entity.projectile.Snowball) Player(org.spongepowered.api.entity.living.player.Player) PvPService(com.skelril.skree.service.PvPService) DamageSource(org.spongepowered.api.event.cause.entity.damage.source.DamageSource) PlayerCombatParser(com.skelril.nitro.combat.PlayerCombatParser) Nullable(javax.annotation.Nullable)

Example 93 with Player

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

the class WorldCommand method execute.

@Override
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException {
    if (!(src instanceof Player)) {
        src.sendMessage(Text.of("You must be a player to use this command!"));
        return CommandResult.empty();
    }
    WorldService service = Sponge.getServiceManager().provideUnchecked(WorldService.class);
    Optional<WorldProperties> optProperties = args.getOne("world");
    if (!optProperties.isPresent()) {
        src.sendMessage(Text.of(TextColors.YELLOW, "You are in: " + ((Player) src).getWorld().getName() + "."));
        return CommandResult.empty();
    }
    Optional<World> optWorld = Sponge.getServer().getWorld(optProperties.get().getWorldName());
    if (!optWorld.isPresent()) {
        src.sendMessage(Text.of(TextColors.RED, "No loaded world by that name found."));
        return CommandResult.empty();
    }
    World world = optWorld.get();
    if (!WorldEntryPermissionCheck.checkDestination((Player) src, world)) {
        src.sendMessage(Text.of(TextColors.RED, "You do not have permission to access worlds of this type."));
        return CommandResult.empty();
    }
    Optional<Location<World>> optLoc = SafeTeleportHelper.teleport((Entity) src, optWorld.get().getSpawnLocation());
    if (optLoc.isPresent()) {
        src.sendMessage(Text.of(TextColors.YELLOW, "Entered world: " + world.getName() + " successfully!"));
    } else if (args.hasAny("f")) {
        ((Player) src).setLocation(optWorld.get().getSpawnLocation());
        src.sendMessage(Text.of(TextColors.YELLOW, "Force entered world: " + world.getName() + " successfully!"));
    } else {
        src.sendMessage(Text.of(TextColors.YELLOW, "Failed to enter " + world.getName() + " please report this!"));
    }
    return CommandResult.success();
}
Also used : Player(org.spongepowered.api.entity.living.player.Player) World(org.spongepowered.api.world.World) WorldService(com.skelril.skree.service.WorldService) WorldProperties(org.spongepowered.api.world.storage.WorldProperties) Location(org.spongepowered.api.world.Location)

Example 94 with Player

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

the class ZoneTransitionalOrbListener method onBlockInteract.

@Listener
public void onBlockInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) {
    Optional<org.spongepowered.api.item.inventory.ItemStack> optItemStack = player.getItemInHand(HandTypes.MAIN_HAND);
    if (!optItemStack.isPresent()) {
        return;
    }
    ItemStack itemStack = tf(optItemStack.get());
    if (itemStack.getItem() != CustomItemTypes.ZONE_TRANSITIONAL_ORB) {
        return;
    }
    Optional<T> optInst = getApplicable(player);
    if (optInst.isPresent()) {
        Clause<Player, ZoneStatus> status = optInst.get().remove(player);
        if (status.getValue() == ZoneStatus.REMOVED) {
            Task.builder().execute(() -> {
                tf(player).inventory.decrStackSize(tf(player).inventory.currentItem, 1);
                tf(player).inventoryContainer.detectAndSendChanges();
            }).delayTicks(1).submit(SkreePlugin.inst());
        }
        event.setUseBlockResult(Tristate.FALSE);
    }
}
Also used : Player(org.spongepowered.api.entity.living.player.Player) ZoneStatus(com.skelril.skree.service.internal.zone.ZoneStatus) ItemStack(net.minecraft.item.ItemStack) Listener(org.spongepowered.api.event.Listener)

Example 95 with Player

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

the class CursedMineListener method onPlayerTeleport.

@Listener
public void onPlayerTeleport(MoveEntityEvent.Teleport event) {
    Entity entity = event.getTargetEntity();
    if (!(entity instanceof Player)) {
        return;
    }
    Player player = (Player) entity;
    Optional<CursedMineInstance> optInst = manager.getApplicableZone(player);
    HitList hitList = manager.getHitList();
    if ((optInst.isPresent() && optInst.get().hasRecordForPlayer(player)) || hitList.isOnHitList(player)) {
        event.setCancelled(true);
        player.sendMessage(Text.of(TextColors.RED, "You have been tele-blocked!"));
    }
}
Also used : Entity(org.spongepowered.api.entity.Entity) Player(org.spongepowered.api.entity.living.player.Player) HitList(com.skelril.skree.content.zone.global.cursedmine.hitlist.HitList) Listener(org.spongepowered.api.event.Listener)

Aggregations

Player (org.spongepowered.api.entity.living.player.Player)125 Listener (org.spongepowered.api.event.Listener)40 ItemStack (org.spongepowered.api.item.inventory.ItemStack)28 Entity (org.spongepowered.api.entity.Entity)25 World (org.spongepowered.api.world.World)21 Text (org.spongepowered.api.text.Text)17 BigDecimal (java.math.BigDecimal)16 EntityPlayer (net.minecraft.entity.player.EntityPlayer)13 ItemStackFactory.newItemStack (com.skelril.nitro.item.ItemStackFactory.newItemStack)12 Vector3d (com.flowpowered.math.vector.Vector3d)10 PlayerCombatParser (com.skelril.nitro.combat.PlayerCombatParser)10 List (java.util.List)10 Optional (java.util.Optional)10 ItemStack (net.minecraft.item.ItemStack)10 Living (org.spongepowered.api.entity.living.Living)10 Task (org.spongepowered.api.scheduler.Task)10 Location (org.spongepowered.api.world.Location)10 MarketService (com.skelril.skree.service.MarketService)8 DamageEntityEvent (org.spongepowered.api.event.entity.DamageEntityEvent)8 TextColors (org.spongepowered.api.text.format.TextColors)8