Jump to content

Recommended Posts

Posted

Hi!

 

As you might know, almost all methods in Block/Item classes are public. Although, many of them in reality provide only shortcut overloads, like "idDropped", which is called only by other Block's method that returns actual list of ItemStacks to drop.

So my question is, is there some list of methods that are part of true public layer, i.e. they're called by Minecraft engine? This would make life much easier, so you don't need to override tons of aux methods that won't be called anyway.

 

Thanks.

 

EDIT: fixed terms; not overload, override of course

Posted

__          ___    _      _______

\ \        / / |  | |  /\|__  __|

  \ \  /\  / /| |__| |  /  \  | | 

  \ \/  \/ / |  __  | / /\ \ | | 

    \  /\  /  | |  | |/ ____ \| | 

    \/  \/  |_|  |_/_/    \_\_| 

                                   

                                   

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

I hope you meant "overriding" instead of "overloading".

Overloading wouldn't do anything in most cases, since you can't tell Minecraft to call an overloaded method.

Overriding on the contrary, allows many things, is commonly the easiest way and one of the basic principle of Java.

I can't believe you are complaining about overriding.

 

If the ModingAPI was perfect, you would only have to override.

Posted

@GotoLink Thanks for pointing typo. Of course, override. Fixed OP.

 

Although, the question persists. Is there any list of methods that are part of true public layer, excluding ones that are public and used only by Block/Item classes themselves?

Posted

I think you should be more specific.

I am sure you already searched for "public" keyword yourself, or used call hierarchy to found where calls to your method(s) of interest are mainly done.

In the most general of case, I would say that what you are searching doesn't exist.

There is no "public class CoreEngine ..."

Posted

Okay, from your responses I understood that there's no such thing.

I thought that 'public layer' is a rather stable term. My bad then.

Anyway, my initial question arose from multiple methods in Block class that are declared as public and used only internally.

Posted

Much of them are used by other Classes like the world section of minecraft during the rendering and gameplay process. They need to be public to be visible for these classes. You can find them by searching with eclipse for them. You can also override them to change their behaviour.

PM's regarding modding questions should belong in the Modder Support sub-forum and won't be answered.

Posted

Not all of them actually. That's the source of my initial confusion.

 

I've been imagining how pretty this API could be revamped and mapped onto component-based model. Like add Collidable component to block to make it collidable. Ah, dreams, dreams :) It would require to write Minecraft almost from zero though :)

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

    • @Tsuk1 Also, new note, you can use blockbench to make the custom item model for when it is not on the head.   EDIT: Funny story, I am making a mod similar to yours! Mine is called NorseMC.
    • @Nood_dev Could you send a screenshot of your weapon code? Here is the one I made (for a dagger): The specific UUID does not matter, just that it is the same every time, which is why UUID#randomUUID does not work public class DaggerItem extends TieredItem implements Vanishable { protected static final double REACH_MODIFIER = -1.5D; protected final Multimap<Attribute, AttributeModifier> defaultModifiers; protected final UUID BASE_ATTACK_REACH_UUID = UUID.fromString("6fe75b5c-9d1b-4e83-9eea-a1d5a94e8dd5") public DaggerItem(Tier pTier, int pAttackDamageModifier, float pAttackSpeedModifier, Properties pProperties) { super(pTier, pAttackDamageModifier, pAttackSpeedModifier, pProperties); this.attackDamage = (float) pAttackDamageModifier + pTier.getAttackDamageBonus(); ImmutableMultimap.Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder(); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", this.attackDamage, AttributeModifier.Operation.ADDITION)); builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", pAttackSpeedModifier, AttributeModifier.Operation.ADDITION)); // THE ONE YOU WANT: builder.put(ForgeMod.ENTITY_REACH.get(), new AttributeModifier(BASE_ATTACK_REACH_UUID, "Weapon modifier", REACH_MODIFIER, AttributeModifier.Operation.ADDITION)); this.defaultModifiers = builder.build(); } @Override public Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(EquipmentSlot pEquipmentSlot) { return pEquipmentSlot == EquipmentSlot.MAINHAND ? this.defaultModifiers : super.getDefaultAttributeModifiers(pEquipmentSlot); } }
    • https://images.app.goo.gl/1PxFKdxByTgkxvSu6
    • That's what we'll try out. I could never figure out how to recreate the crash, so I'll just have to wait and see.
    • Ok, I updated to the latest version and now the models are visible, the problem now is that the glowing eyes are not rendered nor any texture I render there when using shaders, even using the default Minecraft eyes RenderType, I use entityTranslucent and entityCutout, but it still won't render. Something I noticed when using shaders is that a texture, instead of appearing at the world position, would appear somewhere on the screen, following a curved path, it was strange, I haven't been able to reproduce it again. I thought it could be that since I render the texture in the AFTER ENTITIES stage which is posted after the batches used for entity rendering are finished, maybe that was the reason why the render types were not being drawn correctly, so I tried injecting code before finishing the batches but it still didn't work, plus the model was invisible when using shaders, there was a bug where if I look at the model from above it is visible but if I look at it from below it is invisible. So in summary, models are now visible but glowing eyes and textures are not rendered, that hasn't changed.
  • Topics

×
×
  • Create New...

Important Information

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