Create mobnpcspawner.js

This commit is contained in:
radmanplays 2024-09-29 16:22:54 +03:30 committed by GitHub
parent 37d5a4192d
commit 707d3a1f14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,56 @@
(() => {
PluginAPI.dedicatedServer.appendCode(function () {
PluginAPI.addEventListener("processcommand", (event) => {
// Check if the sender is a player
if (!ModAPI.reflect.getClassById("net.minecraft.entity.player.EntityPlayerMP").instanceOf(event.sender.getRef())) { return; }
// Check if the command is "/spawnnpc"
if (event.command.toLowerCase().startsWith("/spawnnpc")) {
const world = event.sender.getServerForPlayer();
const senderPos = event.sender.getPosition();
// Create a sheep entity
const EntitySheepClass = ModAPI.reflect.getClassById("net.minecraft.entity.passive.EntitySheep");
const sheep = EntitySheepClass.constructors[1](world.getRef());
// Set sheep's position to player's position
sheep.setPosition(senderPos.$getX(), senderPos.$getY(), senderPos.$getZ());
// Disable AI (no AI behavior)
sheep.getDataWatcher().updateObject(15, 1); // AI flag, 15 is the byte for AI, 1 means no AI
// Disable gravity
sheep.noGravity = true;
// Make sheep invincible
sheep.setEntityInvulnerable(true);
// Prevent the sheep from taking any damage
const DamageSourceClass = ModAPI.reflect.getClassById("net.minecraft.util.DamageSource");
ModAPI.addEventListener("livinghurt", (event) => {
if (sheep.equals(event.entityLiving)) {
event.setCanceled(true);
}
});
// Add the sheep to the world
world.addEntityToWorld(sheep.getEntityId(), sheep);
// Notify the player that the sheep has been spawned
const ChatComponentTextClass = ModAPI.reflect.getClassById("net.minecraft.util.ChatComponentText");
event.sender.addChatMessage(ChatComponentTextClass.constructors[0](ModAPI.util.str("A special sheep has been spawned!")));
// Add an event listener for when the sheep is right-clicked
ModAPI.addEventListener("rightclickentity", (clickEvent) => {
if (sheep.equals(clickEvent.target)) {
// Send message to the player who right-clicked
clickEvent.entityPlayer.addChatMessage(ChatComponentTextClass.constructors[0](ModAPI.util.str("bahhh")));
}
});
// Prevent the command from executing further
event.preventDefault = true;
}
});
});
})();