Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[SOLVED] GUI not updating values


Melonslise
 Share

Recommended Posts

You need to send the packet whenever the value changes.

SO would this be the correct way of sending the packet? (this is located in my IEEP)

public final void syncCurrentMana()
{
	RunicInscription.network.sendTo(new CurrentManaMessage(this.currentMana), (EntityPlayerMP) player);
}

 

The method is being called in the IEEP's handler

@SubscribeEvent
public void onUpdatePlayer(LivingUpdateEvent event)
{
	ManaProperties.get((EntityPlayer) event.entity).syncCurrentMana();
}

Link to comment
Share on other sites

  • Replies 98
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

And if the mana is full...?

Sorry for my retardedness, but here all my code so far and the GUI is still not being updated:

 

Here's my IEEP:

 

package melonslise.runicinscription.Network;

import melonslise.runicinscription.RunicInscription;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.common.IExtendedEntityProperties;
import net.minecraftforge.common.util.Constants;

public class ManaProperties implements IExtendedEntityProperties
{
    public final static String EXT_PROP_MANA = RunicInscription.MODID + "_Mana";
    
    private final EntityPlayer player;
    private int currentMana;
    private int maxMana;
    
    
    
    public ManaProperties(EntityPlayer player)
    {
        this.player = player;
        this.currentMana = 30;
        this.maxMana = 30;
    }
    
    public static final void register(EntityPlayer player)
    {
        player.registerExtendedProperties(ManaProperties.EXT_PROP_MANA, new ManaProperties(player));
    }
    
    public static final ManaProperties get(EntityPlayer player)
    {
        return (ManaProperties) player.getExtendedProperties(EXT_PROP_MANA);
    }
    
    @Override
    public void saveNBTData(NBTTagCompound compound)
    {
        NBTTagCompound properties = new NBTTagCompound();
        
        properties.setInteger("CurrentMana", this.currentMana);
        properties.setInteger("MaxMana", this.maxMana);
        
        compound.setTag(EXT_PROP_MANA, properties);    
    }
    
    @Override
    public void loadNBTData(NBTTagCompound compound)
    {
        if(compound.hasKey(EXT_PROP_MANA, Constants.NBT.TAG_COMPOUND))
        {
            NBTTagCompound properties = compound.getCompoundTag(EXT_PROP_MANA);
            
            this.currentMana = properties.getInteger("CurrentMana");
            this.maxMana = properties.getInteger("MaxMana");
        }
    }
    
    @Override
    public void init(Entity entity, World world)
    {
        
    }
    
    public boolean consumeMana(int amount)
    {
        if(this.currentMana >= amount)
        {
            currentMana = currentMana - amount;
            return true;
        }
        
        this.syncMana();
        
        return false;
    }
    
    public void replenishMana()
    {
        this.currentMana = this.maxMana;
        
        this.syncMana();
    }
    
    public int getMaxMana() 
    {
        return this.maxMana;
    }
    
    public int getCurrentMana()
    {
        return this.maxMana;
    }
    
    public final void syncMana()
    {
        RunicInscription.network.sendTo(new MaxManaMessage(this.maxMana), (EntityPlayerMP) player);
        RunicInscription.network.sendTo(new CurrentManaMessage(this.currentMana), (EntityPlayerMP) player);
    }
}

 

 

 

 

 

and it's handler:

 

 


package melonslise.runicinscription.Handler;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import melonslise.runicinscription.Network.ManaProperties;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.event.entity.player.PlayerEvent.Clone;

public class HandlerManaEvents
{
@SubscribeEvent
public void onEntityConstructing(EntityConstructing event)
{
if (event.entity instanceof EntityPlayer)
{
event.entity.registerExtendedProperties(ManaProperties.EXT_PROP_MANA, new ManaProperties((EntityPlayer) event.entity));
}
}

@SubscribeEvent
public void onClonePlayer(Clone event)
{
if(event.wasDeath)
{
NBTTagCompound compound = new NBTTagCompound();
ManaProperties.get(event.original).saveNBTData(compound);
ManaProperties.get(event.entityPlayer).loadNBTData(compound);
}
}

@SubscribeEvent
public void onEntityJoinWorld(EntityJoinWorldEvent event)
{
if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer)
ManaProperties.get((EntityPlayer) event.entity).syncMana();
}
}

 

 

which is registered in the main mod class:

 

 


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

 

 

and here's the GUI:

 

 


package melonslise.runicinscription.GUI;

import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import melonslise.runicinscription.Network.ManaProperties;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;

public class GUIManaBar extends Gui
{
private Minecraft mc;

public GUIManaBar(Minecraft mc)
{
super();

this.mc = mc;
}

@SubscribeEvent
public void OnRender(RenderGameOverlayEvent event)
{
if (event.isCancelable() || event.type != ElementType.EXPERIENCE)
{
return;
}

ManaProperties props = ManaProperties.get(this.mc.thePlayer);

if (props == null)
{
return;
}

System.out.print("Drawn");

mc.fontRenderer.drawStringWithShadow("§1" + props.getCurrentMana() + "/" + props.getMaxMana(), 2, 2, 1);
}
}

 

 

and here's it's handler:

 

 


package melonslise.runicinscription.Handler;

import cpw.mods.fml.client.GuiNotification;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import melonslise.runicinscription.GUI.GUIManaBar;
import net.minecraft.client.Minecraft;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;

public class HandlerGUI
{
@SubscribeEvent
public void onRenderGUI(RenderGameOverlayEvent.Post event)
{

}
}

 

 

And here's the handler and the GUI in the main class:

 

 

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

@EventHandler
public void postInit(FMLPostInitializationEvent event)
{
{
if (FMLCommonHandler.instance().getEffectiveSide().isClient())
MinecraftForge.EVENT_BUS.register(new GUIManaBar(Minecraft.getMinecraft()));
}
}

 

 

And here's a packet for the players' max mana

 

 

 package melonslise.runicinscription.Network;

import cpw.mods.fml.common.network.simpleimpl.IMessage;
import io.netty.buffer.ByteBuf;

public class MaxManaMessage implements IMessage
{
private int maxMana;

public MaxManaMessage()
{

}

public MaxManaMessage(int maxMana)
{
this.maxMana = maxMana;
}

@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(maxMana);
}

@Override
public void fromBytes(ByteBuf buf)
{
maxMana = buf.readInt();
}

public int getMaxMana()
{
return maxMana;
}
}

 

 

and it's handler:

 

 

package melonslise.runicinscription.Handler;

import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import melonslise.runicinscription.RunicInscription;
import melonslise.runicinscription.Network.CurrentManaMessage;
import melonslise.runicinscription.Proxy.CommonProxy;
import net.minecraft.entity.player.EntityPlayer;

public class HandlerCurrentManaMessage implements IMessageHandler<CurrentManaMessage, IMessage>
{
@Override
public IMessage onMessage(CurrentManaMessage message, MessageContext ctx)
{
EntityPlayer player = RunicInscription.proxy.getClientPlayer();

int currentMana = message.getCurrentMana();

return null;
}

}

 

 

and here's the packet for the players' current mana:

 

package melonslise.runicinscription.Network;

import cpw.mods.fml.common.network.simpleimpl.IMessage;
import io.netty.buffer.ByteBuf;

public class CurrentManaMessage implements IMessage
{
private int currentMana;

public CurrentManaMessage()
{

}

public CurrentManaMessage(int currentMana)
{
this.currentMana = currentMana;
}

@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(currentMana);
}

@Override
public void fromBytes(ByteBuf buf)
{
currentMana = buf.readInt();
}

public int getCurrentMana()
{
return currentMana;
}
}

 

 

and it's handler:

 

 

 package melonslise.runicinscription.Handler;

import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import melonslise.runicinscription.RunicInscription;
import melonslise.runicinscription.Network.MaxManaMessage;
import net.minecraft.entity.player.EntityPlayer;

public class HandlerMaxManaMessage implements IMessageHandler<MaxManaMessage, IMessage>
{
@Override
public IMessage onMessage(MaxManaMessage message, MessageContext ctx)
{
EntityPlayer player = RunicInscription.proxy.getClientPlayer();

int amount = message.getMaxMana();

return null;
}
}

 

 

And both are registered in the main class:

 

public static SimpleNetworkWrapper network;[/p]

network = NetworkRegistry.INSTANCE.newSimpleChannel("RunicInscription");
        
        network.registerMessage(HandlerCurrentManaMessage.class, CurrentManaMessage.class, 1, Side.CLIENT);
        network.registerMessage(HandlerMaxManaMessage.class, MaxManaMessage.class, 2, Side.CLIENT);

 

 

And there's a method in the client proxy and server proxy which return either the player(for clients) or null(for servers) which is used in the packet handlers:

 

 

ClientProxy

 


public EntityClientPlayerMP getClientPlayer()
{
return Minecraft.getMinecraft().thePlayer;
}

 

ServerProxy

 

    public EntityClientPlayerMP getClientPlayer()
    {
        return null;
    }

 

 

 

And here's a snippet of code from an item which decreases the player's mana:

 

 

 if (props.consumeMana(15))
{
System.out.println("Player had enough mana. Do something awesome!");
}
else
{
System.out.println("Player ran out of mana. Sad face.");
props.replenishMana();
}

 

Link to comment
Share on other sites

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.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

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

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...
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

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
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.

 Share




×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.