Search in sources :

Example 51 with Cause

use of org.spongepowered.api.event.Cause in project SpongeCommon by SpongePowered.

the class QueryThreadGs4Mixin method impl$basicSendTo.

// @formatter:on
@Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/rcon/thread/QueryThreadGs4;sendTo([BLjava/net/DatagramPacket;)V"))
public void impl$basicSendTo(QueryThreadGs4 query, byte[] param0, DatagramPacket datagramPacket) throws IOException {
    final Cause currentCause = Sponge.server().causeStackManager().currentCause();
    final QueryServerEvent.Basic event = SpongeEventFactory.createQueryServerEventBasic(currentCause, (InetSocketAddress) datagramPacket.getSocketAddress(), "SMP", this.worldName, this.serverName, this.maxPlayers, this.serverInterface.getPlayerCount());
    Sponge.eventManager().post(event);
    NetworkDataOutputStream var3 = new NetworkDataOutputStream(1460);
    var3.write(0);
    var3.writeBytes(this.shadow$getIdentBytes(event.address()));
    var3.writeString(event.motd());
    var3.writeString(event.gameType());
    var3.writeString(event.map());
    var3.writeString(Integer.toString(event.playerCount()));
    var3.writeString(Integer.toString(event.maxPlayerCount()));
    var3.writeShort((short) this.serverPort);
    var3.writeString(this.hostIp);
    this.shadow$sendTo(var3.toByteArray(), datagramPacket);
}
Also used : NetworkDataOutputStream(net.minecraft.server.rcon.NetworkDataOutputStream) Cause(org.spongepowered.api.event.Cause) QueryServerEvent(org.spongepowered.api.event.server.query.QueryServerEvent) Redirect(org.spongepowered.asm.mixin.injection.Redirect)

Example 52 with Cause

use of org.spongepowered.api.event.Cause in project SpongeCommon by SpongePowered.

the class SpongeInventoryMenu method onClose.

public void onClose(Player player, Container container) {
    if (this.closeHandler != null) {
        try (CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame()) {
            frame.pushCause(player);
            Cause cause = frame.currentCause();
            this.closeHandler.handle(cause, container);
        }
    }
    this.tracked.remove(container);
}
Also used : CauseStackManager(org.spongepowered.api.event.CauseStackManager) Cause(org.spongepowered.api.event.Cause)

Example 53 with Cause

use of org.spongepowered.api.event.Cause in project SpongeCommon by SpongePowered.

the class CommandSourceStackMixin_API method rotation.

@Override
public Optional<Vector3d> rotation() {
    final Cause cause = this.cause();
    final EventContext eventContext = cause.context();
    if (eventContext.containsKey(EventContextKeys.ROTATION)) {
        return eventContext.get(EventContextKeys.ROTATION);
    }
    return cause.first(Entity.class).map(Entity::rotation);
}
Also used : EventContext(org.spongepowered.api.event.EventContext) Entity(org.spongepowered.api.entity.Entity) Cause(org.spongepowered.api.event.Cause) CommandCause(org.spongepowered.api.command.CommandCause)

Example 54 with Cause

use of org.spongepowered.api.event.Cause in project SpongeCommon by SpongePowered.

the class CommandSourceStackMixin_API method location.

@Override
public Optional<ServerLocation> location() {
    final Cause cause = this.cause();
    final EventContext eventContext = cause.context();
    if (eventContext.containsKey(EventContextKeys.LOCATION)) {
        return eventContext.get(EventContextKeys.LOCATION);
    }
    final Optional<ServerLocation> optionalLocation = this.targetBlock().flatMap(BlockSnapshot::location);
    if (optionalLocation.isPresent()) {
        return optionalLocation;
    }
    return cause.first(Locatable.class).map(Locatable::serverLocation);
}
Also used : EventContext(org.spongepowered.api.event.EventContext) ServerLocation(org.spongepowered.api.world.server.ServerLocation) Cause(org.spongepowered.api.event.Cause) CommandCause(org.spongepowered.api.command.CommandCause) BlockSnapshot(org.spongepowered.api.block.BlockSnapshot) Locatable(org.spongepowered.api.world.Locatable)

Example 55 with Cause

use of org.spongepowered.api.event.Cause in project SpongeCommon by SpongePowered.

the class ServerPlayerMixin_API method simulateChat.

@Override
public PlayerChatEvent simulateChat(final Component message, final Cause cause) {
    Objects.requireNonNull(message, "message");
    Objects.requireNonNull(cause, "cause");
    final PlayerChatFormatter originalRouter = this.chatFormatter();
    final Audience audience = (Audience) this.server;
    final PlayerChatEvent event = SpongeEventFactory.createPlayerChatEvent(cause, audience, Optional.of(audience), originalRouter, Optional.of(originalRouter), message, message);
    if (!SpongeCommon.post(event)) {
        event.chatFormatter().ifPresent(formatter -> event.audience().map(SpongeAdventure::unpackAudiences).ifPresent(targets -> {
            for (final Audience target : targets) {
                formatter.format(this, target, event.message(), event.originalMessage()).ifPresent(formattedMessage -> target.sendMessage(this, formattedMessage));
            }
        }));
    }
    return event;
}
Also used : BookUtil(org.spongepowered.common.util.BookUtil) SpongeServer(org.spongepowered.common.SpongeServer) PlayerAdvancements(net.minecraft.server.PlayerAdvancements) MusicDisc(org.spongepowered.api.effect.sound.music.MusicDisc) SpongeAdventure(org.spongepowered.common.adventure.SpongeAdventure) ClientboundCustomSoundPacket(net.minecraft.network.protocol.game.ClientboundCustomSoundPacket) Registry(net.minecraft.core.Registry) SpongeGameProfile(org.spongepowered.common.profile.SpongeGameProfile) CooldownTracker(org.spongepowered.api.entity.living.player.CooldownTracker) MinecraftServer(net.minecraft.server.MinecraftServer) ParticleEffect(org.spongepowered.api.effect.particle.ParticleEffect) Mixin(org.spongepowered.asm.mixin.Mixin) Locale(java.util.Locale) Duration(java.time.Duration) GameProfile(org.spongepowered.api.profile.GameProfile) ServerScoreboardBridge(org.spongepowered.common.bridge.server.ServerScoreboardBridge) ServerPlayerBridge(org.spongepowered.common.bridge.server.level.ServerPlayerBridge) SoundStop(net.kyori.adventure.sound.SoundStop) AdvancementProgress(org.spongepowered.api.advancement.AdvancementProgress) ServerBossEvent(net.minecraft.server.level.ServerBossEvent) TitlePart(net.kyori.adventure.title.TitlePart) ClientboundStopSoundPacket(net.minecraft.network.protocol.game.ClientboundStopSoundPacket) User(org.spongepowered.api.entity.living.player.User) NetworkUtil(org.spongepowered.common.util.NetworkUtil) Collection(java.util.Collection) ClientboundSetTitlesPacket(net.minecraft.network.protocol.game.ClientboundSetTitlesPacket) PlayerChatEvent(org.spongepowered.api.event.message.PlayerChatEvent) WorldBorderAccessor(org.spongepowered.common.accessor.world.level.border.WorldBorderAccessor) SpongeResourcePack(org.spongepowered.common.resourcepack.SpongeResourcePack) Set(java.util.Set) ResourcePack(org.spongepowered.api.resourcepack.ResourcePack) PermissionChecker(net.kyori.adventure.permission.PermissionChecker) Final(org.spongepowered.asm.mixin.Final) Instant(java.time.Instant) TabList(org.spongepowered.api.entity.living.player.tab.TabList) BlockState(org.spongepowered.api.block.BlockState) PlayerAdvancementsBridge(org.spongepowered.common.bridge.server.PlayerAdvancementsBridge) Objects(java.util.Objects) Keys(org.spongepowered.api.data.Keys) List(java.util.List) Sound(net.kyori.adventure.sound.Sound) PlayerChatFormatter(org.spongepowered.api.entity.living.player.PlayerChatFormatter) BlockPos(net.minecraft.core.BlockPos) SoundEvent(net.minecraft.sounds.SoundEvent) SpongeUserView(org.spongepowered.common.entity.player.SpongeUserView) Shadow(org.spongepowered.asm.mixin.Shadow) Optional(java.util.Optional) Packet(net.minecraft.network.protocol.Packet) NotNull(org.jetbrains.annotations.NotNull) ClientboundChatPacket(net.minecraft.network.protocol.game.ClientboundChatPacket) ClientboundSetBorderPacket(net.minecraft.network.protocol.game.ClientboundSetBorderPacket) ChangeWorldBorderEvent(org.spongepowered.api.event.world.ChangeWorldBorderEvent) Pointers(net.kyori.adventure.pointer.Pointers) NonNull(org.checkerframework.checker.nullness.qual.NonNull) ServerWorld(org.spongepowered.api.world.server.ServerWorld) WorldType(org.spongepowered.api.world.WorldType) ServerPlayerConnection(org.spongepowered.api.network.ServerPlayerConnection) Book(net.kyori.adventure.inventory.Book) WorldBorder(org.spongepowered.api.world.border.WorldBorder) Overwrite(org.spongepowered.asm.mixin.Overwrite) Value(org.spongepowered.api.data.value.Value) ClientboundResourcePackPacket(net.minecraft.network.protocol.game.ClientboundResourcePackPacket) WorldBorderBridge(org.spongepowered.common.bridge.world.level.border.WorldBorderBridge) ClientboundBlockUpdatePacket(net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket) Title(net.kyori.adventure.title.Title) Component(net.kyori.adventure.text.Component) ClientboundSoundPacket(net.minecraft.network.protocol.game.ClientboundSoundPacket) Nullable(javax.annotation.Nullable) SpongeTabList(org.spongepowered.common.entity.player.tab.SpongeTabList) ClientboundSoundEntityPacket(net.minecraft.network.protocol.game.ClientboundSoundEntityPacket) Identity(net.kyori.adventure.identity.Identity) BossBar(net.kyori.adventure.bossbar.BossBar) SpongeEventFactory(org.spongepowered.api.event.SpongeEventFactory) Scoreboard(org.spongepowered.api.scoreboard.Scoreboard) SpongeCommon(org.spongepowered.common.SpongeCommon) PhaseTracker(org.spongepowered.common.event.tracking.PhaseTracker) Cause(org.spongepowered.api.event.Cause) PlayerMixin_API(org.spongepowered.common.mixin.api.minecraft.world.entity.player.PlayerMixin_API) ServerGamePacketListenerImpl(net.minecraft.server.network.ServerGamePacketListenerImpl) Entity(net.minecraft.world.entity.Entity) ChronoUnit(java.time.temporal.ChronoUnit) Vector3d(org.spongepowered.math.vector.Vector3d) Audience(net.kyori.adventure.audience.Audience) Advancement(org.spongepowered.api.advancement.Advancement) MessageType(net.kyori.adventure.audience.MessageType) SpongeParticleHelper(org.spongepowered.common.effect.particle.SpongeParticleHelper) Collections(java.util.Collections) AdvancementTree(org.spongepowered.api.advancement.AdvancementTree) ServerPlayer(org.spongepowered.api.entity.living.player.server.ServerPlayer) SpongeMusicDisc(org.spongepowered.common.effect.record.SpongeMusicDisc) Vector3i(org.spongepowered.math.vector.Vector3i) PlayerChatEvent(org.spongepowered.api.event.message.PlayerChatEvent) Audience(net.kyori.adventure.audience.Audience) SpongeAdventure(org.spongepowered.common.adventure.SpongeAdventure) PlayerChatFormatter(org.spongepowered.api.entity.living.player.PlayerChatFormatter)

Aggregations

Cause (org.spongepowered.api.event.Cause)55 ItemStackSnapshot (org.spongepowered.api.item.inventory.ItemStackSnapshot)19 ServerWorld (org.spongepowered.api.world.server.ServerWorld)18 Inject (org.spongepowered.asm.mixin.injection.Inject)18 ArrayList (java.util.ArrayList)16 BlockPos (net.minecraft.core.BlockPos)15 CauseStackManager (org.spongepowered.api.event.CauseStackManager)15 List (java.util.List)13 Optional (java.util.Optional)12 ServerLocation (org.spongepowered.api.world.server.ServerLocation)12 Entity (net.minecraft.world.entity.Entity)11 Player (net.minecraft.world.entity.player.Player)11 Collections (java.util.Collections)10 Collection (java.util.Collection)9 Map (java.util.Map)9 LivingEntity (net.minecraft.world.entity.LivingEntity)9 EventContext (org.spongepowered.api.event.EventContext)9 HashMap (java.util.HashMap)8 BlockState (net.minecraft.world.level.block.state.BlockState)8 ServerPlayer (org.spongepowered.api.entity.living.player.server.ServerPlayer)8