• 0

    posted a message on Making a mod that notify it's user when his inventory is full

    hello, the concept is in the title, the issue right now is that i'm stuck with my PckUpItm not working correctly, and causing the game to timeout when joining servers, it also doesn't work in solo, here's my code :

     

    package Gess.mod;
    
    import Gess.mod.proxy.iProxy;
    import net.minecraft.client.Minecraft;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.Container;
    import net.minecraft.inventory.ContainerPlayer;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.NonNullList;
    import net.minecraft.util.text.TextComponentString;
    import net.minecraftforge.common.config.Configuration;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.Mod.EventHandler;
    import net.minecraftforge.fml.common.SidedProxy;
    import net.minecraftforge.fml.common.event.FMLInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    import net.minecraftforge.fml.common.gameevent.TickEvent;
    import util.Reference;
    @EventBusSubscriber
    @Mod(modid=Reference.MODID, name=Reference.MODNAME, version=Reference.VERSION)
    
    public class Main 
    {
    	public static Configuration config;
    	//public static int time = 10;
    	public static Main instance; 
    	//float lastMessageTime = 0;
    	public boolean inventoryIsFull;
    	public static final String CLIENT = "gess.mod.proxy.ClientProxy";
    	public static final String SERVER = "gess.mod.proxy.CommonProxy";
    	
    	@SidedProxy(clientSide = Reference.CLIENT, serverSide = Reference.COMMON)
    	public static iProxy proxy;
    	
    	@EventHandler
    	public void preInit(FMLPreInitializationEvent e){
    		 //File directory = event.getModConfigurationDirectory();
             //config = new Configuration(new File(directory.getPath(), "FullInventoryChecker.cfg"));
             //Config.readConfig();
    	}
    	@EventHandler
    	public void init(FMLInitializationEvent e){}
    	
    	@EventHandler
    	public void postInit(FMLPostInitializationEvent e){
    		// if (config.hasChanged()) 
            //    config.save();
    		//}
    	}
    	
    	public void log() {
    		System.out.println("Does PckUpItm actually output anything?");
    	}
    
    	private EntityPlayer playerEntity;
    	final EntityPlayer player = (EntityPlayer)Minecraft.getMinecraft().player;
        private boolean enabled = true;
    	private NonNullList<ItemStack> previous;
    	
        @SubscribeEvent
    	public void PckUpItm(final TickEvent.ClientTickEvent event) {
    		if(Minecraft.getMinecraft().player != null) {
    	        this.playerEntity = player;
    	        if (enabled == true) {
    	            NonNullList<ItemStack> previous = NonNullList.withSize(player.inventory.getSizeInventory(), ItemStack.EMPTY);
    	            enabled = false;
    	        }
    			Main pui = new Main();
    			pui.log();
    			EntityPlayer player = Minecraft.getMinecraft().player;
    			int g = 0;
    			System.out.println("starting to count e");
    		for(int e=0; e < 36; e++) {
    			System.out.println("checking slot " + e);
    			ItemStack stack = player.inventory.getStackInSlot(e);
                if(ItemStack.areItemStacksEqual(previous.get(e), stack)) {
                	previous.set(e,stack);	
                	if(!stack.isEmpty() && stack.getCount() == stack.getMaxStackSize()) {
    						g++;
    						System.out.println("g = " + g);
    						System.out.println("Itemstack " + e + "copied");
    						if(g > 34) {
    						Minecraft.getMinecraft().player.sendMessage(new TextComponentString("Your inventory is full"));
    						return;
    						
    					}
    				}
    				
    			}
    				
    		}
    					
    	}				
    
    }
    
    	
    	@SubscribeEvent
    	public static void chkInv(TickEvent.ClientTickEvent event) throws InterruptedException {
    		if(Minecraft.getMinecraft().player != null) {	
    			int s = 0;
    			for(int i=0; i < 37; i++) {
    				if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty() && Minecraft.getMinecraft()
    						.player.inventory.getStackInSlot(i).getCount() == Minecraft.getMinecraft().player.inventory.getStackInSlot(i).getMaxStackSize()) {
    					s++;
    					if(s > 35) {
    						if(Minecraft.getMinecraft().world.getTotalWorldTime() % 200 == 3L && event.phase == TickEvent.Phase.END) {
    						Minecraft.getMinecraft().player.sendMessage(new TextComponentString("Your inventory is full"));
    						System.out.println("chkInv: Triggerred with s = " + s);
    						return;
    						}
    						
    					}
    				
    				}
    				
    			}
    			
    			return;
    					
    		}
    		
    	}
    	
    
    }

     

     

    and here is the error:

     

    [21:01:37] [main/INFO] [GradleStart]: Extra: []
    [21:01:37] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/[user]/.gradle/caches/minecraft/assets, --assetIndex, 1.12, --accessToken{REDACTED}, --version, 1.12.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
    [21:01:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
    [21:01:38] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
    [21:01:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
    [21:01:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
    [21:01:38] [main/INFO] [FML]: Forge Mod Loader version 14.23.5.2768 for Minecraft 1.12.2 loading
    [21:01:38] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_212, running on Windows 8.1:amd64:6.3, installed at C:\Program Files\Java\jre1.8.0_212
    [21:01:38] [main/ERROR] [FML]: Apache Maven library folder was not in the format expected. Using default libraries directory.
    [21:01:38] [main/ERROR] [FML]: Full: C:\Users\[user]\.gradle\caches\modules-2\files-2.1\org.apache.maven\maven-artifact\3.5.3\7dc72b6d6d8a6dced3d294ed54c2cc3515ade9f4\maven-artifact-3.5.3.jar
    [21:01:38] [main/ERROR] [FML]: Trimmed: c:/users/[user]/.gradle/caches/modules-2/files-2.1/org.apache.maven/maven-artifact/3.5.3/
    [21:01:38] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
    [21:01:38] [main/INFO] [FML]: Detected deobfuscated environment, loading log configs for colored console logs.
    2019-10-20 21:01:40,811 main WARN Disabling terminal, you're running in an unsupported environment.
    [21:01:40] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLCorePlugin (net.minecraftforge.fml.relauncher.FMLCorePlugin), we are in deobf and it's a forge core plugin
    [21:01:40] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLForgePlugin (net.minecraftforge.classloading.FMLForgePlugin), we are in deobf and it's a forge core plugin
    [21:01:41] [main/INFO] [FML]: Searching D:\Modding\Minecraft\FullinventorycheckerRenewal\run\.\mods for mods
    [21:01:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
    [21:01:41] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
    [21:01:41] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
    [21:01:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
    [21:01:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
    [21:01:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
    [21:01:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
    [21:01:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
    [21:01:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
    [21:01:44] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
    [21:01:44] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
    [21:01:44] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
    [21:01:45] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
    [21:01:45] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
    [21:01:45] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
    [21:01:45] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
    [21:01:47] [main/INFO] [minecraft/Minecraft]: Setting user: Player431
    [21:01:56] [main/WARN] [minecraft/GameSettings]: Skipping bad option: lastServer:
    [21:01:56] [main/INFO] [minecraft/Minecraft]: LWJGL Version: 2.9.4
    [21:01:57] [main/INFO] [FML]: -- System Details --
    Details:
    	Minecraft Version: 1.12.2
    	Operating System: Windows 8.1 (amd64) version 6.3
    	Java Version: 1.8.0_212, Oracle Corporation
    	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    	Memory: 852327856 bytes (812 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    	JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    	FML: 
    	Loaded coremods (and transformers): 
    	GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 431.60' Renderer: 'GeForce GT 1030/PCIe/SSE2'
    [21:01:57] [main/INFO] [FML]: MinecraftForge v14.23.5.2768 Initialized
    [21:01:57] [main/INFO] [FML]: Starts to replace vanilla recipe ingredients with ore ingredients.
    [21:01:58] [main/INFO] [FML]: Replaced 1036 ore ingredients
    [21:01:59] [main/INFO] [FML]: Searching D:\Modding\Minecraft\FullinventorycheckerRenewal\run\.\mods for mods
    [21:02:03] [main/INFO] [FML]: Forge Mod Loader has identified 5 mods to load
    [21:02:04] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, fullinvchecker] at CLIENT
    [21:02:04] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, fullinvchecker] at SERVER
    [21:02:05] [Thread-3/INFO] [FML]: Using alternative sync timing : 200 frames of Display.update took 6157975628 nanos
    [21:02:05] [main/INFO] [minecraft/SimpleReloadableResourceManager]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Full Inventory Checker
    [21:02:06] [main/INFO] [FML]: Processing ObjectHolder annotations
    [21:02:06] [main/INFO] [FML]: Found 1168 ObjectHolder annotations
    [21:02:06] [main/INFO] [FML]: Identifying ItemStackHolder annotations
    [21:02:06] [main/INFO] [FML]: Found 0 ItemStackHolder annotations
    [21:02:06] [main/INFO] [FML]: Configured a dormant chunk cache size of 0
    [21:02:06] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
    [21:02:06] [main/INFO] [FML]: Applying holder lookups
    [21:02:06] [main/INFO] [FML]: Holder lookups applied
    [21:02:06] [main/INFO] [FML]: Applying holder lookups
    [21:02:06] [main/INFO] [FML]: Holder lookups applied
    [21:02:06] [main/INFO] [FML]: Applying holder lookups
    [21:02:06] [main/INFO] [FML]: Holder lookups applied
    [21:02:06] [main/INFO] [FML]: Applying holder lookups
    [21:02:06] [main/INFO] [FML]: Holder lookups applied
    [21:02:06] [main/INFO] [FML]: Injecting itemstacks
    [21:02:06] [main/INFO] [FML]: Itemstack injection complete
    [21:02:07] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Found status: UP_TO_DATE Target: null
    [21:02:14] [Sound Library Loader/INFO] [minecraft/SoundManager]: Starting up SoundSystem...
    [21:02:14] [Thread-5/INFO] [minecraft/SoundManager]: Initializing LWJGL OpenAL
    [21:02:14] [Thread-5/INFO] [minecraft/SoundManager]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
    [21:02:14] [Thread-5/INFO] [minecraft/SoundManager]: OpenAL initialized.
    [21:02:15] [Sound Library Loader/INFO] [minecraft/SoundManager]: Sound engine started
    [21:02:26] [main/INFO] [FML]: Max texture size: 16384
    [21:02:27] [main/INFO] [minecraft/TextureMap]: Created: 512x512 textures-atlas
    [21:02:33] [main/INFO] [FML]: Applying holder lookups
    [21:02:33] [main/INFO] [FML]: Holder lookups applied
    [21:02:33] [main/INFO] [FML]: Injecting itemstacks
    [21:02:33] [main/INFO] [FML]: Itemstack injection complete
    [21:02:33] [main/INFO] [FML]: Forge Mod Loader has successfully loaded 5 mods
    [21:02:33] [main/WARN] [minecraft/GameSettings]: Skipping bad option: lastServer:
    [21:02:33] [main/INFO] [mojang/NarratorWindows]: Narrator library for x64 successfully loaded
    [21:02:36] [Realms Notification Availability checker #1/INFO] [mojang/RealmsClient]: Could not authorize you against Realms server: Invalid session id
    [21:03:52] [main/INFO] [minecraft/GuiConnecting]: Connecting to localhost, 25565
    [21:03:52] [Server Connector #1/ERROR] [minecraft/GuiConnecting]: Couldn't connect to server
    java.lang.NullPointerException: group
    	at io.netty.bootstrap.AbstractBootstrap.group(AbstractBootstrap.java:84) ~[AbstractBootstrap.class:?]
    	at net.minecraft.network.NetworkManager.createNetworkManagerAndConnect(NetworkManager.java:367) ~[NetworkManager.class:?]
    	at net.minecraft.client.multiplayer.GuiConnecting$1.run(GuiConnecting.java:68) [GuiConnecting$1.class:?]
    [21:03:54] [main/INFO] [minecraft/GuiConnecting]: Connecting to localhost, 25565
    [21:03:55] [Netty Client IO #1/INFO] [FML]: Aborting client handshake "VANILLA"
    [21:03:55] [Netty Client IO #1/INFO] [FML]: [Netty Client IO #1] Client side vanilla connection established
    [21:04:20] [Netty Client IO #1/ERROR] [FML]: NetworkDispatcher exception
    java.io.IOException: Une connexion existante a dû être fermée par l’hôte distant // timeout
    	at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[?:1.8.0_212]
    	at sun.nio.ch.SocketDispatcher.read(Unknown Source) ~[?:1.8.0_212]
    	at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source) ~[?:1.8.0_212]
    	at sun.nio.ch.IOUtil.read(Unknown Source) ~[?:1.8.0_212]
    	at sun.nio.ch.SocketChannelImpl.read(Unknown Source) ~[?:1.8.0_212]
    	at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:288) ~[PooledUnsafeDirectByteBuf.class:4.1.9.Final]
    	at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1100) ~[AbstractByteBuf.class:4.1.9.Final]
    	at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:372) ~[NioSocketChannel.class:4.1.9.Final]
    	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) [AbstractNioByteChannel$NioByteUnsafe.class:4.1.9.Final]
    	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:624) [NioEventLoop.class:4.1.9.Final]
    	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:559) [NioEventLoop.class:4.1.9.Final]
    	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:476) [NioEventLoop.class:4.1.9.Final]
    	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438) [NioEventLoop.class:4.1.9.Final]
    	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [SingleThreadEventExecutor$5.class:4.1.9.Final]
    	at java.lang.Thread.run(Unknown Source) [?:1.8.0_212]
    [21:04:21] [main/INFO] [FML]: Applying holder lookups
    [21:04:21] [main/INFO] [FML]: Holder lookups applied
    [21:04:32] [main/INFO] [minecraft/GuiConnecting]: Connecting to localhost, 25565
    [21:04:32] [Netty Client IO #2/INFO] [FML]: Aborting client handshake "VANILLA"
    [21:04:32] [Netty Client IO #2/INFO] [FML]: [Netty Client IO #2] Client side vanilla connection established
    [21:04:45] [main/INFO] [minecraft/Minecraft]: Stopping!
    [21:04:52] [main/INFO] [minecraft/SoundManager]: SoundSystem shutting down...
    [21:04:52] [main/WARN] [minecraft/SoundManager]: Author: Paul Lamb, www.paulscode.com
    Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

     

     

    the official minecraft forge forum locked my thread saying "i should learn java" when my knowledge of java wasn't the issue, but minecraft modding knowledge is limited when it's about Itemstacks.

     

    at this date, i've been trying to make the mod work for 2 month, unsuccessfully, i wouldn't had came here if it wasn't the case.

    when i force the method to work in solo, the game crash, and the error come from the line if(ItemStack.areItemStacksEqual(previous.get(e), stack)) { . another forum that also tried to help me doesn't know why it's doing this.

     

     

    Posted in: Mod Development
  • To post a comment, please or register a new account.