mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2025-02-12 18:31:40 +01:00
Trial setting Moonrise isRealPlayer to true for playerlist NPCs to aid with chunk ticking. Alternative is to create a PlayerChunkLoaderData instance manually
This commit is contained in:
parent
8dd8a5ff40
commit
d99adbf8d9
@ -1,4 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_21_R3.entity; import java.util.UUID;
|
||||
package net.citizensnpcs.nms.v1_21_R3.entity;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@ -11,6 +13,7 @@ import com.mojang.authlib.GameProfile;
|
||||
import net.citizensnpcs.Settings.Setting;
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.nms.v1_21_R3.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.npc.skin.Skin;
|
||||
import net.citizensnpcs.trait.ScoreboardTrait;
|
||||
@ -44,6 +47,13 @@ public class HumanController extends AbstractEntityController {
|
||||
if (skin != null) {
|
||||
skin.apply(handle);
|
||||
}
|
||||
if (NMSImpl.MOONRISE_IS_REAL_PLAYER != null) {
|
||||
try {
|
||||
NMSImpl.MOONRISE_IS_REAL_PLAYER.invoke(handle, !npc.shouldRemoveFromPlayerList());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
|
||||
if (getBukkitEntity() == null || !getBukkitEntity().isValid()
|
||||
|| getBukkitEntity() != handle.getBukkitEntity())
|
||||
|
@ -2707,9 +2707,12 @@ public class NMSImpl implements NMSBridge {
|
||||
}
|
||||
|
||||
private static final MethodHandle ARMADILLO_SCUTE_TIME = NMS.getSetter(Armadillo.class, "cj");
|
||||
|
||||
private static final MethodHandle ATTRIBUTE_PROVIDER_MAP = NMS.getFirstGetter(AttributeSupplier.class, Map.class);
|
||||
|
||||
private static final MethodHandle ATTRIBUTE_PROVIDER_MAP_SETTER = NMS.getFirstFinalSetter(AttributeSupplier.class,
|
||||
Map.class);
|
||||
|
||||
private static final MethodHandle ATTRIBUTE_SUPPLIER = NMS.getFirstGetter(AttributeMap.class,
|
||||
AttributeSupplier.class);
|
||||
private static final MethodHandle AVAILABLE_BEHAVIORS_BY_PRIORITY = NMS.getGetter(Brain.class, "f");
|
||||
@ -2757,6 +2760,7 @@ public class NMSImpl implements NMSBridge {
|
||||
private static MethodHandle META_COMPOUND_TAG;
|
||||
private static final MethodHandle MINECRAFT_CLIENT = NMS.getFirstGetter(YggdrasilMinecraftSessionService.class,
|
||||
MinecraftClient.class);
|
||||
public static final MethodHandle MOONRISE_IS_REAL_PLAYER = NMS.getSetter(ServerPlayer.class, "isRealPlayer", false);
|
||||
private static final MethodHandle MOVE_CONTROLLER_OPERATION = NMS.getSetter(MoveControl.class, "k");
|
||||
private static final MethodHandle NAVIGATION_CREATE_PATHFINDER = NMS
|
||||
.getFirstMethodHandleWithReturnType(PathNavigation.class, true, PathFinder.class, int.class);
|
||||
|
Loading…
Reference in New Issue
Block a user