Jump to content

Recommended Posts

Posted

Hello everybody, 

 

I am planning to make a mod that has a skill system as a main feature and i am not sure how to add this properly. I don´t want to mess around and just make it work, but not perfekt, it should be well done and not using forge features incorrectly. 

There will be a new kind of level and exp for the player additional with skillpoints and a skilltree.  

Are there any tips, hints, words for me or tutorials you would recommend?

 

Thanks for every answer, 

Kaneka

Posted

We cant answer everything for you but i might have a few tips.

 

First you need to define your skill system as a series of classes for instance maybe a class SkillManager to handle skills for players in the world

Second you need to define what your skills are probably a series of classes containing the skills name etc.

Third you need to be able to save and read to each Players NBT Data their skill information

Fourth each individual skill will have different ways of working most skills will probably make use of forge events so learn how to use forge events

and for individual help you can always just post topics here.

Posted

@jtsfour he should not be saving this to the player's NBT data directly, instead he should use a capability attached to the player that holds all the skill data.

Posted
  On 3/14/2017 at 2:42 PM, XFactHD said:

@jtsfour he should not be saving this to the player's NBT data directly, instead he should use a capability attached to the player that holds all the skill data.

Expand  

Why? Skill data will be very small.

Posted

Because accessing the player's NBT tag is not very clean and synchronisation is as far as I know only barely possible. If you use capabilities you can sync it yourself and accessing it is also much cleaner.

Posted

It's added by forge for Entities, ItemStacks, TileEntities and Worlds.

Posted

No, the Capability is for storing which skills the player has and what skill level they are.

 

The actual skill system can be totally separate and simply query the player's Capability when they interact with it.

 

If your skills need to store any information on a per player basis, that should be stored in the player's Capability.

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

    • Make a test with another Launcher like the Curseforge Launcher, MultiMC or AT Launcher
    • can anyone help me i am opening forge and add modpacks and then it says unable to update native luancher and i redownlaod java and the luancher it self?
    • The problem occurs also in 1.20.1 Forge, but with an "Error executing task on client" instead. I have "Sinytra Connector" installed. On 1.21.5 Fabric, there is no problem. When this happens, the chat message before the death screen appears gets sent, with an extra dash added.
    • 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.)
  • 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.