G-Earth/Extensions/Plants_1.0.2/extension/index.js
Administrator 368b92d87a G-Earth 1.5.4 beta 22 - Initial release
Komplettes G-Earth Paket inkl. JRE, Extensions und Tools.

Extensions:
- G-BuildTools, G-Click Ultimate, G-Loader, G-Manipulate
- G-Presets, G-Translator, G-Trigger, G-itemViewer
- Market Utils, Packet Info Explorer, Plants
- RandomRoomVisitor, RoomLogger, Sanbovir Photo Inspector
- SpyFriends, WallAligner, XabboScripter, xabbo
2026-03-16 09:45:04 +01:00

86 lines
2.1 KiB
JavaScript

import {
Extension,
HDirection,
HEntity,
HEntityType,
HPacket,
HRoomResult,
} from "gnode-api";
import extensionInfo from "./package.json" assert { type: "json" };
process.on("uncaughtException", (error) => {
console.error(error);
process.exit(0);
});
const ext = new Extension(extensionInfo);
extensionInfo.name = "Plants";
ext.run();
ext.interceptByNameOrHash(HDirection.TOCLIENT, "Users", onPlants);
ext.interceptByNameOrHash(HDirection.TOSERVER, "Chat", onCommandSended);
ext.interceptByNameOrHash(HDirection.TOCLIENT, "GetGuestRoomResult", onResetCommand);
ext.interceptByNameOrHash(HDirection.TOSERVER, "Quit", exit);
const entities = new Map();
let extensionEnabled = false;
async function onPlants(hMessage) {
await sleep(1000);
const plants = HEntity.parse(hMessage.getPacket());
plants.forEach((plant) => {
if (plant.entityType === HEntityType.PET)
entities.set(plant.id, plant.name);
});
}
function onCommandSended(hMessage) {
const packet = hMessage.getPacket();
const textMessage = packet.readString();
if (textMessage === ":plants") {
hMessage.blocked = true;
extensionEnabled = !extensionEnabled;
if (extensionEnabled) start();
const chatPacket = new HPacket(
`{in:Whisper}{i:1}{s:"Plants has been ${
extensionEnabled ? "activated" : "deactivated"
}"}{i:0}{i:34}{i:0}{i:-1}`
);
ext.sendToClient(chatPacket);
}
}
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
async function start() {
for (let plantID of entities.keys()) {
if (extensionEnabled) {
const packet = new HPacket(`{out:RespectPet}{i:${plantID}}`);
ext.sendToServer(packet);
await sleep(500);
}
}
const chatPacket = new HPacket(
`{in:Whisper}{i:1}{s:"All plants have been treated"}{i:0}{i:34}{i:0}{i:-1}`
);
ext.sendToClient(chatPacket);
}
function exit() {
entities.clear();
extensionEnabled = false;
}
function onResetCommand(hMessage) {
const packet = hMessage.getPacket();
const room = new HRoomResult(packet);
if (room.isEnterRoom) {
exit();
}
}