Jump to content

Recommended Posts

Posted

I want my mod to only load when running on the logical client side. The problem is that on initial setup `Minecraft.getInstance().level` is null and so I cannot tell the sides apart. Is there any other clean way of doing this or should I use the `Thread.currentThread()` method?

Posted

Well you see DistExecutor is for the physical side. My mod will never run on a server but only on the client side. I only need to set apart the logical server and the logical client.

Posted
  On 5/28/2021 at 10:38 AM, Antonii said:

Well you see DistExecutor is for the physical side. My mod will never run on a server but only on the client side. I only need to set apart the logical server and the logical client.

Expand  

what exactly should your mod do

if you want to write a client only mod you should use DistExecutor,
if you only have one method, class, code part that is only executed on the client,
the logical side is the better choice, therefore the question what you want to do

Posted (edited)
  Quote

the logical side is the better choice, therefore the question what you want to do

Expand  

Yes indeed logical side is better and exactly what I want to do! Now how do I do that? isClientSide() doesn't work....because `level` is null

Edited by Antonii
Posted
  On 5/28/2021 at 12:22 PM, Antonii said:

Yes indeed logical side is better and exactly what I want to do! Now how do I do that?

Expand  

again what exactly do you want to do, show your code, because I can't find a solution for your problem with:

  On 5/28/2021 at 12:22 PM, Antonii said:

isClientSide() doesn't work....because `level` is null

Expand  

 

Posted
public Main() {
	DistExecutor.safeRunWhenOn(Dist.CLIENT,()->SomeClass::Init);
}
//SomeClass::Init contains register code

This bad/not needed - my mod will never run on physical server

public Main() {
	if (Minecraft.getInstance() == null || !Minecraft.getInstance().level.isClientSide()) return;
	FMLJavaModLoadingContext.get().getModEventBus().addListener(this::Init);
}

This good but doesn't work because `level` is null

Posted (edited)

Now now there is no need for irony or insults. I am just asking for help. Redirecting me to a page I already read doesn't help, does it?

Now here is what I understood:

  Quote

The logical server is present within the physical server, but is also can run inside a physical client together with a logical client,

Expand  

So I must "protect" my code from all forms of server. Taking into consideration that this mod will only run on my PC and not on a physical server that leaves me with the following problem: how to differentiate between the logical server and logical client. The method isClientSide() seems appropriate but it is not available where I need it (perhaps at a later stage?)

 

 

  Quote

Yes it will. Do not write mods that will crash on server or client

Expand  

Let's say I do what you keep insisting I should do; I use DistExecutor for Dist.CLIENT and....I don't know if the mod is loaded on logical server or logical client. And this is because

  Quote

DistExecutor, which provides various methods to run different methods on different physical sides

Expand  

 

Edited by Antonii
Posted
  On 5/28/2021 at 12:46 PM, Antonii said:

how to differentiate between the logical server and logical client. The method isClientSide() seems appropriate but it is not available where I need it.

Expand  

you don't need it if your mod only runs on the client, this method would always return true

 

  On 5/28/2021 at 12:46 PM, Antonii said:

Let's say I do what you keep insisting I should do; I use DistExecutor for Dist.CLIENT and....I don't know if the mod is loaded on logical server or logical client. And this is because

Expand  

you still haven't understood Dist and DistExecutor, if your mod only runs on the client, the physical and logical side is the client

Posted (edited)

I admit I left one thing out: I will want to play a normal game locally. When I will do that won't my mod be loaded also on the logical server? It's true that in normal conditions the check is somewhat useless but just sometimes I don't want to load it when playing a singleplayer game. Also I will test my mod locally on a singleplayer world and that will have the same issues.

 

I used to have some sort of check in my mod in 1.12 version that did this.

Edited by Antonii
Posted (edited)
  Quote

This question makes no sense. Mod loading takes place before there is any kind of logical side. At mod loading time there is no integrated server, because there is no world loaded yet. As such the question "am I loading on the logical server" makes no sense.

Expand  

This is exactly what I thought! Thanks. This is why I said

  Quote

but it is not available where I need it (perhaps at a later stage?)

Expand  

So the issue at hand is to differentiate between the two...when? On events? I recall that some events where called on both sides.

 

  Quote

 At mod loading time there is no integrated server, because there is no world loaded yet.

Expand  

You must put this in the docs perhaps on the Sided page

Edited by Antonii
positive reinforcement
Posted (edited)
  On 5/28/2021 at 12:59 PM, Antonii said:

So the issue at hand is to differentiate between the two...when? On events? I recall that some events where called on both sides.

Expand  

yes or if you have data that only exist on one side (Edit: Example would be a capability)

Edited by Luis_ST

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.

Announcements



×
×
  • Create New...

Important Information

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