Budschie / BudschieMorphMod

This is a port of the morph mod to forge 1.16.5
MIT License
11 stars 9 forks source link

Morph Mixins #39

Closed nivthefox closed 2 years ago

nivthefox commented 2 years ago

I'm looking at combining your Morph mod with Mana and Artifice. The goal was to use MnA Manaweaving or Rituals to allow the player to pop in some items, do the ritual/manaweave, and get back the appropriate Morph. In this way, I can balance Morphs a little more carefully on my server.

This leaves me with two questions:

  1. Is it possible to GENERATE a Morph entity as part of a datapack function? Or could using an item give a player a morph?
  2. Is it possible to DISABLE morphs dropping on creature kill?

If these two things are possible, then I can see a lot more adoption for this mod as people work out how to combine it with other magic mods. I know I'd be using it immediately in that instance.

Budschie commented 2 years ago

Well, as for your first point which you mentioned, it is in fact possible to create a morph entity with the /summon command. For a skeleton horse for example, you would need this command to summon it as a morph entity:

/summon bmorph:morph_entity ~ ~ ~ {MorphData:{id:"fallback_morph_item", additional:{id:"minecraft:skeleton_horse"}}}

You can also modify the NBT data of the summoned morph entity by simply putting the tags of the entity into the "additional" NBT compound tag. A good example of this would be an armorstand morph with no base plate and arms:

/summon bmorph:morph_entity ~ ~ ~ {MorphData:{id:"fallback_morph_item", additional:{id:"armor_stand", ShowArms:true, NoBasePlate:true}}}

It is important to note however that these NBT changes will disappear if you don't tell the mod that for example the NoBasePlate tag is significant for the appearance of the armor stand. To state that you want to track the NoBasePlate tag or the ShowArms tag so that they show up properly in your morph list, create a file at "path-to-your-datapack/data/bmorph/morph_nbt/your-file-name.json". It's necessary to place the morph_nbt directory into the bmorph folder, as the JSON files only get loaded if a mod with the mod id of the directory (in this case bmorph) is present. Then copy and paste this bit of JSON into your newly created file and replace the according values with your own ones:

{
    "entity_type": "minecraft:armor_stand",
    "tracked_nbt_keys": [ "NoBasePlate", "ShowArms" ]
}

After doing that, everything should be working perfectly. If not, or if you need help or advice, please contact me via this issue.

Moving on to your second point, it is currently not possible to disable morph drops, however, I am going to release a new version of the mod very soon, so I'm probably going to add this feature in with a game rule. I'm probably also going to remove the weird quirk where your JSON data only gets loaded if you choose specific names for your datapack, as that is admittedly a very dumb idea.

Anyways, that's it, I hope I could help you. -Budschie

Budschie commented 2 years ago

(I should probably create a video tutorial to explain how to create data packs for this mod)

nivthefox commented 2 years ago

Nice. This is what I was hoping for. Now to get MnA to add a way to trigger a function on manaweaving. Until then, I may have to create a mod that adds a ritual which does it.

Either way, I think I have what I need. Thanks so much for your quick and very informative reply.

Budschie commented 2 years ago

You're welcome.

Budschie commented 2 years ago

By the way, if you need some more examples, you can look into the builtin datapack of this mod: https://github.com/Budschie/BudschieMorphMod/tree/master/src/main/resources/data

It should contain plenty of JSON examples, so that might be helpful to you.

nivthefox commented 2 years ago

Okay, I've now successfully got MnA giving players Morphs as a response to a Manaweaving recipe. This is all I ever wanted. Now all that's left is the ability to disable drops.

How can I help you with this? I know Java. I'm willing to make a pull request. 8)

Budschie commented 2 years ago

Don't worry, I've already implemented this feature in form of a gamerule yesterday in this commit: https://github.com/Budschie/BudschieMorphMod/commit/88bf506a52a34716b9e46d8c5eb6e4f3c8f20332 If you want, you could of course build the project from source, but I'm probably going to release a new version of the mod today or tomorrow, so you don't really have to do that.

nivthefox commented 2 years ago

Exciting! I will use my time setting up the full datapack for this, then. Thanks so much for making this change. I'm super excited for what's coming.

I'll close out this ticket now.

Budschie commented 2 years ago

Alright, the new version of the mod is now out on GitHub and Curseforge. https://github.com/Budschie/BudschieMorphMod/releases/tag/v1.16.5-3.0.0