#Forge Essentials works better than thermos + essentials plugins in my opinion

232 messages · Page 1 of 1 (latest)

simple gust
#

Last week I setup a server with thermos and essentials plugins, all looks good until I found some slightly tps drop. So I decided to change the essentials plugin to mod version to see if it works better, with the help of @quasi shadow it finally works and the server shows better tps performance, which I was looking for.
All the information about FE can be found on the wiki:https://github.com/ForgeEssentials/ForgeEssentials/wiki

GitHub

Repository for ForgeEssentials 1.x. Contribute to ForgeEssentials/ForgeEssentials development by creating an account on GitHub.

#

Forge Essentials works better than thermos + essentials plugins in my opinion

inland vector
#

any option to yeet plugins is a good one

#

until RFG gets forge buildable, the platform remains extremely difficult to update IIRC

quasi shadow
#

Good to know. Also, another thing that helps TPS is to use a script to manage autosaving.
I built this script for my GTNH server specifically cause I noticed TPS spikes and discovered that the autosave was causing the spikes.
GTNH-2.3.0\ForgeEssentials\JScripting

// Primitive AutoSave FEJscript
//

var saveInterval = '300000';


setInterval(function()
{    
    var hiddenChatSender = Server.getServer().doAs(null, true);
    Server.runCommand(hiddenChatSender, 'save-on');
    Server.runCommand(hiddenChatSender, 'save-all');
    setTimeout(function() {
        Server.runCommand(hiddenChatSender, 'save-off');
    }, 5000);
}, saveInterval);


var hiddenChatSender = Server.getServer().doAs(null, true);
setTimeout(function() {
    Server.runCommand(hiddenChatSender, 'save-off');
    Server.runCommand(hiddenChatSender, 'save-all');
}, 30000);
Server.chatConfirm('AutoSave Script Loaded!');```
humble venture
#

additionally there is any way to migrate essentials data to forgeessentials?

quasi shadow
#

Good question, I am not sure. This was implemented long before Java 17. I don't really know if Java 17 would make this unneeded. As for migrating data, no, that would not be something that is possible. Keep in mind that FE is not designed as a clone of essentials but was build independently.

#

However, you can set up text formatting to look the same as your essentials version but it requires manual setup work with groups, etc.

#

Same with permissions, any groups that you have in bukkit will need to be replicated in FE's permission module.

#

I do agree, having a migration script would be nice, I just don't have the time anymore to make one.

humble venture
#

i don't have ridiculously permissions apart super simple one, just i have some users that exceeds 100 homes but i will figure that out myself :D thanks for answers

quasi shadow
#

Alright, fair.

#

One thing to keep in mind is homes are treated differently in FE. The design is that there is one home and then a set number of personal warps. (default max is 10)

#

functionally they behave the same.

#

FE stores personal warps in the World\FEData\json\PersonalWarp folder. Format is a json object.
ex:

{
"warp1": {
  "dim": 0,
  "pitch": 54,
  "yaw": -270,
  "xd": 250.5,
  "yd": 100.0,
  "zd": 120
}
}```
simple gust
#

I'm using ftb mods to set homes up to 1000 and it has no conflicts with FE

quasi shadow
#

fair

#

I prefer to stick with FE pwarps since they can be defined at a per group basic.

#

ex: Member group gets 10 warps, donator group get 100 warps

simple gust
#

yeah FE is indeed more flxible

quasi shadow
#

As for converting to FE, I would say up to the person and the server needs. And of course don't forget Crucible (a more up to date thermos) as a potential option.

#

FE is a great mod but it isn't the only option.

#

I think it would be possible to migrate data but you would have to build your own migration script to convert homes into pwarps.

humble venture
#

i'm just no pay-to-win server/network and groups may benefits for someone else however everyone get equal chance. Thanks with additional informations i'm surely can apply some knowledge to format properly.

quasi shadow
cedar coral
#

@timid fulcrum

simple gust
quasi shadow
#

Fair, just remember, FE isn't fully compatible with Crucible yet and not all things are expected to work.

#

Keep in mind when I tested FE with crucible 5.0 a while back it didn't work and that was why I made updates in 1374. I had it working in an earlier commit but someone had a PR that suggested a more robust way to detect for crucible but it didn't work and broke 1374.

#

I have heard that it works in the most recent crucible version but be aware that the there is a mixin collision that doesn't show up until you try to log in.

#

Since 1373 doesn't have any of my crucible fixes, I would not expect it to work and it might kick the player when you log in.

#

Basically, when I mentioned Crucible, it would be Crucible + Bukkit Essentials instead of Pure Forge + FE. FE is not designed to work with bukkit and doesn't have any integrations into bukkit permissions currently. Right now the goal is for it to not crash when loaded but it is not recommended for that environment yet.

simple gust
quasi shadow
#

NP. With the most recent dev build it is no longer crashing but it not recommended unless you wish to use the multiworld feature.

humble venture
simple gust
humble venture
simple gust
#

I didn't intentionally to check it as my server TPS is almost keeping at 20 right now, but I did used the auto-save scripts above provided by Spacebuilder2020

simple gust
quasi shadow
#

Check your start script. This looks like the error you get if the healer override property is not set.

#

-Dnet.glease.healer.patch_stage=POSTINIT

#

Also, keep in mind that 1373 doesn't support Crucible and when testing with older versions did not work at all due to a conflicting patch as well as conflicting libraries. It is a miracle it even works at all on reflux!

simple gust
quasi shadow
#

Fixes are out there, you just have to grab them from the dev-builds section.

#

It is interesting that FE doesn't crash with reflex but I imagine it might crash when you add a plugin...

quasi shadow
#

Cauldron support is very new and we didn't support it at all in the past.

#

I have updated the code so it gives you more information. For now It will still require enabling safe mode but it won't print out a nasty message anymore!

simple gust
#

But the TPS is close but not be able to reach 20

quasi shadow
#

xD

simple gust
#

it's jumping up and down fast

quasi shadow
#

Btw, check your libraries and make sure they look like this! #help message

If you add plugins and it loads in the hibernate jars normally it could crash things.

#

FE no longer needs the other libraries in the library folder since they are part of the fat jar but they may still be around as artifacts from 1373.

simple gust
#

Yeah I did installed all the libraries

#

got it

#

let me check it again

quasi shadow
#

yea, basically undo the stuff you did to make it work with 1373

#

Cause FE will load everything in that folder even if it is no longer needed

#

and if plugins are loaded, cauldron might load it's own hibernate jar.

simple gust
#

But what about Crucible?

#

I remember Crucible needs some of the library

quasi shadow
#

Crucible has it's own hibernate jar

#

And if FE's jar is in there, it could conflict with Crucibles jar

#

in older versions it would crash at boot

simple gust
#

Got it

quasi shadow
#

I think they must have updated it to not load the jars right away

#

but there is the still risk of a collision with FE's jar there

simple gust
#

wait there's a file name playerlogger.h2

quasi shadow
#

that is fine

simple gust
#

it's 12.3 GB

quasi shadow
#

that is your block logger

#

12 gb sounds big though

#

have you been doing a lot of block edits

simple gust
#

like worldedit?

quasi shadow
#

breaking and placing blocks

simple gust
#

I didn't I guess

quasi shadow
#

basically, the player logger logs every action a player makes

simple gust
#

can I turn it off?

quasi shadow
#

yes

#

it is a module

#

main.cfg

#

also, if you wish to start fresh, just delete the file while the server is off and it will start a fresh log

#

player logger works best if you are running a larger server

#

cause you can find out what happened

#

.i.e. player griefing a base, or an active transformer blowing up!

simple gust
#

kekw It's okay my server is just a small private server

quasi shadow
#

fair

simple gust
#

there was a lot of players but they just quit

#

cuz it's gtnh though

#

🥲

quasi shadow
#

I kept it on mine so that we can find out if something greg went bump in the night

#

but yea, easy to disable

simple gust
#

yeah I just disabled it

quasi shadow
#

cool

#

feel free to delete the playerlogger files

#

and if you need it in the future, feel free to ask me for tips on using it

simple gust
#

sure, and I also changed the lib to the newest one

#

let me see how it works

quasi shadow
#

one thing you can do is do /pl lookup range 32 action blockDetonate to find any explosions within a 32 block radius

#

turning player logger off should have a small performance impact but not much cause it is already very efficent.

#

My players have found it useful to sleuth out the cause of an cascading explosion (active transformers). (turns out the wireless module went boom and blew up the entire network)

#

But yes, I agree it is overkill on a small server. (like mine, only about 3 active players on a whitelisted server)

simple gust
#

does the playerlogger files reset over time? I think it's acceptable if it resets

quasi shadow
#

I don't think so, however, it is incremental so 12 GB sounds like you had something making a lot of block edits.

#

I think on my server it is 15 gb right now

simple gust
#

it was 25+GB last time xD

#

I don't know how

quasi shadow
#

How long have you had FE on your server. I thought you only installed it the other day?

simple gust
#

yes

quasi shadow
#

logDuration = config.get(CAT, "log_duration", 0, "Days to keep data saved in the database. Set to 0 to keep all data indefinitely.").getInt();

simple gust
#

like one or two days

quasi shadow
#

here we go

#

log duration

#

it is a config option

#

by default it is forever but you can adjust it

simple gust
#

PlayerLogger.cfg?

quasi shadow
#

yes

#

also, perhaps disable player position logging or make it less frequent

#

by default it logs position every 5 seconds

simple gust
#

let's give it a test^^

quasi shadow
#

Cool

#

that should give you a little bit of a logger so you can check if something went bump in the night

#

but as far as logging, it basically logs everything (similar to prism) and can rollback areas as well.

simple gust
#

So overall Crucible gives me a lower tick durations and CPU usage, but the TPS keeps jumping up and down in a very small area like 19~22

#

I also got this keeps spamming in the console xD

quasi shadow
#

xD

#

Basically, Crucible is good if you wish to add plugins

#

otherwise you are better to not use it

#

I feel they have gone a long way to make it more compatable

#

But I personally go the pure forge route

simple gust
#

I see, I guess I'll go the forge route too

#

don't know if java19 gives more TPS support xD

quasi shadow
#

To be honest, I haven't noticed much of a difference

#

I think anywhere between 19 - 20 on average is good with GTNH

simple gust
#

yeah it's indeed playable

quasi shadow
#

Keep in mind that I have a server running on an i9 11900k and it still has TPS spikes from time to time.

simple gust
#

My server is running on an i5 13400

quasi shadow
#

Given the crazy stuff that those guys have been doing on it, I feel 44 ms is good...

simple gust
#

xD

quasi shadow
#

But yes, that was why I wrote that script cause I discovered the biggest spikes were during the autosave period

#

so, I adjusted it to save every 5 minutes

#

I then discovered that when saving was turned off, it didn't unload chunks

#

so that is why it also turns saving back on for a short period

simple gust
#

is the script automatically loaded? I did put it in the JScripting folder

#

there's only a ZPM~UV base and a steam age base on my server xD

quasi shadow
#

yes, it autoloads and prints out a message to the console. If you see that message it loaded.

#

But I don't know if it is fully compatible with crucible.

#

best way to check is to wait 5 minutes and see if it saves

#

Also, here is the start script I use to start the server. (it is a bit modified from the default with basic crash detection)

#!/bin/bash

export PATH="/cygdrive/e/Java/jdk-17.0.6+10/bin:$PATH"
java -XshowSettings -version

trap 'echo -e "\nCtrl-C Suppressed!" >> status' SIGINT
trap 'echo -e "\nStopping Server! (SIGQUIT)" >> status; ./stop.sh Panic' SIGQUIT
trap 'echo -e "\nStopping Server! (SIGTERM)" >> status; ./stop.sh Panic' SIGTERM
while true
do
   if [[ -z $(ls ./crash-reports/) ]]
   then
       echo "Starting Server!"
   else
    if (grep -q "cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: org/apache/commons/lang3/" ./crash-reports/*) || (grep -q "Could not initialize class org.apache.commons.lang3.StringEscapeUtils" ./crash-reports/*) || (grep -q "at codechicken.lib.world.WorldExtension.unloadChunk(WorldExtension.java:52)" ./crash-reports/*) || (grep -q "at net.minecraft.world.chunk.NibbleArray.func_76582_a(SourceFile:26)" ./crash-reports/*)
    then
        mv ./crash-reports/* ./old-crashes
        echo "Known Crash Detected, ignoring..."
        echo "Continuing in 5..."
        for i in 5 4 3 2 1
        do
            echo "$i..."
            read -t 1 -r -s -N 1 && [[ $REPLY == 'q' ]] && exit
        done
    else
        echo "Server Crashed, exiting."
        echo "Please delete / backup your crash reports and start again!"
        exit 2
    fi
   fi
   rm box_restart
   java $MEMOPTS -Dnet.glease.healer.patch_stage=POSTINIT -Dfml.readTimeout=180 @java9args.txt nogui
    echo "If you want to completely stop the server process now, press q before the time is up!"
    echo "Rebooting in:"    
    if [ -f box_restart ]
    then
        rm box_restart
        exit
    fi
    for i in 5 4 3 2 1
    do
        echo "$i..."
        read -t 1 -r -s -N 1 && [[ $REPLY == 'q' ]] && exit
    done
    echo "Rebooting now!"
done```
simple gust
#

wow this is huge

#

do you think java19 is helpful to server TPS?

#

I do want to try it too

quasi shadow
#

Doesn't hurt...

simple gust
#

oh..

quasi shadow
#

Haven't really noticed an increase

simple gust
#

I see

quasi shadow
#

But TPS was already 20

simple gust
#

yeah could only wait and see

quasi shadow
#

I think Java 17/19 is good regardless since it is more modern

#

But I feel that the biggest gains are on the client

simple gust
#

it launches a lot more faster?

quasi shadow
#

I think so

#

it seems to launch a bit faster

#
[12:38:50] [Server thread/ERROR]: Command tp registered twice
#

So yes, a bit faster

#

Keep in mind though for Java 17 you will need to update to 2.3.0

#

there was a lot of stuff they did under the hood to make it compatable.

simple gust
#

nah.. I have to pass 2.3.0 at least for now cuz I heard they nerfed a looot of stuff even time x64

#

I'll update if there's some new features or machines that can really luring my mind xD

quasi shadow
#

fair

#

I only updated cause the guys who are active wanted me to update

#

(Also, I had to update FE so it was compatible with Java 17)

#

I am personally in LV so the updates don't really effect me much.

simple gust
#

yeah that makes sense

#

stages cost so much time

quasi shadow
#

yes, also I have most lost interest for minecraft

simple gust
#

Same, most of my teammates are all gone from the server

#

from this huge grinding pack*

quasi shadow
#

xD

#

yes, I have a few folks who are crazy at GT grinding...

#

I just don't have time for it much

simple gust
#

agree.. spending like several hundred hours setting in front of the monitors is also not that healthy TvT

quasi shadow
#

xD... I think one guy works on his base when he is at work during meetings...

simple gust
#

lol

quasi shadow
#

But I get the sense that those meetings are the type of meeting that are not productive and a waste of time

#

As for 2.3.0, my recommendation is to wait until 2.3.2 has been deemed stable.

#

2.3.0 has a few bugs but 2.3.1 has more

humble venture
#

@simple gust crucible already have their own autosave feature, make sure you use that one instead FE

humble venture
quasi shadow
#

No, those features were never implemented. (there are todo's for dropItemEvent but it was never implemented).

#

Probally closer to core protect to be honest but it does log every block including entire tile entities.

humble venture
#

prism is doing pretty okay apart restoring gregtech things..

quasi shadow
#

yes, I think Prism has always been very good! FE is really for pure forge to be honest. I question sometimes why I made it work on thermos.

quasi shadow
#

As for player logger, Prism was one of the inspirations a long time ago that caused me to submit a bunch of PRs to FE to improve the player logger. This ultimately ended up with a command that did the lookups based on a criteria and filter instead of just having a clock that only showed changes to a specific block. I would still agree that Prism is better but the intent at the time was to provide a function that was pure forge without the need for plugins.

humble venture
#

i wish i can have prism for modded

#

is by far the most useful thing

quasi shadow
#

I ended up not using it a lot cause the server owner where I was staff a long time ago first decided to replace Prism with Core Protect and then to switch to pure forge (Forge Essentials)

#

I ended up being the one to figure out how to set up FE and then some how managed to become part of the FE dev team... LUL

dire swan
#

Not really the correct place to post this but as it is about forge essentials I was hoping to get some help with installing, I did what was posted in the screenshots renaming gtnhmixing and using 1373 version but the server seems to crash part way through startup. I have tried both java 19 and java 8 version but to no avail so was hoping to be able to get some help in this regards.

wise dune
#

Ask this in #help

dire swan
wise dune
#

Ah. I got stuck myself with that so im not too sure either

#

Sorry

dire swan
#

No worries, it’s not super urgent just someone on server is crying he can’t tpa.

quasi shadow
#

What GTNH version are you on?

quasi shadow
#

@dire swan what version of GTNH are you on and what errors are you getting? Post a snippet and I might have a solution.

#

For Java 17, you will need to use one of the 1.7.10 dev builds (available on FE's discord or downloadable from github actions) since there isn't a good built on curse yet but 1373 should work fine on Java 8.

dire swan
#

I will try installing a dev version on java 19 and see what happens now though

dire swan
#

Actually not sure thats the java 8 report. I tried a fresh install on java 8, all I did was install gtnh server j8 version, tested it worked. Installed a fresh version of forgeessentials 1373 and changed the gtnhmixins to start with 00

#

Does look like a different error

quasi shadow
#

yes, this looks like the healer error. (second one). First one looks like Java 17... for that you will need an updated dev-build available from FE's discord.

#

Add this flag to your start script. -Dnet.glease.healer.patch_stage=POSTINIT

floral sun
#

No offense but there no way your timings better then crucible / thermos lol

#

don't get me wrong vanilla forge is the way to go

#

but no one can claim to all of us large servers your getting better timmings then us 😛

#

This is towards the OP about better performance hehe.

#

And so Spacebuilder you know I love you this has nothing to do with you, I'm just talking about all these hacked horrible performance methods that should not exist yet they do and they help even though they should not ;P

quasi shadow
#

fair enough. I would agree. It shouldn't have a significant difference in performance and the gap is probally worth it to get more functionality on a big server.

#

FE is more for smaller servers but powerful enough that with a lot of manual customization you can get something close to a bukkit server with lots of plugins.

floral sun
#

Yup, I think FE decently optimized, it's more of the tile entity crap and all the hacks of thermos/crucible lol. That being said I know GTNH slowly trying to enhance GTNH itself to make it better so someday hopefully we can throw all that away.

quasi shadow
#

xD, true

#

With FE, I think it would be cool for it to play well with bukkit just for compatibility reasons and cause I got tired of people coming into the discord asking why FE doesn't work with their bukkit solution, making it work with bukkit is not a high priority. I have other things I want to focus on first like the new discord bridge module I am working on...

simple gust
#

Well I didn't really pay attention to the lag solutions anymore. Instead of finding a better server like Crucible or some tps optimized mods, I was more focusing on game playing

#

It's still a long road to go for server getting laggy with my current i5 13400