And support for the Vanilla Ender Dragon
Ipsis opened this issue ยท 30 comments
Do I add support for the EnderDragon?
It would generate quite a bit of XP, it would by VERY expensive to run the factory and it would give you the vanilla Dragon egg.
It would default to disabled and the user would have to enable it.
Not sure if I could pickup mod drops with this one.
It should take a few Minecraft days/week to do one egg at a huge RF Cost. In my humble opinion.
Love the mod btw. Great option for not having tons of mob farms on servers. This mod could help with keeping ticks and lag down! Love It!
Due to the way that the Ender Dragon works, I cannot handle it like normal mobs, so I will have to code in specific item drops for this.
So the current plan for adding support is:
- It will require a specific factory upgrade made from ..... the Dragon Egg. This forces you to fight the Ender Dragon at least once.
- It will produce 500 experience
- It will produce Dragon's Breath - not sure yet how many
- It will be very expensive - not sure how I will handle this yet. Possibly a large RF/tick over a far longer period of time.
- There will be a config option to disable this feature
Unfortunately it will not support drops from ANY other mods, as I cannot learn the drops for this specific mob.
Test coding is done, results are - with the default settings:
Tier IV altar with 1 Ender Dragon every 320ticks == 8400 RF/tick 2,688,000 RF
Tier IV altar with 8 Ender Dragons every 40 ticks == 218880 RF/tick 8,755,200 RF
So that might need tweaked a bit!
Seems like a good power consumption rate, just a little fast. Maybe make it take 25-50x as long?
I'm going to try and remove the mass and rate support for the Dragon limiting you to one. And I'll definitely be looking at making it take longer than 320 ticks.
Always good when you thought you made your code flexible and then you try to bend it too much :)
Should make the drops configurable since you cannot learn it. Some mods like Draconic Evolution count on you farming the ender dragon for specific modded drops. Otherwise, I dont really see a point, as there are easier ways to gather xp.
Configuration of the drops would probably not be trivial as it needs to know the drops and the drop chance per looting level. This goes to the level of chance to drop a specific stack size as well. So until I can think of a nice way to handle dragon mob drops it would only support vanilla.
A json file would make this rather trivial. Wouldn't be a nice interface, but for the moment, its pretty simple to have a formatted json with chance information for each item
Being able to farm the Ender Dragon would really be useful for modded items rather than vanilla.
Maybe you could make an override file that is used to update your loot table for mobs described in the file instead of learning those? This would open up a lot of mechanics for modpack creators to also modify other mobs.
It would for instance make it easy to add the dragon hearts from Draconic Evolution.
Like @KitKat31337 suggested, a JSON file would make storing and reading those informations rather simple and you would only have to update your loot table manager from that file and not call the learning events, if that mob is in it. (as far as I could see in your code)
I have added the Ender dragon to the whitelist and removed it from the blacklist and it cannot not be captured still what am I doing wrong. MC version 1.10.2. No error.
In case you didn't ready the thread. The Ender dragon does not currently work.
oh ok saw the information that the testing coding was done just thought it was in nm.
That actually opens up a decent feature there, As @CidsADev described, you could actually support this file uniformly for all mobs, and the mod checks there before trying the in-world learning. This would make the implementation uniform and simply a step in the process instead of a special code path for the ender dragon.
Since there is more discussion on this - I'm still undecided.
One of the main things about Woot was the fact that is just worked, without any support being added for mobs, drops or mods. And so far that has been fine.
The EnderDragon egg is really the only exception to that rule.
There are two things about the EnderDragon (vanilla). I need to remove it from the internal blacklist and add some custom code to generate the egg on death, dragons breath and some sane XP value.
For other drops from the EnderDragon that other mods make, it all depends on how they generate them. If it is the same as the egg, then there is an issue which would need some sort of external configuration support, which I'm not keen on. If it is standard loot dropping then it shouldn't be an issue.
Basically I need to test with Draconic to see how it generates its loot.
One thing I dont want to add is a mob-wide configurable mob loot.
So I am still considering the EnderDragon, I just haven't really made any decisions,
----- updated ----
I've been testing with Draconic and it is going to cause issues. It puts things like Dragon Hearts, directly into a player inventory, which is going to cause issues with Woot. (And of course Draconic Evolution is free do to whatever it wants).
500XP was with the standard Experience I upgrade.
The other ones will bump that up by 40% and 80%.
When you kill the EnderDragon manually you get 500XP, hence using that as the base, although if people think that is excessive I can bring that down.
Balancing the power costs in this mod without forcing manual configuration is a constant issue.
I think that the last change I made, was when using the mass upgrade, you get a discount on the RF-per-mob cost. So the first mob of the 4 or 8 costs your 100% of the cost, then each of the others costs you only 33% of the cost. That is possibly what you seen when you compare just the mass against rate upgrades.
I can tell you right away the loot generated from the dragon by draconic evolution is anything but normal. Especially the Dragon heart which si really the main part someone would want to farm.
I would very much like the ability for Woot to grow to include the ability to support unusual modded drops. By addind a config file that is checked before real game testing doesn't change the fact that woot operates automatically by default and for most scenarios. The spirit of what you said "One of the main things about Woot was the fact that is just worked, without any support being added for mobs, drops or mods. And so far that has been fine." is kept true by this. This config file ships with one entry, the ender dragon and its vanilla loot. If a server owner then wants to support modded loot from the ender dragon, or any other mod that does it loot in way that doesn't work well with the rather impressive automatic detection within the mod, they can edit the config file. Its a fringe case and doesn't need to be no touch. Additionally, should the ender dragon loot ever change, it makes your job of fixing the loot rather simple. All that being said, I see two different paths here that I see in software development all the time. Both achieve your personal goals of supporting the vanilla ender dragon, and frankly both are of equal effort on your part as well. The difference is simply in whether it puts chains around the capabilities of the mod and make it unusable for certain things, or whether it implements in it an way that can be extended to expand the capabilities of the mod without sacrificing any of what it is you are trying to do. I really do hope you change your mind, but it is your mod.
If you would like to actually discuss this and the code flow of the way I would see this working, just let me know and we can exchange contact information, hop on teamspeak or discord or such.
So I've sort of made some decisions after playing with Draconic and looking at how my code works.
(I've also read your comments KitKat31337)
I've opened a new bug to handle modded Ender Dragon - such as Draconic. #144
(This will probably be supported by a config file entry, specifically for the modded EnderDragon drops).
For this bug I'm going to concentrate on the vanilla Ender Dragon only and its current drops of the egg, dragons breath potions(?) and xp.
- vanilla EnderDragon will have a config option to turn it off - default unknown
- vanilla EnderDragon drops will be hardcoded into the mod
- vanilla EnderDragon kills will bypass the learning process
- looting will make no difference to the vanilla drops
- vanilla EnderDragon will work the same way as other mobs and be RF/tick based along with the standard rate/mass spawning upgrades
Initial code is added as follows:
Drops: 1xEnder Egg 100%, 4xDragons Breath 100%
Tier IV: No upgrades = 8320 RF/tick for 320 ticks = 2,662,400RF
Tier IV + Tier III Mass = 27040 RF/tick for 320 ticks = 8,652,800RF (8 mobs every 320 ticks)
Tier IV + Tier III Rate = 68480 RF/tick for 40 ticks = 2,739,200RF (1 mob every 40 ticks)
TIer IV + Tier III Mass/Rate = 278240 RF/tick for 40 ticks = 8,729,600RF (8 mobs every 40 ticks)
(Remember of course, that if you haven't supplied the correct amount of RF by the end of the spawn time, then you have to wait until the next spawn time, nearly doubling your RF cost. Hence the need to supply the correct RF/tick for every tick).
The single mob version also generated ~500XP in the form of 31 experience shards. This keeps it inline with the vanilla kill mechanics for multiple Ender Dragon kills.
I may add a different way to get a prism for the EnderDragon.
Possibly making you get a dragon egg and combine it with the prism, forcing you to kill the dragon at least once.(?)
Is that 500XP with the Experience III Upgrade?
Well can't say I'd decide like that, because I really like modular and dynamic approaches, but hey it's your mod :P (and I'm gonna play with it nonetheless, because it really is the best option for lag-free mob farming)
Also a strange thing I noticed here: For the same average output only a Tier III Rate Upgrade costs more than twice the RF/tick and almost three times RF/mob than just the Tier III Mass upgrade.
While that never bothered me with other mobs, it is a big deal when suddenly talking about 70000 RF/t.
Is that intended? It seems odd to me
Well the trick with draconic evolution is that you program the chaos guardian. My only one problem is that he wont stop learning.
So how do you spawn a Chaos Guardian?
I thought since I had blacklisted the EnderDragon then the Draconic dragon would be stopped as well .... clearly I was wrong! :(
I'll probably blacklist the Draconic mobs as they generate drops in a really weird way.
I've found the Chaos Guardian - opened #148 to handle it specifically.
So finally support has been added for the EnderDragon.
It will be enabled by default, but you can turn if off in the config.
The XP value used for the power calculation defaults to 500, you can change it in the config.
The XP value used for the XP drop defaults to 500, you can change it in the config.
The following vanilla drops are supported and are configured in the config file.
NO_ENCHANT : 20% Dragon Egg x 1, 80% Dragon Breath x 2
LOOTING_I : 40% Dragon Egg, 80% Dragon Breath x 4
LOOTING_II : 60% Dragon Egg, 80% Dragon Breath x 6
LOOTING_III : 80% Dragon Egg, 80% Dragon Breath x 8
The 1.11.2 release will basically get everything from 1.10.2. Hopefully I can get back to 1.11.2 in the near future.
If we could make something very useful out of the dragon eggs, then I'd say yes.