Jump to content

[Solved]KeyHandler crashes server, works in SSP


Senitiel

Recommended Posts

I have a key handler, which works fine in SSP, but causes server crash, when used in SMP.

I'm not sure why that's so, because other packets, sent in some item classes (onUpdate method) are delivered and handled just fine.

 

I can't figure out what's going wrong here, and believe me, I have spent several hours trying to understand or bypass it, to no avail - any help would be appreciated.

 

Crash log

 

 

[sEVERE] Encountered an unexpected exception NoClassDefFoundError
java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
at mods.senitielsSpaceMarineModCode.SenitielsSpaceMarineModPacketHandler.onPacketData(SenitielsSpaceMarineModPacketHandler.java:37)
at cpw.mods.fml.common.network.NetworkRegistry.handlePacket(NetworkRegistry.java:255)
at cpw.mods.fml.common.network.NetworkRegistry.handleCustomPacket(NetworkRegistry.java:245)
at cpw.mods.fml.common.network.FMLNetworkHandler.handlePacket250Packet(FMLNetworkHandler.java:83)
at net.minecraft.network.NetServerHandler.handleCustomPayload(NetServerHandler.java:1098)
at net.minecraft.network.packet.Packet250CustomPayload.processPacket(Packet250CustomPayload.java:70)
at net.minecraft.network.TcpConnection.processReadPackets(TcpConnection.java:461)
at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)
at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)
at net.minecraft.server.dedicated.DedicatedServerListenThread.networkTick(DedicatedServerListenThread.java:34)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:675)
at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:275)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:571)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:469)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.entity.EntityClientPlayerMP
at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:238)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 15 more
Caused by: java.lang.RuntimeException: Attempted to load class net/minecraft/client/entity/EntityClientPlayerMP for invalid side SERVER
at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:50)
at cpw.mods.fml.relauncher.RelaunchClassLoader.runTransformers(RelaunchClassLoader.java:352)
at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:225)
... 17 more

 

 

 

Main mod  class relevant part

 

 

@NetworkMod(clientSideRequired=true, serverSideRequired=false,
channels={SenitielsSpaceMarineModPacketHandler.JET, SenitielsSpaceMarineModPacketHandler.FIST, SenitielsSpaceMarineModPacketHandler.FIRE}, packetHandler = SenitielsSpaceMarineModPacketHandler.class)

 

 

 

Packet Handler

 

 

package mods.senitielsSpaceMarineModCode;

import mods.senitielsSpaceMarineModCode.items.ItemJetBoots;
import mods.senitielsSpaceMarineModCode.items.ItemPowerFist;
import mods.senitielsSpaceMarineModCode.items.guns.FireModeHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.Player;


public class SenitielsSpaceMarineModPacketHandler implements IPacketHandler {

public static String[] Chanels;

public static final String  JET = "SenitielsJets"; 
public static final String FIST = "SenitielsFist";
public static final String FIRE = "SenitielsFire";
//	Before adding it remember to add it also in chanels, in network mod attribute 


@Override
public void onPacketData(INetworkManager manager,
		Packet250CustomPayload packet, Player player) {

        if (packet.channel.equals(JET)) {
            ItemJetBoots.handlePacket(packet,player);
    }
        if(packet.channel.equals(FIST))
        {
        	ItemPowerFist.handleFistPacket(packet, player);
        }
        
        if(packet.channel.equals(FIRE))
        {
        	FireModeHandler.handlePacket(packet, (EntityPlayer)player); //Crash log indicates This line causes error
        }

}


}

 

 

 

Key handler code

 

package mods.senitielsSpaceMarineModCode.client;

import java.util.EnumSet;

import mods.senitielsSpaceMarineModCode.items.guns.FireModeHandler;
import net.minecraft.client.settings.KeyBinding;
import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.TickType;
import cpw.mods.fml.relauncher.Side;

public class KeyHandlerFireMode extends KeyHandler 
{
public static final String label = "Senitiels Space Marine Keys";
 public KeyHandlerFireMode(KeyBinding[] keyBindings, boolean[] isRepeat) 
 {
  super(keyBindings, isRepeat);
 }

 @Override
 public String getLabel() 
 {
  return label;
 }

 @Override
 public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) 
 {
 }

 @Override
 public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) 
 {
	 if(tickEnd)
	 {
		 System.out.println("Key up");
		 FireModeHandler.sendPacket();
	 }
 }
 //FireModeHandler.switchFireMode();
 @Override
 public EnumSet<TickType> ticks() 
 {
	 return EnumSet.of(TickType.CLIENT);
 }


}

 

 

Send packet method

 

public static void sendPacket()
{
	EntityPlayer player = Minecraft.getMinecraft().thePlayer;
	ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
        DataOutputStream dataOutputStream = new DataOutputStream(byteOutputStream);
        try
        {
        	dataOutputStream.writeInt(player.entityId);
        }
        catch (Exception e)
        {
        	e.printStackTrace();
        }
	Packet250CustomPayload packet = new Packet250CustomPayload(SenitielsSpaceMarineModPacketHandler.FIRE, byteOutputStream.toByteArray());

	FMLClientHandler.instance().sendPacket(packet);
}

 

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.