diff --git a/src/index.toml b/src/index.toml index 4cd011f..31e8551 100644 --- a/src/index.toml +++ b/src/index.toml @@ -63,6 +63,10 @@ hash = "84f6d2ec82b50341634868cb6c1abec87d01a637ef9e35df4ad2e5ece7dce442" file = "kubejs/server_scripts/cardboard_box_blacklist.js" hash = "fc4faf74ae1bad06020a187ba3c699b259eab7da780bff3c48916c520aef910f" +[[files]] +file = "kubejs/server_scripts/clearlag.js" +hash = "1a405c6cff718d67f7fe5303bf16df5ed5946d3cfaffd31dab7a9875171c0532" + [[files]] file = "kubejs/server_scripts/test.js" hash = "698d489a6bec11eafe725433e11c9d1733313c6c617834ca216c92a3c6c5acfd" @@ -147,6 +151,11 @@ file = "mods/bookshelf.pw.toml" hash = "a8beef77c7ca4f31b9b85f4f123f2f461814b249551720b4f75c197e2aca68fc" metafile = true +[[files]] +file = "mods/borderless.pw.toml" +hash = "a14e9890eca705a0f01d1825bd1b26501a0b99db4f112296382819171441e87d" +metafile = true + [[files]] file = "mods/builtin-servers.pw.toml" hash = "40398fcc68b7ec1bc36582dce0e04a3cc7bdbb58a641bc28fe0b72de80d805f2" diff --git a/src/kubejs/server_scripts/clearlag.js b/src/kubejs/server_scripts/clearlag.js new file mode 100644 index 0000000..9267832 --- /dev/null +++ b/src/kubejs/server_scripts/clearlag.js @@ -0,0 +1,116 @@ +let cleaningTime = 1200 * 30; +let timerCheck = 1200; +let timerOn = true; + +let round = 0; +let lastClearLagResult = Utils.newList(); +let lastTotalClearLagResult = Utils.newCountingMap(); + +let blacklist = [ + 'sophisticatedbackpacks:backpack', + 'sophisticatedbackpacks:iron_backpack', + 'sophisticatedbackpacks:gold_backpack', + 'sophisticatedbackpacks:diamond_backpack', + 'sophisticatedbackpacks:netherite_backpack' +]; +let clearLag =(server, reset) => { + let itemList = server.getEntities().filter(entity => entity.type.equals('minecraft:item')); + let lastResult = Utils.newCountingMap(); + + lastClearLagResult.clear(); + lastTotalClearLagResult.clear(); + + itemList.forEach(items => { + if(!blacklist.includes(items.getFullNBT().Item.id)) { + var key = items.name; + lastResult.add(key, items.item.count); + lastTotalClearLagResult.add(key, items.item.count); + items.kill(); + } + }); + + lastClearLagResult.addAll(lastResult.entries); + lastClearLagResult.sort(null); + + server.tell([Text.green('[ClearLag] ' ), `${lastTotalClearLagResult.totalCount}`, ' Removed items.']); + if(reset) round = 0; +} +let timeSchedule = (server) => { + if(timerOn) { + server.tell([Text.green('[ClearLag]'),' ClearLag is turned on!']); + server.scheduleInTicks(timerCheck, callback => { + let currentTime = timerCheck*++round; + let nextItems = server.getEntities().filter(entity => entity.type.equals('minecraft:item')).length; + if(cleaningTime < currentTime) { + clearLag(server, true); + if(timerOn) { + server.tell([Text.green('[ClearLag]'),' ClearLag is turned off!']); + timerOnChanged = false; + } + } + if (timerCheckChange) { + timerCheckChange = false; + round = 0; + server.tell([Text.green('[ClearLag]'),' TimerCheck got updated to ', `${timerCheck/1200}`, '!']); + }else if (cleaningTimeChange) { + cleaningTimeChange = false; + round = 0; + server.tell([Text.green('[ClearLag]'),' Timer got updated to ', `${cleaningTime/1200}`, '!']); + } else if ((currentTime+timerCheck) / 1200 > 1) + server.tell([Text.green('[ClearLag]'), ' Removing ', `${nextItems}`, ' items in ', `${(cleaningTime - currentTime) / 1200}`, ' minutes!']); + if(timerOn) callback.reschedule(); + }) + } +} + +ServerEvents.loaded(event => { + timeSchedule(event.server); +}); + +let cleaningTimeChange = false; +let timerCheckChange = false; + +ServerEvents.commandRegistry(event => { + const {commands: Commands, arguments: Arguments} = event; + event.register( + Commands.literal('clearlag') + .then(Commands.literal('clear').executes(ctx => { + let server = ctx.source.getServer(); + clearLag(server, false); + return 1; + })) + .then(Commands.literal('result').executes(ctx => { + let server = ctx.source.getServer(); + server.tell([Text.green('[ClearLag]'), ' Report:']); + lastClearLagResult.forEach(results => { + server.tell(['[ ', results.key, ': ', results.value, ' ]']) + }); + return 1; + })) + .then(Commands.literal('interval').then(Commands.argument('integer', Arguments.INTEGER.create(event))).executes(ctx => { + let server = ctx.source.getServer(); + const time = Arguments.INTEGER.getResult(ctx, 'integer') * 1200; + timerCheckChange = true; + timerCheck = time; + server.tell([Text.green('[ClearLag]'), ' Interval set to ', time, ' minute']) + return 1; + })) + .then(Commands.literal('timer').then(Commands.argument('integer', Arguments.INTEGER.create(event)).executes(ctx => { + let server = ctx.source.getServer(); + const time = Arguments.INTEGER.getResult(ctx, 'integer') * 1200; + cleaningTimeChange = true + cleaningTime = time; + server.tell([Text.green('[ClearLag]'), ' Timer set to ', time, ' minute']) + return 1; + }))) + .then(Commands.literal('timerOn').then(Commands.argument('boolean', Arguments.BOOLEAN.create(event)).executes(ctx => { + let server = ctx.source.getServer(); + const timeOn = Arguments.BOOLEAN.getResult(ctx, 'boolean'); + if(timerOn === timeOn) return 1; + timerOn = timeOn; + if(timerOn) timeSchedule(server); + server.tell([Text.green('[ClearLag]'), ' ClearLag is ', timerOn]) + return 1; + }))) + ) +}); diff --git a/src/mods/borderless.pw.toml b/src/mods/borderless.pw.toml new file mode 100644 index 0000000..f11b1fc --- /dev/null +++ b/src/mods/borderless.pw.toml @@ -0,0 +1,13 @@ +name = "Borderless Window" +filename = "BorderlessWindow-1.20-1.6.0.jar" +side = "both" + +[download] +hash-format = "sha1" +hash = "2dc2dca0371065bf384b6486827451da441b5471" +mode = "metadata:curseforge" + +[update] +[update.curseforge] +file-id = 4575494 +project-id = 378979 diff --git a/src/pack.toml b/src/pack.toml index bd6771c..4fb637c 100644 --- a/src/pack.toml +++ b/src/pack.toml @@ -1,12 +1,12 @@ name = "GalacticFactory" author = "GalacticFactory" -version = "0.5.3" +version = "0.5.4" pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "06011add3d8e67ceae1ccc0977eff6c2b159289dd21a4b1f10674229e3154185" +hash = "6b36668b7d9488e4deef16b5236df690cf653b8f561971b6404af56de1606296" [versions] forge = "47.2.0"