fix object data

This commit is contained in:
Tofaa 2024-01-02 02:18:18 +03:00
parent 08af20f5ad
commit a7d7fd2748
7 changed files with 33 additions and 17 deletions

View file

@ -5,7 +5,7 @@
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="" />
<option name="gradleJvm" value="17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />

View file

@ -7,6 +7,7 @@ import com.github.retrooper.packetevents.wrapper.PacketWrapper;
import com.github.retrooper.packetevents.wrapper.play.server.*;
import me.tofaa.entitylib.EntityLib;
import me.tofaa.entitylib.meta.EntityMeta;
import me.tofaa.entitylib.meta.types.ObjectData;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@ -40,6 +41,11 @@ public class WrapperEntity {
if (spawned) return false;
this.location = location;
this.spawned = true;
int data = 0;
if (meta instanceof ObjectData) {
data = ((ObjectData) meta).getObjectData();
}
sendPacketToViewers(
new WrapperPlayServerSpawnEntity(
entityId,
@ -49,7 +55,7 @@ public class WrapperEntity {
location.getPitch(),
location.getYaw(),
location.getYaw(),
0,
data,
Optional.empty()
)
);
@ -93,6 +99,12 @@ public class WrapperEntity {
viewers.forEach(uuid -> EntityLib.sendPacket(uuid, packet));
}
public void sendPacketsToViewers(PacketWrapper<?>... wrappers) {
for (PacketWrapper<?> wrapper : wrappers) {
sendPacketToViewers(wrapper);
}
}
public boolean addViewer(UUID uuid) {
if (!viewers.add(uuid)) {
return false;

View file

@ -109,6 +109,7 @@ public class WrapperEntityEquipment {
);
}
public void refresh() {
this.entity.sendPacketToViewers(createPacket());
}

View file

@ -4,6 +4,8 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/
run
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml

View file

@ -1,7 +1,7 @@
plugins {
id 'java'
id 'com.github.johnrengelman.shadow' version '7.1.2'
id("io.papermc.paperweight.userdev") version "1.5.11"
//id("io.papermc.paperweight.userdev") version "1.5.11"
id 'xyz.jpenilla.run-paper' version '2.2.2'
}
@ -25,7 +25,17 @@ repositories {
}
dependencies {
paperweight.paperDevBundle("1.20.4-R0.1-SNAPSHOT")
compileOnly('org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT')
compileOnly('com.github.retrooper.packetevents:spigot:2.0.2')
implementation project(':')
}
tasks {
runServer {
minecraftVersion("1.20.1")
downloadPlugins {
modrinth('packetevents', '2.2.0')
}
}
}

View file

@ -4,6 +4,7 @@ import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.protocol.player.InteractionHand;
import com.github.retrooper.packetevents.protocol.player.User;
import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientInteractEntity;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerCloseWindow;
import me.tofaa.entitylib.entity.EntityInteractionProcessor;
import me.tofaa.entitylib.entity.WrapperEntity;
import org.bukkit.plugin.java.JavaPlugin;

View file

@ -25,7 +25,7 @@ public class TestEntityCommand implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!(sender instanceof Player)) return false;
if (!(sender instanceof Player )) return false;
Player player = (Player) sender;
if (entity == null) {
entity = (WrapperLivingEntity) EntityLib.createEntity(UUID.randomUUID(), EntityTypes.ZOMBIE);
@ -37,7 +37,7 @@ public class TestEntityCommand implements CommandExecutor {
entity.spawn(SpigotConversionUtil.fromBukkitLocation(player.getLocation()));
}
ItemStack held = player.getInventory().getItemInMainHand();
if (held != null && !held.getType().isAir()) {
if (!held.getType().isAir()) {
entity.getEquipment().setBoots(SpigotConversionUtil.fromBukkitItemStack(held));
}
EntityMeta meta = entity.getMeta();
@ -50,17 +50,7 @@ public class TestEntityCommand implements CommandExecutor {
player.sendMessage("on fire: " + meta.isOnFire());
player.sendMessage("glowing: " + meta.hasGlowingEffect());
WrapperEntity e = EntityLib.createEntity(UUID.randomUUID(), EntityTypes.ARMOR_STAND);
int entityId = e.getEntityId(); // You can set the entityId provider to change this, WrapperEntity#ID_PROVIDER
if (e == null) {
throw new RuntimeException("Error creating entity meta"); // Only happens if the entity meta is null/invalid.
}
ArmorStandMeta m = (ArmorStandMeta) e.getMeta();
m.setInvisible(true);
e.spawn(new Location(1, 2, 3, 4, 5));
e.addViewer(player.getUniqueId());
entity.refresh();
return false;
}