mirror of
https://github.com/eaglerforge/EaglerForgeInjector
synced 2025-07-24 22:51:18 -09:00
57 lines
2.6 KiB
JavaScript
57 lines
2.6 KiB
JavaScript
(() => {
|
|
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.spawnEntityInWorld(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;
|
|
}
|
|
});
|
|
});
|
|
})();
|