Jump to content

Recommended Posts

Posted

Hello, I am currently having problems sending a sound request through a packet system. I am constructing the packet as so;

    private void sendSoundPacket(int x, int y, int z, int sound)
    {
    	
    	ByteArrayOutputStream bos = new ByteArrayOutputStream(16);
    	DataOutputStream outputStream = new DataOutputStream(bos);
    	try
    	{
    		outputStream.writeInt(x);
    		outputStream.writeInt(y);
    		outputStream.writeInt(z);
    		outputStream.writeInt(sound);
    		outputStream.writeInt(mc.thePlayer.entityId);
    	}
    	catch (Exception ex)
    	{
    		ex.printStackTrace();
    	}

    	Packet250CustomPayload packet = new Packet250CustomPayload();
    	packet.channel = "SaberSound";
    	packet.data = bos.toByteArray();
    	packet.length = bos.size();
    	PacketDispatcher.sendPacketToServer(packet);
    }

 

Then handling it with;

	private void handleSoundPacket(Packet250CustomPayload packet, Player player)
{
	DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data));

    	int x;
    	int y;
    	int z;
    	int sound;
    	int playerID;
    	
	try
	{
		x = inputStream.readInt();
		y = inputStream.readInt();
		z = inputStream.readInt();
		sound = inputStream.readInt();
		playerID = inputStream.readInt();
	}
	catch (IOException e)
	{
		e.printStackTrace();
		return;
	}

	Side side = FMLCommonHandler.instance().getEffectiveSide();
	if (side == Side.SERVER)
	{
		sendSoundPacket(x, y, z, sound, (EntityPlayerMP)player);
	}
	else if (side == Side.CLIENT)
	{
		this.playSound(x, y, z , sound, ((EntityClientPlayerMP)mc.theWorld.getEntityByID(playerID)).worldObj); //PacketHandler.java:120
	}
}

 

The playSound method is;

    private void playSound(int x, int y, int z, int sound, World world)
    {
    	if(sound == 0)
    	{
    		world.playSoundEffect(x, y, z, "sabermod.saberoff", 1F, 1F);
    	}
    	
    	if(sound == 1)
    	{
    		world.playSoundEffect(x, y, z, "sabermod.saberon", 1F, 1F);
    	}
    	
    	if(sound == 2)
    	{
    		world.playSoundEffect(x, y, z, "sabermod.saberswing", 1F, 1F);
    	}
    }

 

and the server side sendSoundPacket is;

    private void sendSoundPacket(int x, int y, int z, int sound, EntityPlayerMP player)
    {
    	int playerID = player.entityId;
    	
    	ByteArrayOutputStream bos = new ByteArrayOutputStream(20);
    	DataOutputStream outputStream = new DataOutputStream(bos);
    	try
    	{
    		outputStream.writeInt(x);
    		outputStream.writeInt(y);
    		outputStream.writeInt(z);
    		outputStream.writeInt(sound);
    		outputStream.writeInt(playerID);
    	}
    	catch (Exception ex)
    	{
    		ex.printStackTrace();
    	}

    	Packet250CustomPayload packet = new Packet250CustomPayload();
    	packet.channel = "SaberSound";
    	packet.data = bos.toByteArray();
    	packet.length = bos.size();
    	PacketDispatcher.sendPacketToAllPlayers(packet);
    }

 

The sounds are registered with;

@ForgeSubscribe
    public void onSound(SoundLoadEvent event)
    {
        try 
        {
            event.manager.soundPoolSounds.addSound("sabermod/saberoff.ogg", SaberMod.class.getResource("/SaberMod/sound/saberoff.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberoff.ogg", SaberMod.class.getResource("/SaberMod/sound/saberoff.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing0.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing0.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing1.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing1.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing2.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing2.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing3.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing3.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing4.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing4.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing5.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing5.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing6.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing6.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing7.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing7.ogg"));
        } 
        catch (Exception e)
        {
            System.err.println("Failed to register one or more sounds.");
        }
    }

 

The error I get is;

2012-11-21 00:13:00 [iNFO] [sTDERR] net.minecraft.src.ReportedException: Exception in world tick
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1892)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:858)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:783)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at java.lang.Thread.run(Unknown Source)
2012-11-21 00:13:00 [iNFO] [sTDERR] Caused by: java.lang.NullPointerException
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at uk.co.toomuchminecraft.sabermod.PacketHandler.handleSoundPacket(PacketHandler.java:120)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at uk.co.toomuchminecraft.sabermod.PacketHandler.onPacketData(PacketHandler.java:43)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.handlePacket(NetworkRegistry.java:249)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.handleCustomPacket(NetworkRegistry.java:239)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.handlePacket250Packet(FMLNetworkHandler.java:78)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.src.NetClientHandler.handleCustomPayload(NetClientHandler.java:1344)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.src.Packet250CustomPayload.processPacket(Packet250CustomPayload.java:70)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:79)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.src.NetClientHandler.processReadPackets(NetClientHandler.java:104)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.src.WorldClient.tick(WorldClient.java:72)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1876)
2012-11-21 00:13:00 [iNFO] [sTDERR] 	... 3 more

 

I have marked the error location from the log in the src. What is going wrong with this? I think it's possibly the worlds, but I can't seem to be able to fix it whatever it is.

Posted

I'd say for some reason it's failing to get an instance of the player from the client world.

 

Check the playerID when its sent and when its received. Make sure it's what it should be.

 

Also could you not just cast the player provided to EntityClientPlayerMP like you did server-side?

Posted

I was debating that, but surely, typecasting the player to EntityClientPlayerMP wouldn't return a player it would return CONSOLE as if it's being handled on the client it was sent from the server.

 

EDIT: Edited the PacketHandler;

package uk.co.toomuchminecraft.sabermod;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import net.minecraft.client.Minecraft;
import net.minecraft.src.Entity;
import net.minecraft.src.EntityClientPlayerMP;
import net.minecraft.src.EntityList;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.EntityPlayerMP;
import net.minecraft.src.EntityPlayerSP;
import net.minecraft.src.INetworkManager;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.World;
import net.minecraft.src.WorldClient;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player;

public class PacketHandler implements IPacketHandler
{
@SideOnly(Side.CLIENT)
Minecraft mc;

@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player)
{
	if (packet.channel.equals("SaberExtend"))
	{
		handleExtendPacket(packet, player);
	}

	if (packet.channel.equals("SaberSound"))
	{
		handleSoundPacket(packet, player);
	}
}

private void handleExtendPacket(Packet250CustomPayload packet, Player player)
{
	DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data));

    	int itemID;
    	int itemDamage;
    	int slot;
    	int action;
    	int saberID;
    	
	try
	{
		itemID = inputStream.readInt();
		itemDamage = inputStream.readInt();
		slot = inputStream.readInt();
		action = inputStream.readInt();
		saberID = inputStream.readInt();
	}
	catch (IOException e)
	{
		e.printStackTrace();
		return;
	}

	Side side = FMLCommonHandler.instance().getEffectiveSide();
	if (side == Side.SERVER)
	{
		EntityPlayerMP executingPlayer = (EntityPlayerMP)player;
		extendSaber(saberID, action, executingPlayer);
		PacketDispatcher.sendPacketToAllPlayers(packet);
		closeInventoryChange(executingPlayer);
	}
	else if (side == Side.CLIENT)
	{
		EntityClientPlayerMP executingPlayer = (EntityClientPlayerMP)player;
		extendSaber(saberID, action, executingPlayer);
		closeInventoryChange(executingPlayer);
	}
}

private void handleSoundPacket(Packet250CustomPayload packet, Player player)
{
	DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data));

    	int x;
    	int y;
    	int z;
    	int sound;
    	
	try
	{
		x = inputStream.readInt();
		y = inputStream.readInt();
		z = inputStream.readInt();
		sound = inputStream.readInt();
	}
	catch (IOException e)
	{
		e.printStackTrace();
		return;
	}

	Side side = FMLCommonHandler.instance().getEffectiveSide();
	if (side == Side.SERVER)
	{
		PacketDispatcher.sendPacketToAllPlayers(packet);
		playSound(x, y, z, sound, (EntityPlayerMP)player);
	}
	else if (side == Side.CLIENT)
	{
		this.playSound(x, y, z , sound, (EntityClientPlayerMP)player);
	}
}

private void closeInventoryChange(EntityClientPlayerMP player)
{
	player.inventory.inventoryChanged = false;
}

private void closeInventoryChange(EntityPlayerMP player)
{
	player.inventory.inventoryChanged = false;
}
    
    private void playSound(int x, int y, int z, int sound, EntityClientPlayerMP player)
    {
    	if(sound == 0)
    	{
    		player.worldObj.playSoundEffect(x, y, z, "sabermod.saberoff", 1F, 1F);
    	}
    	
    	if(sound == 1)
    	{
    		player.worldObj.playSoundEffect(x, y, z, "sabermod.saberon", 1F, 1F);
    	}
    	
    	if(sound == 2)
    	{
    		player.worldObj.playSoundEffect(x, y, z, "sabermod.saberswing", 1F, 1F);
    	}
    }
    
    private void playSound(int x, int y, int z, int sound, EntityPlayerMP player)
    {
    	if(sound == 0)
    	{
    		System.out.println("SaberMod: " + player.username + " playing lightsaber retract sound");
    	}
    	
    	if(sound == 1)
    	{
    		System.out.println("SaberMod: " + player.username + " playing lightsaber extend sound");
    	}
    	
    	if(sound == 2)
    	{
    		System.out.println("SaberMod: " + player.username + " playing lightsaber swing sound");
    	}
    }
    
    private void extendSaber(int saberID, int action, EntityPlayerMP player)
    {
    	if(saberID == 0)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 1)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 2)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 3)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 4)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 5)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 6)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 7)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    }
    
    private void extendSaber(int saberID, int action, EntityClientPlayerMP player)
    {
    	if(saberID == 0)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 1)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 2)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 3)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 4)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 5)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 6)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 7)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    }
}

 

EDIT: The system outputs the system messages for the extend sabers methods twice - not a problem, just can get cluttered. Also, the system output for the sound playing is working without error, however the sound itself isn't actually playing. I register the sounds with this clientside and play them as you can see in the PacketHandler.

package uk.co.toomuchminecraft.sabermod.client;

import uk.co.toomuchminecraft.sabermod.SaberMod;
import net.minecraft.client.Minecraft;
import net.minecraft.src.World;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;

public class SaberSounds
{
    @ForgeSubscribe
    public void onSound(SoundLoadEvent event)
    {
        try 
        {
            event.manager.soundPoolSounds.addSound("sabermod/saberoff.ogg", SaberMod.class.getResource("/SaberMod/sound/saberoff.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberoff.ogg", SaberMod.class.getResource("/SaberMod/sound/saberoff.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing0.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing0.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing1.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing1.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing2.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing2.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing3.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing3.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing4.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing4.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing5.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing5.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing6.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing6.ogg"));
            event.manager.soundPoolSounds.addSound("sabermod/saberswing7.ogg", SaberMod.class.getResource("/SaberMod/sound/saberswing7.ogg"));
        } 
        catch (Exception e)
        {
            System.err.println("Failed to register one or more sounds.");
        }
    }
}

Posted

That's a bit nuts... although client to server packets get you kicked without your own packet handler, it usually is not necessary. If the method runs client and server side, just do this:

 

if(!world.isRemote()){

world.playerSoundAtEntity(player, ...etc);

}

 

If you need to play a sound but you are in a client side environment, just send the dimension and the entity ID that the sound originates and do a:

WorldServer world = FMLCommonHandler.getInstance().getServerInstance().getWorldServerByDimensionID(dimSentToSever);

Entity entity = world.getEntityByID(idSentToServer);

world.playSoundAtEntity(entity, ...);

 

 

I just typed that out by memory, so don't copy and paste it, it is just to give you an idea of how its normally done.

Posted

I've split my packet methods into the common and client proxy, thinking that if it were serverside then it would only run the CommonProxy and clientside, it would be overridden by the ClientProxy. So my PacketHandler now looks like this;

package uk.co.toomuchminecraft.sabermod;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import net.minecraft.client.Minecraft;
import net.minecraft.src.Entity;
import net.minecraft.src.EntityPlayerMP;
import net.minecraft.src.INetworkManager;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.World;
import net.minecraft.src.WorldClient;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player;

public class PacketHandler implements IPacketHandler
{
@SideOnly(Side.CLIENT)
Minecraft mc;

@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player)
{
	if (packet.channel.equals("SaberExtend"))
	{
		handleExtendPacket(packet, player);
	}

	if (packet.channel.equals("SaberSound"))
	{
		handleSoundPacket(packet, player);
	}
}

private void handleExtendPacket(Packet250CustomPayload packet, Player player)
{
	DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data));

    	int itemID;
    	int itemDamage;
    	int slot;
    	int action;
    	int saberID;
    	
	try
	{
		itemID = inputStream.readInt();
		itemDamage = inputStream.readInt();
		slot = inputStream.readInt();
		action = inputStream.readInt();
		saberID = inputStream.readInt();
	}
	catch (IOException e)
	{
		e.printStackTrace();
		return;
	}

	Side side = FMLCommonHandler.instance().getEffectiveSide();
	if (side == Side.SERVER)
	{
		SaberMod.proxy.extendSaber(saberID, action, player);
		PacketDispatcher.sendPacketToAllPlayers(packet);
		SaberMod.proxy.closeInventoryChange(player);
	}
	else if (side == Side.CLIENT)
	{
		SaberMod.proxy.extendSaber(saberID, action, player);
		SaberMod.proxy.closeInventoryChange(player);
	}
}

private void handleSoundPacket(Packet250CustomPayload packet, Player player)
{
	DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data));

    	int sound;
    	
	try
	{
		sound = inputStream.readInt();
	}
	catch (IOException e)
	{
		e.printStackTrace();
		return;
	}

	Side side = FMLCommonHandler.instance().getEffectiveSide();
	if (side == Side.SERVER)
	{
		PacketDispatcher.sendPacketToAllPlayers(packet);
		SaberMod.proxy.playSound(sound, player);
	}
	else if (side == Side.CLIENT)
	{
		SaberMod.proxy.playSound(sound, player);
	}
}
}

 

The CommonProxy methods are;

    public void playSound(int sound, Player p)
    {
    	EntityClientPlayerMP player = (EntityClientPlayerMP)p;
    	if(sound == 0)
    	{
    		System.out.println("SaberMod: " + player.username + " playing lightsaber retract sound");
    	}
    	
    	if(sound == 1)
    	{
    		System.out.println("SaberMod: " + player.username + " playing lightsaber extend sound");
    	}
    	
    	if(sound == 2)
    	{
    		System.out.println("SaberMod: " + player.username + " playing lightsaber swing sound");
    	}
    }
    
public void closeInventoryChange(Player p)
{
	EntityPlayerMP player = (EntityPlayerMP)p;
	player.inventory.inventoryChanged = false;
}
    
    public void extendSaber(int saberID, int action, Player p)
    {
    	EntityPlayerMP player = (EntityPlayerMP)p;
    	if(saberID == 0)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 1)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 2)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 3)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 4)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 5)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 6)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 7)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    	if(saberID == 
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " retracting lightsaber");
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    			System.out.println("SaberMod: " + player.username + " extending lightsaber");
    		}
    	}
    }

 

and my ClientProxy methods are;

@Override
    public void playSound(int sound, Player p)
    {
    	EntityPlayerMP player = (EntityPlayerMP)p;
    	if(sound == 0)
    	{
    		player.worldObj.playSoundAtEntity((Entity)player, "sabermod.saberoff", 1F, 1F);
    	}
    	
    	if(sound == 1)
    	{
    		player.worldObj.playSoundAtEntity((Entity)player, "sabermod.saberon", 1F, 1F);
    	}
    	
    	if(sound == 2)
    	{
    		player.worldObj.playSoundAtEntity((Entity)player, "sabermod.saberswing", 1F, 1F);
    	}
    }

@Override
public void closeInventoryChange(Player p)
{
	EntityPlayerMP player = (EntityPlayerMP)p;
	player.inventory.inventoryChanged = false;
}

@Override
    public void extendSaber(int saberID, int action, Player p)
    {
	EntityPlayerMP player = (EntityPlayerMP)p; // ClientProxy(303)
	if(saberID == 0)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberPurpleOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 1)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberRedOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 2)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberYellowOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 3)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGreenOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 4)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberBlackOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 5)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberIndigoOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 6)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberDarkBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 7)
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberGoldOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    	if(saberID == 
    	{
    		if(action == 0)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOff.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    		if(action == 1)
    		{
    			InventoryPlayer inventoryplayer = player.inventory;
    			inventoryplayer.setInventorySlotContents(inventoryplayer.currentItem, new ItemStack(SaberMod.saberLightBlueOn.shiftedIndex, 1, inventoryplayer.getCurrentItem().getItemDamage()));
    			player.inventory.inventoryChanged = true;
    		}
    	}
    }

 

However, when I run the game the when calling one of these methods the client throws this error;

2012-11-23 18:26:10 [iNFO] [sTDERR] net.minecraft.src.ReportedException: Exception in world tick
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1892)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:858)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:783)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at java.lang.Thread.run(Unknown Source)
2012-11-23 18:26:10 [iNFO] [sTDERR] Caused by: java.lang.ClassCastException: net.minecraft.src.EntityClientPlayerMP cannot be cast to net.minecraft.src.EntityPlayerMP
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at uk.co.toomuchminecraft.sabermod.client.ClientProxy.extendSaber(ClientProxy.java:303)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at uk.co.toomuchminecraft.sabermod.PacketHandler.handleExtendPacket(PacketHandler.java:76)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at uk.co.toomuchminecraft.sabermod.PacketHandler.onPacketData(PacketHandler.java:34)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.handlePacket(NetworkRegistry.java:249)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.handleCustomPacket(NetworkRegistry.java:239)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.handlePacket250Packet(FMLNetworkHandler.java:78)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.src.NetClientHandler.handleCustomPayload(NetClientHandler.java:1344)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.src.Packet250CustomPayload.processPacket(Packet250CustomPayload.java:70)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:79)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.src.NetClientHandler.processReadPackets(NetClientHandler.java:104)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.src.WorldClient.tick(WorldClient.java:72)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1876)
2012-11-23 18:26:10 [iNFO] [sTDERR] 	... 3 more

Again I have marked the line in the code. I'm really stumped with this, can someone help?

Posted

Use EntityPlayer references, not EntityPlayerMP(server only) or EntityClientPlayerMP(ClientSide), they BOTH inherit Entity Player, so that declaration is safe.

 

If you make sure it is serverside when you play sound at entity, the built in event bus will send the necessary packets to the clients to play sounds.

 

A client cannot tell the server to play a sound without a custom packet handler, and unless the server knows to play the sound too, you may not hear it at all, and definitely other players will not.

 

Most of the time, your methods can be accessed both by server and client, and you need to make sure which side you are on to prevent undesired packet duplication.(Servers CAN send packets to themselves.)

 

But as I said, all this is unnecessary 99% of the time, as most of your code can be accessed by the server and client.

 

You need to be careful setting up a packet handler to play sounds, because a clever coder could abuse it, spamming everyone with sounds. It is ideal to do the sound playing within the method, and avoid a packet handler when possible.

 

As I said, if the server side gets told to play a sound, it will automatically register the event and will deliver it with the built in packet handler.

Posted

Sorry for slight necro. I'm doing some sounds using packets because I wasn't aware of what rich1051414 is saying.

 

Does that apply for simple world.playsound(...) calls, rich105? I had tried that originally with no luck, so I did the packet sending myself.

Posted

Sorry for slight necro. I'm doing some sounds using packets because I wasn't aware of what rich1051414 is saying.

 

Does that apply for simple world.playsound(...) calls, rich105? I had tried that originally with no luck, so I did the packet sending myself.

 

Depends on the method, some methods execute client side only, i dont play sounds at all in these, but in one situation, I did need to play a sound via a packet. In onItemUseFirst overrides, if you return false to prevent a menu from opening, it will not run server side. I made a packet to handle this request, but as it also consumed items, I felt it was a low risk of abuse.

 

And yes, all my sounds are played in a "if (FMLCommonHandler.instance().getEffectiveSide().isServer()) {}" block, and they all work great, and as an added bonus, it is inherently multiplayer compatible, other players will hear it too.

 

When I had problems playing sounds, it was when I did not put world.playSoundAtEntity calls within a server check block. This is probably your issue.

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • java.lang.IllegalArgumentException: Can't find attribute minecraft:generic.attack_knockback having the same problem as this one: https://forums.minecraftforge.net/topic/151258-some-kind-of-issue-with-lycanites-mobs-and-the-knockback-attribute/ also my report on Lycanites Issue page(crash log included): https://gitlab.com/Lycanite/LycanitesMobs/-/issues/951
    • I just removed that mod as well and it's still stuck on 100% loading and does still not go past it. all of my modded maps are so unplayable, i like, have no idea what to do https://mclo.gs/XHWCu5M
    • Here is the newest crash report because I've been trying to fix the problem for hours, please help me also its "error code -1"   ---- Minecraft Crash Report ---- // Daisy, daisy... Time: 2024-11-27 15:43:43 Description: Rendering screen java.lang.NoClassDefFoundError: org/spongepowered/asm/synthetic/args/Args$1     at net.minecraft.client.gui.GuiGraphics.m_280677_(GuiGraphics.java:562) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.GuiGraphics.renderTooltip(GuiGraphics.java:556) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.AbstractContainerScreen.m_280072_(AbstractContainerScreen.java:163) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:attributeslib.mixins.json:client.AbstractContainerScreenMixin,pl:mixin:APP:majruszlibrary-forge.mixins.json:MixinAbstractContainerScreen,plasmixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventoasasry.CreativeModeInventoryScreen.m_88315_(CreativeModeInventoryScreen.java:650) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.Screen.m_280264_(Screen.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenIgnoreRenderAfterOverlayMixin,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:427) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:420) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin}     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:965) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:jeg.mixins.json:client.GameRendererMixin,pl:mixin:APP:alexscaves.mixins.json:client.GameRendererMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.compat.MixinGameRenderer,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.3.0.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} Caused by: java.lang.ClassNotFoundException: org.spongepowered.asm.synthetic.args.Args$1     at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}     at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137) ~[securejarhandler-2.1.10.jar:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}     at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137) ~[securejarhandler-2.1.10.jar:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}     ... 26 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Suspected Mods: NONE Stacktrace:     at net.minecraft.client.gui.GuiGraphics.m_280677_(GuiGraphics.java:562) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.GuiGraphics.renderTooltip(GuiGraphics.java:556) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.AbstractContainerScreen.m_280072_(AbstractContainerScreen.java:163) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:attributeslib.mixins.json:client.AbstractContainerScreenMixin,pl:mixin:APP:majruszlibrary-forge.mixins.json:MixinAbstractContainerScreen,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen.m_88315_(CreativeModeInventoryScreen.java:650) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.Screen.m_280264_(Screen.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenIgnoreRenderAfterOverlayMixin,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:427) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:420) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin} -- Screen render details -- Details:     Screen name: net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen     Mouse location: Scaled: (273, 153). Absolute: (546.000000, 307.000000)     Screen size: Scaled: (547, 308). Absolute: (1093, 615). Scale factor of 2.000000 Stacktrace:     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:965) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:jeg.mixins.json:client.GameRendererMixin,pl:mixin:APP:alexscaves.mixins.json:client.GameRendererMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.compat.MixinGameRenderer,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.3.0.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} -- Affected level -- Details:     All players: 1 total; [LocalPlayer['muglad'/4, l='ClientLevel', x=11.34, y=-62.50, z=7.05]]     Chunk stats: 529, 313     Level dimension: minecraft:overworld     Level spawn location: World: (0,-63,0), Section: (at 0,1,0 in 0,-4,0; chunk contains blocks 0,-64,0 to 15,319,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511)     Level time: 522 game time, 522 day time     Server brand: forge     Server type: Integrated singleplayer server Stacktrace:     at net.minecraft.client.multiplayer.ClientLevel.m_6026_(ClientLevel.java:455) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:client.ClientLevelMixin,pl:mixin:APP:architectury.mixins.json:MixinClientLevel,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinClientLevel,pl:mixin:APP:starlight.mixins.json:client.world.ClientLevelMixin,pl:mixin:APP:alexscaves.mixins.json:client.ClientLevelMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91354_(Minecraft.java:2319) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:735) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.3.0.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: Yes     Packs: vanilla, mod_resources -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 11 (amd64) version 10.0     Java Version: 17.0.8, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 1400903168 bytes (1336 MiB) / 3370123264 bytes (3214 MiB) up to 4261412864 bytes (4064 MiB)     CPUs: 4     Processor Vendor: GenuineIntel     Processor Name: 11th Gen Intel(R) Core(TM) i3-1115G4 @ 3.00GHz     Identifier: Intel64 Family 6 Model 140 Stepping 1     Microarchitecture: Tiger Lake     Frequency (GHz): 3.00     Number of physical packages: 1     Number of physical CPUs: 2     Number of logical CPUs: 4     Graphics card #0 name: Intel(R) UHD Graphics     Graphics card #0 vendor: Intel Corporation (0x8086)     Graphics card #0 VRAM (MB): 128.00     Graphics card #0 deviceId: 0x9a78     Graphics card #0 versionInfo: DriverVersion=31.0.101.5186     Memory slot #0 capacity (MB): 4096.00     Memory slot #0 clockSpeed (GHz): 3.20     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 4096.00     Memory slot #1 clockSpeed (GHz): 3.20     Memory slot #1 type: DDR4     Virtual memory max (MB): 19346.77     Virtual memory used (MB): 17116.04     Swap memory total (MB): 11511.14     Swap memory used (MB): 2066.14     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx4064m -Xms256m     Launched Version: forge-47.3.0     Backend library: LWJGL version 3.3.1 build 7     Backend API: Intel(R) UHD Graphics GL version 4.6.0 - Build 31.0.101.5186, Intel     Window size: 1093x615     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'     Type: Integrated Server (map_client.txt)     Graphics mode: fast     Resource Packs:      Current Language: en_us     CPU: 4x 11th Gen Intel(R) Core(TM) i3-1115G4 @ 3.00GHz     Server Running: true     Player Count: 1 / 8; [ServerPlayer['muglad'/4, l='ServerLevel[New Worldassssssssssssasasas]', x=11.34, y=-62.50, z=7.05]]     Data Packs: vanilla, mod:elevated_enchantment, mod:treechopper (incompatible), mod:quarryplus, mod:geckolib, mod:playeranimator (incompatible), mod:placebo (incompatible), mod:modernfix (incompatible), mod:citadel (incompatible), mod:mixinextras (incompatible), mod:morebuckets, mod:botanypotstiers (incompatible), mod:bookshelf, mod:ironshulkerbox, mod:ironbookshelves, mod:raw_iron_block_can_be_heated, mod:iron_extra_things, mod:cloth_config (incompatible), mod:more_villager_trades, mod:ironbows (incompatible), mod:industrialforegoing (incompatible), mod:farmersdelight, mod:iron_ender_chests, mod:ironfurnaces, mod:structurecompass, mod:lionfishapi (incompatible), mod:mysticaladaptations, mod:maxxam_aiot, mod:structureexpansion (incompatible), mod:patchouli (incompatible), mod:ironchests (incompatible), mod:advancednetherite, mod:mysticalagriculturedelight, mod:gk_unbreakable (incompatible), mod:attributeslib (incompatible), mod:mysticalcustomization, mod:mifa, mod:resourcefullib (incompatible), mod:veinst, mod:architectury (incompatible), mod:squatgrow (incompatible), mod:xenotech (incompatible), mod:monolib (incompatible), mod:disenchanting_table (incompatible), mod:more_bows_and_arrows (incompatible), mod:hasteenchantment, mod:quad (incompatible), mod:ironcoals (incompatible), mod:framework, mod:nebs (incompatible), mod:majruszlibrary (incompatible), mod:fixed_netherite, mod:x_player_info (incompatible), mod:cucumber, mod:jeg (incompatible), mod:ironladders, mod:attributefix (incompatible), mod:configlibtxf, mod:fortune_on_netherite_forge, mod:caelus (incompatible), mod:enchantment_reveal (incompatible), mod:botanypots (incompatible), mod:starlight (incompatible), mod:grand_enchantment_table, mod:iron_bushes, mod:iron_fishing_rods, mod:puzzlesaccessapi, mod:forge, mod:more_wandering_trades, mod:mctb (incompatible), mod:mteg (incompatible), mod:mysticalagriculture, mod:mysticalagradditions, mod:matc, mod:mysticriftsmelt_ancient_debris, mod:more_underground_structures, mod:lucky (incompatible), mod:aurorasarsenal (incompatible), mod:alexscaves, mod:more_useful_copper (incompatible), mod:enchdesc (incompatible), mod:customcursorcomm (incompatible), mod:titanium (incompatible), mod:mysterious_mountain_lib (incompatible), mod:ironspawners, mod:enchlevellangpatch (incompatible), mod:vtaw_mw (incompatible), mod:mr_reds_morestructures, mod:watching, mod:ironbarrels, mod:mysticalexpansion, mod:easy_emerald, mod:more_beautiful_torches (incompatible), mod:universalenchants, mod:immediatelyfast (incompatible), mod:moremobvariants, mod:ferritecore (incompatible), mod:mvw, mod:puzzleslib, mod:overpowered_creative_items, mod:overloadedarmorbar (incompatible), mod:overflowingbars     Enabled Feature Flags: minecraft:vanilla     World Generation: Stable     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          [email protected]         lowcodefml@null         [email protected]         javafml@null     Mod List:          Elevated enchantment-forge_1.20.1.jar             |Elevated enchantment          |elevated_enchantment          |1.0.0               |DONE      |Manifest: NOSIGNATURE         treechopper-1.0.0.jar                             |TreeChopper                   |treechopper                   |1.0.0               |DONE      |Manifest: NOSIGNATURE         AdditionalEnchantedMiner-1.20.1-1201.1.90.jar     |QuarryPlus                    |quarryplus                    |1201.1.90           |DONE      |Manifest: ef:50:af:b3:03:e0:3e:70:a7:ef:78:77:a5:4d:d4:b5:07:ec:df:9d:d6:f3:12:13:c9:3c:cd:9a:0a:3e:6b:43         geckolib-forge-1.20.1-4.4.9.jar                   |GeckoLib 4                    |geckolib                      |4.4.9               |DONE      |Manifest: NOSIGNATURE         player-animation-lib-forge-1.0.2-rc1+1.20.jar     |Player Animator               |playeranimator                |1.0.2-rc1+1.20      |DONE      |Manifest: NOSIGNATURE         Placebo-1.20.1-8.6.2.jar                          |Placebo                       |placebo                       |8.6.2               |DONE      |Manifest: NOSIGNATURE         modernfix-forge-5.19.5+mc1.20.1.jar               |ModernFix                     |modernfix                     |5.19.5+mc1.20.1     |DONE      |Manifest: NOSIGNATURE         citadel-2.6.0-1.20.1.jar                          |Citadel                       |citadel                       |2.6.0               |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.4.1.jar                       |MixinExtras                   |mixinextras                   |0.4.1               |DONE      |Manifest: NOSIGNATURE         MoreBuckets-1.20.1-4.0.4.jar                      |More Buckets                  |morebuckets                   |4.0.4               |DONE      |Manifest: NOSIGNATURE         BotanyPotsTiers-Forge-1.20.1-6.0.1.jar            |BotanyPotsTiers               |botanypotstiers               |6.0.1               |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.20.1-20.2.13.jar                |Bookshelf                     |bookshelf                     |20.2.13             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         ironshulkerbox-1.20.1-5.3.2.jar                   |Iron Shulker Boxes            |ironshulkerbox                |1.20.1-5.3.2        |DONE      |Manifest: NOSIGNATURE         ironbookshelves-1.20.1-1.4.0-forge.jar            |Iron Bookshelves              |ironbookshelves               |1.20.1-1.4.0-forge  |DONE      |Manifest: NOSIGNATURE         raw_iron_block_can_heated-1.0.0-forge-1.20.1.jar  |Raw Iron Block can be heated  |raw_iron_block_can_be_heated  |1.0.0               |DONE      |Manifest: NOSIGNATURE         Iron Extra Things 1.0.6.jar                       |Iron Extra Things             |iron_extra_things             |1.0.5               |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.136-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.136            |DONE      |Manifest: NOSIGNATURE         More Villager Trades 1.0.0 - 1.20.1.jar           |More Villager Trades          |more_villager_trades          |1.0.0               |DONE      |Manifest: NOSIGNATURE         ironbows-1.20.1-FORGE-1.10.jar                    |Iron Bows (Forge)             |ironbows                      |1.20.1-FORGE-1.10   |DONE      |Manifest: NOSIGNATURE         industrial-foregoing-1.20.1-3.5.19.jar            |Industrial Foregoing          |industrialforegoing           |3.5.19              |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.20.1-1.2.5.jar                   |Farmer's Delight              |farmersdelight                |1.20.1-1.2.5        |DONE      |Manifest: NOSIGNATURE         iron_ender_chests-1.20-1.0.3.jar                  |Iron Ender Chests             |iron_ender_chests             |1.20-1.0.3          |DONE      |Manifest: NOSIGNATURE         ironfurnaces-1.20.1-4.1.6.jar                     |Iron Furnaces                 |ironfurnaces                  |4.1.6               |DONE      |Manifest: NOSIGNATURE         StructureCompass-1.20.1-2.1.0.jar                 |Structure Compass Mod         |structurecompass              |2.1.0               |DONE      |Manifest: NOSIGNATURE         lionfishapi-2.4-Fix.jar                           |LionfishAPI                   |lionfishapi                   |2.4-Fix             |DONE      |Manifest: NOSIGNATURE         MysticalAdaptations-1.20.1-1.0.1.jar              |Mystical Adaptations          |mysticaladaptations           |1.20.1-1.0.1        |DONE      |Manifest: NOSIGNATURE         AIOT 1.20.1 (v2.3) by 96maxxam69.jar              |maxxam AIOTs                  |maxxam_aiot                   |2.3                 |DONE      |Manifest: NOSIGNATURE         structure-expansion-2.0.1-build.11.jar            |Structure Expansion           |structureexpansion            |2.0.1-build.11      |DONE      |Manifest: NOSIGNATURE         Patchouli-1.20.1-84-FORGE.jar                     |Patchouli                     |patchouli                     |1.20.1-84-FORGE     |DONE      |Manifest: NOSIGNATURE         ironchests-5.0.2-forge.jar                        |Iron Chests: Restocked        |ironchests                    |5.0.2               |DONE      |Manifest: NOSIGNATURE         advancednetherite-forge-2.1.3-1.20.1.jar          |Advanced Netherite            |advancednetherite             |2.1.3               |DONE      |Manifest: NOSIGNATURE         mysticalagriculturedelight-1.0.2-1.20.1.jar       |Mystical Agriculture Delight  |mysticalagriculturedelight    |1.0.2-1.20.1        |DONE      |Manifest: NOSIGNATURE         gk_unbreakable-2.7.jar                            |Simple Unbreakable Tools      |gk_unbreakable                |2.7                 |DONE      |Manifest: NOSIGNATURE         ApothicAttributes-1.20.1-1.3.7.jar                |Apothic Attributes            |attributeslib                 |1.3.7               |DONE      |Manifest: NOSIGNATURE         MysticalCustomization-1.20.1-5.0.2.jar            |Mystical Customization        |mysticalcustomization         |5.0.2               |DONE      |Manifest: NOSIGNATURE         mifa-forge-1.20.x-1.1.1.jar                       |More Industrial Foregoing Addo|mifa                          |1.1.1               |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20-2.0.6.jar               |Resourceful Lib               |resourcefullib                |2.0.6               |DONE      |Manifest: NOSIGNATURE         veinst-1.0.0.jar                                  |Veinst                        |veinst                        |1.0.0               |DONE      |Manifest: NOSIGNATURE         architectury-9.2.14-forge.jar                     |Architectury                  |architectury                  |9.2.14              |DONE      |Manifest: NOSIGNATURE         squatgrow-forge-5.3.0+mc1.20.1.jar                |Squat Grow                    |squatgrow                     |5.3.0+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         xenotech-1.20.1-1.17.jar                          |XenoTech                      |xenotech                      |1.20.1-1.17         |DONE      |Manifest: NOSIGNATURE         monolib-forge-1.20.1-1.4.1.jar                    |MonoLib                       |monolib                       |1.4.1               |DONE      |Manifest: NOSIGNATURE         disenchanting_table-merged-1.20.1-3.1.0.jar       |Dis-Enchanting Table          |disenchanting_table           |3.1.0               |DONE      |Manifest: NOSIGNATURE         more_bows_and_arrows-merged-1.20.1-3.2.0.jar      |More Bows and Arrows          |more_bows_and_arrows          |3.2.0               |DONE      |Manifest: NOSIGNATURE         Haste Enchantment 1.0.0 - 1.20.1.jar              |Haste Enchantment             |hasteenchantment              |1.0.0               |DONE      |Manifest: NOSIGNATURE         Quad-1.2.9+1.20.4-Forge.jar                       |Quad                          |quad                          |1.2.9               |DONE      |Manifest: NOSIGNATURE         ironcoals-4.1.6.jar                               |Iron Coals                    |ironcoals                     |4.1.6               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.7.12.jar                 |Framework                     |framework                     |0.7.12              |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         NekosEnchantedBooks-1.20.1-1.8.0.jar              |Neko's Enchanted Books        |nebs                          |1.8.0               |DONE      |Manifest: NOSIGNATURE         majrusz-library-forge-1.20.1-7.0.8.jar            |Majrusz Library               |majruszlibrary                |7.0.8               |DONE      |Manifest: NOSIGNATURE         ReworkedNetheriteV2.jar                           |Fixed netherite               |fixed_netherite               |1.0.0               |DONE      |Manifest: NOSIGNATURE         X-PlayerInfo-1.20.1-1.0.8.1-SNAPSHOT.jar          |X-PlayerInfo                  |x_player_info                 |1.20.1-1.0.8.1-SNAPS|DONE      |Manifest: NOSIGNATURE         Cucumber-1.20.1-7.0.13.jar                        |Cucumber Library              |cucumber                      |7.0.13              |DONE      |Manifest: NOSIGNATURE         JustEnoughGuns-0.8.0-1.20.1.jar                   |Just Enough Guns              |jeg                           |0.8.0               |DONE      |Manifest: NOSIGNATURE         ironladders-1.20.1-2.5.10-forge.jar               |Iron Ladders                  |ironladders                   |2.5.10              |DONE      |Manifest: NOSIGNATURE         AttributeFix-Forge-1.20.1-21.0.4.jar              |AttributeFix                  |attributefix                  |21.0.4              |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         configlibtxf-4.2.5-forge.jar                      |ConfigLib TXF                 |configlibtxf                  |4.2.5-forge         |DONE      |Manifest: NOSIGNATURE         fortune_on_netherite_1.1.0_forge_1.20.1.jar       |Fortune on Netherite forge    |fortune_on_netherite_forge    |1.0.0               |DONE      |Manifest: NOSIGNATURE         caelus-forge-3.2.0+1.20.1.jar                     |Caelus API                    |caelus                        |3.2.0+1.20.1        |DONE      |Manifest: NOSIGNATURE         Enchantment-Reveal-1.20.1-Forge.jar               |Enchantment Reveal            |enchantment_reveal            |1.0.0               |DONE      |Manifest: NOSIGNATURE         BotanyPots-Forge-1.20.1-13.0.39.jar               |BotanyPots                    |botanypots                    |13.0.39             |DONE      |Manifest: NOSIGNATURE         starlight-1.1.2+forge.1cda73c.jar                 |Starlight                     |starlight                     |1.1.2+forge.1cda73c |DONE      |Manifest: NOSIGNATURE         Grand Enchantment Table 1.0.0 - 1.20.1.jar        |Grand Enchantment Table       |grand_enchantment_table       |1.0.0               |DONE      |Manifest: NOSIGNATURE         Iron Bushes 1.0.0 - 1.20.1.jar                    |Iron Bushes                   |iron_bushes                   |1.0.0               |DONE      |Manifest: NOSIGNATURE         Iron Fishing Rods 1.0.0 - 1.20.1.jar              |Iron Fishing Rods             |iron_fishing_rods             |1.0.0               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         forge-1.20.1-47.3.0-universal.jar                 |Forge                         |forge                         |47.3.0              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         More Wandering Trades 1.0.0 - 1.20.1.jar          |More Wandering Trades         |more_wandering_trades         |1.0.0               |DONE      |Manifest: NOSIGNATURE         [1.20.1]MoreCraftingTables-5.1.3.jar              |More Crafting Tables Mod      |mctb                          |1.20.1              |DONE      |Manifest: NOSIGNATURE         M'TEG-1.1.0-1.20.1.jar                            |Mo' Than Enough Guns          |mteg                          |1.1.0               |DONE      |Manifest: NOSIGNATURE         MysticalAgriculture-1.20.1-7.0.14.jar             |Mystical Agriculture          |mysticalagriculture           |7.0.14              |DONE      |Manifest: NOSIGNATURE         MysticalAgradditions-1.20.1-7.0.6.jar             |Mystical Agradditions         |mysticalagradditions          |7.0.6               |DONE      |Manifest: NOSIGNATURE         matc-1.6.0.jar                                    |Mystical Agriculture Tiered Cr|matc                          |1.6.0               |DONE      |Manifest: NOSIGNATURE         client-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         mysticriftsmelt_ancient_debris-1.2.2-forge-1.20.1.|MysticRift:Smelt Ancient Debri|mysticriftsmelt_ancient_debris|1.2.2               |DONE      |Manifest: NOSIGNATURE         more_undrground_structures_1.20.1_8.1.jar         |more underground structures   |more_underground_structures   |7.1.0               |DONE      |Manifest: NOSIGNATURE         lucky-block-forge-1.20.1-13.0.jar                 |Lucky Block                   |lucky                         |1.20.1-13.0         |DONE      |Manifest: NOSIGNATURE         Aurora's-Arsenal-1.0.0-1.20.1.jar                 |Aurora's Arsenal              |aurorasarsenal                |1.0.0               |DONE      |Manifest: NOSIGNATURE         alexscaves-2.0.2.jar                              |Alex's Caves                  |alexscaves                    |2.0.2               |DONE      |Manifest: NOSIGNATURE         more_useful_copper-merged-1.20.1-1.2.0.jar        |More Useful Copper            |more_useful_copper            |1.2.0               |DONE      |Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.20.1-17.1.19.jar  |EnchantmentDescriptions       |enchdesc                      |17.1.19             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         CustomCursor-comm-1.2.0-forge.jar                 |customcursorcomm              |customcursorcomm              |1.0-SNAPSHOT        |DONE      |Manifest: NOSIGNATURE         titanium-1.20.1-3.8.32.jar                        |Titanium                      |titanium                      |3.8.32              |DONE      |Manifest: NOSIGNATURE         mysterious_mountain_lib-1.5.17-1.20.1.jar         |Mysterious Mountain Lib       |mysterious_mountain_lib       |1.5.17-1.20.1       |DONE      |Manifest: NOSIGNATURE         ironspawners-1.0.0.jar                            |Iron Spawners                 |ironspawners                  |1.0.0               |DONE      |Manifest: NOSIGNATURE         enchlevel-langpatch-2.2.8.jar                     |Enchantment Level Language Pat|enchlevellangpatch            |2.2.8               |DONE      |Manifest: NOSIGNATURE         vtaw_mw-forge-1.20.1-1.0.4.jar                    |Variant Tools and Weaponry - E|vtaw_mw                       |1.0.4               |DONE      |Manifest: NOSIGNATURE         reds-more-structures-1.0.8-common.jar             |Red’s More Structures         |mr_reds_morestructures        |1.0.8               |DONE      |Manifest: NOSIGNATURE         From-The-Fog-1.20-v1.9.2-Forge-Fabric.jar         |From The Fog                  |watching                      |1.9.2               |DONE      |Manifest: NOSIGNATURE         IronBarrels1.20.1-V1.0.jar                        |IronBarrelsUpdated            |ironbarrels                   |1.0.0               |DONE      |Manifest: NOSIGNATURE         MysticalExpansion-1.20.1-1.0.0.jar                |Mystical Expansion            |mysticalexpansion             |1.0.0               |DONE      |Manifest: NOSIGNATURE         EasyEmerald-Forge-1.20.1-1.5.8.jar                |Easy Emerald                  |easy_emerald                  |1.5.8               |DONE      |Manifest: NOSIGNATURE         more_beautiful_torches-merged-1.20.1-3.0.0.jar    |More Beautiful Torches!       |more_beautiful_torches        |3.0.0               |DONE      |Manifest: NOSIGNATURE         UniversalEnchants-v8.0.0-1.20.1-Forge.jar         |Universal Enchants            |universalenchants             |8.0.0               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         ImmediatelyFast-Forge-1.3.2+1.20.4.jar            |ImmediatelyFast               |immediatelyfast               |1.3.2+1.20.4        |DONE      |Manifest: NOSIGNATURE         moremobvariants-forge+1.20.1-1.3.0.1.jar          |More Mob Variants             |moremobvariants               |1.3.0.1             |DONE      |Manifest: NOSIGNATURE         ferritecore-6.0.1-forge.jar                       |Ferrite Core                  |ferritecore                   |6.0.1               |DONE      |Manifest: 41:ce:50:66:d1:a0:05:ce:a1:0e:02:85:9b:46:64:e0:bf:2e:cf:60:30:9a:fe:0c:27:e0:63:66:9a:84:ce:8a         Mvw-2.3.3c.jar                                    |MoreVanillaWeapons            |mvw                           |2.3.3c              |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.25-1.20.1-Forge.jar               |Puzzles Lib                   |puzzleslib                    |8.1.25              |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         Overpowered Creative Items.jar                    |Overpowered Creative Items    |overpowered_creative_items    |1.0.0               |DONE      |Manifest: NOSIGNATURE         overloadedarmorbar-1.20.1-1.jar                   |Overloaded Armor Bar          |overloadedarmorbar            |1.20.1-1            |DONE      |Manifest: NOSIGNATURE         OverflowingBars-v8.0.1-1.20.1-Forge.jar           |Overflowing Bars              |overflowingbars               |8.0.1               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a     Crash Report UUID: ccaf101c-823f-47b9-9c2f-7d3d0db92823     FML: 47.3     Forge: net.minecraftforge:47.3.0
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
  • Topics

×
×
  • Create New...

Important Information

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