3
0
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:
Boy 2024-04-28 14:35:39 +02:00
Ursprung ab4a1c1f27
Commit 47dcc38e94
2 geänderte Dateien mit 79 neuen und 1 gelöschten Zeilen

Datei anzeigen

@ -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;
}
}

Datei anzeigen

@ -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();