Jump to content

Recommended Posts

Posted (edited)

Hi,

 

I want to how I can rename an item. For example I've got an item with which you can open up a GUI and inside of this GUI

you can change the name of the item. I just don't know how to achieve this (besides of sending packets to the Server).

 

Thx in advance.

Bektor

Edited by Bektor

Developer of Primeval Forest.

Posted
1 minute ago, Jay Avery said:

You can use Item#getItemStackDisplayName, to read information from the stack and return the String to display.

Hm, I just don't see how to change with this the name of the item.

Developer of Primeval Forest.

Posted

I'm not sure what else to tell you. You override the method in your class, it takes an ItemStack parameter, and returns a String. The String will be used as the ItemStack's display name. Take a look at the vanilla Item class to see the default implementation.

Posted (edited)

As it seems like stuff changed in the network handler (as it's been a long time I send packets the last time), how

do I execute this code:

 

I mean, the network stuff is now running in an extra thread and so I don't have access to the code I want to execute in my onMessage method.

public class MessageItemNameChanged implements IMessage {
    
    private String name;
    
    /** Default constructor, as it is required. */
    public MessageItemNameChanged() { }
    
    public MessageItemNameChanged(String name) {
        this.name = name;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) {
        ByteBufUtils.readUTF8String(buf);
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
        ByteBufUtils.writeUTF8String(buf, this.name);
    }
    
    public static class MessageItemNameChangedHandler implements IMessageHandler<MessageItemNameChanged, IMessage> {
        
        @Override
        public IMessage onMessage(MessageItemNameChanged message, MessageContext ctx) {
            // This is the player the packet was sent to the server from
            EntityPlayerMP serverPlayer = ctx.getServerHandler().player;
            
            ItemStack stack = serverPlayer.getActiveItemStack();
            stack.setStackDisplayName(message.name);
            
            // No respond packet
            return null;
        }
    }
}

 

Just to mention, the packet gets send from the Client to the Server to inform the server about the change in the name of the item.

Edited by Bektor

Developer of Primeval Forest.

Posted
Just now, Jay Avery said:

There should be no need for packets. Where do you change the item name (where do you send the packet)?

There is a need for sending packets as the code which has the name is Client Side only.

I also don't have any Container stuff, it's just a normal GuiScreen. So the GuiScreen has to send a packet

to the Server as the GuiScreen is client side and the server doesn't know about that stuff.

Developer of Primeval Forest.

Posted

You can wrap your actions you want to perform upon the packet's arrival in a Runnable. Then obtain a IThreadListener for the respective side (Client = Minecraft.getMinecraft().world, server = DimensionManager.getWorld(dimensionID)). That thread listener object has addScheduledTask method to execute your code on that thread. 

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

    • I am using forge 1.20.1 (version 47.3.0). My pc has an RTX 4080 super and an i9 14900 KF, I am on the latest Nvidia graphics driver, latest windows 10 software, I have java 23, forge 1.12.2 works and so does all vanilla versions but for some reason no version of forge 1.20.1 works and instead the game just crashes with the error code "-1." I have no mods in my mods fodler, I have deleted my options.txt and forge.cfg files in case my settings were causing a crash and have tried removing my forge version from the installations folder and reinstalling but no matter what I still crash with the same code and my log doesn't tell me anything: 18:34:53.924 game 2025-02-06 18:34:53,914 main WARN Advanced terminal features are not available in this environment 18:34:54.023 game [18:34:54] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, mrmirchi, --version, 1.20.1-forge-47.3.0, --gameDir, C:\Users\aryam\AppData\Roaming\.minecraft, --assetsDir, C:\Users\aryam\AppData\Roaming\.minecraft\assets, --assetIndex, 5, --uuid, 2db00ea8d678420a8956109a85d90e9d, --accessToken, ????????, --clientId, ZWI3NThkNzMtNmNlZS00MGI5LTgyZTgtYmZkNzcwMTM5MGMx, --xuid, 2535436222989555, --userType, msa, --versionType, release, --quickPlayPath, C:\Users\aryam\AppData\Roaming\.minecraft\quickPlay\java\1738838092785.json, --launchTarget, forgeclient, --fml.forgeVersion, 47.3.0, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412] 18:34:54.027 game [18:34:54] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.8 by Microsoft; OS Windows 10 arch amd64 version 10.0 18:34:54.132 game [18:34:54] [main/INFO] [ne.mi.fm.lo.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow 18:34:54.191 game [18:34:54] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6 18:34:54.303 game [18:34:54] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6 18:34:54.367 monitor Process Monitor Process crashed with exit code -1     screenshot of log: https://drive.google.com/file/d/1WdkH88H865XErvmIqAKjlg7yrmj8EYy7/view?usp=sharing
    • I am currently working on a big mod, but I'm having trouble with my tabs, I want to find a way to add tabs inside tabs, like how in mrcrayfishes furniture mod, his furniture tab has multiple other sub tabs to them, so i know it is possible but i just don't know how it is possible, any help would be appreciated, thanks
    • Add the crash-report or latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here  
    • Make a test with adding this mod: https://www.curseforge.com/minecraft/mc-mods/betterrandomsourceconcurrencycrash If you have further issues, create an own thread
    • hi same thing happened to me this is my paste bin please help!  crash report - https://pastes.io/crash-rep
  • Topics

×
×
  • Create New...

Important Information

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