Make bstats opt-out, WIP spawning packet provider

This commit is contained in:
= 2024-11-14 01:08:10 +02:00
parent 1c1c6a479e
commit b68c86d190
3 changed files with 63 additions and 1 deletions

View file

@ -13,6 +13,7 @@ import me.tofaa.entitylib.meta.types.ObjectData;
import me.tofaa.entitylib.tick.Tickable;
import me.tofaa.entitylib.ve.ViewerRule;
import net.kyori.adventure.text.Component;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnmodifiableView;
@ -94,13 +95,15 @@ public class WrapperEntity implements Tickable {
return spawn(location, EntityLib.getApi().getDefaultContainer());
}
protected int getObjectData() {
@ApiStatus.Internal
public int getObjectData() {
if (entityMeta instanceof ObjectData) {
return ((ObjectData) entityMeta).getObjectData();
}
return 0;
}
@ApiStatus.Internal
public Optional<Vector3d> createVeloPacket() {
Optional<Vector3d> velocity;
double veloX = 0, veloY = 0, veloZ = 0;

View file

@ -0,0 +1,12 @@
package me.tofaa.entitylib.wrapper.spawning;
import com.github.retrooper.packetevents.protocol.player.User;
import com.github.retrooper.packetevents.wrapper.PacketWrapper;
import me.tofaa.entitylib.wrapper.WrapperEntity;
@FunctionalInterface
public interface SpawnPacketProvider<T extends PacketWrapper<T>> extends SpawnPacketProviders {
T provide(User user, WrapperEntity entity);
}

View file

@ -0,0 +1,47 @@
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.WrapperPlayServerSpawnLivingEntity;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnWeatherEntity;
import me.tofaa.entitylib.utils.Check;
import org.jetbrains.annotations.NotNull;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.Optional;
interface SpawnPacketProviders {
@NotNull SpawnPacketProvider<WrapperPlayServerSpawnEntity> GENERAL = (user, entity) -> {
Location location = entity.getLocation();
return new WrapperPlayServerSpawnEntity(
entity.getEntityId(),
Optional.of(entity.getUuid()),
entity.getEntityType(),
location.getPosition(),
location.getPitch(),
location.getYaw(),
location.getYaw(),
entity.getObjectData(),
entity.createVeloPacket()
);
};
@NotNull SpawnPacketProvider<WrapperPlayServerSpawnWeatherEntity> WEATHER_ENTITY = (user, entity) -> {
throw new NotImplementedException();
};
@NotNull SpawnPacketProvider<WrapperPlayServerSpawnLivingEntity> PRE_1_19_LIVING = (user, entity) -> {
Location location = entity.getLocation();
return new WrapperPlayServerSpawnLivingEntity(
entity.getEntityId(),
entity.getUuid(),
entity.getEntityType(),
location,
location.getPitch(),
entity.getVelocity(),
entity.getEntityMeta()
);
};
}