Jump to content

[1.8][SOLVED] A few questions regarding server modding with 1.8


Jacky2611

Recommended Posts

I KNOW THAT MOST LIKELY SOME OF THIS QUESTIONS HAVE ALREADY BEEN ANSWERED BEFORE, BUT TO MY SURPRISE THE SEARCH FUNCTION COULDN'T FIND ANYTHING RELATED TO 1.8 MP.

I AM SORRY IF THIS IS A REPOST:

 

 

Hi!

 

We (=22 friends + me) recently started a HUGE hunger games/survival sort of thing in minecraft 1.8 on a private server.

However, it turned out that some player have a way too big advantage cause they are able too stay online longer than others.

Now i had the (not really) brilliant idea to write a server only (thats possible in 1.8, right?) mod to kick players if they are online for more than 1 hour a day.

But bevor i can start such a project there are a few questions:

 

1. Can I use Events on a server only mod (and are forge events already possible?)

2. How far is the deobfuscating process?(just for basic stuff, i hate strange names in my code)

3. Do the clients really need no forge?

 

4. I would use a living updated event and player nbt data to save the online time and to check wether a player should be kicked. However, i believe that this could turn out to be really resource intensive. Any better idea?

5. Should i kick them whenever they try to join or should i ban them once they used up their time and then tell the server to unban everyone at midnight?

6. Whats the best way to execute a class at a specific (real) time even if there are no players online?

7. Anything else i should know about server only modding?

 

 

Whoa, thats a lot of text. A quick answer would really be awesome, we want to reset our server asap. =D

And would such a mod be useful for other servers too? Not sure if i should add stuff like a config file or not.

 

Thank you very much for spending some of your time to read my post, have a nice weekend,

Jacky

 

 

(I am NOT asking for updates, pls just tell me whats already possible)

Here could be your advertisement!

Link to comment
Share on other sites

Just wondering. How much do dimensions require client stuff?

 

Nah, i don't really want to use threads. The last time i used them i got an extrem performance boost and an awesome matrix like time freeze effect. But this time i won't have to sync anything so i could give it a try. Will they be shut down together with my server? (As already said, i never really used them)

Here could be your advertisement!

Link to comment
Share on other sites

Nah, I will just try it. The one major reason why i started modding was to improve my coding skills.

 

CHALLANGE ACCEPTED!

 

Btw, this is solved. Maybe i will post some experiment results here but my questions have all been answered.

Thx diesieben07, you helped me a lot.

Here could be your advertisement!

Link to comment
Share on other sites

Then you try it again and it works again. This is due to the nature of threads. If you don't know about these things you will have a hard time.

 

So true.  Due to the way some of the events I'm using interact with threads (that is, they're fired on different threads and my handler wants to use the same not-thread-safe object) I've had quite a bit of trouble squashing some concurrent modification crashes.  I think they're gone, now, though.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Nah, I will just try it. The one major reason why i started modding was to improve my coding skills.

 

CHALLANGE ACCEPTED!

 

If you're going with multithreading, you will most likely have race conditions in your code if you're not careful.

 

If you don't know what race conditions are, I suggest you don't use multiple threads. Given their non-deterministic nature, they are one of the most painful things to debug.

 

Also, when dealing with threads, you can run into deadlock. These seem like infinite loops (i.e. the program won't move on), but they are caused when two threads are waiting for each other to finish before moving on to their next tasks. That is, thread 1 waits for thread 2 to do something, but thread 2 is waiting for thread 1 to do something else (which thread 1 can't do because it's waiting for thread 2... and so on). These are much harder to spot than infinite loops, since there's no exact line in the code that causes this. (An unfortunate thread execution order/race condition can result in deadlock.)

 

To actually improve your coding skills, start with a better understanding of the foundations first. Don't go head first into something complex like multi-threading, since that will only frustrate you when you run into problems and lack the foundations to reason through them.

Link to comment
Share on other sites

I already did nearly everything expect more advanced threads and advanced reflection(already tried it a few times in other projects).

I have been using java for over a year and spend most of my weekends coding.

 

And how can i use newer mcp mappings?

Here could be your advertisement!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • The version of what? I just imported the MDK into Eclipse. I haven't made any edits to the Java code in it or even any other files. I haven't even gotten to changing the modid from "examplemod" yet.
    • Captain WebGenesis is a Cyber skilled hacker with special abilities and skills that enact penetration to help victims of Crypto Fraudulent activities who are faced with cyber challenges get back their lost funds. Simply file your complaint through the website (https://captainwebgenesis. com) and have all your crypto recovered back.
    • The crash log keeps saying something about the tick rate. Can someone please help me fix?   ---- Minecraft Crash Report ---- // Everything's going to plan. No, really, that was supposed to happen. Time: 2024-06-21 16:24:55 Description: Exception in server tick loop java.lang.NullPointerException: Cannot invoke "com.cobblemon.mod.common.api.conditional.RegistryLikeCondition.fits(Object, net.minecraft.core.Registry)" because "condition" is null at com.cobblemon.mod.common.api.spawning.condition.SpawningCondition.fits(SpawningCondition.java:85) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.condition.AreaTypeSpawningCondition.fits(AreaTypeSpawningCondition.java:30) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.condition.GroundedTypeSpawningCondition.fits(GroundedTypeSpawningCondition.java:28) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.condition.GroundedTypeSpawningCondition.fits(GroundedTypeSpawningCondition.java:24) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.condition.SpawningCondition.isSatisfiedBy(SpawningCondition.java:68) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.detail.SpawnDetail.isSatisfiedBy(SpawnDetail.java:78) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.spawner.Spawner$DefaultImpls.getMatchingSpawns(Spawner.java:42) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.spawner.TickingSpawner.getMatchingSpawns(TickingSpawner.java:31) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.selection.FlatContextWeightedSelector.getSelectionData(FlatContextWeightedSelector.java:79) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.selection.FlatContextWeightedSelector.select(FlatContextWeightedSelector.java:106) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.spawner.AreaSpawner.run(AreaSpawner.java:94) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.spawner.TickingSpawner.tick(TickingSpawner.java:71) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.spawning.SpawnerManager.onServerTick(SpawnerManager.java:58) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.events.ServerTickHandler.onTick(ServerTickHandler.java:20) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.Cobblemon$initialize$7.invoke(Cobblemon.java:368) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.Cobblemon$initialize$7.invoke(Cobblemon.java:368) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.reactive.ObservableSubscription.handle(ObservableSubscription.java:16) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.common.api.reactive.SimpleObservable.emit(SimpleObservable.java:39) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.forge.event.ForgePlatformEventHandler.onTick(ForgePlatformEventHandler.kt:172) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading} at com.cobblemon.mod.forge.event.__ForgePlatformEventHandler_onTick_ServerTickEvent.invoke(.dynamic) ~[Cobblemon-forge-1.5.2+1.20.1.jar%23121!/:?] {re:classloading,pl:eventbus:B} at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73) ~[eventbus-6.0.5.jar%2352!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%2352!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%2352!/:?] {} at net.minecraftforge.event.ForgeEventFactory.onPostServerTick(ForgeEventFactory.java:950) ~[forge-1.20.1-47.2.17-universal.jar%23138!/:?] {re:classloading} at net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:835) ~[server-1.20.1-20230612.114412-srg.jar%23133!/:?] {re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661) ~[server-1.20.1-20230612.114412-srg.jar%23133!/:?] {re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23133!/:?] {re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:840) ~[?:?] {re:mixin}
    • okay i've managed to fix it. looks like i made the stupidest error known to man. i hadn't installed forge to the client, which i assumed only affected the launcher which wouldn't affect me because i used a third party one. evidently not. the more you know
    • tried a fresh install of above and beyond with java 8 installed. got a popup that says "Error: Unable to access jarfile forge-1.16.5-36.2.8.jar". every good programmer knows getting a different error means you've made progress!
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.