Jump to content

Recommended Posts

Posted

Hey,

 

So I am fiddling around with the block bounds and also collisions boxes, however is there anyway that you can add more that one hit boxes so that once they are right clicked, they are able to call their own version of onBlockActivated or something similar.

 

An example of this would be the ender tanks and ender chests that are from the block ender storage. On the ender tank you have the colour codes that link tanks up and also the option to have the tank send or receive.

Posted

Yup there certainly is a way to do it. Have a look at how BuildCraft allows you to place facads and pipe plugs. The idea on which this is based off has the name raytracing. Basically you're tracing the line the player's reticle is following until you hit the block.

 

https://github.com/BuildCraft/BuildCraft/blob/master/common/buildcraft/transport/BlockGenericPipe.java

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Posted

I already looked at BuildCraft's implementation. It was already quite complicated when they had all the different pipe additions (plugs, facads, gates, ...). Now that they made it easier to put on facads it became even more complicated. I suggest that you take a look at the mod you refered to in the beginning: Ender Storage. It's also open-source after all. Link to the dev version download: http://adf.ly/WAp6z . I must admit I haven't looked at this source yet.

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Posted

You shouldn't navigate into the codechicken folder from the root of the download. You should go into src, and then the codechicken folder. That's the way ChickenBones appears to package every dev version he puts out. Now I've looked for you and this indeed is the case. The complete path to EnderStorage's block class: /src/codechicken/enderstorage/common/BlockEnderStorage.java . To be specific look at that class its onBlockActivated() method.

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Posted

That, or you can find out how this method works and implement your own version if you don't want to rely on CodeChickenCore ;).

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Posted

lol. I wish, I'm not that good at coding yet. I'm still relatively new to modding, however I'm now starting to venture into the more complicated side of Minecraft and coding on the whole. You can't beat around the fire forever.

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

    • Well, as usual, it was user error. Naming mismatch in sounds.json.  Please delete this post if you find it necessary. 
    • Hello Forge community.  I'm running into an issue with a mod I'm working on.  To preface, I can call /playsound modId:name music @a and I can hear the sound I registered being played in game. Great!  However, I cannot get it to trigger via my mod code.    Registration: public static final RegistryObject<SoundEvent> A_WORLD_OF_MADNESS = SOUND_EVENTS.register("a_world_of_madness", () -> new SoundEvent(new ResourceLocation("tetheredsouls", "a_world_of_madness")));   Playback: Minecraft mc = Minecraft.getInstance(); if (!(mc.player instanceof LocalPlayer) || mc.level == null) return; LocalPlayer player = (LocalPlayer) mc.player; BlockPos pos = player.blockPosition(); SoundEvent track = ModSounds.A_WORLD_OF_MADNESS.get(); System.out.println(track); System.out.println(pos); System.out.println(player); // play exactly like the tutorial: client-only, at the player's position try { mc.level.playLocalSound( player.getX(), player.getY(), player.getZ(), track, SoundSource.MUSIC, // Or MASTER if needed 1f, 1f, false ); System.out.println("[DEBUG] playSound success: " + track.getLocation()); } catch (Exception e) { System.err.println("[ERROR] Failed to play sound: " + track.getLocation()); e.printStackTrace(); } Sounds.json:   { "theme_of_laura": { "category": "music", "sounds": [ { "name": "tetheredsouls:a_world_of_madness", "stream": true } ] } } Things I have tried: - multiple .ogg files. Short .ogg files (5 seconds, <100KB).  - default minecraft sounds imported from import net.minecraft.sounds.SoundEvents; These work given my code. No idea why these are different.  - playSound() method, as well as several others in past iterations that did not work   I would be forever grateful if somebody could point me in the right direction. I've looked at several mod github repositories and found extremely similar code to what I'm doing. I've also found several threads in this forum that did not solve my issue. I just cannot figure out what I'm doing differently, and why I'm able to queue sounds manually with playsound but the code won't play it (despite confirming the code is being run with the debug statements.)
    • Delete the tensura-reincarnated/common.toml file (config folder)
    • Jesus Christ is God's Son, Jesus died for our sins and rose from the dead to Give us eternal life. Ask Him to also heal your body.
  • Topics

  • Who's Online (See full list)

  • Create New...

Important Information

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