Looting I/II/III seems to stop processing
Opened this issue · 30 comments
Adding any of these to a Tier IV structure seems to completely halt all RF consumption and thus, causes the factory to stop producing anything, on Woot ver. 1.2.5 for MC 1.10.2. Tested with a Wither, guardian, cow, and witch configured controller. Any information I can provide otherwise?
Could you please give me the factory information.
ie. the chat output when you right click on the factory which will include the RF cost and RF/tick cost.
The output of the following would also be useful.
/woot loot Woot:none:Witch
/woot loot Woot:none:Cow
Also are you running a mod pack?
That is really strange. It is clearly not a RF per tick issue. It is almost as if the drops generated by looting enchant are being completely disabled and therefore Woot cannot learn them, of the drop event is never reaching my mod. I'll take a look at your reddit link and see if I can replicate the issue.
There's a link on the sidebar to the modpack launcher we're using, feel free to install it and test away if that'd be easier.
[16:56:57] [Client thread/INFO]: [CHAT] §9Tier IV
[16:56:57] [Client thread/INFO]: [CHAT] §aSpawning Cow
[16:56:57] [Client thread/INFO]: [CHAT] §aSpawn 1 mob(s) every 320 ticks
[16:56:57] [Client thread/INFO]: [CHAT] §aCosts 133120RF @ 416RF/tick
[16:56:57] [Client thread/INFO]: [CHAT] §7Looting I
[16:59:12] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Witch/No Enchant: 381 [ 58xGlowstone Dust @ 15.22% ][ 73xSugar @ 19.16% ][ 56xGlass Bottle @ 14.70% ][ 124xStick @ 32.55% ][ 74xGunpowder @ 19.42% ][ 27xSolidified Experience @ 7.09% ][ 14xWitch Hat @ 3.67% ][ 79xSpider Eye @ 20.73% ][ 55xRedstone @ 14.44% ][ 2xWater Bottle @ 0.52% ]
[16:59:12] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Witch/Looting I: 0
[16:59:12] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Witch/Looting II: 0
[16:59:12] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Witch/Looting III: 0
[16:59:24] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Cow/No Enchant: 36653 [ 36634xRaw Beef @ 99.95% ][ 30212xLeather @ 82.43% ][ 3558xSolidified Experience @ 9.71% ][ 19xSteak @ 0.05% ]
[16:59:24] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Cow/Looting I: 0
[16:59:24] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Cow/Looting II: 0
[16:59:24] [Client thread/INFO]: [CHAT] Learned loot for Woot:none:Cow/Looting III: 0
Yes, we're running a modpack, I can post the list here if you'd like, or you can see it at https://www.reddit.com/r/MaginateMC/comments/5dpzu1/current_mod_list/.
I'm having trouble working this one out.
Basically there is an event mechanism in Forge, that when a mob dies, the things that it drops are passed to all the mods that are interested to modify it. I listen for this event and I request to be at end of the listeners list, after other mods have had a chance to modify the drop list.
However in Forge, when you listen for an event, you can actually cancel it. Therefore once your mod get that loot event nobody else gets to see it.
I think that one of the mods in your pack is listening for the LivingDropsEvent and when the item that killed the mob has a Looting level, then it cancels the event. I therefore never get to see that event and can never learn what loot was dropped.
Trouble is, I don't know which mod is doing it!
I'm going through the mod list just now to see if anything jumps out.
Of course I could be completely wrong.
One thing you could try is to restart the loot learning process.
/woot flush all
Then let the looting Witch or Cow factory run for a few minutes and then run
/woot loot Woot:none:Witch
/woot loot Woot:none:Cow
I'm searching GitHub just now to try and find a mod that might be interfering ... bit of a slow process!
Hey @Ipsis, I was looking throu my configs and say this...
"Woot:none:CaveSpider": {
"mob": "Woot:none:CaveSpider",
"pools": [
{
"key": "NO_ENCHANT",
"samples": 225,
"drops": [
{
"item": "minecraft:string:0",
"count": 155,
"weights": [
{
"stack_size": 2,
"weight": 77
},
{
"stack_size": 1,
"weight": 78
}
]
},
{
"item": "minecraft:spider_eye:0",
"count": 56,
"weights": [
{
"stack_size": 1,
"weight": 56
}
]
}
]
},
{
"key": "LOOTING_I",
"samples": 0,
"drops": []
},
{
"key": "LOOTING_II",
"samples": 0,
"drops": []
},
{
"key": "LOOTING_III",
"samples": 0,
"drops": []
}
]
},
Interesting that it is not even trying to sample the Looting. Could that be the reason their are no drops, because Woot is not actually storing them to file? I'll test in a bit to see if manually filling out the drops for looting work.
Other random thought is do you have a set minimum of samples needed before moving from no enchant to Looting I/II/III ?
Also, went through his and mine mod list, here are the similar mods.
agricraft
baubles
blood magic
botania
chisels and bits
craft tweaker
deep resonance
extra utilities 2
fast leaf decay
forestry
guide-api
immersive engineering
inventory tweaks
iron chest
jei
jei bees
just enough resources
magneticraft
open computers
p455w0rd's things
pam's harvestcraft
plustic
project red - base
project red - intergration
project red - lighting
quark
random things
rftools
rftools control
sanguimancy
storage drawers
storage drawers extras
super crafting frame
super circuit maker
the one probe
tinker's tool leveling
tinkers' construct
woot
@bookerthegeek I only start learning loot drops when there is a factory for that mob. If you create a creeper factory with no-looting, I start learning no-looting drops. If you upgrade to looting-I, then I start learning looting-I drops. So it is very much on demand learning.
For learning I basically tap into the "loot drop" events that the Minecraft Forge codebase generates. However if someone else gets the event first and cancels it, then I can never learn what the drops are for that mob. I think that is what happening. Some other mod is grabbing the LootingI/II/III drop events and then cancelling them. I just don't know which one.
I have the same Problem, i play FTB Beyond from the Curse launcher my loot.json is equal to his.
"Woot:none:EntityHorse": {
"mob": "Woot:none:EntityHorse",
"pools": [
{
"key": "NO_ENCHANT",
"samples": 173,
"drops": [
{
"item": "minecraft:leather:0",
"count": 102,
"weights": [
{
"stack_size": 2,
"weight": 56
},
{
"stack_size": 1,
"weight": 46
}
]
}
]
},
{
"key": "LOOTING_I",
"samples": 0,
"drops": []
},
{
"key": "LOOTING_II",
"samples": 0,
"drops": []
},
{
"key": "LOOTING_III",
"samples": 0,
"drops": []
}
]
},
This is strange as I've just loaded up the mod list - aside from ProjectRed - and I get learned loot for Looting I.
Can anyone give me a screenshot of their factory showing the upgrades, so I can see if this is something trivial.
When you use an upgrade on the factory then the upgrade block will get larger and attach to the factory.
A Tier I factory will only allow two Tier I upgrades. (Looting I is Tier I, Looting II is Tier II).
I testet it just in singelplayer and there it works, on server with sponge it wont work :(
Now that is interesting, never used sponge before. I'll have to see what they do with that event.
@2000game
That factory is correctly built - you must need a lot of chicken :)
So does that mean that your server is running FTB Beyond + Sponge?
@bookerthegeek @Leonyx1175 Are you also using servers and the servers running Sponge?
Sponge does seem to wrap the Forge LivingDropsEvent and there is code in there to cancel it the event. However I cannot see why looting is special compared to no-looting.
Yes, With Sponge.
I'll Test and report back. Can confirm that the tier IV was working.
Confirmed looting on tier IV breaks my wither spawner. Going to follow the sponge ticket as well
@Ipsis Quick Question....
How would you feel if I went through and just got you a config with all the mobs in it? Separated out for each mod of course.
Then you could include it with the mod so that if Sponge is detected (until this gets fixed) we could at least have some use of the fortune upgrades? I would just test with each mod and Woot so as to not pollute the file with other mods. Or I could just make a massive list, either way is fine.
@bookerthegeek Having a pre-loaded loot.json available for download wouldn't be an issue, but I wouldn't do anything with the mod to detect sponge and load it. It would probably just live in the GitHub repository as something like example_loot/sponge_loot.json and the readme would point people at it.
From the Sponge bug it looks like someone was assigned it today, so hopefully we can get some movement on the issue.
@Ipsis Can you give a super quick rundown of where in the code (with github links) spawns / kills are handled and how in this Sponge ticket? SpongePowered/SpongeForge#1346 It will likely speed up the triage of this issue and get this off your issue tracker quicker. :)
I had a quick look, but was unable to see at a glance.
Is there a way we can learn/get/see the drops with loot I/II/II and add them manually to the config, meanwhile?
Thanx.
Well then let me rephrase and see if anyone has an answer then:
Is there a way we can learn/get/see the drops with loot I/II/II and add them manually to the loot.json file meanwhile?
Thanx.
Woot doesn't support manual drop configuration. You could in theory populate the loot.json file and the drops would then work. I think that is what Booker was suggesting earlier on.
@Ipsis It was.
@Wissi Yes. This is how I did it.
- Look at line 112 in the
woot.cfg
config, it by default isI:globalSampleSize=500
- Start your pack in single player creative
- Build Four Top of the line Woot Machines
- Set each machine to a different level of looting (i.e. 0-3). I also put the upgrade to spawn more mobs, and to have them spawn in quicker.
- Set each machine to Mob Number 1, and let run for whatever your config is set for Sample Size
- Once each looting level has run that much, set each machine to Mob number 2.
- Repeat steps 5 & 6 until all mobs are complete.
Now, once that is done, take the loot.json
from your single player instance, and set to the server.