Mirror von
https://github.com/Moulberry/AxiomPaperPlugin.git
synchronisiert 2024-09-29 16:00:04 +02:00
feat: add AxiomManipulateEntityEvent
Dieser Commit ist enthalten in:
Ursprung
ab4a1c1f27
Commit
47dcc38e94
@ -0,0 +1,72 @@
|
|||||||
|
package com.moulberry.axiom.event;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class AxiomManipulateEntityEvent extends Event implements Cancellable {
|
||||||
|
|
||||||
|
private static final HandlerList HANDLERS = new HandlerList();
|
||||||
|
|
||||||
|
private final Player player;
|
||||||
|
private final UUID entityUUID;
|
||||||
|
private final Location toLocation;
|
||||||
|
|
||||||
|
private boolean cancelled = false;
|
||||||
|
|
||||||
|
public AxiomManipulateEntityEvent(Player player, UUID entityUUID, Location toLocation) {
|
||||||
|
this.player = player;
|
||||||
|
this.entityUUID = entityUUID;
|
||||||
|
this.toLocation = toLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getToLocation() {
|
||||||
|
return toLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a BukkitEntity from the given UUID.
|
||||||
|
* Do note this might return null in cases where the UUID was from a client-side entity
|
||||||
|
* @return The BukkitEntity, if it exists
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public Entity getEntity() {
|
||||||
|
return Bukkit.getEntity(entityUUID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getUUID() {
|
||||||
|
return entityUUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return this.cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HandlerList getHandlers() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
}
|
@ -2,9 +2,11 @@ package com.moulberry.axiom.packet;
|
|||||||
|
|
||||||
import com.moulberry.axiom.AxiomPaper;
|
import com.moulberry.axiom.AxiomPaper;
|
||||||
import com.moulberry.axiom.NbtSanitization;
|
import com.moulberry.axiom.NbtSanitization;
|
||||||
|
import com.moulberry.axiom.event.AxiomManipulateEntityEvent;
|
||||||
import com.moulberry.axiom.integration.Integration;
|
import com.moulberry.axiom.integration.Integration;
|
||||||
import com.moulberry.axiom.integration.plotsquared.PlotSquaredIntegration;
|
import com.moulberry.axiom.integration.plotsquared.PlotSquaredIntegration;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
@ -134,6 +136,10 @@ public class ManipulateEntityPacketListener implements PluginMessageListener {
|
|||||||
double newZ = entry.relativeMovementSet.contains(RelativeMovement.Z) ? entity.position().z + entryPos.z : entryPos.z;
|
double newZ = entry.relativeMovementSet.contains(RelativeMovement.Z) ? entity.position().z + entryPos.z : entryPos.z;
|
||||||
float newYaw = entry.relativeMovementSet.contains(RelativeMovement.Y_ROT) ? entity.getYRot() + entry.yaw : entry.yaw;
|
float newYaw = entry.relativeMovementSet.contains(RelativeMovement.Y_ROT) ? entity.getYRot() + entry.yaw : entry.yaw;
|
||||||
float newPitch = entry.relativeMovementSet.contains(RelativeMovement.X_ROT) ? entity.getXRot() + entry.pitch : entry.pitch;
|
float newPitch = entry.relativeMovementSet.contains(RelativeMovement.X_ROT) ? entity.getXRot() + entry.pitch : entry.pitch;
|
||||||
|
Location newLocation = new Location(serverLevel.getWorld(), newX, newY, newZ, newYaw, newPitch);
|
||||||
|
|
||||||
|
AxiomManipulateEntityEvent manipulateEvent = new AxiomManipulateEntityEvent(player, entity.getUUID(), newLocation);
|
||||||
|
if (!manipulateEvent.callEvent()) continue;
|
||||||
|
|
||||||
if (entity instanceof HangingEntity hangingEntity) {
|
if (entity instanceof HangingEntity hangingEntity) {
|
||||||
float changedYaw = newYaw - entity.getYRot();
|
float changedYaw = newYaw - entity.getYRot();
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren