Jump to content

[1.11] return "commands.command.usage"; [Working][unsolved behaviour]


iAmRinzler

Recommended Posts

In the source code for the native commands I see:

public String getCommandUsage(ICommandSender sender)
    {
        return "commands.kill.usage";
    }

(as an example from the CommandKill class)...

 

I have been trying to find the file that contains the help string for "commands.kill.usage" to no avail. How do I edit or create my own for my own commands?

 

 

 

Up till now I have just put the help text directly in the return statement, such as return "Command <Argument | Argument> usage"; etc.

Link to comment
Share on other sites

In the source code for the native commands I see:

public String getCommandUsage(ICommandSender sender)
    {
        return "commands.kill.usage";
    }

(as an example from the CommandKill class)...

 

I have been trying to find the file that contains the help string for "commands.kill.usage" to no avail. How do I edit or create my own for my own commands?

 

Up till now I have just put the help text directly in the return statement, such as return "Command <Argument | Argument> usage"; etc.

They are localized in/from the lang files.

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.

Link to comment
Share on other sites

Had to reopen this question because I ran into an issue. I went ahead and created the en_US.lang file and saved it in UTF-8 with BOM. I saved the file in src/main/java/assets/testmod/lang/en_US.lang

(For the record I have tried also saving it under assets.testmod.lang in the resources file too). I have refreshed and reloaded the project...nothing.

 

Inside en_US.lang I have:

commands.testmod.usage=/testmod <command> <arguments>

 

then in my command file I have

@Override
  public String getCommandUsage(ICommandSender sender) {
    return "commands.testmod.usage";
  }

 

however, when I run /help testmod I get the string "Usage: commands.testmod.usage" rather than what it should be "/testmod <command> <arguments>". I do not understand what I am doing incorrectly.

Link to comment
Share on other sites

Everything I have read said that it needed to be "en_US.lang". However, I changed it to lowercase per your suggestion and it still isn't working. I get usage: commands.testmod.usage.

 

There seemed to be debate as to whether it should be in the src folder or the resources folder though. right now I have it in both...

Link to comment
Share on other sites

Everything I have read said that it needed to be "en_US.lang". However, I changed it to lowercase per your suggestion and it still isn't working. I get usage: commands.testmod.usage.

 

There seemed to be debate as to whether it should be in the src folder or the resources folder though. right now I have it in both...

Post your lang file.

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.

Link to comment
Share on other sites

commands.testmod.usage=/testmod <command> /test <command> /tm <command>
commands.testmod.setpos1.usage=/testmod setpos1 sets position 1.
commands.testmod.setpos2.usage=/testmod setpos2 sets position 2.

 

this is all that is in it. File currently saved as en_us.lang. Inside assets.testmod.lang.

Link to comment
Share on other sites

1.11 does require resource file names to be lowercase (en_us.lang), but Forge will add mod resources to the resource pack list using the LegacyV2Adapter class if they don't have a pack.mcmeta file or they have one that specifies pack_format as 2 (see FMLClientHandler#addModAsResource).

 

LegacyV2Adapter will load mixed case (en_US.lang) lang files, but will still require all other file names to be lowercase.

 

In summary: If you have a pack.mcmeta file with pack_format 3, use lowercase lang file names; otherwise use mixed case lang file names.

 

The assets folder belongs in src/main/resources (so it's copied to the compiled JAR), not in src/main/java (it's not source code that needs to be compiled).

Edited by Choonster
Fixed formatting errors caused by forum migration

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Well I seem to have gotten it working but in order to do so I had to just create an entirely new testmod. I don't have the slightest clue what was wrong with the first testmod but nothing I was doing would allow the .lang file to be recognized.

 

I should note that the first testmod file had somehow been built into it's own gradle project and was independent of my Minecraft Forge gradle project (although it could still use the forge classes etc). I closed that testmod gradle project and recoded a testmod in the Minecraft Forge src file and my .lang file is being read properly now.

 

I must have somehow screwed something up, I wish I knew what. Hopefully it continues to work for me.

 

Thanks Choonster and Animefan for the helps.

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.
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'm using Modrinth as a launcher for a forge modpack on 1.20.1, and can't diagnose the issue on the crash log myself. Have tried repairing the Minecraft instillation as well as removing a few mods that have been problematic for me in the past to no avail. Crash log is below, if any further information is necessary let me know. Thank you! https://paste.ee/p/k6xnS
    • Hey folks. I am working on a custom "Mecha" entity (extended from LivingEntity) that the player builds up from blocks that should get modular stats depending on the used blocks. e.g. depending on what will be used for the legs, the entity will have a different jump strength. However, something unexpected is happening when trying to override a few of LivingEntity's functions and using my new own "Mecha" specific fields: instead of their actual instance-specific value, the default value is used (0f for a float, null for an object...) This is especially strange as when executing with the same entity from a point in the code specific to the mecha entity, the correct value is used. Here are some code snippets to better illustrate what I mean: /* The main Mecha class, cut down for brevity */ public class Mecha extends LivingEntity { protected float jumpMultiplier; //somewhere later during the code when spawning the entity, jumpMultiplier is set to something like 1.5f //changing the access to public didn't help @Override //Overridden from LivingEntity, this function is only used in the jumpFromGround() function, used in the aiStep() function, used in the LivingEntity tick() function protected float getJumpPower() { //something is wrong with this function //for some reason I can't correctly access the fields and methods from the instanciated entity when I am in one of those overridden protected functions. this is very annoying LogUtils.getLogger().info(String.valueOf(this.jumpMultiplier))) //will print 0f return this.jumpMultiplier * super.getJumpPower(); } //The code above does not operate properly. Written as is, the entity will not jump, and adding debug logs shows that when executing the code, the value of this.jumpMultiplier is 0f //in contrast, it will be the correct value when done here: @Override public void tick() { super.tick(); //inherited LivingEntity logic //Custom logic LogUtils.getLogger().info(String.valueOf(this.jumpMultiplier))) //will print 1.5f } } My actual code is slightly different, as the jumpMuliplier is stored in another object (so I am calling "this.legModule.getJumpPower()" instead of the float), but even using a simple float exactly like in the code above didn't help. When running my usual code, the object I try to use is found to be null instead, leading to a crash from a nullPointerException. Here is the stacktrace of said crash: The full code can be viewed here. I have found a workaround in the case of jump strength, but have already found the same problem for another parameter I want to do, and I do not understand why the code is behaving as such, and I would very much like to be able to override those methods as intended - they seemed to work just fine like that for vanilla mobs... Any clues as to what may be happening here?
    • Please delete post. Had not noticed the newest edition for 1.20.6 which resolves the issue.
    • https://paste.ee/p/GTgAV Here's my debug log, I'm on 1.18.2 with forge 40.2.4 and I just want to get it to work!! I cant find any mod names in the error part and I would like some help from the pros!! I have 203 mods at the moment.
  • Topics

×
×
  • Create New...

Important Information

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