mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-30 12:29:15 +00:00
Fix Indentation
This commit is contained in:
@@ -3,14 +3,14 @@ package net.momirealms.craftengine.bukkit.entity.data;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
|
||||
|
||||
public class PlayerData<T> extends LivingEntityData<T> {
|
||||
public static final PlayerData<Float> PlayerAbsorption = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$FLOAT, 0.0f);
|
||||
public static final PlayerData<Integer> Score = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$INT, 0);
|
||||
public static final PlayerData<Byte> PlayerModeCustomisation = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$BYTE, (byte) 0);
|
||||
public static final PlayerData<Byte> PlayerMainHand = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$BYTE, (byte) 1);
|
||||
public static final PlayerData<Object> ShoulderLeft = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$COMPOUND_TAG, CoreReflections.instance$CompoundTag$Empty);
|
||||
public static final PlayerData<Object> ShoulderRight = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$COMPOUND_TAG, CoreReflections.instance$CompoundTag$Empty);
|
||||
public static final PlayerData<Float> PlayerAbsorption = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$FLOAT, 0.0f);
|
||||
public static final PlayerData<Integer> Score = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$INT, 0);
|
||||
public static final PlayerData<Byte> PlayerModeCustomisation = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$BYTE, (byte) 0);
|
||||
public static final PlayerData<Byte> PlayerMainHand = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$BYTE, (byte) 1);
|
||||
public static final PlayerData<Object> ShoulderLeft = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$COMPOUND_TAG, CoreReflections.instance$CompoundTag$Empty);
|
||||
public static final PlayerData<Object> ShoulderRight = new PlayerData<>(PlayerData.class, EntityDataValue.Serializers$COMPOUND_TAG, CoreReflections.instance$CompoundTag$Empty);
|
||||
|
||||
public PlayerData(Class<?> clazz, Object serializer, T defaultValue) {
|
||||
super(clazz, serializer, defaultValue);
|
||||
}
|
||||
public PlayerData(Class<?> clazz, Object serializer, T defaultValue) {
|
||||
super(clazz, serializer, defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,76 +11,76 @@ import org.bukkit.entity.Entity;
|
||||
import org.joml.Vector3f;
|
||||
|
||||
public abstract class BukkitSeatEntity extends BukkitEntity implements SeatEntity {
|
||||
private final BukkitFurniture furniture;
|
||||
private final Vector3f vector3f;
|
||||
private final int playerID;
|
||||
private boolean destroyed = false;
|
||||
private final BukkitFurniture furniture;
|
||||
private final Vector3f vector3f;
|
||||
private final int playerID;
|
||||
private boolean destroyed = false;
|
||||
|
||||
public BukkitSeatEntity(Entity entity, Furniture furniture, Vector3f vector3f, int playerID) {
|
||||
super(entity);
|
||||
this.furniture = (BukkitFurniture) furniture;
|
||||
this.vector3f = vector3f;
|
||||
this.playerID = playerID;
|
||||
}
|
||||
public BukkitSeatEntity(Entity entity, Furniture furniture, Vector3f vector3f, int playerID) {
|
||||
super(entity);
|
||||
this.furniture = (BukkitFurniture) furniture;
|
||||
this.vector3f = vector3f;
|
||||
this.playerID = playerID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(NetWorkUser from, NetWorkUser to) {}
|
||||
@Override
|
||||
public void add(NetWorkUser from, NetWorkUser to) {}
|
||||
|
||||
@Override
|
||||
public void dismount(Player player) {
|
||||
if (player == null || destroyed) return;
|
||||
player.setSeat(null);
|
||||
onDismount(player);
|
||||
destroy();
|
||||
}
|
||||
@Override
|
||||
public void dismount(Player player) {
|
||||
if (player == null || destroyed) return;
|
||||
player.setSeat(null);
|
||||
onDismount(player);
|
||||
destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismount(Player player) {
|
||||
@Override
|
||||
public void onDismount(Player player) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void event(Player player, Object event) {}
|
||||
@Override
|
||||
public void event(Player player, Object event) {}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
if (destroyed) return;
|
||||
destroyed = true;
|
||||
@Override
|
||||
public void destroy() {
|
||||
if (destroyed) return;
|
||||
destroyed = true;
|
||||
|
||||
org.bukkit.entity.Entity entity = this.literalObject();
|
||||
if (entity == null) return;
|
||||
org.bukkit.entity.Entity entity = this.literalObject();
|
||||
if (entity == null) return;
|
||||
|
||||
for (org.bukkit.entity.Entity passenger : entity.getPassengers()) {
|
||||
entity.removePassenger(passenger);
|
||||
if (passenger instanceof org.bukkit.entity.Player p && p.getEntityId() == this.playerID) {
|
||||
Player cePlayer = BukkitAdaptors.adapt(p);
|
||||
if (cePlayer != null && cePlayer.entityID() == playerID()) {
|
||||
cePlayer.setSeat(null);
|
||||
onDismount(cePlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
entity.remove();
|
||||
furniture.removeSeatEntity(playerID());
|
||||
furniture.removeOccupiedSeat(vector3f());
|
||||
}
|
||||
for (org.bukkit.entity.Entity passenger : entity.getPassengers()) {
|
||||
entity.removePassenger(passenger);
|
||||
if (passenger instanceof org.bukkit.entity.Player p && p.getEntityId() == this.playerID) {
|
||||
Player cePlayer = BukkitAdaptors.adapt(p);
|
||||
if (cePlayer != null && cePlayer.entityID() == playerID()) {
|
||||
cePlayer.setSeat(null);
|
||||
onDismount(cePlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
entity.remove();
|
||||
furniture.removeSeatEntity(playerID());
|
||||
furniture.removeOccupiedSeat(vector3f());
|
||||
}
|
||||
|
||||
public boolean destroyed() {
|
||||
return destroyed;
|
||||
}
|
||||
public boolean destroyed() {
|
||||
return destroyed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BukkitFurniture furniture() {
|
||||
return this.furniture;
|
||||
}
|
||||
@Override
|
||||
public BukkitFurniture furniture() {
|
||||
return this.furniture;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3f vector3f() {
|
||||
return this.vector3f;
|
||||
}
|
||||
@Override
|
||||
public Vector3f vector3f() {
|
||||
return this.vector3f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int playerID() {
|
||||
return this.playerID;
|
||||
}
|
||||
@Override
|
||||
public int playerID() {
|
||||
return this.playerID;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@ import net.momirealms.craftengine.core.entity.furniture.SeatType;
|
||||
|
||||
public class BukkitSeatTypes extends SeatType {
|
||||
|
||||
public static void init() {
|
||||
register(SIT, SitSeat.FACTORY);
|
||||
register(LAY, LaySeat.FACTORY);
|
||||
register(CRAWL, CrawlSeat.FACTORY);
|
||||
}
|
||||
public static void init() {
|
||||
register(SIT, SitSeat.FACTORY);
|
||||
register(LAY, LaySeat.FACTORY);
|
||||
register(CRAWL, CrawlSeat.FACTORY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,124 +33,124 @@ import java.util.UUID;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class CrawlSeat extends AbstractSeat {
|
||||
public static final SeatFactory FACTORY = new Factory();
|
||||
private static final List<Object> visualData = new ArrayList<>();
|
||||
private final boolean limitPlayerRotation;
|
||||
public static final SeatFactory FACTORY = new Factory();
|
||||
private static final List<Object> visualData = new ArrayList<>();
|
||||
private final boolean limitPlayerRotation;
|
||||
|
||||
static {
|
||||
ShulkerData.NoGravity.addEntityDataIfNotDefaultValue(true, visualData);
|
||||
ShulkerData.Silent.addEntityDataIfNotDefaultValue(true, visualData);
|
||||
ShulkerData.MobFlags.addEntityDataIfNotDefaultValue((byte) 0x01, visualData);
|
||||
ShulkerData.SharedFlags.addEntityDataIfNotDefaultValue((byte) 0x20, visualData);
|
||||
}
|
||||
static {
|
||||
ShulkerData.NoGravity.addEntityDataIfNotDefaultValue(true, visualData);
|
||||
ShulkerData.Silent.addEntityDataIfNotDefaultValue(true, visualData);
|
||||
ShulkerData.MobFlags.addEntityDataIfNotDefaultValue((byte) 0x01, visualData);
|
||||
ShulkerData.SharedFlags.addEntityDataIfNotDefaultValue((byte) 0x20, visualData);
|
||||
}
|
||||
|
||||
public CrawlSeat(Vector3f offset, float yaw, boolean limitPlayerRotation) {
|
||||
super(offset, yaw);
|
||||
this.limitPlayerRotation = limitPlayerRotation;
|
||||
}
|
||||
public CrawlSeat(Vector3f offset, float yaw, boolean limitPlayerRotation) {
|
||||
super(offset, yaw);
|
||||
this.limitPlayerRotation = limitPlayerRotation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeatEntity spawn(Player player, Furniture furniture) {
|
||||
return spawn((org.bukkit.entity.Player) player.platformPlayer(), furniture);
|
||||
}
|
||||
@Override
|
||||
public SeatEntity spawn(Player player, Furniture furniture) {
|
||||
return spawn((org.bukkit.entity.Player) player.platformPlayer(), furniture);
|
||||
}
|
||||
|
||||
public SeatEntity spawn(org.bukkit.entity.Player player, Furniture furniture) {
|
||||
Location location = ((BukkitFurniture)furniture).calculateSeatLocation(this);
|
||||
public SeatEntity spawn(org.bukkit.entity.Player player, Furniture furniture) {
|
||||
Location location = ((BukkitFurniture) furniture).calculateSeatLocation(this);
|
||||
|
||||
org.bukkit.entity.Entity seatEntity = BukkitFurniture.spawnSeatEntity(furniture, player.getWorld(), location, this.limitPlayerRotation, null);
|
||||
if (!seatEntity.addPassenger(player)) {
|
||||
return null;
|
||||
};
|
||||
org.bukkit.entity.Entity seatEntity = BukkitFurniture.spawnSeatEntity(furniture, player.getWorld(), location, this.limitPlayerRotation, null);
|
||||
if (!seatEntity.addPassenger(player)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Fix Rider Pose
|
||||
int entityId = CoreReflections.instance$Entity$ENTITY_COUNTER.incrementAndGet();
|
||||
List<Object> packets = new ArrayList<>();
|
||||
packets.add(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket(entityId, UUID.randomUUID(), location.getX(), location.getY(), location.getZ(), location.getPitch(), location.getYaw(),
|
||||
MEntityTypes.SHULKER, 0, CoreReflections.instance$Vec3$Zero, 0));
|
||||
packets.add(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId, List.copyOf(visualData)));
|
||||
// Fix Rider Pose
|
||||
int entityId = CoreReflections.instance$Entity$ENTITY_COUNTER.incrementAndGet();
|
||||
List<Object> packets = new ArrayList<>();
|
||||
packets.add(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket(entityId, UUID.randomUUID(), location.getX(), location.getY(), location.getZ(), location.getPitch(), location.getYaw(),
|
||||
MEntityTypes.SHULKER, 0, CoreReflections.instance$Vec3$Zero, 0));
|
||||
packets.add(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId, List.copyOf(visualData)));
|
||||
|
||||
try {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object attributeInstance = CoreReflections.constructor$AttributeInstance.newInstance(MAttributeHolders.SCALE, (Consumer<?>) (o) -> {});
|
||||
CoreReflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, 0.6);
|
||||
packets.add(
|
||||
NetworkReflections.constructor$ClientboundUpdateAttributesPacket0
|
||||
.newInstance(entityId, Collections.singletonList(attributeInstance))
|
||||
);
|
||||
packets.add(FastNMS.INSTANCE.constructor$ClientboundSetPassengersPacket(seatEntity.getEntityId(), entityId));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to add crawl seat attributes", e);
|
||||
}
|
||||
try {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object attributeInstance = CoreReflections.constructor$AttributeInstance.newInstance(MAttributeHolders.SCALE, (Consumer<?>) (o) -> {});
|
||||
CoreReflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, 0.6);
|
||||
packets.add(
|
||||
NetworkReflections.constructor$ClientboundUpdateAttributesPacket0
|
||||
.newInstance(entityId, Collections.singletonList(attributeInstance))
|
||||
);
|
||||
packets.add(FastNMS.INSTANCE.constructor$ClientboundSetPassengersPacket(seatEntity.getEntityId(), entityId));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to add crawl seat attributes", e);
|
||||
}
|
||||
|
||||
Object bundle = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets);
|
||||
BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player);
|
||||
serverPlayer.sendPacket(bundle, true);
|
||||
Object bundle = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets);
|
||||
BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player);
|
||||
serverPlayer.sendPacket(bundle, true);
|
||||
|
||||
// Sync Pose
|
||||
player.setPose(Pose.SWIMMING, true);
|
||||
Object syncPosePacket = null;
|
||||
try {
|
||||
Object playerData = CoreReflections.method$Entity$getEntityData.invoke(serverPlayer.serverPlayer());
|
||||
Object dataItem = CoreReflections.method$SynchedEntityData$getItem.invoke(playerData, PlayerData.Pose.entityDataAccessor());
|
||||
Object dataValue = CoreReflections.method$SynchedEntityData$DataItem$value.invoke(dataItem);
|
||||
syncPosePacket = FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(serverPlayer.entityID(), List.of(dataValue));
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to construct sync pose packet", e);
|
||||
}
|
||||
// Sync Pose
|
||||
player.setPose(Pose.SWIMMING, true);
|
||||
Object syncPosePacket = null;
|
||||
try {
|
||||
Object playerData = CoreReflections.method$Entity$getEntityData.invoke(serverPlayer.serverPlayer());
|
||||
Object dataItem = CoreReflections.method$SynchedEntityData$getItem.invoke(playerData, PlayerData.Pose.entityDataAccessor());
|
||||
Object dataValue = CoreReflections.method$SynchedEntityData$DataItem$value.invoke(dataItem);
|
||||
syncPosePacket = FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(serverPlayer.entityID(), List.of(dataValue));
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to construct sync pose packet", e);
|
||||
}
|
||||
|
||||
Object finalSyncPosePacket = syncPosePacket;
|
||||
BukkitCraftEngine.instance().scheduler().sync().runLater(() -> {
|
||||
serverPlayer.sendPacket(finalSyncPosePacket, true);
|
||||
for (org.bukkit.entity.Player p : PlayerUtils.getTrackedBy(player)) {
|
||||
BukkitNetworkManager.instance().sendPacket(BukkitAdaptors.adapt(p), finalSyncPosePacket, true);
|
||||
}
|
||||
}, 1, location.getWorld(), location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
Object finalSyncPosePacket = syncPosePacket;
|
||||
BukkitCraftEngine.instance().scheduler().sync().runLater(() -> {
|
||||
serverPlayer.sendPacket(finalSyncPosePacket, true);
|
||||
for (org.bukkit.entity.Player p : PlayerUtils.getTrackedBy(player)) {
|
||||
BukkitNetworkManager.instance().sendPacket(BukkitAdaptors.adapt(p), finalSyncPosePacket, true);
|
||||
}
|
||||
}, 1, location.getWorld(), location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
|
||||
return new CrawlEntity(seatEntity, furniture, offset(), player.getEntityId(), entityId, syncPosePacket);
|
||||
}
|
||||
return new CrawlEntity(seatEntity, furniture, offset(), player.getEntityId(), entityId, syncPosePacket);
|
||||
}
|
||||
|
||||
private static class CrawlEntity extends BukkitSeatEntity {
|
||||
private final int entityId;
|
||||
private final Object syncPosePacket;
|
||||
private static class CrawlEntity extends BukkitSeatEntity {
|
||||
private final int entityId;
|
||||
private final Object syncPosePacket;
|
||||
|
||||
|
||||
public CrawlEntity(Entity entity, Furniture furniture, Vector3f vector3f, int playerID, int entityId, Object fixPosePacket) {
|
||||
super(entity, furniture, vector3f, playerID);
|
||||
this.entityId = entityId;
|
||||
this.syncPosePacket = fixPosePacket;
|
||||
}
|
||||
public CrawlEntity(Entity entity, Furniture furniture, Vector3f vector3f, int playerID, int entityId, Object fixPosePacket) {
|
||||
super(entity, furniture, vector3f, playerID);
|
||||
this.entityId = entityId;
|
||||
this.syncPosePacket = fixPosePacket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(NetWorkUser from, NetWorkUser to) {
|
||||
to.sendPacket(syncPosePacket, false);
|
||||
}
|
||||
@Override
|
||||
public void add(NetWorkUser from, NetWorkUser to) {
|
||||
to.sendPacket(syncPosePacket, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismount(Player player) {
|
||||
if (player == null) return;
|
||||
org.bukkit.entity.Player bukkitPlayer = (org.bukkit.entity.Player) player.platformPlayer();
|
||||
bukkitPlayer.setPose(Pose.STANDING, false);
|
||||
try {
|
||||
Object packet = NetworkReflections.constructor$ClientboundRemoveEntitiesPacket.newInstance((Object) new int[]{entityId});
|
||||
player.sendPacket(packet, false);
|
||||
} catch (Exception e) {
|
||||
BukkitCraftEngine.instance().logger().warn("Failed to dismount from CrawlEntity", e);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onDismount(Player player) {
|
||||
if (player == null) return;
|
||||
org.bukkit.entity.Player bukkitPlayer = (org.bukkit.entity.Player) player.platformPlayer();
|
||||
bukkitPlayer.setPose(Pose.STANDING, false);
|
||||
try {
|
||||
Object packet = NetworkReflections.constructor$ClientboundRemoveEntitiesPacket.newInstance((Object) new int[]{entityId});
|
||||
player.sendPacket(packet, false);
|
||||
} catch (Exception e) {
|
||||
BukkitCraftEngine.instance().logger().warn("Failed to dismount from CrawlEntity", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SeatType.CRAWL;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public Key type() {
|
||||
return SeatType.CRAWL;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Factory implements SeatFactory {
|
||||
public static class Factory implements SeatFactory {
|
||||
|
||||
@Override
|
||||
public Seat create(List<String> args) {
|
||||
if (args.size() == 1) return new CrawlSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), 0, false);
|
||||
return new CrawlSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), Float.parseFloat(args.get(1)), true);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public Seat create(List<String> args) {
|
||||
if (args.size() == 1) return new CrawlSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), 0, false);
|
||||
return new CrawlSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), Float.parseFloat(args.get(1)), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,46 +13,46 @@ import org.joml.Vector3f;
|
||||
import java.util.List;
|
||||
|
||||
public class SitSeat extends AbstractSeat {
|
||||
public static final SeatFactory FACTORY = new Factory();
|
||||
private final boolean limitPlayerRotation;
|
||||
public static final SeatFactory FACTORY = new Factory();
|
||||
private final boolean limitPlayerRotation;
|
||||
|
||||
public SitSeat(Vector3f offset, float yaw, boolean limitPlayerRotation) {
|
||||
super(offset, yaw);
|
||||
this.limitPlayerRotation = limitPlayerRotation;
|
||||
}
|
||||
public SitSeat(Vector3f offset, float yaw, boolean limitPlayerRotation) {
|
||||
super(offset, yaw);
|
||||
this.limitPlayerRotation = limitPlayerRotation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeatEntity spawn(Player player, Furniture furniture) {
|
||||
return spawn((org.bukkit.entity.Player) player.platformPlayer(), furniture);
|
||||
}
|
||||
@Override
|
||||
public SeatEntity spawn(Player player, Furniture furniture) {
|
||||
return spawn((org.bukkit.entity.Player) player.platformPlayer(), furniture);
|
||||
}
|
||||
|
||||
public SeatEntity spawn(org.bukkit.entity.Player player, Furniture furniture) {
|
||||
Location location = ((BukkitFurniture)furniture).calculateSeatLocation(this);
|
||||
org.bukkit.entity.Entity seatEntity = BukkitFurniture.spawnSeatEntity(furniture, player.getWorld(), location, this.limitPlayerRotation, null);
|
||||
if (!seatEntity.addPassenger(player)) {
|
||||
return null;
|
||||
};
|
||||
return new SitEntity(seatEntity, furniture, offset(), player.getEntityId());
|
||||
}
|
||||
public SeatEntity spawn(org.bukkit.entity.Player player, Furniture furniture) {
|
||||
Location location = ((BukkitFurniture) furniture).calculateSeatLocation(this);
|
||||
org.bukkit.entity.Entity seatEntity = BukkitFurniture.spawnSeatEntity(furniture, player.getWorld(), location, this.limitPlayerRotation, null);
|
||||
if (!seatEntity.addPassenger(player)) {
|
||||
return null;
|
||||
}
|
||||
return new SitEntity(seatEntity, furniture, offset(), player.getEntityId());
|
||||
}
|
||||
|
||||
private static class SitEntity extends BukkitSeatEntity {
|
||||
private static class SitEntity extends BukkitSeatEntity {
|
||||
|
||||
public SitEntity(Entity entity, Furniture furniture, Vector3f vector3f, int playerID) {
|
||||
super(entity, furniture, vector3f, playerID);
|
||||
}
|
||||
public SitEntity(Entity entity, Furniture furniture, Vector3f vector3f, int playerID) {
|
||||
super(entity, furniture, vector3f, playerID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SeatType.SIT;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public Key type() {
|
||||
return SeatType.SIT;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Factory implements SeatFactory {
|
||||
public static class Factory implements SeatFactory {
|
||||
|
||||
@Override
|
||||
public Seat create(List<String> args) {
|
||||
if (args.size() == 1) return new SitSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), 0, false);
|
||||
return new SitSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), Float.parseFloat(args.get(1)), true);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public Seat create(List<String> args) {
|
||||
if (args.size() == 1) return new SitSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), 0, false);
|
||||
return new SitSeat(MiscUtils.getAsVector3f(args.getFirst(), "seats"), Float.parseFloat(args.get(1)), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user