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

[1.18] Item in hand reapearing when updating capability value on inventoryTick


Maciej916
 Share

Recommended Posts

I have problem with item reapearing in players hand after changing capability value. Here is what I mean by reapearing:

 021017d319261196dc6e0e1c4408dfa9.gif 

It only happens when item has tag "active" and energy.consumeEnergy is called. Does it have something to to with capability or im doing something wrong or do i need to sync it with client? Here is the code:

    int tickCounter = 0;

    @Override
    public void inventoryTick(ItemStack stack, Level level, Entity entity, int p_41407_, boolean p_41408_) {
        if (!level.isClientSide()) {
            if (++tickCounter == 20) {
                tickCounter = 0;

                stack.getCapability(ModCapabilities.ENERGY).ifPresent(energy -> {
                    CompoundTag tag = stack.getTag();
                    if (tag != null) {
                        if (tag.getBoolean("active")) {
                            energy.consumeEnergy(Math.min(energy.energyStored(), 100), false);
                        }

                        if (energy.energyStored() == 0) {
                            tag.putBoolean("active", false);
                            stack.setTag(tag);
                        }
                    }
                });
            }
        }

        super.inventoryTick(stack, level, entity, p_41407_, p_41408_);
    }

 

Link to comment
Share on other sites

59 minutes ago, Maciej916 said:
int tickCounter = 0;

You cannot do this, this will be shared between all instances of your item, client and server. I would recommend you use getGameTime instead, which will increase by 1 every tick.

1 hour ago, Maciej916 said:

I have problem with item reapearing in players hand after changing capability value.

You can override shouldCauseReequipAnimation in your Item class to control this.

Link to comment
Share on other sites

1 hour ago, diesieben07 said:

You cannot do this, this will be shared between all instances of your item, client and server. I would recommend you use getGameTime instead, which will increase by 1 every tick.

You can override shouldCauseReequipAnimation in your Item class to control this.

That was easier than i expected, thank you for the advice, i'll use: 

if (level.getGameTime() % 20 == 0)

 

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • I've been trying to load a custom modpack but it's not letting me create any worlds, it keeps giving me the error "Errors in currently selected datapacks prevented the world from loading. You can either try to load it with only the vanilla data pack ("safe mode") or go back to the title screen to manually fix it". Any way to fix this without needing to remove too many mods? debug log: https://gist.github.com/antxasil/71401fb6a004a66e7248d04d8e7af589
    • I've used forge before, but I can't get it to work with 1.18+   Launcher code: [0116/225441.672:INFO:main_context.cpp(136)] CEF initialized successfully. [0116/225441.673:INFO:main_context.cpp(138)] CEF version: 85.3.13+gcd6cbe0+chromium-85.0.4183.121 [0116/225502.918:WARNING:angle_platform_impl.cc(48)] compileToBinary(257):  C:\fakepath(107,1-13): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll C:\fakepath(102,1-13): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll [0116/225508.369:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=2 [0116/225515.224:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=2 [0116/225515.353:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=2 [0116/225525.860:INFO:LauncherAppRenderer.cpp(51)] [Info: 2022-01-16 21:55:17.9581899: LauncherMain.cpp(104)] Initiated models [0116/225525.861:INFO:LauncherAppRenderer.cpp(51)] [Info: 2022-01-16 21:55:17.9592226: LauncherController.cpp(435)] Constructing launcher controller with workDir: C:\...\.minecraft, isActive: 0 [0116/225525.861:INFO:LauncherAppRenderer.cpp(51)] [Info: 2022-01-16 21:55:17.9819604: LauncherAppRenderer.cpp(172)] Javascript bridge extended in OnWebKitInitialized. [0116/225526.215:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=3 [0116/225526.238:INFO:LauncherAppRenderer.cpp(69)] OnBrowserDestroyed: id=3 [0116/225526.387:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=3 [0116/225538.615:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=1 [0116/225825.050:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=5 [0116/230007.904:INFO:LauncherAppRenderer.cpp(518)] OnContextReleased: no frame (unknown context), browser id=6     "Latest" code [16jan.2022 23:00:09.457] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, Elverea, --version, 1.18.1-forge-39.0.36, --gameDir, C:\Users\Norge\AppData\Roaming\.minecraft, --assetsDir, C:\Users\Norge\AppData\Roaming\.minecraft\assets, --assetIndex, 1.18, --uuid, 31cc9858833c43488f09a460a739f964, --accessToken, ????????, --clientId, NzcyMWNmNWYtZGZhNS00YmY1LWFkMTgtMTljYjVhNzZhODM5, --xuid, 2535453675472907, --userType, msa, --versionType, release, --launchTarget, forgeclient, --fml.forgeVersion, 39.0.36, --fml.mcVersion, 1.18.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20211210.034407] [16jan.2022 23:00:09.462] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 9.0.7+91+master.8569cdf starting: java version 17.0.1 by Microsoft
    • Hello I'm running minecraft server 1.18.1 with forge 39.0.36 in ubuntu and tried to remove a mod, even thou the server starts it throws a bunch of  "Found a missing id from the world", I did the -Dfml.queryResult=confirm but it shows also tried to run the command directly like fml confirm and it throws ¿Which is the correct solution to get rid of all the "Found a missing id from the world" in 39.0.36?
    • Game crashes as soon as i load a chunk with my MineColonies City. https://pastebin.com/VNKgTV4T With forge-39.0.7 works well. Tested on 39.0.20 with the same behaviour (crash).
    • also there is a program called bearded octo nemesis that deobfuscate any .class files(is made for minecraft) but it doesnt work
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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