Replay Mod Forums

This Thread is locked - no new replies are allowed.

Locked Replay Restriction for Mineplex [Locked]
    • User
    • 132 forum posts
    User738
    #1

    Feb 15 16, 07:25 AM | Last edited: Feb 15 16, 07:26 AM

    So, though this rule has been applied for a while on Mineplex, however, recently there have been instances where 3 YouTubers got a Sev1 ban for using the ReplayMod and uploading footage with ReplayMod footage, or evidence of them using it, here is one of the three I could find:





    There also has been a thread discussing this incident, with direct response by the Rules Committee on Mineplex.

    I know that there is a Replay Restriction Plugin being worked on for Networks to solve this exact issue, however, the last updates/progress made to it was since August of last year:



    By making this thread, I hope I can get this out to CrushedPixel, so once he comes back from his trip to some convention, he is well aware of the priority of having this thing done, otherwise the ReplayMod will not gain as much success/popularity as it very well could if it can be used on a server holding thousands of players at a time.

    Good day!


    • Moderator
    • Beta Tester
    • 212 forum posts
    User26
    #2

    Feb 15 16, 02:16 PM | Last edited: Feb 15 16, 02:30 PM

    Thank you @User738 for this well made thread regarding important issue. Unfortunately i feel that development of the Replay Mod slowed "a bit" since last update. I still hope to see Replay Restrictions implemented soon.

    EDIT: hi CrushedPixel


    • Developer
    • 1883 forum posts
    User10
    #3

    Feb 15 16, 03:35 PM

    Just wanted to say that the current implementation of the RMRs is already sufficient for plainly banning the ReplayMod on one part of a network but allowing it on another one.

    If a player on the Mineplex Network plays normally, nothing has to be done. Once they join the clans server, all that has to happen is for the server to send a simple Plugin Message to the client, stating that a replay restriction is now active. It doesn't matter which one they could even make one up either way, once the player gets to that point in the replay, the replay viewer will just quit stating that it encountered an unknown restriction (see RMR specs).
    This way players can just play normally and get replays for that. When they wish to play on a clans server, all they gotta do is nothing (though reconnecting to create a new replay might be useful for them later). Any replay that enters a Clan server is unusable from that point onward until enforced replay restriction is implemented.

    That should prevent players from accidentally no-clipping in other bases and seeing what they weren't supposed to see.
    One could argue now that a simple modification of the mod in one single line is sufficient to circumvent the restriction and view the replay nevertheless but that isn't the point of RMRs. A user intending to cheat might as well just use a world downloader or a real no-clip mod.


    • User
    • 132 forum posts
    User738
    #4

    Feb 16 16, 02:03 PM

    I talked a bit with the RC regarding your point of "They might as well just use a world downloader or a real no-clip mod". And whilst I agree with what you have stated, they state otherwise:
    "And for this exact reason, we do not approve the use of the World Downloader or a real no-clip modification. Sure they are near impossible to detect, however we still do not condone the use of these utilities despite whether players are caught using them or not. By fully approving a mod, this means we fully approve ever little feature this mod has to offer throughout the network, however it does cause an issue on one of our gamemodes, therefore it will stay unapproved unless a solution is provided.

    So @User10, it seems you have typed up a solution to restrict usage of replays on a specific server, however, I did not quite understand the process. Could there be a video or some sort of guide to explain what you have stated, because I am not the wisest when it comes to coding :P

    However, it looks like a solution nevertheless, so if I could get some guide on how this is possible, I will try to replicate the process, and then bring it up with the Rules Committee on Mineplex.

    Thanks for your time @User26 & @User10 :)


    • Developer
    • 1883 forum posts
    User10
    #5

    Feb 16 16, 03:59 PM

    I can absolutely understand their point about approval of a mod.

    There is nothing you can do about restricting ReplayMod usage on their server. They'll have to do so.
    All they have to do is send a single packet (the packet is described in the specs pio linked) once a player joins the Clans server. That's less than 10 lines of code using the Bukkit API or probably even simpler when using BungeeCord.
    IIRC (it's been quite some time since I've last used Bukkit) it's somewhere along these lines:
    server.registerPluginChannel("Replay|Restrict");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(bytes);
    out.writeByte(21); // Length of "only_recording_player"
    out.writeBytes("only_recording_player".getBytes(Charsets.UTF8));
    out.writeBoolean(true);
    player.sendPluginMessage("Replay|Restrict", bytes.toArray());



    • User
    • 132 forum posts
    User738

    in response to User10

    #6

    Feb 17 16, 08:30 AM


    I can absolutely understand their point about approval of a mod.

    There is nothing you can do about restricting ReplayMod usage on their server. They'll have to do so.
    All they have to do is send a single packet (the packet is described in the specs pio linked) once a player joins the Clans server. That's less than 10 lines of code using the Bukkit API or probably even simpler when using BungeeCord.
    IIRC (it's been quite some time since I've last used Bukkit) it's somewhere along these lines:
    server.registerPluginChannel("Replay|Restrict");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(bytes);
    out.writeByte(21); // Length of "only_recording_player"
    out.writeBytes("only_recording_player".getBytes(Charsets.UTF8));
    out.writeBoolean(true);
    player.sendPluginMessage("Replay|Restrict", bytes.toArray());

    I know I cannot do anything to insert this restriction on the Mineplex Network, however, I would like to test it for myself to see how to make it work, which I can then later guide the devs in the process of setting up this restriction.

    Using my limited knowledge on Java and BukkitAPI, I cannot make out how to use the sampled code you posted to make the server restrict the replaymod much less even send the packet. It would make it alot easier if you could present some plugin/tutorial/guide for this restriction, so if you ever have time to do this, please do.


    • Developer
    • 1883 forum posts
    User10

    in response to User738

    #7

    Feb 17 16, 03:04 PM



    I can absolutely understand their point about approval of a mod.

    There is nothing you can do about restricting ReplayMod usage on their server. They'll have to do so.
    All they have to do is send a single packet (the packet is described in the specs pio linked) once a player joins the Clans server. That's less than 10 lines of code using the Bukkit API or probably even simpler when using BungeeCord.
    IIRC (it's been quite some time since I've last used Bukkit) it's somewhere along these lines:
    server.registerPluginChannel("Replay|Restrict");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(bytes);
    out.writeByte(21); // Length of "only_recording_player"
    out.writeBytes("only_recording_player".getBytes(Charsets.UTF8));
    out.writeBoolean(true);
    player.sendPluginMessage("Replay|Restrict", bytes.toArray());

    I know I cannot do anything to insert this restriction on the Mineplex Network, however, I would like to test it for myself to see how to make it work, which I can then later guide the devs in the process of setting up this restriction.

    Using my limited knowledge on Java and BukkitAPI, I cannot make out how to use the sampled code you posted to make the server restrict the replaymod much less even send the packet. It would make it alot easier if you could present some plugin/tutorial/guide for this restriction, so if you ever have time to do this, please do.


    I still had this thing lying around on my old hard drive. I'm not sure how well it was tested or whether it works at all but it compiles and contains sample code for BungeeCord, Bukkit and Sponge. So I pushed it to GitHub, you can find it here.


    • User
    • 15 forum posts




    I can absolutely understand their point about approval of a mod.

    There is nothing you can do about restricting ReplayMod usage on their server. They'll have to do so.
    All they have to do is send a single packet (the packet is described in the specs pio linked) once a player joins the Clans server. That's less than 10 lines of code using the Bukkit API or probably even simpler when using BungeeCord.
    IIRC (it's been quite some time since I've last used Bukkit) it's somewhere along these lines:
    server.registerPluginChannel("Replay|Restrict");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(bytes);
    out.writeByte(21); // Length of "only_recording_player"
    out.writeBytes("only_recording_player".getBytes(Charsets.UTF8));
    out.writeBoolean(true);
    player.sendPluginMessage("Replay|Restrict", bytes.toArray());

    I know I cannot do anything to insert this restriction on the Mineplex Network, however, I would like to test it for myself to see how to make it work, which I can then later guide the devs in the process of setting up this restriction.

    Using my limited knowledge on Java and BukkitAPI, I cannot make out how to use the sampled code you posted to make the server restrict the replaymod much less even send the packet. It would make it alot easier if you could present some plugin/tutorial/guide for this restriction, so if you ever have time to do this, please do.


    I still had this thing lying around on my old hard drive. I'm not sure how well it was tested or whether it works at all but it compiles and contains sample code for BungeeCord, Bukkit and Sponge. So I pushed it to GitHub, you can find it here.

    Actually, I have tried messaging one of the rules committee about this, but without knowing all this, you can send it to the rules committee here http://www.mineplex.com/profile/3243583 and just message her


    • User
    • 132 forum posts
    User738
    #9

    Feb 18 16, 08:20 AM

    Hi there @User32545
    I appreciate the help, however, I have already direct contact to Toki and have been communicating her about this a few months ago. It will make the process a lot easier if I am capable of making the restrictions possible so I can help the devs with any confusion they have with setting this up. Plus I am curious myself to see if it works lol.


    • User
    • 132 forum posts
    User738
    #10

    Feb 18 16, 01:06 PM

    Okay, so I looked into the file, however its use still strikes me.

    So let's say I want to use Bukkit/Spigot to make this restriction occur, is there a plugin which I could use to implement this restriction, or must I do something different? Because I am not able to find any .jar files (plugin file format) or a config (which could help with what was mentioned about applying different kinds of restrictions) in the GitHub file you last posted.



    • Moderator
    • Beta Tester
    • 249 forum posts
    User20
    #11

    Feb 18 16, 06:58 PM

    I'm sure that if you pass that link to one of the Mineplex devs they know what to do with it ;)


    • User
    • 132 forum posts
    User738

    in response to User20

    #12

    Feb 18 16, 11:08 PM | Last edited: Feb 18 16, 11:08 PM


    I'm sure that if you pass that link to one of the Mineplex devs they know what to do with it ;)

    But even then, shouldn't the replay restriction be easy for anyone to setup? My main focus is for Mineplex to implement it, however I also want to be able to know how to setup the replay restriction, since it can be somewhat handy in the near future.

    So I messaged a Mineplex Dev with this thread and restriction file, however, for now could you help me understand how to implement this on a server of my own?


    • User
    • 39 forum posts
    User1150
    #13

    Feb 19 16, 03:16 AM

    I've worked with Forge before, but I don't know how the ReplayMod code is set up. It could be a piece of cake, or it could take weeks.


    • Developer
    • 1883 forum posts



    I'm sure that if you pass that link to one of the Mineplex devs they know what to do with it ;)

    But even then, shouldn't the replay restriction be easy for anyone to setup? My main focus is for Mineplex to implement it, however I also want to be able to know how to setup the replay restriction, since it can be somewhat handy in the near future.

    So I messaged a Mineplex Dev with this thread and restriction file, however, for now could you help me understand how to implement this on a server of my own?

    Either you build the plugin yourself (./gradlew build) or you take a prebuilt version from here (for Bukkit, that's replayrestrictions-bukkit-1.0-SNAPSHOT.jar). Put the jar in the plugin directory and start the server once to have it generate the default config. Edit the config, then restart (or reload) the server to apply those changes. Done.


    • User
    • 132 forum posts




    I'm sure that if you pass that link to one of the Mineplex devs they know what to do with it ;)

    But even then, shouldn't the replay restriction be easy for anyone to setup? My main focus is for Mineplex to implement it, however I also want to be able to know how to setup the replay restriction, since it can be somewhat handy in the near future.

    So I messaged a Mineplex Dev with this thread and restriction file, however, for now could you help me understand how to implement this on a server of my own?

    Either you build the plugin yourself (./gradlew build) or you take a prebuilt version from here (for Bukkit, that's replayrestrictions-bukkit-1.0-SNAPSHOT.jar). Put the jar in the plugin directory and start the server once to have it generate the default config. Edit the config, then restart (or reload) the server to apply those changes. Done.

    Hey there, so I installed the ReplayRestrictions, it seems as if the plugin was implemented properly (by the looks of the console), however after recording a sample on my server, and then going into the ReplayView, none of the restrictions took place. I could still clip, xray, fly around, literally no restrictions took place.

    And yes I did update the config:


    Sooo, what next? Is there a missing feature, do I need a certain version of the mod, or do I need to go through any other steps to getting this to work?



    • Developer
    • 1883 forum posts
    User10

    in response to User738

    #16

    Feb 19 16, 04:02 PM | Last edited: Feb 19 16, 04:35 PM





    I'm sure that if you pass that link to one of the Mineplex devs they know what to do with it ;)

    But even then, shouldn't the replay restriction be easy for anyone to setup? My main focus is for Mineplex to implement it, however I also want to be able to know how to setup the replay restriction, since it can be somewhat handy in the near future.

    So I messaged a Mineplex Dev with this thread and restriction file, however, for now could you help me understand how to implement this on a server of my own?

    Either you build the plugin yourself (./gradlew build) or you take a prebuilt version from here (for Bukkit, that's replayrestrictions-bukkit-1.0-SNAPSHOT.jar). Put the jar in the plugin directory and start the server once to have it generate the default config. Edit the config, then restart (or reload) the server to apply those changes. Done.

    Hey there, so I installed the ReplayRestrictions, it seems as if the plugin was implemented properly (by the looks of the console), however after recording a sample on my server, and then going into the ReplayView, none of the restrictions took place. I could still clip, xray, fly around, literally no restrictions took place.

    And yes I did update the config:


    Sooo, what next? Is there a missing feature, do I need a certain version of the mod, or do I need to go through any other steps to getting this to work?

    Upload the replay somewhere, I'll have a look at it.

    Edit: Also, what server did you use? IIRC I only tested on Glowstone.
    Edit 2: Looks like I left some debug code in the plugin. It should print a stacktrace to the console when restrictions are sent to the client. So when you say that nothing suspicious is in the console that probably means it didn't even try to send it.
    Edit 3: So I just retried and I can indeed confirm that the replay works without any problems (latest ReplayMod, Glowstone++)


    • User
    • 132 forum posts
    User738
    #17

    Feb 20 16, 01:18 AM | Last edited: Feb 20 16, 01:24 AM

    @User10 The server I used to test it is simply a pre-set server which I use my computer to run it.
    The console did mention that the ReplayRestriction plugin was installed, however this is the only thing I sighted about it. When you say it works, do you mean the restrictions are applied to your replays?

    EDIT: I used this program called "AutoMCServer" to build my server btw.


    • User
    • 132 forum posts
    User738
    #18

    Feb 22 16, 08:05 AM

    Okay, sorry for the delay, however here is some info of my test:

    Also here is where you can access the replay:
    https://www.replaymod.com/replay/3116

    Spoiler: Console


    • User
    • 132 forum posts
    User738
    #19

    Feb 29 16, 11:35 AM

    So it has been exactly a week since I got a response, and I want this to be solved eventually so if it makes it any better, can I indirectly contact the staff on the ReplayMod Forums using Skype, it will make contact so much easier. I am sorry if this isn't worth the time to go through, but I want at least contact, tell me you are not capable of fulfilling demands, something!


    • Developer
    • 1883 forum posts
    User10
    #20

    Feb 29 16, 06:03 PM | Last edited: Feb 29 16, 06:04 PM

    Afaik ReplayRestrictions work as described in that gist.
    However Bukkit and Sponge only send plugin messages to the client if that client has registered the channel (which kinda makes sense; but why register in the first place? idk, probably has a good reason).
    The ReplayMod does not register its channel (probably me to blame for that) so unless that check on the server side is removed, packets aren't sent by the server and therefore never reach the client. I can't remember why it worked when I initially tested it, probably whichever server I used for testing, didn't check for the channel registration.
    I don't know about BungeeCord (didn't test that).

    Fixing the channel registration would require a ReplayMod update but old versions would still be usable on Mineplex which defeats the point of ReplayRestrictions, so that's not an option for now (maybe later).

    Bypassing the server-side check for the channel registration is probably the way to go. Every plugin developer who has worked with NMS/OBC should be able to do that.
    Vanilla doesn't care if it receives packets in unknown channels, neither does Forge, so that should be relatively safe (some larger scale test should be done nevertheless).

    I will not be creating plugins which bypass the check as they have to be programmed separately for every single server software and I just don't have the time and/or other priorities (university, ReplayMod 2.0) right now.

    I don't know about @User1, he seems to be bored at times, maybe he'll do it.

    I don't use Skype, only IRC and Mumble. Again, ask @User1.



    • Developer
    • 818 forum posts
    User1
    #21

    Feb 29 16, 09:12 PM

    This makes me look like I have too much time. Wrong, most of my time is being put into binge watching the latest TV series.

    On a serious note though, if Mineplex was serious about trying to allow the ReplayMod (and therefore implement the Restrictions System in the games they want it not to be used), they have more than enough information from the Gist and the Forum thread.
    It's not very difficult, but I have better stuff to do as well (stay tuned for more mods).


    • User
    • 132 forum posts
    User738
    #22

    Mar 01 16, 02:12 AM | Last edited: Mar 01 16, 02:15 AM

    Okay, so assuming that I gave the developer the resources you sent me, and struggles getting the restriction to work, what can I do? I want to be able to understand how this works so I can easily communicate between the devs any issues they may encounter, I don't want to have to respond here and wait for a reply, to then send back to the developer, it is unpractical.

    As for the following johni mentioned:
    "Fixing the channel registration would require a ReplayMod update but old versions would still be usable on Mineplex which defeats the point of ReplayRestrictions, so that's not an option for now (maybe later)."

    It is still possible to fix the channel registration on the new update, and make it approved on the Network. Just like 5zig and LabyMod, they were once approved, then they added a feature which made them unapproved, and made updated versions which were reapproved, but only for the newer versions. You can do the same with the ReplayMod; when you release a version which has better capabilities for restrictions, the Rules Committee can allow that version and only that version of the mod to be used on their server. It would be labeled like "ReplayMod 2.0+ is allowed".

    In conclusion, if you have the time to work on strengthening the restriction function for a new update, do so. But if you do not, at the very least find time to explain the process to me so I can be well informed when bringing this up with the devs.

    Also you mentioned Mumble johni, is there any possibility I can contact you using mumble then?


    • User
    • 132 forum posts
    User738
    #23

    Mar 11 16, 11:27 AM

    Another 11 days...yay...
    Please answer the post above guys....


    • Developer
    • 1883 forum posts

    Okay, so assuming that I gave the developer the resources you sent me, and struggles getting the restriction to work, what can I do? I want to be able to understand how this works so I can easily communicate between the devs any issues they may encounter, I don't want to have to respond here and wait for a reply, to then send back to the developer, it is unpractical.
    Read the gist. If you do not understand it, you're not qualified to help the devs troubleshoot.

    It is still possible to fix the channel registration on the new update, and make it approved on the Network.
    Proper ReplayRestrictions channel registration is planned to be released in the 1.1 version.
    When will 1.1 be released? We don't know yet, it's a complete rework ,about 80% of code being redone, and it's somewhere about 30-50% done. It is currently targeting MC 1.8 but will probably be updated for MC 1.9 before release.
    Current approximate progress: Recording 98%, Replay 90%, ReplayCenter 90%, Pathing 30%, Rendering 0%, ReplayEditor 0%

    In conclusion, if you have the time to work on strengthening the restriction function for a new update, do so. But if you do not, at the very least find time to explain the process to me so I can be well informed when bringing this up with the devs.
    See above.

    Also you mentioned Mumble johni, is there any possibility I can contact you using mumble then?
    I host my own murmur server, so guessing the address shouldn't be difficult. However, your best bet at contacting me is via IRC.

    Proper channel registration is planned for RMv1.1 which will allow the plugins to work. In the mean time, any experienced dev should be able to get restrictions to work on their server if given the gist and the hint that I forgot to properly register the plugin channel.


    • User
    • 10 forum posts
    User9460
    #25

    Mar 11 16, 04:22 PM | Last edited: Mar 11 16, 04:23 PM

    So, I created a CraftBukkit/Spigot restriction plugin that ignores the client channel registration.
    https://github.com/joserobjr/ReplayModRestriction-Bukkit

    I also released a compiled jar at:
    https://github.com/joserobjr/ReplayModRestriction-Bukkit/releases

    It can apply restrictions by config file:
    https://github.com/joserobjr/ReplayModRestriction-Bukkit/blob/master/src/main/resources/config.yml

    Or by API:
    ReplayModRestriction.sendRestrictions(playerVariableHere, true, ReplayModRestriction.ONLY_FIRST_PERSON, ReplayModRestriction.NO_XRAY)

    This is what happens when we try to view a replay that was recorded on a restricted server:



    • User
    • 132 forum posts
    User738
    #26

    Mar 12 16, 04:43 AM

    Okay, I will use the info I have and bring it up with the Mineplex Developers.

    ~ Locked for Now