Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
787289e
forgot to remove this logger
3add May 19, 2026
122cffc
fix: improve docs for fields and create secexprs
3add May 20, 2026
409c99d
refactor: relocate entity meta to entity package
3add May 20, 2026
c052b82
fix: example of meta type
3add May 20, 2026
c3df679
fix: example of fake entity type
3add May 20, 2026
6ef382a
bump: project version
3add May 20, 2026
34f1d71
add: WrapperPlayClientUpdateSign
3add May 20, 2026
b8b3033
fix: improve error messages for ExprNewMeta ExprNewPacket and ExprNew…
3add May 20, 2026
d9d4130
add: convertor for packet to packettype
3add May 20, 2026
4675770
bump: SKR version (enum serialization)
3add May 20, 2026
be25b14
fix: ExprFields, plural bugs (yet again)
3add May 20, 2026
360977d
refactor: better naming
3add May 20, 2026
1dc63ec
add: serialization for types
3add May 20, 2026
1b84d32
fix: getter ClassCastException
3add May 21, 2026
a2fd985
check: docs state (fixed a lot of docs)
3add May 21, 2026
6e10700
add: the rest of the todo docs
3add May 21, 2026
1ca197b
refactor: make an entryvalidator for each schema so we don't cross sc…
3add May 21, 2026
ffc393b
fix: useless imports
3add May 21, 2026
66055da
fix: https://github.com/3add/PacketEventsSK/pull/14#discussion_r32833…
3add May 21, 2026
b27488d
fix: https://github.com/3add/PacketEventsSK/pull/14#discussion_r32833…
3add May 21, 2026
843d9be
fix: https://github.com/3add/PacketEventsSK/pull/14#discussion_r32833…
3add May 21, 2026
958d7e1
fix: https://github.com/3add/PacketEventsSK/pull/14#discussion_r32833…
3add May 21, 2026
2eaa803
fix: https://github.com/3add/PacketEventsSK/pull/14#discussion_r32833…
3add May 21, 2026
255b5a0
fix: https://github.com/3add/PacketEventsSK/pull/14#discussion_r32833…
3add May 21, 2026
facecdb
Some extra fixes I noticed aswell as fixing the field accessor stuff …
3add May 21, 2026
7929b3a
fix: https://github.com/3add/PacketEventsSK/pull/14#pullrequestreview…
3add May 21, 2026
574ce31
fix: https://github.com/3add/PacketEventsSK/pull/14#pullrequestreview…
3add May 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}

// Version of PacketEventsSK
val projectVersion = "1.1.2"
val projectVersion = "1.1.3"
// API Version
val apiVersion = "26.1.2"
// Minimum paper version that PacketEventsSK supports
Expand Down Expand Up @@ -53,7 +53,7 @@ dependencies {
compileOnly("com.github.ShaneBeee:SkBee:3.23.0")

// SkriptRegistration (SKR)
implementation("com.github.ShaneBeee:SkriptRegistration:1.4.2")
implementation("com.github.ShaneBeee:SkriptRegistration:1.4.3")

// EntityLib
implementation("io.github.tofaa2:spigot:3.3.0-SNAPSHOT")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

public class PacketTypeRegistry {

private static final Map<String, PacketTypeCommon> SEND_PACKETS_BY_NAME = new ConcurrentHashMap<>();
private static final Map<String, PacketTypeCommon> RECEIVE_PACKETS_BY_NAME = new ConcurrentHashMap<>();
private static final List<PacketTypeCommon> PACKETS;
private static final Map<String, PacketTypeCommon> CLIENT_BOUND_PACKETS = new ConcurrentHashMap<>();
private static final Map<String, PacketTypeCommon> SERVER_BOUND_PACKETS = new ConcurrentHashMap<>();
private static final List<PacketTypeCommon> ALL_PACKETS;

static {
BiConsumer<Map<String, PacketTypeCommon>, PacketTypeCommon[]> populateMap = (map, types) -> {
Expand All @@ -24,35 +24,50 @@ public class PacketTypeRegistry {
}
};

populateMap.accept(SEND_PACKETS_BY_NAME, PacketType.Play.Server.values());
populateMap.accept(SEND_PACKETS_BY_NAME, PacketType.Configuration.Server.values());
populateMap.accept(SEND_PACKETS_BY_NAME, PacketType.Login.Server.values());
populateMap.accept(SEND_PACKETS_BY_NAME, PacketType.Handshaking.Server.values());
populateMap.accept(SEND_PACKETS_BY_NAME, PacketType.Status.Server.values());
populateMap.accept(CLIENT_BOUND_PACKETS, PacketType.Play.Server.values());
populateMap.accept(CLIENT_BOUND_PACKETS, PacketType.Configuration.Server.values());
populateMap.accept(CLIENT_BOUND_PACKETS, PacketType.Login.Server.values());
populateMap.accept(CLIENT_BOUND_PACKETS, PacketType.Handshaking.Server.values());
populateMap.accept(CLIENT_BOUND_PACKETS, PacketType.Status.Server.values());

populateMap.accept(RECEIVE_PACKETS_BY_NAME, PacketType.Play.Client.values());
populateMap.accept(RECEIVE_PACKETS_BY_NAME, PacketType.Configuration.Client.values());
populateMap.accept(RECEIVE_PACKETS_BY_NAME, PacketType.Login.Client.values());
populateMap.accept(RECEIVE_PACKETS_BY_NAME, PacketType.Handshaking.Client.values());
populateMap.accept(RECEIVE_PACKETS_BY_NAME, PacketType.Status.Client.values());
populateMap.accept(SERVER_BOUND_PACKETS, PacketType.Play.Client.values());
populateMap.accept(SERVER_BOUND_PACKETS, PacketType.Configuration.Client.values());
populateMap.accept(SERVER_BOUND_PACKETS, PacketType.Login.Client.values());
populateMap.accept(SERVER_BOUND_PACKETS, PacketType.Handshaking.Client.values());
populateMap.accept(SERVER_BOUND_PACKETS, PacketType.Status.Client.values());

List<PacketTypeCommon> packets = new ArrayList<>();
packets.addAll(SEND_PACKETS_BY_NAME.values());
packets.addAll(RECEIVE_PACKETS_BY_NAME.values());
PACKETS = List.copyOf(packets);
packets.addAll(CLIENT_BOUND_PACKETS.values());
packets.addAll(SERVER_BOUND_PACKETS.values());
ALL_PACKETS = List.copyOf(packets);
}

public static List<PacketTypeCommon> getAllPackets() {
return PACKETS;
return ALL_PACKETS;
}

public static @Nullable PacketTypeCommon getPacket(String rawName, boolean isSend) {
String key = rawName.replace(" ", "_").toUpperCase(Locale.ENGLISH);

if (isSend) {
return SEND_PACKETS_BY_NAME.get(key);
return CLIENT_BOUND_PACKETS.get(key);
} else {
return RECEIVE_PACKETS_BY_NAME.get(key);
return SERVER_BOUND_PACKETS.get(key);
}
}

/**
* Use {@link PacketTypeRegistry#getPacket(String, boolean)} if you have the direction (more performant)
*/
public static @Nullable PacketTypeCommon getPacket(String rawName) {
String key = rawName.replace(" ", "_").toUpperCase(Locale.ENGLISH);

PacketTypeCommon type = CLIENT_BOUND_PACKETS.get(key);

if (type == null) {
type = SERVER_BOUND_PACKETS.get(key);
}

return type;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.*;

Expand All @@ -31,7 +29,6 @@ public class PlayerSkinManager {
private static final Map<UUID, Map<UUID, Skin>> skinMap = new HashMap<>();

private static final Map<UUID, Skin> globalSkinMap = new HashMap<>();
private static final Logger log = LoggerFactory.getLogger(PlayerSkinManager.class);

public static void setGlobalSkin(Player target, Skin skin) {
if (target == null || skin == null) return;
Expand Down Expand Up @@ -87,8 +84,6 @@ public static void clearAllSkins(Player target) {
private static void updateSkin(Player target, Collection<? extends Player> viewers) {
User targetUser = PacketEvents.getAPI().getPlayerManager().getUser(target);

log.error("target: {}, viewers: {}", target.getName(), viewers.stream().map(Player::getName).toList());

// unregister player for all players with the old data
WrapperPlayServerPlayerInfoRemove infoRemove = new WrapperPlayServerPlayerInfoRemove(targetUser.getUUID());
for (Player viewer : viewers) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
import dev.threeadd.packeteventssk.element.entity.effect.EffSpawnFakeEntity;
import dev.threeadd.packeteventssk.element.entity.effect.EffTeleportFakeEntity;
import dev.threeadd.packeteventssk.element.entity.expression.ExprFakeEntitiesAll;
import dev.threeadd.packeteventssk.element.entity.expression.ExprFakeEntityEventValue;
import dev.threeadd.packeteventssk.element.entity.expression.ExprFakeEntityFromId;
import dev.threeadd.packeteventssk.element.entity.expression.ExprFakeEntityFromUuid;
import dev.threeadd.packeteventssk.element.entity.expression.prop.ExprFakeEntityField;
import dev.threeadd.packeteventssk.element.entity.expression.prop.ExprMetaField;
import dev.threeadd.packeteventssk.element.entity.expression.prop.ExprVisibleFakeEntities;
import dev.threeadd.packeteventssk.element.entity.expression.prop.living.ExprFakeLivingEntityAttribute;
import dev.threeadd.packeteventssk.element.entity.field.FakeEntityFieldRegistry;
import dev.threeadd.packeteventssk.element.entity.field.entity.FakeEntityFieldRegistry;
import dev.threeadd.packeteventssk.element.entity.field.meta.MetaFieldRegistry;
import dev.threeadd.packeteventssk.element.entity.section.SecExprNewFakeEntity;
import dev.threeadd.packeteventssk.element.entity.section.SecExprNewMeta;

public class EntityElementRegistration implements SkriptElementRegistration {

Expand All @@ -28,6 +30,7 @@ public void load(Registration reg) {

// property registry (registered before the expr/sec using it)
FakeEntityFieldRegistry.INSTANCE.registerAll();
MetaFieldRegistry.INSTANCE.registerAll();

// start effects
EffKillFakeEntity.register(reg);
Expand All @@ -40,16 +43,17 @@ public void load(Registration reg) {
ExprFakeLivingEntityAttribute.register(reg);

ExprFakeEntityField.register(reg);
ExprMetaField.register(reg);
ExprVisibleFakeEntities.register(reg);

ExprFakeEntitiesAll.register(reg);
ExprFakeEntityEventValue.register(reg);
ExprFakeEntityFromId.register(reg);
ExprFakeEntityFromUuid.register(reg);
// end expressions

// start sections
SecExprNewFakeEntity.register(reg);
SecExprNewMeta.register(reg);
// end sections

// types
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ public static void register(Registration reg) {
.examples("""
command cloneMe:
trigger:
create new fake player entity at player for all players:
set fake skin of the fake entity to player's skin
set {_player} to a new fake player entity:
viewers: players
location: location of player
skin: skin of player
username: "Hello_World!"
""")
.since("1.0.0")
.parser(new Parser<>() {
Expand All @@ -42,5 +45,38 @@ public String toVariableNameString(WrapperEntity entity) {
.register();

Converters.registerConverter(WrapperEntity.class, EntityMeta.class, WrapperEntity::getEntityMeta);

reg.newType(EntityMeta.class, "entitymeta")
.user("fake ?entit(y|ies) meta")
.name("General - Entity Meta")
.description("The entity meta of a minecraft entity (this can both represent a fake entity's meta or a real entity's meta, but is mostly used for fake entities since the only use for real entities is for packet intercepting).")
.examples("""
command spawn:
trigger:
set {_zombie} to a new fake zombie entity:
viewers: all players
location: location of player

set {_meta} to fake entity meta of {_zombie}
set meta glowing state of {_meta} to true
""")
.since("1.1.0")
.parser(new Parser<>() {
@Override
public boolean canParse(ParseContext context) {
return false;
}

@Override
public String toString(EntityMeta meta, int flags) {
return "entity meta";
}

@Override
public String toVariableNameString(EntityMeta meta) {
return "entitymeta:" + meta.hashCode();
}
})
.register();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,19 @@ public static void register(Registration reg) {
.name("Fake Entity - All Fake Entities")
.description("Used to get a list of all fake entities that are viewable by least a single player")
.examples("""
command spawn:
trigger:
create a new fake zombie entity at player for players:
set fake scale attribute of the fake entity to 2
command spawn:
trigger:
set {_zombie} to a new fake player entity:
location: location of player
viewers: all players
skin: skin of player
username: "the rizzler"

command listfakes:
trigger:
send "All fake entities: %all fake entities%"
set fake entity scale attribute of {_zombie} to 5

command listfakes:
trigger:
send "All fake entities: %all fake entities%"
""")
.since("1.1.0")
.register();
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,13 @@ public static void register(Registration reg) {
command spawnfakeplayer:
trigger:
set {_p} to player
create new fake player entity at player for all players:
set fake skin of the fake entity to {_p}'s skin
add the fake entity id of the fake entity to {-id::*}
set {_player} to a new fake player entity:
location: location of player
viewers: all players
username: "test"
skin: skin of player

add the fake entity id of {_player} to {-id::*}

command lookup <text>:
trigger:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,13 @@ public static void register(Registration reg) {
command spawnfakeplayer:
trigger:
set {_p} to player
create new fake player entity at player for all players:
set fake skin of the fake entity to {_p}'s skin
add fake uuid of the fake entity to {-uuid::*}
set {_player} to a new fake player entity:
location: location of player
viewers: all players
username: "test"
skin: skin of player

add the fake entity uuid of {_player} to {-uuid::*}

command lookup <text>:
trigger:
Expand Down
Loading
Loading