惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

西行妖

T618冷门平板刷机从入门到理赔 12700h es新all in Boom折腾记录 Kde6 Electron程序在wayland模式下无法运行终极解决方案 蜗牛星际NAS再次折腾记录 2023年度总结 CS61B最后的总结:比较排序与基数排序 工程机,我劝你别买 为thinkbook14p G3更换高刷屏幕 专有名词笔记 时间轴 谷歌域名即将被收购,如何薅到最后一波羊毛 人在囧途——记录我的日本之行 记一次衣服被子被偷的离谱经历 关于本站迁移的公告 java的某些常用特性 python3将对象作为线程使用 在Chromebook上使用Windows是什么体验?记录我到目前为止用过的Chromebook Chromebook刷bios解除企业锁折腾记录 Vue3的computed计算属性传参 在Docker容器中运行服务 将操作系统从Windows转向Linux [预告]固态硬盘太贵?试试看自己做一个吧 A卡深度学习服务器折腾&踩坑记 Ai绘画体验——利用校徽生成对应虚拟形象 AutoWhitelist诈尸更新dev&新的未来计划 它很好,但对我来说不够好——关于华硕无双15.6 [推广]蓝易云暑期大采购活动 Potplayer+SVP4插帧看番体验——24帧日漫轻松提升至60帧 AList搭建教程&网盘迁移至AList公告 还是v2ex大神多,记一次遇到bug被大佬拯救 关于MC服务器毁档重开 对于本站消失的回应 利用蹩脚的 js 知识写了一个统计真实访客数量的脚本 谈谈我高中时用过的手机 高考前夕,再谈我的想法 轻松搭建gitlab私人代码库 每周灵感 - 01 每周灵感 - 00 heroku使用教程——真正的零成本搭建PHP动态博客 关于tencent-push项目的总结&后续计划 我们已经失去了辩论能力吗?关于我对“拉黑”的看法 似乎更不好的近况 不怎么好的近况 记一次我与某网课系统的对抗 高考96天倒计时,我想说的话&以后的一些计划 关于最近俄乌局势我的看法 本站打算做出的一些改变&我对网左/键政的看法 [转发]我是衡水桃城中学的一名学生 关于西安节点合作商“昔年”跑路的公告 什么才是年轻人需要的文化?我对于“抵制洋节”的看法 平顶山刘玉坤事件接力 友情链接 关于本站数据丢失&抢救 关于我 关于我新搭建的oneindex网盘(附教程) [纯教程]如何搭建QQ微信转发服务器 关于我新买的LG V50&如何搭建QQ第三方推送服务器 三胎政策的出台,是否意味着政府已经急了?关于我对生育率的思考 网站更新&迟来的4月总结 如何看待“网抑云”这一现象的流行 如何用阿里云服务器开一个我的世界皮肤站
Autowhitelist介绍&我对mc白名单的研究
2022-07-26 · via 西行妖

本文开始之前,先来说说autowhitelist这个项目:这是一个自动添加mc服务器白名单的程序,腐竹可以出题让玩家作答,玩家达到分数线后将自动添加白名单,免去中间的人工审核和添加。当然小作文式题目还是得人工审核

如果想要试用当小白鼠的话,可以看看项目开源地址,里面的release页面有编译好的版本可以下载,下载后再简单设置一下就可以用了。然而题目还是要自己写

我写这个项目的契机是什么呢?其实理由并不高大上,只不过是我懒得人工审核果然懒惰是推动科技发展的动力。虽然这个插件的原理和理由一样,都没有什么高大上的内容,但我还是研究了好一阵子才研究出了完整的前后端程序。那么下面就来聊聊整个开发过程吧。

首先是前后端的通信方式。我在一开始时是想用websocket长链接通信,但由于没有相关基础,所以研究了一段时间都没研究出来。于是我便转向了http轮询的方式。但使用这种方式,又遇到了另一个问题:消息队列。由于轮询无法及时向客户端推送消息,因此需要做一个队列缓存消息,当客户端轮询时再读取队列并推送。然而就是这个问题无法解决,无论用什么方案都无法保证稳定性,以及轮询需要消耗数倍的资源来运行,因此我便放弃了这种方式,转为socketio。

虽然说socketio是websocket的封装库,理论上使用方法是比纯websocket简单的,但在使用过程中我还是遇到了一个问题,这个问题我用了接近两天都没能解决(上一篇文章说的就是这件事)。最后还是在v2ex大神的帮助下解决了。这个问题似乎是开发过程中最困难的那个,解决完这个问题后开发进度一日千里,不久后便完成了整个项目并没有

连接方式确定了,那么接下要确定就是前后端框架了。后端使用的自然是flask以及flask-socketio,毕竟这是我最熟悉的web框架。但在客户端方面我却犯了难。如果只需要接收消息,那么只需要一个socketio库就能搞定,然而问题正是出在如何添加白名单这里。

由于我服很早就开始使用mcdreforged,而我现在只会python,因此我便果断选择了mcdreforged进行开发。但在开发时,大麻烦出现了:mcdr插件中的代码是默认同步进行的,也就是说必须执行完插件中的代码,才会接着进行下一步操作。然而因为我的插件需要保持长连接,mcdr等不到我的代码执行完毕,所以线程就会无限堵塞,无法执行其他指令。虽然mcdr自带了一个多线程功能,但这个多线程功能又及其不完善,无法关闭线程,也就是说如果插件重启了,会同时有两个线程连接后端。权衡利弊之下,我打算放弃mcdr平台,另辟蹊径:直接操作whitelist.json。

如果是直接操作的话,就可以不用考虑多线程之类的操作,也无需担心线程堵塞了。于是我便在这条路上越走越远,最终写出了第一个可以正常使用的产品。

在刚写完没多久,我便后悔了:我根本没有考虑过给盗版服使用。由于whitelist.json需要同时存储玩家id和uuid,因此我在程序中写死了从mojang官方获取uuid的方法。虽然说盗版服的uuid是可以随便乱写的,直接获取正版uuid也是可以使用的,但就怕有的盗版玩家id没有对应的正版uuid。看来外置程序并不是万能的,还是内置插件的方案比较稳妥。

虽然我不会java,但万幸的是,我找到了愿意合作的人。相信不久后,fabric版和spigot版就能面世了。希望这个项目能越做越好,毕竟这是第一个我发起的真正有研究方向和前景的项目。

2022.7.26