BradBot1 / LifeSteal

A fabric mod that implements a customisable version of the LifeSteal SMP
Apache License 2.0
2 stars 8 forks source link

No way to craft hearts #2

Closed mccannabe closed 2 years ago

mccannabe commented 2 years ago

PLEASE MAKE A WAY TO CRAFT HEARTS PLEASE PLEASE PLEASE

Stayed999 commented 2 years ago

pls add <3

BradBot1 commented 2 years ago

Just a heads up, I am working on this now but I have two things first:

  1. I need the BFAPI Markable API to make this painless and easy to use in a better more dynamic way I just released this but it is untested as of the current moment
  2. I have exams soon so that is slowing my rate of development

Oh and also: What should the default crafting recipe be, of course this will be able to be changed in the config but I need a good one as a default

TechPro424 commented 2 years ago

Just a heads up, I am working on this now but I have two things first:

  1. I need the BFAPI Markable API to make this painless and easy to use in a better more dynamic way I just released this but it is untested as of the current moment
  2. I have exams soon so that is slowing my rate of development

Oh and also: What should the default crafting recipe be, of course this will be able to be changed in the config but I need a good one as a default

4 diamond blocks, 4 obsidian, 1 totem of undying

BradBot1 commented 2 years ago

That is quite expensive

Stayed999 commented 2 years ago

I was thinking maybe a totem surrounded by like golden carrots, or an item that's not really difficult to get but it takes time

BradBot1 commented 2 years ago

Those are all super farmable so not the best

TechPro424 commented 2 years ago

That is quite expensive

That's the point. The reason I suggested it is to push players to kill others instead of just farming hearts

BradBot1 commented 2 years ago

Marks are working meaning this can now be implemented, however Minecraft doesn't have a built in recipe serializer meaning I am having to code one from scratch in order to make it controllable in the config. It shouldn't take too long now though

BradBot1 commented 2 years ago

Turns out Minecraft isn't the best for decoding a recipe, so I am going to create my own wrapper that will be used to make a recipe so that we have greater control over crafting

mccannabe commented 2 years ago

Awesome, I was thinking about something very expensive, like a totem surrounded in diamond or netherite. Is there any way you could make a command to change the recipe? I don't think that I could do it on my own. Thank you so much for responding to my original message, and your mod is working perfectly on my server!

BradBot1 commented 2 years ago

I just had a great idea for dealing with that, I can add a crafting GUI impl that looks like a normal crafting table to the player and they can set the recipe on that by simply dragging and dropping. Would that be good enough? Also BFAPI v1.2.2 will add /config stuff so you can change it all in game anyway <3

Minion8231 commented 2 years ago

I was wondering if you could make it so that players can not use crafted hearts if they have more than ten hearts. This makes it so that you actually have to kill people to get hearts and cant just farm them. Also (not to rush or anything) just wondering when craftable hearts would be implemented? Im planning on starting a server with this mod do you have a rough idea of when it will be available

BradBot1 commented 2 years ago

Like a max health item consumption? I can add it to the config once I get the recipe junk working

But for clarification, do you want:

  1. a max use on the item, so like a player can only EVER use x amount of hearts
  2. a heart value where the player cannot consume any more hearts, this would mean they can get back a heart if they loose one after being maxed etc
  3. Both?
Stayed999 commented 2 years ago

He wants 10 hearts (the default amount of minecraft hearts) to be the base.. he wants you to make it so you cannot gain hearts by crafting them unless you're under 10 hearts, for example 9, eat a heart and go to 10 but while you're at 10 you CANNOT go to 11 with craft-able hearts. He wants to make the mod more PvP focused where the only way to get past the 10 hearts base is by PvP and stealing somebodies heart.

BradBot1 commented 2 years ago

Ah I get it, so number 2. I'll add that impl then <3

Minion8231 commented 2 years ago

Yes that is what i meant. thx <3

BradBot1 commented 2 years ago

First off, sorry for the slow updates but I have recipes working + custom effects and requirements for them! Now I am going to start on the GUI to allow them to be edited easily

TechPro424 commented 2 years ago

First off, sorry for the slow updates but I have recipes working + custom effects and requirements for them! Now I am going to start on the GUI to allow them to be edited easily

No problem, take your time. And thanks for making this mod for us!

Stayed999 commented 2 years ago

Update?

BradBot1 commented 2 years ago

Sure, I finished my exams on Tuesday and since I have started working on this again. Yesterday I got the screen api to work so I can implement the gui I told you about previously for modifying custom crafting recipes, so it is still going ahead but time is sparse in-between school and work 🙇

BradBot1 commented 2 years ago

For the default recipe I have gone for image in a 2x2 shapeless configuration

What's everyone's opinion on this? It has aspects of the end and overworld meaning crafting hears can't be done before beating the dragon. However, I am thinking of changing the honey bottle for a wither Skellington skull so that there is also a nether aspect required but I am unsure

EDIT: we can also add things like the recipe costing xp levels to craft the it

TechPro424 commented 2 years ago

For the default recipe I have gone for image in a 2x2 shapeless configuration

What's everyone's opinion on this? It has aspects of the end and overworld meaning crafting hears can't be done before beating the dragon. However, I am thinking of changing the honey bottle for a wither Skellington skull so that there is also a nether aspect required but I am unsure

EDIT: we can also add things like the recipe costing xp levels to craft the it

Make the honey to a blaze rod, as dragon's breath is already hard to get Wither skeleton skulls are way too hard

BradBot1 commented 2 years ago

Dragons breath can be gathered quite easily once your in the end so in that fashion a blaze rod would make sense

EDIT: what about adding an xp cost to the recipe i think maybe 5 levels would make it more difficult to get lots of without being constantly active

TechPro424 commented 2 years ago

Dragons breath can be gathered quite easily once your in the end so in that fashion a blaze rod would make sense

EDIT: what about adding an xp cost to the recipe i think maybe 5 levels would make it more difficult to get lots of without being constantly active

Agreed to both. This is a perfect balance.

BradBot1 commented 2 years ago

I believe that I have it all working now so I can release v2 after I do some last tests of individual features (will be tommorow after writing docs)

But for now, here's a rundown on what's new:

Any item with the mark lifesteal or health will award the player a heart (or whatever healthToLooseOnDeath is set to on the config) You can get a marked item like so: /give @s minecraft:dirt{Marks:["health"]} This enabled you can create custom items that award health n stuff if you wanted, also the marks listened for are customisable in the config

Custom recipes can now rely on a user having a given amount of health and award health when lifesteal is installed, I'll write all these up when the I do the docs for this version but for example gainhealth will award the player health once they craft a recipe, idk why you would use it but its there. The more useful ones are the recipe restrictors that enable locking a recipe to a certain amount of gained health, for example losthealth< will allow a recipe to only be craftable when a player has gained a given amount of health (remember that we store lost health not gained health, so gained health is negative hence less than checks) Also you could use the result loosehealth to make it cost a heart to craft one, making it only a store of health but that's all up to you

To-do with modifying the recipe, until I have added the gui it will be a little hard, simply put though: This is the json you will see by default

{
  "id": "lifesteal:health",
  "recipe": {
    "type": "minecraft:shapeless_crafting",
    "group": "minecraft_apple",
    "icon": {
      "id": "minecraft:apple",
      "Count": 1,
      "tag": {
        "Marks": [
          "lifesteal"
        ],
        "display": {
          "Name": "{\"text\":\"Health\"}"
        }
      }
    },
    "requirements": {
      "xp": 5
    },
    "results": {
      "xp": -5
    },
    "ingredients": [
      "minecraft:totem_of_undying",
      "minecraft:poisonous_potato",
      "minecraft:blaze_rod",
      "minecraft:dragon_breath"
    ]
  }
}

Don't change id unless you want duplicate recipes. Here you can see the use of requirements and results that dictate custom features, (there will be docs on all the different types (I have made them just not committed yet, once they are I will post a link to them here)) we use xp to make it cost five levels, the requirement is just there to stop us going into negative levels On a shapeless crafting recipe ingredients is just a list of identifiers of crafting materials (click me for a list of those) Icon is the item that will be given to the player however its in the nbt format

The crating gui isn't done yet as I plan for that to be a bfapi thing. I plan do it soon but for now to modify the recipe you will simple have to go into the recipes directory on your server and open

There is now a command (you can customise permission, op level, aliases, if to register and response messages like usual) that allows you to modify a players lost health if you have their UUID (you can use also the username if they are currently online)

The banning module is no longer there, instead a player is now just kicked on join allowing for their health to be modified by the aforementioned command meaning they can be easily brought back. This also means that the message they are sent on kick is now text rather than a string resulting in you being able to use colour n stuff if you so choose

Also thanks for waiting while I do all of this, It should be out tomorrow with some better docs then this little write up <3

BradBot1 commented 2 years ago

And 25 days later we are done! Imma add to things like modrinth now <3 + dont forget to update bfapi