add player implementation
This commit is contained in:
parent
5130a65a0f
commit
e2ca79b069
5 changed files with 98 additions and 16 deletions
|
@ -5,13 +5,11 @@
|
|||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="9d5d9b6f-43c8-41a4-bb42-a66ffc96c9b0" name="Changes" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/utils/Check.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/ExtraConversionUtil.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/WrapperPlayer.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/EntityLibAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/EntityLibAPI.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/WrapperEntity.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/WrapperEntity.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/hologram/Hologram.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/hologram/Hologram.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/SpigotWorld.java" beforeDir="false" afterPath="$PROJECT_DIR$/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/SpigotWorld.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/WrapperExperienceOrbEntity.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/me/tofaa/entitylib/wrapper/WrapperExperienceOrbEntity.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/common/src/main/java/me/tofaa/entitylib/common/AbstractWorldWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/common/src/main/java/me/tofaa/entitylib/common/AbstractWorldWrapper.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -296,6 +294,7 @@
|
|||
<workItem from="1706784821835" duration="7882000" />
|
||||
<workItem from="1706858181164" duration="925000" />
|
||||
<workItem from="1707159905372" duration="3391000" />
|
||||
<workItem from="1707210065718" duration="1026000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
|
|
@ -28,12 +28,12 @@ public class WrapperEntity implements Tickable {
|
|||
private boolean ticking;
|
||||
private Location location;
|
||||
private Location preRidingLocation;
|
||||
private Set<UUID> viewers;
|
||||
private final Set<UUID> viewers;
|
||||
private boolean onGround;
|
||||
private boolean spawned;
|
||||
private Vector3d velocity;
|
||||
private int riding = -1;
|
||||
private Set<Integer> passengers = new HashSet<>();
|
||||
private final Set<Integer> passengers;
|
||||
private WorldWrapper<?> world;
|
||||
|
||||
public WrapperEntity(int entityId, UUID uuid, EntityType entityType, EntityMeta entityMeta) {
|
||||
|
@ -43,10 +43,7 @@ public class WrapperEntity implements Tickable {
|
|||
this.entityMeta = entityMeta;
|
||||
this.ticking = true;
|
||||
this.viewers = new HashSet<>();
|
||||
}
|
||||
|
||||
public boolean spawn(Location location) {
|
||||
return spawn(null, location);
|
||||
this.passengers = new HashSet<>();
|
||||
}
|
||||
|
||||
public boolean spawn(WorldWrapper<?> world, Location location) {
|
||||
|
@ -125,10 +122,6 @@ public class WrapperEntity implements Tickable {
|
|||
teleport(null, location, onGround);
|
||||
}
|
||||
|
||||
public void teleport(@NotNull Location location) {
|
||||
teleport(null, location, onGround);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a viewer to the viewers set. The viewer will receive all packets and be informed of this addition
|
||||
* @param uuid the uuid of the user to add
|
||||
|
|
|
@ -25,7 +25,9 @@ public class WrapperExperienceOrbEntity extends WrapperEntity {
|
|||
* This is an attempt to mimmick the vanilla behavior.
|
||||
* </p>
|
||||
*/
|
||||
public void updateSliding() {
|
||||
@Override
|
||||
public void tick(long time) {
|
||||
super.tick(time);
|
||||
if (hasNoGravity()) {
|
||||
setVelocity(getVelocity().add(0, -0.3f, 0));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
package me.tofaa.entitylib.wrapper;
|
||||
|
||||
import com.github.retrooper.packetevents.protocol.entity.type.EntityType;
|
||||
import com.github.retrooper.packetevents.protocol.player.*;
|
||||
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerPlayerInfo;
|
||||
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerPlayerInfoRemove;
|
||||
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerPlayerInfoUpdate;
|
||||
import me.tofaa.entitylib.meta.EntityMeta;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WrapperPlayer extends WrapperLivingEntity {
|
||||
|
||||
private final UserProfile profile;
|
||||
private GameMode gameMode = GameMode.CREATIVE;
|
||||
private Component displayName;
|
||||
|
||||
|
||||
public WrapperPlayer(UserProfile profile, int entityId, EntityType entityType, EntityMeta entityMeta) {
|
||||
super(entityId, profile.getUUID(), entityType, entityMeta);
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
|
||||
public void setGameMode(GameMode gameMode) {
|
||||
this.gameMode = gameMode;
|
||||
sendPacketsToViewers(new WrapperPlayServerPlayerInfo(
|
||||
WrapperPlayServerPlayerInfo.Action.UPDATE_GAME_MODE,
|
||||
new WrapperPlayServerPlayerInfo.PlayerData(displayName, profile, gameMode, null, -1)));
|
||||
}
|
||||
|
||||
public void setDisplayName(Component displayName) {
|
||||
this.displayName = displayName;
|
||||
sendPacketsToViewers(new WrapperPlayServerPlayerInfo(
|
||||
WrapperPlayServerPlayerInfo.Action.UPDATE_DISPLAY_NAME,
|
||||
new WrapperPlayServerPlayerInfo.PlayerData(displayName, profile, gameMode, null, -1)));
|
||||
}
|
||||
|
||||
public Component getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return profile.getName();
|
||||
}
|
||||
|
||||
public List<TextureProperty> getTextureProperties() {
|
||||
return profile.getTextureProperties();
|
||||
}
|
||||
|
||||
public GameMode getGameMode() {
|
||||
return gameMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addViewer(User user) {
|
||||
super.addViewer(user);
|
||||
user.sendPacket(createAddPacket());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeViewer(User user) {
|
||||
super.removeViewer(user);
|
||||
user.sendPacket(createRemovePacket());
|
||||
}
|
||||
|
||||
private WrapperPlayServerPlayerInfoUpdate createAddPacket() {
|
||||
return new WrapperPlayServerPlayerInfoUpdate(
|
||||
WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER,
|
||||
new WrapperPlayServerPlayerInfoUpdate.PlayerInfo(
|
||||
profile,
|
||||
true, -1, gameMode, null, null
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private WrapperPlayServerPlayerInfoRemove createRemovePacket() {
|
||||
return new WrapperPlayServerPlayerInfoRemove(getUuid());
|
||||
}
|
||||
|
||||
}
|
|
@ -6,8 +6,11 @@ import com.github.retrooper.packetevents.protocol.world.Location;
|
|||
import me.tofaa.entitylib.EntityLib;
|
||||
import me.tofaa.entitylib.WorldWrapper;
|
||||
import me.tofaa.entitylib.meta.EntityMeta;
|
||||
import me.tofaa.entitylib.meta.projectile.ThrownExpBottleMeta;
|
||||
import me.tofaa.entitylib.meta.types.LivingEntityMeta;
|
||||
import me.tofaa.entitylib.meta.types.PlayerMeta;
|
||||
import me.tofaa.entitylib.wrapper.WrapperEntity;
|
||||
import me.tofaa.entitylib.wrapper.WrapperExperienceOrbEntity;
|
||||
import me.tofaa.entitylib.wrapper.WrapperLivingEntity;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
@ -65,6 +68,9 @@ public abstract class AbstractWorldWrapper<W> implements WorldWrapper<W> {
|
|||
if (meta instanceof LivingEntityMeta) {
|
||||
e = new WrapperLivingEntity(entityId, uuid, entityType, meta);
|
||||
}
|
||||
else if (meta instanceof ThrownExpBottleMeta) {
|
||||
e = new WrapperExperienceOrbEntity(entityId, uuid, entityType, meta);
|
||||
}
|
||||
else {
|
||||
e = new WrapperEntity(entityId, uuid, entityType, meta);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue