From 0d99f705e882fc9765a56e964e63c428a3cabb4f Mon Sep 17 00:00:00 2001 From: = Date: Thu, 14 Nov 2024 01:15:24 +0200 Subject: [PATCH] painting provider --- .../entitylib/meta/other/PaintingMeta.java | 5 +++++ .../spawning/SpawnPacketProviders.java | 20 ++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/me/tofaa/entitylib/meta/other/PaintingMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/other/PaintingMeta.java index cd0e64c..dc2adea 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/other/PaintingMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/other/PaintingMeta.java @@ -1,6 +1,7 @@ package me.tofaa.entitylib.meta.other; import com.github.retrooper.packetevents.protocol.world.Direction; +import com.github.retrooper.packetevents.protocol.world.PaintingType; import me.tofaa.entitylib.meta.EntityMeta; import me.tofaa.entitylib.meta.Metadata; import org.jetbrains.annotations.NotNull; @@ -115,6 +116,10 @@ public class PaintingMeta extends EntityMeta { return this.height; } + public PaintingType asProtocolType() { + return PaintingType.getById(this.ordinal()); + } + } } diff --git a/api/src/main/java/me/tofaa/entitylib/wrapper/spawning/SpawnPacketProviders.java b/api/src/main/java/me/tofaa/entitylib/wrapper/spawning/SpawnPacketProviders.java index d694b2f..c4fa136 100644 --- a/api/src/main/java/me/tofaa/entitylib/wrapper/spawning/SpawnPacketProviders.java +++ b/api/src/main/java/me/tofaa/entitylib/wrapper/spawning/SpawnPacketProviders.java @@ -1,15 +1,14 @@ package me.tofaa.entitylib.wrapper.spawning; import com.github.retrooper.packetevents.protocol.world.Location; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnExperienceOrb; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnLivingEntity; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnWeatherEntity; +import com.github.retrooper.packetevents.wrapper.play.server.*; +import me.tofaa.entitylib.meta.other.PaintingMeta; import me.tofaa.entitylib.utils.Check; import me.tofaa.entitylib.wrapper.WrapperExperienceOrbEntity; import org.jetbrains.annotations.NotNull; import sun.reflect.generics.reflectiveObjects.NotImplementedException; +import java.awt.*; import java.util.Optional; interface SpawnPacketProviders { @@ -41,9 +40,20 @@ interface SpawnPacketProviders { ); }; - @NotNull SpawnPacketProvider WEATHER_ENTITY = (user, entity) -> { + @NotNull SpawnPacketProvider LEGACY_WEATHER_ENTITY = (user, entity) -> { throw new NotImplementedException(); }; + @NotNull SpawnPacketProvider LEGACY_PAINTING = (user, entity) -> { + Check.stateCondition(!(entity.getEntityMeta() instanceof PaintingMeta), "Attempted to use spawn packet provider for paintings but not using an entity with PaintingMeta."); + PaintingMeta meta = entity.getEntityMeta(PaintingMeta.class); + return new WrapperPlayServerSpawnPainting( + entity.getEntityId(), + entity.getUuid(), + meta.getType().asProtocolType(), + entity.getLocation().getPosition().toVector3i(), + meta.getDirection() + ); + }; @NotNull SpawnPacketProvider PRE_1_19_LIVING = (user, entity) -> { Location location = entity.getLocation();