Jump to content

AnvilUpdateEvents don't fire if the middle slot is empty


leod

Recommended Posts

Line 149 in RepairContainer.java (in 1.15.2, I don't know about 1.16) checks whether the middle slot in the anvil GUI is empty, and only if it isn't the onAnvilChange ForgeHook is called, which makes is making it pretty impossible for me to implement anvil recipes that don't need an item in the center. I've had to resort to making a coremod to implement this, but I don't think it should be that way.

 

The relevant lines look like this:

if (!itemstack2.isEmpty()) {
    if (!ForgeHooks.onAnvilChange(this, itemstack, itemstack2, this.outputSlot, this.repairedItemName, j)) {
        return;
    }

I don't think much of anything would break if the ForgeHook was to be moved in front of the first line to allow events to be sent with empty center slots.

 

If you're wondering why I would want to do what I'm doing, it's a flavor thing for the mod I'm working on and also lets me make it cost XP to get the output item, to keep it out of the early game.

Link to comment
Share on other sites

I’m pretty sure that the anvil is supposed to work that way (with a center item, since the anvil combines the two).

If you want a crafting method that turns one item into another at the cost of experience, you should make a custom crafting block instead.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

I don't think I should have to create a custom crafting block when the anvil fulfills exactly what I need and the restriction is purely a technical one. You can already rename Items in it without a center item present, so it's not like the anvil is hardcoded to never do anything at all without a center item.

Link to comment
Share on other sites

On 7/5/2020 at 10:21 PM, leod said:

I don't think I should have to create a custom crafting block when the anvil fulfills exactly what I need

It doesn't fulfill your need, since it doesn't update when the middle item changes.

 

I would say that since anvil is almost never used without a middle item (renaming is its own case), it would bring extra fuss (unnecessary event subscriber calls) to fire the event subscriber when the middle item changes. It can be made to do stuff without a center item, but it shouldn't design-wise IMO.

However you could propose a PR and see what others think.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hi, I'm trying to hide specific vanilla effects such as levitation or slow falling from the inventory GUI, but I haven't been able to figure out how to do this. I need this because they are triggered by another effect and I don't need them all showing up. Unfortunately, I don't know of any mods that include this feature, and I couldn't find any documentation on the process. I've already looked into the IClientMobEffectExtensions interface, but I'm uncertain about how to implement it in my own effect, let alone in any existing vanilla effect. Please help I am using Forge 47.2.0. for Minecraft 1.20.1
    • Also wondering how to create these manually.  First time creating a forge server.
    • Exception in thread "main" java.lang.IllegalStateException: Could not find forge-1.19-41.1.0 in classpath at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.targets.CommonDevLaunchHandler.lambda$findJarOnClasspath$3(CommonDevLaunchHandler.java:90) at java.base/java.util.Optional.orElseThrow(Optional.java:403) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.targets.CommonDevLaunchHandler.findJarOnClasspath(CommonDevLaunchHandler.java:90) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler.processStreams(ForgeUserdevLaunchHandler.java:17) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.targets.CommonUserdevLaunchHandler.getMinecraftPaths(CommonUserdevLaunchHandler.java:32) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator.scanMods(MinecraftLocator.java:36) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:74) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:166) at MC-BOOTSTRAP/fmlloader@1.19.2-43.3.5/net.minecraftforge.fml.loading.FMLServiceProvider.beginScanning(FMLServiceProvider.java:86) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:112) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$8(TransformationServicesHandler.java:100) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622) at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:102) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:55) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.Launcher.run(Launcher.java:88) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.Launcher.main(Launcher.java:78) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) at cpw.mods.bootstraplauncher@1.1.2/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) I tried to make a minecraft mod but this error appears every time I click on the RunClient button and it won't start. Does anyone know how to get rid of this? (btw. I'm using version 1.19.2-43.3.5) https://pastebin.com/mQ3q4SwW
    • Maybe switch to a pre-configured modpack and use it as working base Add new mods one by one
    • Pure CBD Gummies Dr Oz:Pure CBD Gummies Dr Ozare designed with the help of natural and herbal ingredients and you will get 100% safe and powerful results. This formula is chemical-free that helps you gain many profits at the same time. Some of the main ingredients are discussed below.   ➥ ✅Official Website: https://gummiestoday.com/Pure-CBD-Gummies-Dr-Oz/ ➥ Product Name: Pure CBD Gummies Dr Oz ➥ Benefits: Pure CBD Gummies Dr Oz Helps you to get Pain Relief ➥ Healthy Benefits :Control your hormone levels ➥ Category:Pain Relief Supplement ➥ Rating: ★★★★☆ (4.5/5.0) ➥ Side Effects: No Major Side Effects ➥ Availability: In Stock Voted #1 Product in the United States   ✔Hurry Up – Limited Time Offer – Order Now✔ ✔Hurry Up – Limited Time Offer – Order Now✔ ✔Hurry Up – Limited Time Offer – Order Now✔   Official Facebook Page:- https://www.facebook.com/GreenVibeCBDGummiesForDiabetes https://www.facebook.com/PureCBDGummiesDrOzHowToUse   FOR MORE INFO VISIT OUR WATCH OTHER LINKS :- https://groups.google.com/g/mozilla.dev.platform/c/C4eizlPz3IA https://groups.google.com/a/chromium.org/g/chromium-reviews/c/C4Wqjz6oMOI https://groups.google.com/g/comp.protocols.time.ntp/c/ud96F7mnPIE https://groups.google.com/g/comp.os.vms/c/IfkdfXo_S70 https://groups.google.com/g/drone-dev-platform/c/oOY2NerylW8 https://groups.google.com/g/comp.mobile.android/c/EkBeTeULnTc Other Reference Pages JIMDO@ https://pure-c-b-d-gummies-dr-oz.jimdosite.com/ GROUP GOOGLE@ https://groups.google.com/g/pure-cbd-gummies-dr-oz-advantage/c/YL6pkh7EPac GOOGLE SITE@ https://pure-cbd-gummies-dr-oz-formula.company.site/ GAMMA APP@ https://gamma.app/docs/Pure-CBD-Gummies-Dr-Oz-Beware-Must-Watch-Exposed-Side-Effects-Off-340voj0byn1w4xd Company sites@ https://pure-cbd-gummies-dr-oz-formula.company.site/   Recent Searches:- @@PureCBDGummiesDrOz💲 #PureCBDGummiesDrOzReviews,🥳🥳 #PureCBDGummiesDrOzLifestyle,☘️☘️ #PureCBDGummiesDrOzBenefits,👌 #PureCBDGummiesDrOzBuy,😱😝😱 #PureCBDGummiesDrOzCost,☘📣 #PureCBDGummiesDrOzIngredients,💥💞 #PureCBDGummiesDrOzOrder,👌👀😍 #PureCBDGummiesDrOzPrice,💲 #PureCBDGummiesDrOzWebsite,🔥🔥 #PureCBDGummiesDrOzResults,🔥🔥 #PureCBDGummiesDrOzSideEffects,😱😝😱 #PureCBDGummiesDrOzAdvantage,👌👀😍 #PureCBDGummiesDrOzOffers,,☘📣 #PureCBDGummiesDrOzSupplement,😱😝😱 #PureCBDGummiesDrOzBuyNow,,☘️☘️ #PureCBDGummiesDrOzFormula,💥💞 #PureCBDGummiesDrOzHowToUse,🥳   Our Official Blog Link Below:- BLOGSPOT==>>https://pure-cbd-gummies-dr-oz-ingredients.blogspot.com/2023/12/blog-post.html Sunflower==>>https://www.sunflower-cissp.com/glossary/cissp/7042/pure-cbd-gummies-dr-oz-reviews-warning-controversy-2023-dont-buy-before-reading Lawfully ==>>https://www.lawfully.com/community/posts/pure-cbd-gummies-dr-oz-is-fake-or-real-read-about-100-natural-product-nSNgMm5NlZCC0hvT-5tGWA%3D%3D DIBIZ==>>https://www.dibiz.com/morrislymorales   Medium==>>https://medium.com/@morrislymorales/pure-cbd-gummies-dr-oz-a-review-of-the-most-trusted-and-effective-cbd-product-in-the-market-71cfba6319ca   Devfolio==>>https://devfolio.co/projects/pure-cbd-gummies-dr-oz-3341      
  • Topics

×
×
  • Create New...

Important Information

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