added force_body_rotation property for player npc

This commit is contained in:
D3v1s0m 2024-06-03 13:39:00 +05:30
parent f0e7ea8302
commit c50e2fd0d4
No known key found for this signature in database
GPG Key ID: FA1F770C7B1D40C1
4 changed files with 30 additions and 3 deletions

@ -115,7 +115,7 @@ public class ZNpcsPlus {
MojangSkinCache skinCache = new MojangSkinCache(configManager); MojangSkinCache skinCache = new MojangSkinCache(configManager);
EntityPropertyRegistryImpl propertyRegistry = new EntityPropertyRegistryImpl(skinCache, configManager); EntityPropertyRegistryImpl propertyRegistry = new EntityPropertyRegistryImpl(skinCache, configManager);
PacketFactory packetFactory = setupPacketFactory(scheduler, propertyRegistry, configManager); PacketFactory packetFactory = setupPacketFactory(scheduler, propertyRegistry, configManager);
propertyRegistry.registerTypes(packetFactory, textSerializer); propertyRegistry.registerTypes(bootstrap, packetFactory, textSerializer);
ActionRegistry actionRegistry = new ActionRegistry(); ActionRegistry actionRegistry = new ActionRegistry();
NpcTypeRegistryImpl typeRegistry = new NpcTypeRegistryImpl(); NpcTypeRegistryImpl typeRegistry = new NpcTypeRegistryImpl();

@ -9,6 +9,7 @@ import com.github.retrooper.packetevents.protocol.nbt.NBTInt;
import com.github.retrooper.packetevents.protocol.nbt.NBTString; import com.github.retrooper.packetevents.protocol.nbt.NBTString;
import com.github.retrooper.packetevents.protocol.player.EquipmentSlot; import com.github.retrooper.packetevents.protocol.player.EquipmentSlot;
import com.github.retrooper.packetevents.protocol.world.BlockFace; import com.github.retrooper.packetevents.protocol.world.BlockFace;
import lol.pyr.znpcsplus.ZNpcsPlusBootstrap;
import lol.pyr.znpcsplus.api.entity.EntityProperty; import lol.pyr.znpcsplus.api.entity.EntityProperty;
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry; import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
import lol.pyr.znpcsplus.api.skin.SkinDescriptor; import lol.pyr.znpcsplus.api.skin.SkinDescriptor;
@ -103,7 +104,7 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
*/ */
} }
public void registerTypes(PacketFactory packetFactory, LegacyComponentSerializer textSerializer) { public void registerTypes(ZNpcsPlusBootstrap plugin, PacketFactory packetFactory, LegacyComponentSerializer textSerializer) {
ServerVersion ver = PacketEvents.getAPI().getServerManager().getVersion(); ServerVersion ver = PacketEvents.getAPI().getServerManager().getVersion();
boolean legacyBooleans = ver.isOlderThan(ServerVersion.V_1_9); boolean legacyBooleans = ver.isOlderThan(ServerVersion.V_1_9);
boolean legacyNames = ver.isOlderThan(ServerVersion.V_1_9); boolean legacyNames = ver.isOlderThan(ServerVersion.V_1_9);
@ -126,6 +127,8 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
register(new DummyProperty<>("permission_required", false)); register(new DummyProperty<>("permission_required", false));
register(new ForceBodyRotationProperty(plugin));
register(new DummyProperty<>("player_knockback", false)); register(new DummyProperty<>("player_knockback", false));
register(new DummyProperty<>("player_knockback_exempt_permission", String.class)); register(new DummyProperty<>("player_knockback_exempt_permission", String.class));
register(new DummyProperty<>("player_knockback_distance", 0.4)); register(new DummyProperty<>("player_knockback_distance", 0.4));

@ -0,0 +1,24 @@
package lol.pyr.znpcsplus.entity.properties;
import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
import lol.pyr.znpcsplus.ZNpcsPlusBootstrap;
import lol.pyr.znpcsplus.entity.PacketEntity;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.Map;
public class ForceBodyRotationProperty extends DummyProperty<Boolean> {
private final ZNpcsPlusBootstrap plugin;
public ForceBodyRotationProperty(ZNpcsPlusBootstrap plugin) {
super("force_body_rotation", false);
this.plugin = plugin;
}
@Override
public void apply(Player player, PacketEntity entity, boolean isSpawned, Map<Integer, EntityData> properties) {
Bukkit.getScheduler().runTaskLater(plugin, () -> entity.swingHand(player, false), 2L);
Bukkit.getScheduler().runTaskLater(plugin, () -> entity.swingHand(player, false), 6L);
}
}

@ -36,7 +36,7 @@ public class NpcTypeRegistryImpl implements NpcTypeRegistry {
register(builder(p, "player", EntityTypes.PLAYER) register(builder(p, "player", EntityTypes.PLAYER)
.setHologramOffset(-0.15D) .setHologramOffset(-0.15D)
.addEquipmentProperties() .addEquipmentProperties()
.addProperties("skin_cape", "skin_jacket", "skin_left_sleeve", "skin_right_sleeve", "skin_left_leg", "skin_right_leg", "skin_hat", "shoulder_entity_left", "shoulder_entity_right") .addProperties("skin_cape", "skin_jacket", "skin_left_sleeve", "skin_right_sleeve", "skin_left_leg", "skin_right_leg", "skin_hat", "shoulder_entity_left", "shoulder_entity_right", "force_body_rotation")
.addDefaultProperty("skin_cape", true) .addDefaultProperty("skin_cape", true)
.addDefaultProperty("skin_jacket", true) .addDefaultProperty("skin_jacket", true)
.addDefaultProperty("skin_left_sleeve", true) .addDefaultProperty("skin_left_sleeve", true)