Jump to content

[1.12.1] Making a mod that notify player when inventory is full


Recommended Posts

Posted

Yes blame the "lack of documentation". Totally not your java "knowledge". You also totally did not try to implement code that has such an obvious syntax error that someone with actual java knowledge would immediately see and be able to fix.

 

Everything you need to do has been explained in this thread (and also the thread you linked where you stole the code from). Making this mod probably takes about 5 minutes.

  • Haha 2
Posted (edited)
18 minutes ago, CAS_ual_TY said:

Yes blame the "lack of documentation". Totally not your java "knowledge". You also totally did not try to implement code that has such an obvious syntax error that someone with actual java knowledge would immediately see and be able to fix.

 

Everything you need to do has been explained in this thread (and also the thread you linked where you stole the code from). Making this mod probably takes about 5 minutes.

how to use ItemStack::isEmpty has still, to be explained

most forums and wikis say nothing about that it's just like "use ItemStacks::isEmpty instead or equals(ItemStack.EMPTY)" over and over again without anyone talking about it the same thread, i can't fin tutorials and java knowledge won't help me anyway there because i need Forge API knowledge because as far as we know, forge didn't created java, but the reverse is true.

 

EDIT: now what? i can't reverse the > because it crash

 

public Main() {
		
		for(int i=0; i > 37; i++) {
		if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty()) {
			Minecraft.getMinecraft().player.sendMessage(new TextComponentString("Your inventory is full"));
			return;
			}
		}
		return;

 

so apparently the issue would be with my clientTickEvent :

 

@SubscribeEvent
	public static void chkInv(TickEvent.ClientTickEvent event) {
		if(Minecraft.getMinecraft().player != null) {
			Minecraft.getMinecraft().player.sendMessage(new TextComponentString("you're ingame"));
			Main main = new Main();
			
		}

when ingame, it doesn't spam a client-side message in the chat

Edited by Gess1t
Posted (edited)
4 minutes ago, loordgek said:

post the log

Spoiler

2019-08-29 18:51:27,351 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2019-08-29 18:51:27,356 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2019-08-29 18:51:27,425 main ERROR Unable to move file D:\Modding\Minecraft\fullinventorychecker\run\logs\latest.log to D:\Modding\Minecraft\fullinventorychecker\run\logs\2019-08-29-7.log: java.nio.file.FileSystemException D:\Modding\Minecraft\fullinventorychecker\run\logs\latest.log -> D:\Modding\Minecraft\fullinventorychecker\run\logs\2019-08-29-7.log: Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus.

2019-08-29 18:51:27,429 main ERROR Unable to delete file D:\Modding\Minecraft\fullinventorychecker\run\logs\latest.log: java.nio.file.FileSystemException D:\Modding\Minecraft\fullinventorychecker\run\logs\latest.log: Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus.

[18:51:27] [main/INFO] [GradleStart]: Extra: []
[18:51:27] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/samdra.r/.gradle/caches/minecraft/assets, --assetIndex, 1.12, --accessToken{REDACTED}, --version, 1.12.1, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[18:51:27] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[18:51:27] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[18:51:27] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[18:51:27] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
2019-08-29 18:51:27,881 main ERROR Unable to move file D:\Modding\Minecraft\fullinventorychecker\run\logs\fml-client-latest.log to D:\Modding\Minecraft\fullinventorychecker\run\logs\fml-client-3.log: java.nio.file.FileSystemException D:\Modding\Minecraft\fullinventorychecker\run\logs\fml-client-latest.log -> D:\Modding\Minecraft\fullinventorychecker\run\logs\fml-client-3.log: Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus.

2019-08-29 18:51:27,888 main ERROR Unable to delete file D:\Modding\Minecraft\fullinventorychecker\run\logs\fml-client-latest.log: java.nio.file.FileSystemException D:\Modding\Minecraft\fullinventorychecker\run\logs\fml-client-latest.log: Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus.

[18:51:27] [main/INFO] [FML]: Forge Mod Loader version 14.22.1.2478 for Minecraft 1.12.1 loading
[18:51:27] [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
[18:51:27] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[18:51:27] [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
[18:51:27] [main/INFO] [FML]: Ignoring missing certificate for coremod FMLForgePlugin (net.minecraftforge.classloading.FMLForgePlugin), we are in deobf and it's a forge core plugin
[18:51:28] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[18:51:28] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[18:51:28] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[18:51:28] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[18:51:28] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[18:51:28] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[18:51:28] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[18:51:28] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[18:51:28] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
2019-08-29 18:51:28,721 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2019-08-29 18:51:29,439 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2019-08-29 18:51:29,442 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[18:51:32] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[18:51:32] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[18:51:32] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[18:51:33] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[18:51:33] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[18:51:33] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[18:51:33] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[18:51:36] [main/INFO]: Setting user: Player198
[18:51:43] [main/WARN]: Skipping bad option: lastServer:
[18:51:44] [main/INFO]: LWJGL Version: 2.9.4
[18:51:45] [main/INFO] [FML]: -- System Details --
Details:
	Minecraft Version: 1.12.1
	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: 728069728 bytes (694 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'
[18:51:45] [main/INFO] [FML]: MinecraftForge v14.22.1.2478 Initialized
[18:51:45] [main/INFO] [FML]: Starts to replace vanilla recipe ingredients with ore ingredients.
[18:51:46] [main/INFO] [FML]: Replaced 1036 ore ingredients
[18:51:46] [main/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[18:51:46] [main/INFO] [FML]: Searching D:\Modding\Minecraft\fullinventorychecker\run\mods for mods
[18:51:48] [main/INFO] [FML]: Forge Mod Loader has identified 5 mods to load
[18:51:48] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, f] at CLIENT
[18:51:48] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, f] at SERVER
[18:51:49] [main/FATAL] [FML]: Fatal errors were detected during the transition from CONSTRUCTING to PREINITIALIZATION. Loading cannot continue
[18:51:49] [main/FATAL] [FML]: 
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

	| State | ID        | Version      | Source                           | Signature |
	|:----- |:--------- |:------------ |:-------------------------------- |:--------- |
	| UC    | minecraft | 1.12.1       | minecraft.jar                    | None      |
	| UC    | mcp       | 9.19         | minecraft.jar                    | None      |
	| UC    | FML       | 8.0.99.99    | forgeSrc-1.12.1-14.22.1.2478.jar | None      |
	| UC    | forge     | 14.22.1.2478 | forgeSrc-1.12.1-14.22.1.2478.jar | None      |
	| UE    | f         | 1.0          | bin                              | None      |

[18:51:49] [main/FATAL] [FML]: The following problems were captured during this phase
[18:51:49] [main/ERROR] [FML]: Caught exception from f (java.lang.NullPointerException)
[18:51:49] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ----
// Would you like a cupcake?

Time: 8/29/19 6:51 PM
Description: There was a severe problem during mod loading that has caused the game to fail

net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Full Inventory Checker (f)
Caused by: java.lang.NullPointerException
	at Gess.mod.Main.<init>(Main.java:38)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at net.minecraftforge.fml.common.ILanguageAdapter$JavaAdapter.getNewInstance(ILanguageAdapter.java:193)
	at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:582)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
	at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:253)
	at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:231)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
	at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:148)
	at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:570)
	at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:227)
	at net.minecraft.client.Minecraft.init(Minecraft.java:508)
	at net.minecraft.client.Minecraft.run(Minecraft.java:416)
	at net.minecraft.client.main.Main.main(Main.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
	at GradleStart.main(GradleStart.java:25)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
	Minecraft Version: 1.12.1
	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: 790205336 bytes (753 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: MCP 9.41 Powered by Forge 14.22.1.2478 5 mods loaded, 5 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

	| State | ID        | Version      | Source                           | Signature |
	|:----- |:--------- |:------------ |:-------------------------------- |:--------- |
	| UC    | minecraft | 1.12.1       | minecraft.jar                    | None      |
	| UC    | mcp       | 9.19         | minecraft.jar                    | None      |
	| UC    | FML       | 8.0.99.99    | forgeSrc-1.12.1-14.22.1.2478.jar | None      |
	| UC    | forge     | 14.22.1.2478 | forgeSrc-1.12.1-14.22.1.2478.jar | None      |
	| UE    | f         | 1.0          | bin                              | None      |

	Loaded coremods (and transformers): 
	GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 431.60' Renderer: 'GeForce GT 1030/PCIe/SSE2'
[18:51:49] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# D:\Modding\Minecraft\fullinventorychecker\run\.\crash-reports\crash-2019-08-29_18.51.49-client.txt
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

 

 

Edited by Gess1t
Posted
Posted (edited)
45 minutes ago, Gess1t said:

for(int i=0; i > 37; i++) {

    if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty()) {

        //send message and return

This code won't work. That is, even assuming that it compiled and ran and all those other problems you have...this code would not do what you want it to do.

 

Why?

 

Easy.

 

"Lets look at the player's inventory. First I look at the stack in slot 0. Oh hey, 16 planks. 16 planks is not empty. Not-not-empty is true. True means I tell the player their inventory is full and stop looking! Hooray I'm done!"

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)
36 minutes ago, CAS_ual_TY said:

Post your full Main.class and MOD.class so we can see the different lines.

 

This is your error btw (shouldnt be hard to fix with java knowledge):

 

Caused by: java.lang.NullPointerException at Gess.mod.Main.<init>(Main.java:38)

 

so basicly 

if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty())

is causing the crash if the script is set to i < 37

and it doesn't if the script is set to i  > 37 because it does nothing.

so : nope it doesn't help, and yep, it crash before being able to do a single one

 

the one that crash : 

public Main() {
		
		for(int i=0; i < 37; i++) {
		if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty()) {
			Minecraft.getMinecraft().player.sendMessage(new TextComponentString("Your inventory is full"));
			return;
			}
		}
		return;
	}

 

 

Main.java

package Gess.mod;

import Gess.mod.proxy.iProxy;
import net.minecraft.client.Minecraft;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.fml.common.Mod;
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;


@Mod(modid=Reference.MODID, name=Reference.MODNAME, version=Reference.VERSION)

public class Main 
{
	public static Main instance;
	
	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 event){}
	@EventHandler
	public void init(FMLInitializationEvent event){}
	@EventHandler
	public void postInit(FMLPostInitializationEvent event){}
	
	public Main() {
		
		for(int i=0; i < 37; i++) {
		if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty()) {
			Minecraft.getMinecraft().player.sendMessage(new TextComponentString("Your inventory is full"));
			return;
			}
		}
		return;
	}
	@SubscribeEvent
	public static void chkInv(TickEvent.ClientTickEvent event) {
		if(Minecraft.getMinecraft().player != null) {
			Minecraft.getMinecraft().player.sendMessage(new TextComponentString("you're ingame"));
			Main main = new Main();
			
		}
	}
}

Reference.java

package util;

public class Reference {
	public static final String MODID = "f";
	public static final String MODNAME = "Full Inventory Checker";
	public static final String VERSION = "1.0";
	public static final String CLIENT = "Gess.mod.proxy.ClientProxy";
	public static final String COMMON = "Gess.mod.proxy.CommonProxy";
}

ClientProxy

package Gess.mod.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy implements iProxy {

	public void preInit(FMLPreInitializationEvent event) {

	}

	public void init(FMLInitializationEvent event) {

	}

	public void postInit(FMLPostInitializationEvent event) {

	}

}

CommonProxy.java

package Gess.mod.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class CommonProxy implements iProxy {

	public void preInit(FMLPreInitializationEvent event) {

	}

	public void init(FMLInitializationEvent event) {

	}

	public void postInit(FMLPostInitializationEvent event) {

	}

}

iProxy

package Gess.mod.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public interface iProxy {

	public void preInit(FMLPreInitializationEvent event);

	public void init(FMLInitializationEvent event);

	public void postInit(FMLPostInitializationEvent event);

}

 

These are the only class i have rn

Edited by Gess1t
Posted (edited)
22 minutes ago, Gess1t said:

and it doesn't if the script is set to i  > 37

because the "script" loop never runs

 

Edited by loordgek
Posted
34 minutes ago, Gess1t said:

if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty())

When this line is called in your Main class constructor the Player doesn't exist. I'm not even sure if Minecraft.getMinecraft() returns a non null value.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted (edited)
6 minutes ago, loordgek said:

dont make your modID 'f" make it longer

you dont need a proxy

cut and paste the code from the constructor to you event method

done that, still no msg, not even the "you're ingame" one which should appear every game ticks

Edited by Gess1t
Posted
47 minutes ago, Gess1t said:

public static void chkInv(TickEvent.ClientTickEvent event) {

This is never called because you never told forge to look there. You need to register your event. Since it is static you can just add the EventBusSubscriber annotation to the class it's in.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted (edited)
4 minutes ago, loordgek said:

to to class where you have the event method

had to add it before public class Main to work, now i get the "you're ingame" message spamming every ticks, but when i take a single item, it also say : "your inventory is full" which is also spamming every ticks, thing i would like to avoid may i use the wait function of something?

 

EDIT: i know understand what you were talking about  Draco18s

Edited by Gess1t
Posted
1 minute ago, Gess1t said:

had to add it before public class Main to work, now i get the "you're ingame" message spamming every ticks, but when i take a single item, it also say : "your inventory is full"

At this point it's simple algorithm. Look through your for loop and see what it does.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

a resume of it would be, "i only checked for a single slot to have an item and i assume the inventory is full"

 

so i assume this .isEmpty return only true or false, not what i want, but that's what other told me to use

Posted
24 minutes ago, Gess1t said:

not what i want, but that's what other told me to use

Yes it is exactly what you want. Just check every slot first. If you need to know if the inventory is empty iterate over the slots and check each slot if you find one that is empty then it is not full. If you make it through all of them and none of them are empty the inventory is full.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted (edited)
4 minutes ago, Animefan8888 said:

Yes it is exactly what you want. Just check every slot first. If you need to know if the inventory is empty iterate over the slots and check each slot if you find one that is empty then it is not full. If you make it through all of them and none of them are empty the inventory is full.

tell me if i'm correct, but i could add +1 to a variable every time a slot is filled with a certain stack and so return false until it get to 36 and then the message send

Edited by Gess1t
Posted
4 minutes ago, Gess1t said:

tell me if i'm correct, but i could add +1 to a variable every time a slot is filled with a certain stack and so return false until it get to 36 and then the message send

You could.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

Or you could find an empty slot and return doing nothing.

If you get to the end of the loop, print your message, because you failed to find an empty slot and return early.

 

And that's assuming that you care about stack size > 0 counting as "full" even if that slot only contains a single cobblestone. At which point you need to check current stack size against the maximum allowed.

 

The short of it is that your coding abilities are abysmal and we're not going to walk you through fixing every little thing. Instead, we're going to point and laugh. I'm not even sure your code is as functional as this car is:

db8350e6f79fcd996a45c86e27ab53f9.jpg

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)
5 minutes ago, Draco18s said:

Or you could find an empty slot and return doing nothing.

If you get to the end of the loop, print your message, because you failed to find an empty slot and return early.

 

And that's assuming that you care about stack size > 0 counting as "full" even if that slot only contains a single cobblestone. At which point you need to check current stack size against the maximum allowed.

 

The short of it is that your coding abilities are abysmal and we're not going to walk you through fixing every little thing. Instead, we're going to point and laugh. I'm not even sure your code is as functional as this car is:

db8350e6f79fcd996a45c86e27ab53f9.jpg

well you're right, when i get a full inv, the game freeze, but the console still output the text lol

package Gess.mod;

import Gess.mod.proxy.iProxy;
import net.minecraft.client.Minecraft;
import net.minecraft.util.text.TextComponentString;
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 Main instance;
	
	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 event){}
	@EventHandler
	public void init(FMLInitializationEvent event){}
	@EventHandler
	public void postInit(FMLPostInitializationEvent event){}
	
	public Main() {
		
	}
	
	@SubscribeEvent
	public static void chkInv(TickEvent.ClientTickEvent event) throws InterruptedException {
		if(Minecraft.getMinecraft().player != null) {
			int d = 0;
			for(int i=0; i < 37; i++) {
				if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(i).isEmpty()) {
					d++;
					if(d > 35) {
					Minecraft.getMinecraft().player.sendMessage(new TextComponentString("Your inventory is full"));
					Thread.sleep(10000);
					return;
					}
					
				}
				
			}
			
			return;

		}
	
	}

}

so now i need to fix the freezes lul

with no possible way to debug cause no errors pops in chat

Edited by Gess1t
Guest
This topic is now closed to further replies.

Announcements




×
×
  • Create New...

Important Information

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