Jump to content

Recommended Posts

Posted

I asked on here if air blocks were actual block-objects that could have methods and properties some time ago, and the answer I got was "yes".

 

Now I'm trying to add some code to the air block, but I can't seem to... find it. It isn't really defined anywhere. Material.java defines the material, but there doesn't seem to be any object representing a specific air block that I can mess with.

 

Does anyone have any idea how to make this work? This is the first thing I've ever done with Forge besides doing tutorials, and I don't really understand how anything works.

Posted

That is a bit of problem if you need a specifc air block instance, but if you want to check if its an air or not, world class provides function just for that

World.java > 431 Line.

Heres cutout of it.

 

 

    /**
     * Returns true if the block at the specified coordinates is empty
     */
    public boolean isAirBlock(int par1, int par2, int par3)
    {
        int id = getBlockId(par1, par2, par3);
        return id == 0 || Block.blocksList[id] == null || Block.blocksList[id].isAirBlock(this, par1, par2, par3);
    }

 

 

 

Hope I helped in any way,

one way you could do this is check every users location via server tick event and check as whatever they are in specifc biom and are in air or whatever and then just do what ever you wanted with them.

Just an idea....

~I was here~

Posted

Yeah, I saw that, but unfortunately it isn't very helpful. I need the air to actually do something. It's for a mod that adds air temperature simulation to the game, so I mostly need to add one int holding the temperature value and one method doing the simulation.

Posted

just check to see if hasNoSky is false. minecraft use this boolean to create a random spawn point in surface :) (u can take a look how minecraft create this spawn point, because it only creates at surface, but the better way it just see, if hasNoSky returned false, u do the temperature things, the most real way, its getting the biome temperature and checking if is raining or not.

Posted

air blocks are inifnity, they still generate even if the world stop generating

 

... Eh? How does that work?

 

I'm planning on only doing the simulation for air blocks that can't see the sky, of course.

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

    • You can check mod compatibility remove new mods and test them one by one.
    • @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.
  • Topics

  • Who's Online (See full list)

    • There are no registered users currently online
×
×
  • Create New...

Important Information

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