mirror of
https://github.com/eaglerforge/EaglerForgeInjector
synced 2025-07-24 14:41:18 -09:00
36 lines
1.7 KiB
JavaScript
36 lines
1.7 KiB
JavaScript
(() => {
|
|
PluginAPI.dedicatedServer.appendCode(function () {
|
|
PluginAPI.addEventListener("processcommand", (event) => {
|
|
if (!ModAPI.reflect.getClassById("net.minecraft.entity.player.EntityPlayerMP").instanceOf(event.sender.getRef())) { return }
|
|
|
|
if (event.command.toLowerCase().startsWith("/spawnnpc")) {
|
|
const world = event.sender.getServerForPlayer();
|
|
const playerPos = event.sender.getPosition();
|
|
|
|
|
|
// Create a fake player entity with a string-based UUID
|
|
const GameProfileClass = ModAPI.reflect.getClassById("com.mojang.authlib.GameProfile");
|
|
const fakeProfile = GameProfileClass.constructors[2](
|
|
ModAPI.util.unstr(event.sender.getGameProfile().id2.toString()), ModAPI.util.str("Steve")
|
|
);
|
|
|
|
const EntityPlayerMPClass = ModAPI.reflect.getClassById("net.minecraft.entity.player.EntityPlayerMP");
|
|
const fakePlayer = EntityPlayerMPClass.constructors[1](
|
|
world.getMinecraftServer(), world.getRef(), fakeProfile, world.getPlayerInteractionManager()
|
|
);
|
|
|
|
// Set the player position
|
|
fakePlayer.setPosition(playerPos.$getX(), playerPos.$getY(), playerPos.$getZ());
|
|
|
|
// Add the fake player to the world
|
|
world.addEntityToWorld(fakePlayer.getEntityId(), fakePlayer);
|
|
|
|
// Send a confirmation message to the player
|
|
event.sender.addChatMessage(ModAPI.reflect.getClassById("net.minecraft.util.ChatComponentText").constructors[0](ModAPI.util.str("Fake Steve has been spawned!")));
|
|
|
|
event.preventDefault = true;
|
|
}
|
|
});
|
|
});
|
|
})();
|