Search in sources :

Example 1 with First

use of org.spongepowered.api.event.filter.cause.First in project Skree by Skelril.

the class ZoneSlaveOrb method onDropItem.

@Listener
public void onDropItem(DropItemEvent.Dispense event) {
    event.getEntities().stream().filter(entity -> entity instanceof Item).forEach(entity -> {
        ItemStack stack = ((EntityItem) entity).getEntityItem();
        if (isZoneSlaveItem(stack)) {
            Optional<Player> optPlayer = event.getCause().first(Player.class);
            if (optPlayer.isPresent()) {
                Player player = optPlayer.get();
                if (!notifyGroupOwner(stack, player, false)) {
                // TODO Log this, as it shouldn't happen
                }
                player.sendMessage(Text.of(TextColors.RED, "You've declined your group invite."));
            }
            entity.remove();
        }
    });
}
Also used : EntityItem(net.minecraft.entity.item.EntityItem) CustomItem(com.skelril.nitro.registry.item.CustomItem) Item(org.spongepowered.api.entity.Item) DropItemEvent(org.spongepowered.api.event.item.inventory.DropItemEvent) EventAwareContent(com.skelril.nitro.selector.EventAwareContent) Tristate(org.spongepowered.api.util.Tristate) ItemStack(net.minecraft.item.ItemStack) List(java.util.List) SkreePlugin(com.skelril.skree.SkreePlugin) Text(org.spongepowered.api.text.Text) Side(net.minecraftforge.fml.relauncher.Side) EntityPlayer(net.minecraft.entity.player.EntityPlayer) Task(org.spongepowered.api.scheduler.Task) HandTypes(org.spongepowered.api.data.type.HandTypes) Optional(java.util.Optional) CreativeTabs(net.minecraft.creativetab.CreativeTabs) Player(org.spongepowered.api.entity.living.player.Player) InteractBlockEvent(org.spongepowered.api.event.block.InteractBlockEvent) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) Listener(org.spongepowered.api.event.Listener) TextColors(org.spongepowered.api.text.format.TextColors) First(org.spongepowered.api.event.filter.cause.First) ZoneItemUtil(com.skelril.skree.content.registry.item.zone.ZoneItemUtil) EntityItem(net.minecraft.entity.item.EntityItem) CustomItem(com.skelril.nitro.registry.item.CustomItem) Item(org.spongepowered.api.entity.Item) EntityPlayer(net.minecraft.entity.player.EntityPlayer) Player(org.spongepowered.api.entity.living.player.Player) ItemStack(net.minecraft.item.ItemStack) EntityItem(net.minecraft.entity.item.EntityItem) Listener(org.spongepowered.api.event.Listener)

Example 2 with First

use of org.spongepowered.api.event.filter.cause.First in project Skree by Skelril.

the class ZoneMasterOrb 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 (!isZoneMasterItem(itemStack)) {
        return;
    }
    if (isAttuned(itemStack)) {
        if (isInInstanceWorld(player)) {
            player.sendMessage(Text.of(TextColors.RED, "You cannot start an instance from within an instance."));
            event.setCancelled(true);
            return;
        }
        Optional<ZoneService> optService = Sponge.getServiceManager().provide(ZoneService.class);
        if (optService.isPresent()) {
            Task.builder().execute(() -> {
                ZoneService service = optService.get();
                List<Player> group = new ArrayList<>();
                group.add(player);
                for (Player aPlayer : Sponge.getServer().getOnlinePlayers()) {
                    NonNullList<ItemStack> itemStacks = tf(aPlayer).inventory.mainInventory;
                    for (ItemStack aStack : itemStacks) {
                        if (!hasSameZoneID(itemStack, aStack)) {
                            continue;
                        }
                        if (isAttuned(aStack) && isZoneSlaveItem(aStack)) {
                            Optional<Player> optZoneOwner = getGroupOwner(aStack);
                            if (optZoneOwner.isPresent()) {
                                group.add(aPlayer);
                                break;
                            }
                        }
                    }
                }
                for (int i = group.size() - 1; i >= 0; --i) {
                    purgeZoneItems(group.get(i), itemStack);
                    // createLightningStrike(group.get(i)); SpongeCommon/420
                    saveLocation(group.get(i));
                    getMainWorldWrapper().getLobby().add(group.get(i));
                }
                service.requestZone(getZone(itemStack).get(), group, () -> {
                    getMainWorldWrapper().getLobby().remove(group);
                }, result -> {
                    if (result.isPresent()) {
                        result.get().stream().filter(entry -> entry.getValue() != ZoneStatus.ADDED).forEach(entry -> {
                            player.setLocation(getRespawnLocation(player));
                            player.sendMessage(Text.of(TextColors.RED, "You could not be added to the zone."));
                        });
                    }
                });
            }).delayTicks(1).submit(SkreePlugin.inst());
        }
    }
    event.setUseBlockResult(Tristate.FALSE);
}
Also used : WorldService(com.skelril.skree.service.WorldService) InstanceWorldWrapper(com.skelril.skree.content.world.instance.InstanceWorldWrapper) SpawnCause(org.spongepowered.api.event.cause.entity.spawn.SpawnCause) DropItemEvent(org.spongepowered.api.event.item.inventory.DropItemEvent) Craftable(com.skelril.nitro.registry.Craftable) SkreePlugin(com.skelril.skree.SkreePlugin) WorldEffectWrapper(com.skelril.skree.service.internal.world.WorldEffectWrapper) Side(net.minecraftforge.fml.relauncher.Side) NonNullList(net.minecraft.util.NonNullList) ForgeTransformer.tf(com.skelril.nitro.transformer.ForgeTransformer.tf) ZoneItemUtil(com.skelril.skree.content.registry.item.zone.ZoneItemUtil) EntityItem(net.minecraft.entity.item.EntityItem) Lightning(org.spongepowered.api.entity.weather.Lightning) Location(org.spongepowered.api.world.Location) InteractEntityEvent(org.spongepowered.api.event.entity.InteractEntityEvent) CustomItem(com.skelril.nitro.registry.item.CustomItem) Sponge(org.spongepowered.api.Sponge) CustomItemTypes(com.skelril.skree.content.registry.item.CustomItemTypes) EventAwareContent(com.skelril.nitro.selector.EventAwareContent) ClientConnectionEvent(org.spongepowered.api.event.network.ClientConnectionEvent) Tristate(org.spongepowered.api.util.Tristate) Cause(org.spongepowered.api.event.cause.Cause) List(java.util.List) RespawnService(com.skelril.skree.service.RespawnService) EntityPlayer(net.minecraft.entity.player.EntityPlayer) World(org.spongepowered.api.world.World) HandTypes(org.spongepowered.api.data.type.HandTypes) Optional(java.util.Optional) Player(org.spongepowered.api.entity.living.player.Player) First(org.spongepowered.api.event.filter.cause.First) Blocks(net.minecraft.init.Blocks) Getter(org.spongepowered.api.event.filter.Getter) Keys(org.spongepowered.api.data.key.Keys) MainWorldWrapper(com.skelril.skree.content.world.main.MainWorldWrapper) GameRegistry(net.minecraftforge.fml.common.registry.GameRegistry) ArrayList(java.util.ArrayList) ItemStack(net.minecraft.item.ItemStack) EntityTypes(org.spongepowered.api.entity.EntityTypes) Text(org.spongepowered.api.text.Text) Task(org.spongepowered.api.scheduler.Task) ZoneStatus(com.skelril.skree.service.internal.zone.ZoneStatus) CreativeTabs(net.minecraft.creativetab.CreativeTabs) InteractBlockEvent(org.spongepowered.api.event.block.InteractBlockEvent) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) TextColors(org.spongepowered.api.text.format.TextColors) ZoneService(com.skelril.skree.service.ZoneService) Items(net.minecraft.init.Items) Item(org.spongepowered.api.entity.Item) SpawnTypes(org.spongepowered.api.event.cause.entity.spawn.SpawnTypes) ItemStackFactory.newItemStack(com.skelril.nitro.item.ItemStackFactory.newItemStack) Listener(org.spongepowered.api.event.Listener) EntityPlayer(net.minecraft.entity.player.EntityPlayer) Player(org.spongepowered.api.entity.living.player.Player) ArrayList(java.util.ArrayList) ZoneService(com.skelril.skree.service.ZoneService) ItemStack(net.minecraft.item.ItemStack) ItemStackFactory.newItemStack(com.skelril.nitro.item.ItemStackFactory.newItemStack) Listener(org.spongepowered.api.event.Listener)

Aggregations

CustomItem (com.skelril.nitro.registry.item.CustomItem)2 EventAwareContent (com.skelril.nitro.selector.EventAwareContent)2 SkreePlugin (com.skelril.skree.SkreePlugin)2 ZoneItemUtil (com.skelril.skree.content.registry.item.zone.ZoneItemUtil)2 List (java.util.List)2 Optional (java.util.Optional)2 CreativeTabs (net.minecraft.creativetab.CreativeTabs)2 EntityItem (net.minecraft.entity.item.EntityItem)2 EntityPlayer (net.minecraft.entity.player.EntityPlayer)2 ItemStack (net.minecraft.item.ItemStack)2 Side (net.minecraftforge.fml.relauncher.Side)2 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)2 HandTypes (org.spongepowered.api.data.type.HandTypes)2 Item (org.spongepowered.api.entity.Item)2 Player (org.spongepowered.api.entity.living.player.Player)2 Listener (org.spongepowered.api.event.Listener)2 InteractBlockEvent (org.spongepowered.api.event.block.InteractBlockEvent)2 ItemStackFactory.newItemStack (com.skelril.nitro.item.ItemStackFactory.newItemStack)1 Craftable (com.skelril.nitro.registry.Craftable)1 ForgeTransformer.tf (com.skelril.nitro.transformer.ForgeTransformer.tf)1