From 1fd14a69102cb4fa7b4a207a2ebc976c02b01889 Mon Sep 17 00:00:00 2001 From: radmanplays <95340057+radmanplays@users.noreply.github.com> Date: Sat, 14 Sep 2024 14:16:28 +0330 Subject: [PATCH] Create npcspawner.js --- examplemods/npcspawner.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examplemods/npcspawner.js diff --git a/examplemods/npcspawner.js b/examplemods/npcspawner.js new file mode 100644 index 0000000..190ffce --- /dev/null +++ b/examplemods/npcspawner.js @@ -0,0 +1,34 @@ +(() => { + 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 + const FakePlayerClass = ModAPI.reflect.getClassById("com.mojang.authlib.GameProfile"); + const fakeProfile = FakePlayerClass.constructors[2]( + java.util.UUID.randomUUID(), 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; + } + }); + }); +})();