#SPIGOT-6917
1 messages ยท Page 1 of 1 (latest)
You're effectively saying that trigger is only ever used as a datapack function caller, rather than incrementing a scoreboard objective.
That's correct. /trigger is the vanilla interface intended as a stand-in for custom commands (hence the name--it triggers data pack functionality). There is a different command dedicated to incrementing a score, /scoreboard players add. The effect of incrementing a score is not the end goal of the /trigger command in general; it's just the means by which Mojang chose to accomplish allowing us to detect players entering /trigger. That's the sole purpose of the /trigger command: something non-ops can enter in chat that can be detected in vanilla.
(read the above message before this one since i believe it should resolve an important misunderstanding)
Are they broken by this, or are they broken by a plugin manipulating the scoreboard in a way which is impossible in Vanilla? Depends on your perspective.
Consider the parallels between this (multi-scoreboard support) and multi-world support. In Vanilla a command such as /gamerule affects all worlds, whereas in Spigot it only affects the player's current world. That's roughly analagous to the situation here.
That's true, but there are three important differences between that situation and this one in your analogy:
-
Per-world game rules can be worked around: a data pack can set a game rule in multiple worlds. On the other hand, a data pack cannot work around this issue whatsoever. Normally, there's no way for data packs to detect non-ops entering anything in chat except
/trigger. But with this issue, not even/triggercan be detected, leaving us with no means to detect any chat input from non-ops at all. -
Users can naturally understand and be satisfied with game rules being per-world. In fact, that functionality is often desirable. On the other hand, for this issue, all the user knows is that
/trigger spawn, for example, is supposed to teleport them to spawn. If it instead gives an error, the user is not going to naturally understand or be satisfied with that. There's nothing desirable to be gained from it by users, data pack devs, or plugin devs. -
If this issue were fixed by making
/triggeronly interact with the main scoreboard, plugins could continue manipulating scoreboards however they want, with no loss of functionality. In fact, not a single thing would need changing in any plugin, because/triggeris not a feature any plugin uses or would have any reason to use. The same is not true of per-world game rules.
the two above messages are my replies to @last glacier's last comment on the issue (sorry theyre so long!)
(pinging you so you automatically join the thread and see new messages in it since you were participating in this discussion, but feel no obligation to reply immediately, or at all if someone else decides to chip in instead)
Moving discussion from JIRA to Discord is not helpful. When someone wants to look into this bug 5 years from now it is a hell of a lot easier to refer to the bug report than search for a thread on Discord
really? i was thinking worst case i could just link the thread from jira when we're done
I'm not against your change, I simply think it is not as one-sided as you make it out to be and careful examination is needed before changing a behaviour that has existed for 5+ years and was for one reason or another coded that way by Mojang
I don't really have anything else to add, that's why I didn't make any additional comments on the ticket
I am leaning towards making the change, but I want to investigate it further and see if anyone else makes comments
It's clearly not a time sensitive issue given it seems to be 5+ years old
ah okay, yeah thats fair. my biggest concern with the fix for this is that it wouldnt be nice to implement on spigot's end, not that it would have any negative effect for plugins or players
but thats up to you
again, I really don't think you can say that with such conviction
well i have years of experience with commands and the community surrounding commands, and thus with really weird edge cases in which devs use commands in ways theyre not intended to be used. but despite that, i would still argue there couldnt possibly be a big enough issue to make it not worth fixing in the way ive recommended. and even if a plugin is, hypothetically, using /trigger for something (even though they could and normally would be using custom commands instead), itd still be a trivial fix for them to switch to custom commands instead. plugins could work around this change, but we cant work around not having this change
You're reading into what /trigger is 'meant to do' based on what you want it to do. You may be right, but it's not a particularly convincing argument when it clearly is more general
It's not just about plugin commands
the MC wiki states 'Modifies a scoreboard objective with a "trigger" criterion. Allows non-operator players to modify their own scoreboard objectives under tightly controlled conditions. '
It seems reasonable that a player might expect the trigger command to do exactly that, modify their own scoreboard objectives
Again, I'm not against your change, on balance it probably is the correct change; but it is definitely not 100% wrong the way it is and you should recognise that
no, no player would expect that, i can assure you. theres already the /scoreboard command for that which players are much more inclined to use.
but even if they did, if a data pack (or plugin for that matter) wanted to let players modify their scores using /trigger, they very well could with or without this change, so thats not exactly relevant either way
You can't speak for every MC player. It's literally what I expect based on reading the MC wiki
even if a player tried to use it for that purpose without this issue, it wouldnt let them, because it would say "You cannot trigger that objective yet", since a data pack is required to enable the trigger
unless they manually enter /scoreboard players enable @s test before each time they want to run the trigger command. in which case they would just use the /scoreboard command to change their score in the first place, if they understand how triggers and scoreboards work well enough to know to do that
it doesnt really matter though; theres little problem with just letting this issue settle for a bit either way as you suggested. players would just have to wait a bit longer for compatibility between their favorite plugins and data packs
so if you believe thats the safer route, then im good with that
It needs to be checked, but my assumption is that this has been the behaviour for 7 years
That's what you need to understand, you're looking to change behaviour that is at least somewhat justifiable and has been in place for 7+ years
Just because you think it is stupid someone would rely on it, doesn't mean that people don't
no im not saying it's stupid that someone would rely on it; im saying nobody would rely on it
The fact that you're the first person to ever bring it up is proof of that
i understand that you dont see it the same way that i do though, and that we disagree on that
oh actually, on that note
Again, you can't say statements like '; im saying nobody would rely on it'
That is literally the only point I'm trying to make to you
You need to understand the scope of what you're asking
and i gave my argument against that. believe me when i say i understand the point youre trying to make, because in general i would agree, but i have an understanding of the full context surrounding this as this has been my full-time hobby for as long as i can remember, and in this case i believe that general truth is irrelevant. again though it doesnt matter; i dont want to waste your time discussing this side point since going with what you think is fine either way
unless you particularly want to, in which case im down, but i dont see that being something youd enjoy
heres what i was going to reply to this with:
oh actually, on that note: the reason this took so long to report is because it was actually very difficult to determine the cause of the issue. i intended to report this years ago, and data packers have been running into this issue with plugins for ages. (i can show you many examples of this if you dont believe me, haha.) but we just tell our users not to use plugins if they want to use our packs because we had no clue what caused it.
i was only able to report this due to the fact that i got a hold of a plugin developer who was actually interested in helping me figure out the cause. neither i nor any other data pack developer had ever considered bukkit would add entire separate scoreboards from the vanilla one, so that was really interesting to discover and explained a lot. the plugin developer who explained that to me is also the one who made the minimal repro thats attached to the jira issue :)
case in point, it's not because it's a rare issue, but because we couldnt figure it out well enough to make a meaningful report lol
to demonstrate that, when i shared the report on the Minecraft Commands server, i got responses such as
and
hahaha
in fact this issue is reported to us (not to you guys) like every other day. and it's even been reported to spigot twice before (https://hub.spigotmc.org/jira/browse/SPIGOT-6358?jql=text ~ "You cannot trigger this objective yet"), but their reports were bad so they were closed as invalid
Right. Again, it'll be investigated and probably fixed
I don't really think this discussion added anything to that
it hasnt! but it did let me know the reason you didnt respond, because i only started this discussion under the impression you didnt respond just because you hadnt gotten the time to yet
Well if I didn't have the time to respond then harassing me for a response probably wouldn't be the smartest move ๐
But also yes, I haven't had time to dig into the entire history of /trigger
i did not harass you for a response, did i? i repeatedly said you arent obligated to respond immediately
i wanted you to respond on your own time
The fix is obviously a dead simple one line of code, but the difficulty here isn't the fix itself
if you saw what i did as harassment then i apologize
Well its more if time was the issue moving it to discord doesn't make more time
it wasnt meant to make more time, it was just meant to possibly make communication easier. i wasnt even sure youd be in favor of the idea, which is why i asked before making the thread
even though someone else answered for you and i took their word for it
bugs on the bug tracker ๐
i figured it was possible that in-depth discussion of the fix for the bug might not be strictly better to hold on the bug tracker, but again i wasnt sure, which is why i asked before doing this. i understand now that what i was told in response to me asking that was incorrect, as you would advise continuing in jira rather than discord
but anyway, sorry if i upset you in any way by doing any of this. if you have any criticisms of the way i acted then im open to listen. and thanks for everything; i appreciate your consideration on this issue and am looking forward to the next notification for it in the future
Sure, good chat. See you on jira
ah, you copied the whole log to jira. that would work too (as opposed to a link). though as you said, this discussion didnt add anything to the issue, so i probably wouldnt have done that, but whatever ๐คท
anyway see ya
actually just realized this is impossible because we're talking about a non-main scoreboard, since the /scoreboard command can only act on the main scoreboard
so a user would not only be mentally incapable of using /trigger that way, but they would also be physically incapable too, since there would be no way for the player to enable the trigger
is that a sufficient justification that it's necessarily perfectly safe to get rid of the functionality? the functionality is completely impossible to use
@last glacier
(again i will emphasize that you have no obligation to respond to this immediately or ever; feel free to carry on with your original plan. im only pinging you because otherwise you would likely never get the chance to see it, since you left the thread)
heres the same point formulated more like a proof (more cohesive, concise, and explicit), in case it helps:
(1) the only thing that can enable an objective for a player is /scoreboard players enable
(2) a player /triggering an objective requires the objective to be enabled for the player
/scoreboard can only act on the main scoreboard
=> /scoreboard cannot act on a non-main scoreboard objective
=> /scoreboard players enable cannot act on a non-main scoreboard objective
=> a non-main scoreboard objective cannot be enabled for any player, because (1)
=> /trigger cannot act on a non-main scoreboard objective for any player, because (2)
=> /trigger cannot act on a non-main scoreboard
=> /trigger can only act on the main scoreboard or be unable to act on any scoreboard
=> making it so /trigger can only act on the main scoreboard removes no functionality
=> making it so /trigger can only act on the main scoreboard is a safe fix
and of course feel free to let me know if theres some part of this you dont understand or agree with