Advertisement
omr__

Clear Lag KubeJS Fabric 1.19

Apr 30th, 2023 (edited)
1,221
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /************************************************************************************
  2.  *                  Auto remove listed mobs and on groud items                      *
  3.  *                                                                                  *
  4.  * -------------------------------------------------------------------------------- *
  5.  *  Description:                                                                    *
  6.  *      Automatic cleaning on the ground items and listed mobs at a set interval    *
  7.  *      Prevents players from dropping items for 3 seconds before clean up.         *
  8.  *      Warns players in a minute, 30, 3, 2, 1 seconds before clean up.             *
  9.  *      Displays the number of cleaned entities after clean up.                     *
  10.  *      Entities are moved to the void being cleaned up to avoid dropping loot.     *
  11.  *                                                                                  *
  12.  * -------------------------------------------------------------------------------- *
  13.  *  Commands:                                                                       *
  14.  *      /clearLag run           => Force run clean up after one minute (with warn)  *
  15.  *      /clearLag killMobs      => Instantly kill listed mobs                       *
  16.  *      /clearLag cleanItems    => Instantly clean on ground items                  *
  17.  *                                                                                  *
  18.  * -------------------------------------------------------------------------------- *
  19.  *  Config:                                                                         *
  20.  *      CLEAN_INTERVAL          => Clear interval in MUNUTES                        *
  21.  *      MOBS_TO_KILL            => Mobs list to clear                               *
  22.  *                                                                                  *
  23.  * -------------------------------------------------------------------------------- *
  24.  *  Version:    1.3.0                                                               *
  25.  *  Versions:   1.19 (Fabric)                                                       *
  26.  *  Author:     discord: om_r#3567 | email: max.kvy@gmail.com                       *
  27.  *  License:    LGPL-3.0                                                            *
  28.  *  *********************************************************************************/
  29.  
  30. const CONFIG = {
  31.     CLEAN_INTERVAL: 15,
  32.     MOBS_TO_KILL: [
  33.         'zombie',
  34.         'zombified_piglin',
  35.         'witch',
  36.         'skeleton',
  37.         'enderman',
  38.         'creeper',
  39.         'vindicator',
  40.         'whisperwoods:moth',
  41.         'naturalist:firefly',
  42.         'graveyard:revenant',
  43.         'bat',
  44.         'squid'
  45.     ]
  46. }
  47.  
  48. let removedEntitiesAmount = Utils.newCountingMap();
  49. let timer = 0;
  50. let forceRunDelay = false;
  51. let disableItemDrop = false;
  52.  
  53. const say = message => Utils.server.tell(5[ClearLag] §e${message}`);
  54.  
  55. const clearEntities = (entityType) => {
  56.     Utils.server.runCommandSilent(`tp @e[type=${entityType}] ~ -100000 ~`);
  57.     return Utils.server.runCommandSilent(`kill @e[type=${entityType}]`);
  58. }
  59.  
  60. const clearLag = (ignoreItems, ignoreMobs) => {
  61.     removedEntitiesAmount.clear();
  62.  
  63.     if (!ignoreItems) {
  64.         removedEntitiesAmount.add('item', clearEntities('item'));
  65.     }
  66.  
  67.     if (!ignoreMobs) {
  68.         CONFIG.MOBS_TO_KILL.forEach(mobType => {
  69.             removedEntitiesAmount.add(mobType, clearEntities(mobType));
  70.         });
  71.     }
  72.  
  73.     say(`Cleared ${removedEntitiesAmount.totalCount} entities!`);
  74. }
  75.  
  76. ServerEvents.tick(() => {
  77.     let interval = forceRunDelay ? 1 : CONFIG.CLEAN_INTERVAL;
  78.     timer++;
  79.  
  80.     if (timer > 1200 * interval) {
  81.         forceRunDelay = false;
  82.         disableItemDrop = false;
  83.         timer = 0;
  84.         clearLag();
  85.     } else if ((timer % (1200 * (interval - 0.06))) === 0) {
  86.         disableItemDrop = true;
  87.         say('Clearing items in 3...');
  88.     } else if ((timer % (1200 * (interval - 0.04))) === 0) {
  89.         say('Clearing items in 2...');
  90.     } else if ((timer % (1200 * (interval - 0.02))) === 0) {
  91.         say('Clearing items in 1...');
  92.     } else if ((timer % (1200 * (interval - 0.6))) === 0) {
  93.         say(`Clearing all ground items in 30 seconds!`);
  94.     } else if ((timer % (1200 * (interval - 1))) === 0) {
  95.         say(`Clearing all ground items in one minute!`);
  96.     }
  97. });
  98.  
  99. ItemEvents.dropped(event => {
  100.     if (event.item && event.player && event.player.isPlayer() && disableItemDrop) {
  101.         event.player.give(event.item);
  102.         event.player.displayClientMessage(Component.red('You can\'t drop items during clean up ❤'), true);
  103.         event.cancel();
  104.     }
  105. });
  106.  
  107. ServerEvents.commandRegistry(event => {
  108.     const {commands: Commands, arguments: Arguments} = event;
  109.  
  110.     event.register(
  111.       Commands.literal('clearLag')
  112.         .requires(src => src.hasPermission(2))
  113.         .then(Commands.literal('run').executes(() => {
  114.             say('Clearing all ground items in one minute!');
  115.             forceRunDelay = true;
  116.             timer = 0;
  117.             return 1;
  118.         }))
  119.         .then(Commands.literal('killMobs').executes(ctx => {
  120.             clearLag(true);
  121.             return 1;
  122.         }))
  123.         .then(Commands.literal('cleanItems').executes(ctx => {
  124.             clearLag(false, true);
  125.             return 1;
  126.         }))
  127.     );
  128. });
  129.  
Tags: minecraft
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement