Jump to content

[SOLVED] GUI not updating values


Melonslise

Recommended Posts

Top->bottom:

 

1. Let's make utility method for registering and then not use it...

public static final void register(EntityPlayer player)

Why does it exist if yo uare not using if (in constructing event)?

 

2. This is useless:

public GUIManaBar(Minecraft mc)
{
super();

* super() is empty, no need to call it.

* having constructor is close to useless - seriosuly, you don't have to make additional reference.

 

3. Why does this class even exist? HandlerGUI

 

4. What the fuck? How many init events do you have?

1st you post:

@EventHandler
public void init(FMLInitializationEvent event)
{
MinecraftForge.EVENT_BUS.register(new HandlerManaEvents());

Then:

@EventHandler
public void init(FMLInitializationEvent event)
{
MinecraftForge.EVENT_BUS.register(new HandlerGUI());
}

You should have one...

 

5. PostInit is NOT for constructing your mod... registering events should be in pre or init.

 

6. Whet the fuck is this?

if (FMLCommonHandler.instance().getEffectiveSide().isClient())

 

I just taught you (yesterday) how to use proxies - use them!

 

7. What the hell is this class? "EntityClientPlayerMP" - "EntityPlayer" if any... (proxies).

 

8. How do even expect those packet handlers to work - you literally do nothing in them!

 

@Override
public IMessage onMessage(CurrentManaMessage message, MessageContext ctx)
{
EntityPlayer player = RunicInscription.proxy.getClientPlayer();

int currentMana = message.getCurrentMana();

Properties.get(player).setMana(currentMana); // THIS IS LIKE SO OBVIOUS!!

return null;
}

 

9. There are so many wrong things here... have one event class, not shitload, besides - you don't need to learn java, you need to learn programming.

 

1. Fixed

2. The additional reference is required in the gui registry

MinecraftForge.EVENT_BUS.register(new GUIManaBar(Minecraft.getMinecraft()));

3. Fixed

4. Ok, I got rid of the HandlerGUI event (I don't even know what I added it for)

5. Fixed

6. Ok I added this in the common proxy:

public abstract Side getSide();

 

This in the client proxy:

	public Side getSide()
{
	return Side.CLIENT;
}

 

And this in the server proxy:

	public Side getSide()
{
	return Side.SERVER;
}

 

and this is the new event registry:

	if (proxy.getSide() == Side.CLIENT)
	{
		MinecraftForge.EVENT_BUS.register(new GUIManaBar(Minecraft.getMinecraft()));
	}

7. If I don't add the return type then it will give me an error over the method

8. I still can't quite grasp how these packets work. So what is this setMana() method?

 

btw here's my repo for convenience

https://github.com/Melonslise/Runic-Inscription/tree/master/Java/melonslise/runicinscription

Link to comment
Share on other sites

  • Replies 68
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

6. This is not what I ment. You need to move registering-event code INTO proxy.

So more like:

abstract Common
{
    public abstract void init();
}

Server extends Common
{
    public void init() {}
}

Client extends Common
{
    public void init()
    {
        MinecraftForge.EVENT_BUS.register(new GUIManaBar(Minecraft.getMinecraft()));
    }
}

Main
{
    init(FMLInit event)
    {
        proxy.init();
    }
}

As said - YOU CAN'T reference ANY of @SideOnly classes outside proxy! If yo uare using Client events of minecraft class - it needs to be in proxy.

 

7. The return type should be EntityPlayer... Where did you get idea to use EntityClientPlayerMP from (I mean, don't use this specific).

 

8. Oh my god... There is IMessage - you pass instance of it to network (RunicInscription.network.sendTo), it sends packet to client thread (no matter is SP or MP) and receiver uses Messagehandler#onMessage to handle that message. As that moment (handling) you are alredy on receiver side (client in this case) - all you need to do is pull data from packet and apply it somewhere - which you do by getting player's client-side properties and setting client's properties to ones from packet. What is so hard?

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

6. This is not what I ment. You need to move registering-event code INTO proxy.

So more like:

abstract Common
{
    public abstract void init();
}

Server extends Common
{
    public void init() {}
}

Client extends Common
{
    public void init()
    {
        MinecraftForge.EVENT_BUS.register(new GUIManaBar(Minecraft.getMinecraft()));
    }
}

Main
{
    init(FMLInit event)
    {
        proxy.init();
    }
}

As said - YOU CAN'T reference ANY of @SideOnly classes outside proxy! If yo uare using Client events of minecraft class - it needs to be in proxy.

 

7. The return type should be EntityPlayer... Where did you get idea to use EntityClientPlayerMP from (I mean, don't use this specific).

 

8. Oh my god... There is IMessage - you pass instance of it to network (RunicInscription.network.sendTo), it sends packet to client thread (no matter is SP or MP) and receiver uses Messagehandler#onMessage to handle that message. As that moment (handling) you are alredy on receiver side (client in this case) - all you need to do is pull data from packet and apply it somewhere - which you do by getting player's client-side properties and setting client's properties to ones from packet. What is so hard?

 

6. Fixed

7. Fixed

8. So how would I get the player's client-side properties?

Link to comment
Share on other sites

8. So how would I get the player's client-side properties?

You are already doing that in your GUI...

 

So if I'm already doing it then why isn't it working?

 

I just thought of something. If I were to create two variables in the GUI class and let the handler assign the received packet data to those two variables and then set these variables into drawString, would that work (multiplayer too)?

Link to comment
Share on other sites

Dude...

 

1. Go to "Profile" -> "Modify Profile" -> "Forum Profile" -> "Personal Text" -> change it to "The worst of the worst".

 

2. Now we can continue.

 

3. Read (yet again): http://mcforge.readthedocs.io/en/latest/concepts/sides/

* I think yo uare on 1.7.10, so "network threads" don't exist.

 

4. There are 2 threads you should be concerned about: CLIENT and SERVER.

* When you go SP you will start integrated server and client. Integrated server is just a server (can be opened to others via LAN) with one player (you / your client thread).

* When you go MP - you can connect to some dedicated server or LAN server. In that case - you will only have client thread and server thread will be the one you connect to.

 

5. Now - Entities (including players) exist on each side - server has some EntityPlayer and client has second EntityPlayer corresponding to server's one. Same applies to IExtendedEntityProperties - you assign them (object) to server and to client entity.

 

Whenever server changes values - it only changes them on server's entity. If you want to see those changes on client - you need to sync those properties. To do that you send (from server) that packet - on handler side (client) you get that data and apply it to your goddamn client-sided properties. SO what you do is fucking GET THEM and SET THEM!

 

6. What do you not understand? If you can't comprehend it you are either too young to grasp concept of programming logic, you are too lazy to actually learn that shit or maybe this is who you are:

 

f9FW2.gif

 

7. Sorry, I just can't handle you anymore, pal :P #thisIsNotProgrammingSchool

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Dude...

 

1. Go to "Profile" -> "Modify Profile" -> "Forum Profile" -> "Personal Text" -> change it to "The worst of the worst".

 

2. Now we can continue.

 

3. Read (yet again): http://mcforge.readthedocs.io/en/latest/concepts/sides/

* I think yo uare on 1.7.10, so "network threads" don't exist.

 

4. There are 2 threads you should be concerned about: CLIENT and SERVER.

* When you go SP you will start integrated server and client. Integrated server is just a server (can be opened to others via LAN) with one player (you / your client thread).

* When you go MP - you can connect to some dedicated server or LAN server. In that case - you will only have client thread and server thread will be the one you connect to.

 

5. Now - Entities (including players) exist on each side - server has some EntityPlayer and client has second EntityPlayer corresponding to server's one. Same applies to IExtendedEntityProperties - you assign them (object) to server and to client entity.

 

Whenever server changes values - it only changes them on server's entity. If you want to see those changes on client - you need to sync those properties. To do that you send (from server) that packet - on handler side (client) you get that data and apply it to your goddamn client-sided properties. SO what you do is fucking GET THEM and SET THEM!

 

6. What do you not understand? If you can't comprehend it you are either too young to grasp concept of programming logic, you are too lazy to actually learn that shit or maybe this is who you are:

 

f9FW2.gif

 

7. Sorry, I just can't handle you anymore, pal :P #thisIsNotProgrammingSchool

 

1. Done

 

Actually I do understand the concept of server and client thing. But tbh I thought that IEEP exists only the server side so I thought I would need to create new values for the client side, but apparently not anymore.

 

So basically the IEEP side is determined by the class from which you get it's values? (client/server class)

 

And btw I do learn Pascal in school. But pascal is is totally different to this Java.

Link to comment
Share on other sites

IEEP is attached to whatever entity object you attach it to. If you attach it to a client-side entity, it will stay there. If you attach it to a server-side entity, it will stay there.

If you attach it to both, both will have it.

Oh so in that case have I attached it to both in my handler? Because I'm not sure at all.

Link to comment
Share on other sites

EntityConstructing fires for every entity object being created. If you don't check, your code will run for both sides.

 

Ok now I set the value from the packet to the client IEEP (hopefully) in my handler:

	ManaProperties props = ManaProperties.get((EntityPlayer) player);

	props.get(player).setCurrentMana(amount);

 

And here is the method in the IEEP

public void setCurrentMana(int amount)
{
	if(amount <= this.maxMana)
	{
		this.currentMana = amount;
	}
	else
	{
		this.currentMana = this.maxMana;
	}

	this.syncMana();
}

 

And I'm getting a server crash when entering a world:

[17:38:34] [server thread/INFO]: Player281 joined the game
[17:38:34] [Client thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.ClassCastException: net.minecraft.client.entity.EntityClientPlayerMP cannot be cast to net.minecraft.entity.player.EntityPlayerMP
at melonslise.runicinscription.Network.ManaProperties.syncMana(ManaProperties.java:124) ~[ManaProperties.class:?]
at melonslise.runicinscription.Network.ManaProperties.setMaxMana(ManaProperties.java:105) ~[ManaProperties.class:?]
at melonslise.runicinscription.Handler.HandlerMaxManaMessage.onMessage(HandlerMaxManaMessage.java:22) ~[HandlerMaxManaMessage.class:?]
at melonslise.runicinscription.Handler.HandlerMaxManaMessage.onMessage(HandlerMaxManaMessage.java:1) ~[HandlerMaxManaMessage.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2152) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[17:38:34] [Client thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.ClassCastException: net.minecraft.client.entity.EntityClientPlayerMP cannot be cast to net.minecraft.entity.player.EntityPlayerMP
at melonslise.runicinscription.Network.ManaProperties.syncMana(ManaProperties.java:124) ~[ManaProperties.class:?]
at melonslise.runicinscription.Network.ManaProperties.setMaxMana(ManaProperties.java:105) ~[ManaProperties.class:?]
at melonslise.runicinscription.Handler.HandlerMaxManaMessage.onMessage(HandlerMaxManaMessage.java:22) ~[HandlerMaxManaMessage.class:?]
at melonslise.runicinscription.Handler.HandlerMaxManaMessage.onMessage(HandlerMaxManaMessage.java:1) ~[HandlerMaxManaMessage.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2152) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[17:38:34] [Client thread/ERROR] [FML]: There was a critical exception handling a packet on channel RunicInscription
java.lang.ClassCastException: net.minecraft.client.entity.EntityClientPlayerMP cannot be cast to net.minecraft.entity.player.EntityPlayerMP
at melonslise.runicinscription.Network.ManaProperties.syncMana(ManaProperties.java:124) ~[ManaProperties.class:?]
at melonslise.runicinscription.Network.ManaProperties.setMaxMana(ManaProperties.java:105) ~[ManaProperties.class:?]
at melonslise.runicinscription.Handler.HandlerMaxManaMessage.onMessage(HandlerMaxManaMessage.java:22) ~[HandlerMaxManaMessage.class:?]
at melonslise.runicinscription.Handler.HandlerMaxManaMessage.onMessage(HandlerMaxManaMessage.java:1) ~[HandlerMaxManaMessage.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2152) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[17:38:34] [Client thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.ClassCastException: net.minecraft.client.entity.EntityClientPlayerMP cannot be cast to net.minecraft.entity.player.EntityPlayerMP
at melonslise.runicinscription.Network.ManaProperties.syncMana(ManaProperties.java:124) ~[ManaProperties.class:?]
at melonslise.runicinscription.Network.ManaProperties.setCurrentMana(ManaProperties.java:119) ~[ManaProperties.class:?]
at melonslise.runicinscription.Handler.HandlerCurrentManaMessage.onMessage(HandlerCurrentManaMessage.java:22) ~[HandlerCurrentManaMessage.class:?]
at melonslise.runicinscription.Handler.HandlerCurrentManaMessage.onMessage(HandlerCurrentManaMessage.java:1) ~[HandlerCurrentManaMessage.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) [simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2152) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[17:38:34] [Client thread/ERROR] [FML]: There was a critical exception handling a packet on channel RunicInscription
java.lang.ClassCastException: net.minecraft.client.entity.EntityClientPlayerMP cannot be cast to net.minecraft.entity.player.EntityPlayerMP
at melonslise.runicinscription.Network.ManaProperties.syncMana(ManaProperties.java:124) ~[ManaProperties.class:?]
at melonslise.runicinscription.Network.ManaProperties.setCurrentMana(ManaProperties.java:119) ~[ManaProperties.class:?]
at melonslise.runicinscription.Handler.HandlerCurrentManaMessage.onMessage(HandlerCurrentManaMessage.java:22) ~[HandlerCurrentManaMessage.class:?]
at melonslise.runicinscription.Handler.HandlerCurrentManaMessage.onMessage(HandlerCurrentManaMessage.java:1) ~[HandlerCurrentManaMessage.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2152) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[17:38:34] [server thread/INFO]: Player281 lost connection: TextComponent{text='Disconnected', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null}}
[17:38:34] [server thread/INFO]: Player281 left the game
[17:38:35] [server thread/INFO]: Stopping singleplayer server as player logged out
[17:38:35] [server thread/INFO]: Stopping server
[17:38:35] [server thread/INFO]: Saving players
[17:38:35] [server thread/INFO]: Saving worlds
[17:38:35] [server thread/INFO]: Saving chunks for level 'TEST'/Overworld
[17:38:35] [server thread/INFO]: Saving chunks for level 'TEST'/Nether
[17:38:35] [server thread/INFO]: Saving chunks for level 'TEST'/The End
[17:38:36] [server thread/INFO] [FML]: Unloading dimension 0
[17:38:36] [server thread/INFO] [FML]: Unloading dimension -1
[17:38:36] [server thread/INFO] [FML]: Unloading dimension 1
[17:38:36] [server thread/INFO] [FML]: Applying holder lookups
[17:38:36] [server thread/INFO] [FML]: Holder lookups applied
[17:38:42] [Client thread/INFO]: Stopping!
[17:38:42] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
[17:38:42] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down...
[17:38:42] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:importantMessage:90]:     Author: Paul Lamb, www.paulscode.com
[17:38:42] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

 

Again, sorry for being so stupid, but please bear with me.

Link to comment
Share on other sites

You are calling syncMana on the client, but syncMana assumes it's always called on the server.

Ah I see. So in that case how would I check if the method is being called on the client/server side?

 

But for now I have removed the syncMana() from the two methods and ... the goddamn GUI still does not update. Where did I screw up this time?

 

I'm sorry if I'm taking your time.

Link to comment
Share on other sites

Ah I see. So in that case how would I check if the method is being called on the client/server side?

It was linked twice already, goddamnit:

http://mcforge.readthedocs.io/en/latest/concepts/sides/

But for now I have removed the syncMana() from the two methods and ... the goddamn GUI still does not update. Where did I screw up this time?

You removed any syncing...

 

There's still syncMana() in the other methods like consumeMana (which obviously I use for testing) so not all syncing has been removed. But still when using consumeMana the GUI does not update damn it

Link to comment
Share on other sites

First of all, what the hell is this:

 

Aoeu3fb.png

 

 

In your IEEP you should be calling

syncMana

in one (or rather two) place: a setter for the mana values. Then whenever you modify the value in any way (except when reading from NBT) you call that setter method, do not access the fields directly.

In

syncMana

you then check if you are on the server before sending the packets. This is really not hard.

 

Also, why do you even have 2 packets here?

 

Must have been a copy 'n' paste error.

 

So I did as you said and replaced all field access with the setter methods. I made a  check in the syncMana() method. But still nothing.

 

I have 2 packets because I don't know how  to store 2 variables in one packet (I know I am retarded).

 

Link to comment
Share on other sites

You have either not read or not understood the article about sides. You are checking for the physical side, this makes no sense.

Also why are you still calling

syncMana

in

replenishMana

and

consumeMana

?

 

I didn't see that getSide() return physical. Sorry.

 

Alright so I did replace getSide() with getEffectiveSide() (because I couldn't use world.isRemote).

And i totally forgot to remove syncMana from those methods. But even after all this stuff the goddamn GUI just doesn't want to work.

Link to comment
Share on other sites

giphy.gif

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

This is not a tutorial on how to use the debugger. Google will help you.

The debugger just allows you to modify code in real time. I don't really understand how that would help me determine if the packets are received.

 

While hotswapping is possible via a debugger, the thing what diesieben probably wants you to do is have a breakpoint in the method that is supposed to be called in the client side, from context I assume onMessage. You check that the values are correct, and if they are not, fix your code until they are.

If my post helped you, please press that "Thank You"-button to show your appreciation.

 

Also if you don't know Java, I would suggest you read the official tutorials by Oracle to get an idea of how to do this. Thanks, and good modding!

 

Also if you haven't, set up a Git repo for your mod not only for convinience but also to make it easier to help you.

Link to comment
Share on other sites

This is not a tutorial on how to use the debugger. Google will help you.

The debugger just allows you to modify code in real time. I don't really understand how that would help me determine if the packets are received.

 

While hotswapping is possible via a debugger, the thing what diesieben probably wants you to do is have a breakpoint in the method that is supposed to be called in the client side, from context I assume onMessage. You check that the values are correct, and if they are not, fix your code until they are.

 

But doesn't a breakpoint just skip a part of code? How would that help?

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.

Announcements




×
×
  • Create New...

Important Information

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