我的世界Forge作者回应网易侵权问题

2020/05/06 13:04
阅读数 217

Well it looks like the developer over there has little to no idea how git repos work.
Their 'Fork' appears to be them taking the head of Forge, and then shoving their current copy on top of it and hitting commit.
This means that a lot of the changes you see are reverts of commits that we have done since they have forked Forge.
Its easy to tell that this is a copy/paste job because no NEW files are removed so their 'Fork' is in a half-working state that contains some features that they don't really ship.
You can see the mess here: MinecraftChina@5bc5f73
However, IF we just look at the content and not the git history we can see some of what they are doing.

I took a little bit of time to look at their repo and basically what they do:

  • Remove Loading of Mods/Coremods from the /mods/{MC_VERSION} folder
  • Remove Loading of directory based mods/coremods.
  • Add a filter over the list of mods to load based on some permission system. *1
  • They DO do some localization work in some of the menus!
  • Remove any buttons related to snooper info. *2
  • Remove access to LAN, Skin Settings, Realms, or Mod List.
  • Add support for 'Encrypted' mods. *3
  1. This is the best I can do without decompiling as their modified version of LaunchWrapper is not open source.
  2. They do not DISABLE the snooper in code. They just remove the GUI that shows what they are gathering. This is concerning.
  3. Is there any official stance/statement on why they need encrypted mods? There is no reason for this besides to hide what they are doing... And very poorly.

Overall, this doesn't seem like anything bad/malicious, the only major concern is the encrypted mods... Why?
Something to note, this is all based off the code they released I have not verified that the code has any relation to binaries they are shipping.

If you want to know more see below for my per-version overview.

1.12:
Base? dd42f84

  • Diffs:
    • net.minecraftforge.common.ReflectionAPI:
      • New file. Addes 3 static functions:
        • checkPremission(ClassLoader, File) Basically delegates to their modified LaunchWrapper for a checkPermission call
        • decrytClass(ClassLoader, byte[]) Again delegates to their modified LaunchWrapper to decrypt the class file.
        • errorLog(String) Just logs a error message
    • net.minecraftforge.fml.common.discovery.asm.ASMModParser:
      • This is simple enough, it just changes our new ClassReader(inputStream) call decrypt the class file using ReflectionAPI. Simple and functional.
    • net.minecraftforge.fml.common.discovery.ModDiscoverer:
      • Uses ReflectionAPI.checkPremission to determine if they are allowed to load a mod file.
      • Disables loading mods that are Directories, but this change really is for development, so i think they just nuked it so they didn't have to run the Test mods.
      • Makes a copy of the findModDirMods function and adds a ReflectionAPI.checkPermission/directory filter pass over the files first. Simple enough, not sure why they had to make a new method. Most likely bad copy/paste.
    • net.minecraftforge.fml.common.Loader:
      • Makes it use it's new filtered findModDirMods function, and removes scanning the versions specific mods folder.
    • net.minecraftforge.fml.relauncher.CoreModManager:
      • Removes the commandline specified coremods feature.
      • Removes scanning of coremods in the versions specific mod folder
      • Removes support for directory based mods and filters them using ReflectionAPI.checkPermission just like normal mods
    • resources/assets/forge/en_US.lang:
      • Deletes every value in this file, keeps the keys tho. So English has no translations.
  • Summery:
    • Basically it just tries to lock down what files can be loaded as mods. Not to bad.
      The MAJOR worring part is the whole concept for Encrypted mods/classes. The ONLY reason to do this is that they are doing something they don't want you to know about in those encrypted mods.

1.11.2:
Base? 2df3613

  • Diffs:
    • ReflectionAPI, ASMModParser, ModDiscoverer, Loader, CoreModManager, en_US:
      • All of these are pretty much identical to 1.12, Remove directory support, remove version directory, remove command line arguments, add encryption support.
    • net.minecraft.client.gui.GuiOptions.patch:
      • Removes the buttons for realms, skins, languages, and snooper info.
      • Resizes resource pack/chat buttons.
      • The concern here is hiding the snooper button.. so that you can't easily see what data they are snooping with the mods they install?
    • The other changes are a few bug fixes and some git derpage, nothing important.

1.10.2:
Base: 261313a (This base is nice they are actually almost using the head of this branch!)

  • Diffs:
    • ReflectionAPI, ASMModParser, ModDiscoverer, Loader, CoreModManager, en_US:
      • All of these are pretty much identical to 1.12, Remove directory support, remove version directory, remove command line arguments, add encryption support.
    • net.minecraft.client.Minecraft.patch:
      • Moves the language initalizer to earlier, probably nessasary for better localization?
      • Changes the Display Title to Chineese.
    • net.minecraft.client.gui.ServerListEntryNormal.patch:
      • Localizes the cant connect error messages.
    • net.minecraft.client.gui.GuiMainMenu.patch:
      • Removes the language, realms, and mod buttons.
      • Removes the splash text.
      • Changes the minecraft logo.
      • Changes the copyright notice, and removes any branding from modpacks and the like.
    • net.minecraft.client.gui.GuiIngameMenu.patch:
      • Removes the share to lan and mod info buttons.
    • net.minecraft.client.gui.GuiFlatPresets.patch:
      • Localizes the preset names.
    • net.minecraft.client.gui.GuiOptions.patch:
      • Same as 1.11.2, removes realms, skins, languages, and snooper buttons.
  • Summery:
    • This version actually has some useful changes in it, changes that they should be doing. That is, localizing the areas of Minecraft that are not translated to Chinese yet. The rest of the changes are just more locking down.

1.9.4:

  • Again one commit behind, seriously guys the log4j fix is a crash fix you should update!
    But the changes are all identical to 1.10.2

1.8.8: (Why did they use this over 1.8.9?)

  • This one is almost identical to 1.9.4/1.10.2. Only notiable changes are that they don't relocate the LanguageManager constructor. And they remove the stream button.
  • One thing to note is that the changes are attribuited to "yuanfeige" with the comment in ASMModParer: //revise by yuanfeige
    Hi yuanfeige! If you're out there and you speak english it'd be nice to talk!

1.8:

  • This one is a little bit harder to know what they are doing as this is back when FML and Forge were seperate repositories. So their repo doesn't have the full copy of FML with their changes.
    But judging by the pattern they are doing this will most likely be identical to 1.8.8-1.10.2.
    The Forge parts I can see patches wise are identical.

1.7.10:

  • This one they actuallky included the FML sub folder, and as I suspected, its identical to the changes they did in 1.1-1.10.2.
    Their Forge side changes were the same as well.
展开阅读全文
打赏
0
0 收藏
分享

作者的其它热门文章

加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部