Litematica (Forge)

Litematica (Forge)

336k Downloads

Allow servers' owners to block the mod

DmitryRendov opened this issue Β· 19 comments

commented

Hi,
could you please add some logic to your awesome mod to disable some part of functionality or allow server owners to block the mod completely? there's such possibility in case of an old schematica plugin you know so I wonder if you can do the same.

  • disable all the mod functionality;
  • disable schemas export;
  • disable printer (when it's ready).

It will help us with preventing our creativeness ideas stealing from the servers at least for part of MC community.

Thank you in advance!

commented

I hope this is implemented. I read through this thread and it seems many commenters don't understand the server admin perspective. We'd like to be able to say "Litematica is allowed" while also having some control of the features that are undesired in the mod. Mainly as has been pointed out, the planned printer mode, but also potentially easy place settings and the ability to save schematics. I understand that Litematica may not care at all for the admin perspective which is fair. This suggestion only really applies if you'd like to be mindful of server admins.

We are aware that there will always be work arounds as is the case for all rules. (Just because players can work around an anti-xray wouldn't mean we would just not have an anti-xray). We (server admins) would really appreciate this feature as you are in many ways replacing schematica and schematica had this feature.

commented

This issue is pretty old and some plans have changed and lots of things have been worked on since then in the main development code in 1.12.2 already.

So here are some of the things as of right now:

  • The printer is not being planned to be part of Litematica itself anymore. If I ever work on it myself at all, it will be a separate extension mod. There are currently already 2-3 different printer extension mods though, so I don't know if I'll ever bother working on one myself.
  • The Easy Place mode may or may not be ripped out into a separate extension mod as well. I'm very much undecided on that as of right now, and maybe there isn't that much point in moving it out to a separate mod (due to the next points).
  • The 1.12.2 malilib code already has support for a server overriding config options to given values. So using that the server can disable any feature or functionality that has some kind of main toggle config option or other config that effectively disables it.
  • More and more of the mods' internal functionality is being separated into individual "actions" (basically functions) that are registered into a common system in malilib. Due to a couple of these "allow the server to restrict stuff" requests in the past few days again, I'm now also thinking of adding similar functionality for the server to be able to disallow certain actions from being executed. So then the server could also disable some functionality such as disabling the action of saving a schematic, even if there is no corresponding config option related to it.

I'm still also kind of undecided on how to handle the "we don't want DRM in our mods" point of view. I would like to avoid creating a "black market of cracked mods". But the view points of server owners/admins on wanting to restrict stuff, and players wanting to do whatever they want are obviously in clear opposition here. I would side with the server admins on this though, as it's their right to decide who and how gets to play on their server, and what mods or features should be allowed.

The above mentioned config and action override system is in my mind more meant for servers where the players would obey the rules anyway, and the server automatically disabling the forbidden functionality from their mods is more of a convenience thing so that they don't have to worry about it themselves and remember which feature is allowed on which server. As none of this will ever be "secure" in any way, anyone can go and change a couple of lines of code and compile a custom version of the mods with all the restrictions removed.

commented

This is sad to hear. I just hope people's "cracked" versions obey the software license but that seems unlikely. They will probably be illegally distributed closed source on shady sites where they could include malware. I understand the server owner's point of view but I don't agree with it all. I think any protections should be server side and if it can't be done server side then they should not bother. If you don't want people cheating, use an anti-cheat plugin. If you don't want people using x-ray, use orebfuscator, if you don't want people downloading your world, keep it locked in a private file somewhere and don't share it. or only share it as screenshots/video. Because the client downloading the world from the server is required for the server to function. So i just want the freedom to take what is in memory and save it to disk. And from the point of view of a player on a creative server, I would hate if i cannot download something i have built because the server owner has decided to be lazy (or malicious) and not implement the permissions properly.

The honest players will not download the world if the server rules prohibit it. But the dishonest players will find ways around the technical restrictions if they are determined enough. If anyone has a minecraft map that really needs protecting, it's best not to share it. But if you really want people to be able to interact with the map but not download it, then set up your own Google Stadia type streaming thing for it. Because that's the only way to stop it.

commented

Thank you for the quick response.

  • The 1.12.2 malilib code already has support for a server overriding config options to given values. So using that the server can disable any feature or functionality that has some kind of main toggle config option or other config that effectively disables it.

Is there any sort of documentation on this ability to override options via malilib?

commented

@accZerek It's not final yet. At least I still need to improve/change the way you can provide that configuration from the server. In the current version you do it by putting the JSON data I think on the 4th(?) line of the MOTD string (by adding line breaks like so: Welcome to my server\n\n\n{"foo": "bar"}. But I'll probably change it so that it can accept it from any of the normally invisible lines, and also most notably I'm going to add support for reading it from a URL instead of directly from the MOTD line, as there is a length limit to the MOTD string in total. And also I think the JSON format needs to change a bit still, especially if I'm also going to support restricting running certain actions as well.

The current config format mockup is this: https://pastebin.com/0nSBy4Lj

And to clarify this is not in any released versions of the mods yet (unless you count the early 1.12.2 LiteLoader builds in the "rewrite" directory on my server, but there is no compatible version of Litematica yet with the refactored malilib code base.)

commented

Thanks for such detailed and quick answer. As I said above, I do understand all the pros and cons of this feature. I know that it's a weak protection but

  1. MC target auditory (TA) is mostly teens who is 90-95% not aware of such things like "previous not-patched version", nulled/cracked version, java coding and so one;
  2. My goal is to make thieves live is a bit complicated and such restriction along with the server rules (which is sometimes ignored by TA you know) helping me as a server owner to follow the server concepts;
  3. I do not want to block the mod entirely, I'm even OK when players build their endless farms and participate in building contests using this awesome mod)) I'd like just to have an ability to disable printer and unapproved schemas download, because of the server rules. Also, I do export personal, awesome player's buildings per their request (no worries about that @rebane2001) unless these arts are property of the server. So, this topic is a pure holy war, stop it please.

Anyway, thanks for placing this feature into your backlog, believe me many of server owners will say "thank you" for this feature. If I have enough knowledge and free time, I volunteer to make appropriate PR with such changes, since they are pretty simple in fact.

Please just don’t say this, if you don’t you don’t but this is totally false

commented

if this DRM is to be added, maybe make it so that when the DRM is enabled on the server, the client can override it ONLY if build permission is available. as in, before you save a schematic (i'm just talking about the save schematic feature), you have to prove you are allowed to place blocks in the region you are trying to save. that way you can save the stuff that you build. maybe you have to place a block in one of each corner of the region and the mod will detect if grief protection removed it.

because this WILL hurt players abilities to export their OWN things that they have worked hard to build on some creative server because the server admin did not configure it properly. or because no one made a plugin that links the DRM to the plotsquared regions. Maybe someone will make that plugin once this anti-feature is implemented. That's assuming there will even be any region specific DRM settings. e.i. making the player not allowed to export the world except for one small spot.

Of course this is a compromise. Because i don't believe the server owner is always right. Nor do i believe the player is always right but there are nuances and i don't want this DRM to be used maliciously to block players from saving their own creations.

https://www.defectivebydesign.org/

commented

Yes it's possible to implement a similar plugin/network communication system. However as was pointed out, this won't actually protect you from anything properly. I may add this type of system in the future, but it's not a priority from my point of view, also because of how useless it will be, as I will explain below.

If you have users that don't care about the server rules and would just ignore them and use forbidden tools such as Litematica, then this type of system would only help in the case of the most "technically challenged" users.

  • First of all if/when such a protection system is added, users could simply use any of the older versions of the mod before that system was implemented.
  • The mod is open source, removing/disabling that protection system would just be a few lines of code removed, and then building a custom version of the mod. And because the mod is made in Java, even being open source is of little consequence, as decompiling would also be trivial.
  • If you are worried about some builds being re-created externally, then the only viable way to protect against that is to not let anyone on the server. Those builds can also be rebuilt based on screenshots alone to some extent, and there are also other mods such as the World Download mod, which simply allow the users to download the entire chunks that the client receives.

I have no idea what the percentage of "malicious users" is that this added system would end up protecting against. But if you think about the builds of your server being some unique secret data, then even one competent enough user to use one of the above mentioned workarounds would be enough to leak the "valuable data" into the public. So from my point of view it kind of comes down to the question of how useful is it for me to spend time and effort on this kind of system that won't actually protect against anything currently (because there are existing fully unlimited versions of the mod for all "current" Minecraft versions), when I have a huge TODO list of actually useful things to improve and add to the mod for all of it's users to benefit from.

So like I mentioned in the beginning, I may add this system at some point, but it's not a priority, and in my opinion doesn't really do anything anyway...

commented

Disabling the mod entirely would just be annoying for the users; all it does is save you having to keep looking at screenshots to work out what to build. Disabling the export functionality would also just be an inconvenience, all it does is let you copy structures from the server to singleplayer/other servers, or save backups of them. Disabling easy place and printer makes sense, but that's better implemented as a server mod, as that prevents any mods from doing it, including copies of litematica modified to remove the server restriction.
Trying to implement restrictions client-side is a bad idea.

commented

@Solly-W my request is not on the client side. See the link above. It's about channel communication and some kind of negotiation between players and server owner. And yes, im aware of all the cons, but im extremely need it on my server, at least disable printer and export schematic. Thank you.

commented

afaik it's imposible to disable client-side mod from server-side. (without doing your own game launcher)

at least disable printer

litematica's printer (in current version) isn't an actual auto printer, which places blocks fast and sometimes in places like behind the player. It only prevents player from placing wrong blocks. So 1. it's also undetectable server-side and 2., as @Solly-W said - even if it would be possible, it's would only be annoying.


Now, explain motives behind blocking litematica, this way you can be recomended solution for actual problems.

For instance, if you concerned with players using litematica as x-ray tool - litematica wouldn't even be a central problem, as x-ray it'self also would work. Simplest solution to this i seen - is sending to player wrong block data for blocks that can't be seen. And then updating them to the right ones when player mined some blocks, so wrong block can be seen.

commented

guys, thanks for all your thoughts. The one I'd like to hear from this mod owner if that possible to implement the same functionality that an old Schematica mod + Schematica plugin provide.
thanks.

commented

This wouldn't really protect anyone
It'd only take a few lines of code in a hacked client to make sure a server cannot disable Litematica and there will always be more options for people who wish to do stuff (Baritone, World Downloaders etc)
I only see it hurting players, who legitimately want to download their own buildings and don't want to use a hacked client or hacked version of Litematica
Just add a rule about it on your server and trust your playerbase, because if you can't, you've got way bigger issues to deal with than just Litematica

commented

Thanks for such detailed and quick answer. As I said above, I do understand all the pros and cons of this feature. I know that it's a weak protection but

  1. MC target auditory (TA) is mostly teens who is 90-95% not aware of such things like "previous not-patched version", nulled/cracked version, java coding and so one;
  2. My goal is to make thieves live is a bit complicated and such restriction along with the server rules (which is sometimes ignored by TA you know) helping me as a server owner to follow the server concepts;
  3. I do not want to block the mod entirely, I'm even OK when players build their endless farms and participate in building contests using this awesome mod)) I'd like just to have an ability to disable printer and unapproved schemas download, because of the server rules. Also, I do export personal, awesome player's buildings per their request (no worries about that @rebane2001) unless these arts are property of the server. So, this topic is a pure holy war, stop it please.

Anyway, thanks for placing this feature into your backlog, believe me many of server owners will say "thank you" for this feature. If I have enough knowledge and free time, I volunteer to make appropriate PR with such changes, since they are pretty simple in fact.

commented

I might try to implement this at the same time as the survival printer, as that is probably one of the most legitimate things to prevent even in my opinion. That way there won't be any previous versions of the mod with that feature that they could easily use.

So like you said, it would at least prevent the majority of the non-tech-savvy users from printing on servers where it's disallowed, as they would need to at least have the attention span to figure out how to edit the code and compile a custom version of the mod.

commented

Some more arguments explaining why adding this sort of feature would be counterproductive:

  1. It may be true that MC's target audience are mostly teens without much coding knowledge. However, just one knowledgeable person can provide bypassed versions of the mod to hordes of less knowledgeable users. This would have the unpleasant side-effect of creating a "black market" in bypassed versions of the mod, which would possibly come bundled with malware, etc.

  2. Although such a feature might make thieves' lives more complicated, it would, on the whole, make everyone's lives more complicated. Having to ask an admin in order to download your own builds is a needless hassle for everyone involved, especially on smaller servers that don't have admins online "24/7" to handle requests. Overall, I think adding this feature would mean that players would have to deal with the "server bureaucracy" every time they want to download their own builds or simplify repetitive building tasks. Sure, it's not that much trouble, but I don't think it would be worth it when one considers it doesn't add much protection anyway.

commented

I am not in support of this 'feature'. I don't want the mods I use to have DRM. But if it were implemented, it could probably be bypassed by using the replay mod to record your interactions on the server. Then view the replay (which already has an offline copy of the world now) and since litematica's UI works in the replay viewer, I could export a portion of the replay world into a schematic. Or I just could someone else's world downloader. Sure, the only world downloader mod that is still updated has DRM too. But there is a server proxy tool that can act as a man-in-the-middle and download worlds from servers with no mods required.

And if any servers want to block the printer, anti-cheats can do that because they can detect improper block placements. For example, the printer from shematica did not work on the most popular minecraft server's "Build Battle" mini-game because of the server's anti-cheat.

commented

I agree in regards to blocking only the printing feature server side. Blocking any other functionality is just pointless.

commented

I think providing server side blocking of printing makes sense. Though a good chunk of the user base won't like it. Since many people use printing through many apps to cheat on servers.