Lootr (Forge & NeoForge)

Lootr (Forge & NeoForge)

59M Downloads

[Feature Request/ Question] Loot Cooldown

Z3R0Presence opened this issue ยท 4 comments

commented

If this does not exist in a current manner, then this is essentially a suggestion; otherwise, could I be educated? :)

I want to make it so that loot containers refresh after a period of time (this can be done currently); however, I want it so that when a player opens it, the chest goes on cooldown (essentially waiting to refresh), and when it refreshes, it is available for all players apart from the previous player(s) who opened it before (kind of like the default behaviour). And maybe a message to players who attempt to open the chest while it is on cooldown to signify that it has been opened recently.

Is this a feasible feature that can be implemented or not, and what effects on TPS could this have?
I intend for this to be a better alternative for group play, as imo the base behaviour is a little too op for a server (for me at least), and a slight delay would likely be enough to help this (by spacing the retrieval of loot to a reasonable time frame).

commented

(Sorry for the ramble this reply has turned into!)

Although you use the term "refresh" here, that has a specific meaning in Lootr in that the contents of the chests refresh from the loot table after a period of time. What I believe you are talking about here is a total cooldown and no refreshing at all: the first person who opens the chest prevents others from opening the chest until the cooldown has completed?

Unfortunately, this would not be possible with the current system. Refresh is designed to allow people to gain more loot from chests, while decay specifically prevents people from looting structures that have been cleared by other groups -- neither option is really aimed towards groups.

That said, a very small minority of people have expressed concerns about the loot being overpowered when groups of people play together. Specifically these concerns are generally concerns rather than actual examples of people overly benefiting from the process: I recommend in such instances that the quality of loot be reduced via data packs and mods such as LootJS and LootIntegration.

It's also possible to reduce the loot in a chest based on the number of people who have previously opened it, using the score condition, although this is not explained readily in the documentation anywhere nor are examples made available.

Obviously, these other suggestions would penalize players not playing in groups. Yours is probably the first suggestion so far that actually takes this into account, although I would say that it doesn't prevent players intent on "abusing" the system from simply marking chests for each other and making a note of when they'd be available again -- it merely delays the access to it.

Another suggestion has been made for team-based looting, such as integration with FTB Teams, but I feel like industrious players would simply pool resources without joining a team in this instance if they really wanted to take advantage of things.

My honest thoughts about "teaming" is:

  • Most people who play on servers do not generally play in groups
  • Even if they do play in groups, they do not necessarily explore together but rather pool common resources
  • Even if people do group together to loot chests, the amount of benefit gained from such loot is potentially minimal (due to the randomness of loot tables), or only of temporary benefit (due to the amount of resources gained simply from having multiple people farming), and is comparable to people exploring separately and finding different structures and containers in a Vanilla equivalent (but without the additional chunk generation)
  • Therefore, it's next to impossible to properly balance for groups as you will either over-penalize or under-penalize depending on how dedicated groups are to looting
  • Industrious players will find a way around pretty much any limitation you try to set upon them
  • When adjusting loot based on how many people have already looted a chest, individual players would potentially be heavily penalized as a result of the actions of groups of players, thus diminishing the overall experience

In my personal experience of playing one of the Vault Hunters packs, I found that the default configurations for being in a team massively increased the amount of resources required for things despite the fact that not everyone was necessarily contributing the same amount, which encouraged me made me feel as if there was no purpose to joining a team.

  • What actual benefit are industrious, grouped players going to earn, and how is this different from any other pooling of resources?
  • Why not reward players for playing the game together?
commented

Thanks for the reply, While I get your viewpoint, when I play on a server with a group of people (especially when things like tpa / tps are enabled) I will see a trend of player A finding a location with lots of chests, nothing bad and is an enjoyable location, tells people about the loot, Player B, C, etc hear and tpa to the location, loot chests and leave. no exploration has been completed by them, no challenge etc (which is kind of what im trying to encourage by giving everyone access to the locations loot).

Having the cooldown in my opinion would discourage this to an extent, giving a solo or a group the same amount in the short term while still allowing groups to gain instanced loot just over a larger period of time. maybe even using a mod like https://www.curseforge.com/minecraft/mc-mods/respawning-structures-forge-fabric (I know that this also respawns loot to an extent but I would rather Lootr as it seems more encompassing and better suited to a server) to encourage actually exploring a structure rather than waiting for one person to do it, then just looting at the end.

This would still reward a group of players for playing together, they can still receive loot just that it also isn't too much compared to a solo player. after all most loot chests have a small chance to give something great, to begin with, or even at late game when it comes to playing modded as often when playing with Apotheosis or other bauble mods a loot chest can contain some pretty good loot and if a group of 4 can be seen as having essentially a 4x the chance of receiving a good item compared to a single player then it could be a little too much in my opinion when looking just at that.

Also if it is possible, could you refer me to something that explains more about the score-based diminishing loot? That may be more so what I'm after if a cooldown instance-based loot (one player loots, no one can access it for some time, when it goes off cooldown only people who have not opened it can access new loot) is not possible with the current setup of lootr.

commented

Thanks for the considered reply!

A lot of instances people's concerns and complaints about how imbalanced Lootr is or how powerful it is stem from fear rather than reality; this is actually the first instance (that I can think of) where someone has actually explained what's happened and why they find it problematic -- rather than just "well, something could happen".

Another instance I've thought on is where players use block entity movers to make a collection of Lootr chests that everyone can open. I'm personally opposed to block entity movers, but I don't blacklist anything by default and leave that up to server owners.

when playing with Apotheosis or other bauble mods a loot chest can contain some pretty good loot and if a group of 4 can be seen as having essentially a 4x the chance of receiving a good item compared to a single player then it could be a little too much in my opinion when looking just at that.

This is an especially good comment as I often tend to think about what is contained in Vanilla chests rather than what is injected into Vanilla chests or what is found in loot chests by other players.

Unfortunately, while the "looted stat" loot condition exists and can be used in such ways as "if X players have looted" or "if less than Y players have looted", it's more designed for a complete overhaul of loot tables rather than to deal with more complex situations like this.

Specifically, it doesn't do much with the injection of loot into loot tables with global loot modifiers, Forge's "preferred" way of injecting into loot tables: these are functions which are applied after loot as been rolled but before loot is returned, and, when not deferred to a "sub-loot table" by a mod for injection, often just adding items determined by RNG.

Something that would work is an idea I've been considering for a year or two, which is "Lootr Filters". Specifically it would be a series of functions that would be applied shortly before loot is placed into a container; these would be configurable in some fashion, and would allow reduction in stack sizes or removals of specific items depending on how many players have previously looted the chest.

This would also allow for a "Lootr Filter" that prevents items from a specific mod from being generated, which is probably one of the most common things that people ask me to do.

Unfortunately, the exact implementation is problematic: beyond simply reducing the number of items depending on the number of previous looters or removing items from specific mods, there aren't really any heuristics for determining the quality of items.

My thought was to have a series of item tags that determine the "quality" of loot. Wheat and seeds, for example, would be considered the lowest tier; copper an iron ingots a tier above that; diamond potentially several tiers higher. As they would be tag-based it could be configured by the pack-maker, although it would be considerable effort to determine all items that can potentially appear in loot tables and create tiers for them.

Finally, implementing the actual functions themselves would be problematic, as there would have to be a system for interpreting them from a configuration file, and then whatever overhead is involved in applying them.

The tl;dr of this is: unfortunately, there isn't really anything existent at the minute that could really help you.

I'm going to consider your suggestion of adding a cooldown, as that would help in your specific instance (of people using /tpa commands). What version of Lootr are you using?

commented

I should be using 1.20-0.7.33.83, on forge 1.20.1.