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

How do I create a global variable that works across all my NPC's?


Recommended Posts

I need to create a global variable that I can use with all my NPC's. For example, I would have a global variable named 'Seen'. If an NPC see's the player and Seen equals false then it would attack and Seen would be changed to true. If Seen equals true the NPC would ignore the player. How and where would I create this variable, and how would I reference it?

Link to comment
Share on other sites

This is a classic design pattern, you have to implement Singleton Pattern.

The singleton pattern is a software design pattern that restricts the instantiation of a class to one "single" instance. This is useful when exactly one object is needed to coordinate actions across the system.

The pattern implementation is easy to found but here is a quikly example:

Create a new class with all the attributes you need (boolean seen) and the Class as property. Make your constructor as PRIVATE and create an static method to get the instance.

public final class Singleton {

    private static Singleton instance;
    public boolean seen = false; // Default value

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        return instance;


Where you need use the instance you always will use "getInstance" method:

Singleton myInstance = Singleton.getInstance();

It doesn't matter where you call the "getInstance" method from. For access to the value or modify it, simply like this:
myInstance.seen = true;

The idea is that you will only create instance once, the second time when you call getInstance method you will get the same created instance and not a new one.

I hope this help you :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.


  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • We have created a pickaxe.json below MInecraft-MOD-1.17/src/main/resources/data/minecraft.tags.blocks/mineable/pickaxe.json github link  https://github.com/ocome85/MInecraft-MOD-1.17    I can't add Tag and you can't dig. Please help me.
    • Thank you I completely forgot about that. I will attempt to put a delay in  
    • While chugging along making the JSONs by hand (to get an idea of how they need to be generated for each type of block), I cam up with a possibly brilliant idea. Could I somehow make template JSONs and when a new block of a certain type is being generated it will just pull the template and replace certain keywords like "NAME" and "COLOR" instead of all of this getVariantBuilder stuff
    • Hello everyone!     I'm quite new to forge, I used to do development for spigot. I needed to create a GUI Overlays and I found an article https://emxtutorials.wordpress.com/simple-in-game-gui-overlay/ on how to create a gui overlay, but as I understood the classes were renamed. Can you           share a sample code that would perform this function? Thank you in advance
    • I am at my wit's end trying to figure out what keeps going wrong. Reading the error log tells me absolutely nothing I can understand, and after making a blank new server and finally having it work after so long, just to have it break again, is extremely irritating. I would love for someone to decipher what this error log says and point me in a direction, at least, so I'm not swinging blindly. Minecraft 1.16.5 and Forge 36.2.2   [14:47:37] [Server thread/INFO] [minecraft/PlayerList]: Hyratos[/] logged in with entity id 45 at (481.30365299459726, 78.0, 426.6331819365098) [14:47:37] [Server thread/INFO] [minecraft/DedicatedServer]: Hyratos joined the game [14:47:37] [Netty Server IO #2/ERROR] [tconstruct/]: MaterialRecipeSerializer: Error reading recipe from packet java.lang.NullPointerException: null     at slimeknights.tconstruct.library.recipe.material.MaterialRecipeSerializer.writeSafe(MaterialRecipeSerializer.java:70) ~[tconstruct:1.16.5-]     at slimeknights.tconstruct.library.recipe.material.MaterialRecipeSerializer.writeSafe(MaterialRecipeSerializer.java:20) ~[tconstruct:1.16.5-]     at slimeknights.tconstruct.common.recipe.LoggingRecipeSerializer.func_199427_a_(LoggingRecipeSerializer.java:49) ~[tconstruct:1.16.5-]     at net.minecraft.network.play.server.SUpdateRecipesPacket.func_218771_a(SourceFile:64) ~[?:?]     at net.minecraft.network.play.server.SUpdateRecipesPacket.func_148840_b(SourceFile:43) ~[?:?]     at net.minecraftforge.network.VanillaPacketSplitter.appendPackets(VanillaPacketSplitter.java:100) ~[forge:?]     at net.minecraftforge.network.ForgeConnectionNetworkFilter.splitPacket(ForgeConnectionNetworkFilter.java:85) ~[forge:?]     at net.minecraftforge.network.VanillaPacketFilter.encode(VanillaPacketFilter.java:75) ~[forge:?]     at net.minecraftforge.network.VanillaPacketFilter.encode(VanillaPacketFilter.java:38) ~[forge:?]     at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:88) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:831) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1071) ~[server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:300) ~[server-1.16.5-20210115.111550-extra.jar:?]     at net.minecraft.network.NetworkManager.lambda$sendPacket$5(NetworkManager.java:196) ~[?:?]     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:465) [server-1.16.5-20210115.111550-extra.jar:?]     at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) [server-1.16.5-20210115.111550-extra.jar:?]     at java.lang.Thread.run(Unknown Source) [?:1.8.0_301] [14:47:38] [Server thread/WARN] [Mekanism/]: Failed to retrieve username for UUID 594cf1d3-7a0c-4e6f-bd16-5df4bb7ce72b, you might want to add it to the JSON cache [14:47:38] [Server thread/WARN] [minecraft/EntityDataManager]: defineId called for: class dev.itsmeow.whisperwoods.entity.EntityMoth from class dev.itsmeow.whisperwoods.imdlib.entity.EntityTypeContainer [14:47:38] [Server thread/WARN] [minecraft/EntityDataManager]: defineId called for: class dev.itsmeow.whisperwoods.entity.EntityMoth from class dev.itsmeow.whisperwoods.imdlib.entity.util.EntityTypeContainerContainable [14:47:38] [Server thread/WARN] [minecraft/EntityDataManager]: defineId called for: class its_meow.betteranimalsplus.common.entity.EntityButterfly from class dev.itsmeow.betteranimalsplus.imdlib.entity.EntityTypeContainer [14:47:38] [Server thread/WARN] [minecraft/EntityDataManager]: defineId called for: class its_meow.betteranimalsplus.common.entity.EntityButterfly from class dev.itsmeow.betteranimalsplus.imdlib.entity.util.EntityTypeContainerContainable [14:47:38] [Server thread/WARN] [minecraft/EntityDataManager]: defineId called for: class dev.itsmeow.whisperwoods.entity.EntityZotzpyre from class dev.itsmeow.whisperwoods.imdlib.entity.EntityTypeContainer [14:47:38] [Server thread/INFO] [survive/]: Syncing Armor Data To Client (Hyratos) [14:47:38] [Server thread/INFO] [minecraft/ServerPlayNetHandler]: Hyratos lost connection: Internal Exception: io.netty.handler.codec.EncoderException: java.lang.NullPointerException [14:47:38] [Server thread/INFO] [minecraft/DedicatedServer]: Hyratos left the game  
  • Topics

  • Who's Online (See full list)

  • Create New...

Important Information

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