Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************************************************************************
- * Auto remove listed mobs and on groud items *
- * *
- * -------------------------------------------------------------------------------- *
- * Description: *
- * Automatic cleaning on the ground items and listed mobs at a set interval *
- * Prevents players from dropping items for 3 seconds before clean up. *
- * Warns players in a minute, 30, 3, 2, 1 seconds before clean up. *
- * Displays the number of cleaned entities after clean up. *
- * Entities are moved to the void being cleaned up to avoid dropping loot. *
- * *
- * -------------------------------------------------------------------------------- *
- * Commands: *
- * /clearLag run => Force run clean up after one minute (with warn) *
- * /clearLag killMobs => Instantly kill listed mobs *
- * /clearLag cleanItems => Instantly clean on ground items *
- * *
- * -------------------------------------------------------------------------------- *
- * Config: *
- * CLEAN_INTERVAL => Clear interval in MUNUTES *
- * MOBS_TO_KILL => Mobs list to clear *
- * *
- * -------------------------------------------------------------------------------- *
- * Version: 1.3.0 *
- * Versions: 1.19 (Fabric) *
- * Author: discord: om_r#3567 | email: max.kvy@gmail.com *
- * License: LGPL-3.0 *
- * *********************************************************************************/
- const CONFIG = {
- CLEAN_INTERVAL: 15,
- MOBS_TO_KILL: [
- 'zombie',
- 'zombified_piglin',
- 'witch',
- 'skeleton',
- 'enderman',
- 'creeper',
- 'vindicator',
- 'whisperwoods:moth',
- 'naturalist:firefly',
- 'graveyard:revenant',
- 'bat',
- 'squid'
- ]
- }
- let removedEntitiesAmount = Utils.newCountingMap();
- let timer = 0;
- let forceRunDelay = false;
- let disableItemDrop = false;
- const say = message => Utils.server.tell(`§5[ClearLag] §e${message}`);
- const clearEntities = (entityType) => {
- Utils.server.runCommandSilent(`tp @e[type=${entityType}] ~ -100000 ~`);
- return Utils.server.runCommandSilent(`kill @e[type=${entityType}]`);
- }
- const clearLag = (ignoreItems, ignoreMobs) => {
- removedEntitiesAmount.clear();
- if (!ignoreItems) {
- removedEntitiesAmount.add('item', clearEntities('item'));
- }
- if (!ignoreMobs) {
- CONFIG.MOBS_TO_KILL.forEach(mobType => {
- removedEntitiesAmount.add(mobType, clearEntities(mobType));
- });
- }
- say(`Cleared ${removedEntitiesAmount.totalCount} entities!`);
- }
- ServerEvents.tick(() => {
- let interval = forceRunDelay ? 1 : CONFIG.CLEAN_INTERVAL;
- timer++;
- if (timer > 1200 * interval) {
- forceRunDelay = false;
- disableItemDrop = false;
- timer = 0;
- clearLag();
- } else if ((timer % (1200 * (interval - 0.06))) === 0) {
- disableItemDrop = true;
- say('Clearing items in 3...');
- } else if ((timer % (1200 * (interval - 0.04))) === 0) {
- say('Clearing items in 2...');
- } else if ((timer % (1200 * (interval - 0.02))) === 0) {
- say('Clearing items in 1...');
- } else if ((timer % (1200 * (interval - 0.6))) === 0) {
- say(`Clearing all ground items in 30 seconds!`);
- } else if ((timer % (1200 * (interval - 1))) === 0) {
- say(`Clearing all ground items in one minute!`);
- }
- });
- ItemEvents.dropped(event => {
- if (event.item && event.player && event.player.isPlayer() && disableItemDrop) {
- event.player.give(event.item);
- event.player.displayClientMessage(Component.red('You can\'t drop items during clean up ❤'), true);
- event.cancel();
- }
- });
- ServerEvents.commandRegistry(event => {
- const {commands: Commands, arguments: Arguments} = event;
- event.register(
- Commands.literal('clearLag')
- .requires(src => src.hasPermission(2))
- .then(Commands.literal('run').executes(() => {
- say('Clearing all ground items in one minute!');
- forceRunDelay = true;
- timer = 0;
- return 1;
- }))
- .then(Commands.literal('killMobs').executes(ctx => {
- clearLag(true);
- return 1;
- }))
- .then(Commands.literal('cleanItems').executes(ctx => {
- clearLag(false, true);
- return 1;
- }))
- );
- });
Advertisement
Advertisement