标签: Java

Java语言

14 篇文章

thumbnail
Java 实现读取解析 Torrent 文件,替换 Tracker,计算 infohash 和计算大小
最近一直在玩 PT,感叹 NexusPHP 的性能、代码质量和安全都实在是相当感人了,这种上古软件能活到今天也算是一个奇迹了。所以在自己悄悄搓 PT 程序。 对于一个 Private Tracker 程序,重要功能那自然是读取解析 Torrent,并把其中的 Tracker 换成我们自己的。本想用库来实现,但相当遗憾的是我没找到能够满足我需求的 Vanilla Java 的实现。 既然没有现成的,那就自己来搓一个。 由于我个人只需要解析 Bittorrent v1 版本的 torrent 文件就够了,所以 v2 不在讨论范围内,不过都是大同小异。 Bencode 编码 Torrent 的种子是…
thumbnail
分析一波校统一身份认证系统,并制作一个自动健康上报的脚本
不提供源代码或二进制文件下载不提供最终成品的源代码或二进制可执行文件下载,本文仅介绍工作原理和非完整实现,仅供学习用途。 新的通知又要每天填健康上报了,重复的工作真是无趣(叹气),今天就抽个时间分析一下健康上报系统吧。 抓取页面URL 打开微信,点开数字烟科->疫情健康上报,微信打开了一个 Webview,显而易见这不是小程序而是一个外部网页。 点击右上角三个点,扔到浏览器里拿个 URL 分析看看。 浏览器打开后,就获得了疫情健康上报的 URL:https://ujnpl.educationgroup.cn/jksb/tb/tbIndex 在PC浏览器隐身模式下打开重定向到了校统一身份认证系统…
thumbnail
Minecraft 大型多人游戏的未来?—— MultiPaper
从今年早些时候开始关注 MultiPaper,到现在 MultiPaper 的完成度终于值得让我写一篇文章赞美一下了(好欸!  GitHubMultiPaper/MultiPaper   MultiPaper 诞生的背景 TPS 的概念 每个架设过 Minecraft 的服主都多多少少要和 TPS (ticks per second) 打交道,MC 这个游戏的游戏世界所有内容都基于一个循环进行计算,每一个循环称为 1 个tick,每秒循环 20 次,如果这一秒循环次数不够 20 次,则会出现卡顿的情况,服务器会在下一秒尝试多循环补偿 tick 丢失。 由于每个部分(方块、生物、AI等等)他们之…
thumbnail
失踪人口回归 六月纪要
首先热烈庆祝终于迎来30天的超长暑假,从烤箱回到了空调房。 忙碌的考试周终于结束了,也有时间重新投入到各种稀奇古怪的东西上了。 由于期末的原因,过去的一个月基本都在忙碌的实习、写报告、准备考试之间打转╮(╯▽╰)╭,没抽出太多时间来干别的,不过要说的话还是搞了点东西的。 银行卡那些事儿 首先是四月份网申的中国银行上海支行的非人哉万事达借记卡终于寄到手了。 快件 信封 卡面大概长这个样子,摸上去手感意外的好? 卡面 如果有人想办的话,可以参考这篇文章:安利一张中国银行非人哉万事达借记卡——SnowNekoのBlog 拿到卡第二天顶着38度高温跑了一趟线下激活了卡,然后买了点美元和卢布(?),然后…
thumbnail
Bukkit 通过 StackTrace 追踪调用者插件实例
有时候在编写 Bukkit 的插件的时候,需要追踪特定方法调用者,以做出不同的行为和响应。但由于 Bukkit 的插件生态系统不同的插件由不同的作者维护,请求其他开发者适配你的接口通常比较困难。 好在,有一种方式可以间接的获取调用者的插件名,进而可以通过 PluginManager 取得插件实例。 获取谁调用的方法通常通过 StackTrace 进行。低版本的 Java 可以通过 new 一个 Exception 获得,而高版本中,Java 提供了一个 StackWalker 更高性能的方式获取。本文中使用 StackWalker 进行演示,演示环境为(JDK 17 + Spigot 1.18…
thumbnail
Bukkit 宝藏类库合集 #1
突然发现自己 star 了超过 300 个 repo,翻了一下整理了一份Bukkit 宝藏类库合集(大概是第一期?),一个是自己要用的时候找起来方便,也希望可以帮助到更多的人少走弯路~ 合集内容较多,您可以使用左侧的菜单快速跳转~ 富文本处理-Minedown  GitHubPhoenix616/MineDown   特别好用! Minedown 使用类似 Markdown 的语法,以一种 human-friendly 的格式实现 Minecraft 原始JSON文本格式消息的功能。 Minedown 同时支持 BungeeChat 和 Adventure 两个文本库的分支。Adventure…
thumbnail
QuickShop-Hikari & 退出 PotatoCraft Studio
应该有小伙伴听说了我最近退出 PotatoCraft Studio 和停止维护 QuickShop-Reremake 并单开一个分支的事情。 我一直没有正面回应过这件事,所以这一次我打算好好说一说。 回顾 QuickShop-Reremake 的起源和历史 QuickShop-Reremake 最初由我 fork 自 KaiKikuchi 的 QuickShop 项目,目的是为了让早已关闭的 “阳光之城-SunnySide” Minecraft 服务器在升级 1.13 的时候尽快能用上所需要的插件。 由于 Bukkit 1.13 一次著名的破坏性更新(MaterialData 被彻底废弃),原…
thumbnail
GitHub Copilot 初体验 —— 它能改变世界
在加入 waitlist 很久很久以后,昨天(22/01/27)终于收到了 Github 发来的试用 Copilot 的邮件。 GitHub Copilot 的大名早已听闻, 但是只有亲自体验,才能真正感受到恐怖。 我愿称其为 "改变世界" 的产品。 不会让你有机会自己写完一整行代码 只有实践中才能获得真理,安装 GitHub Copilot 后我决定用它去写一个 Mirai 插件。 需要注意的是,我从来没有接触过 Mirai 的 API 和 Kotlin 语言,因此 AI 的提醒至关重要。 然而,我刚刚跟着文档输入了一个 object 后... 我真正受到了震撼,轻轻按一下 TAB,插件的主…
thumbnail
一种基于循环的游戏控制的设计思路
因为最近心血来潮在写小游戏插件,可以理解为彩虹六号:异种的MC复刻。 于是就要设计一套游戏控制流来引导玩家完成任务等操作。 然后我就写了一套挺烂的控制流( 主要部分 Game - 游戏实例 每个 Game Object 代表了一个游戏实例,下面所讲的一切都发生在 Game Object 中。 虽然一个 Spigot 实例只跑一个 Game,但是这样设计如果以后要改一个 Spigot 实例跑多个 Game 的话就不用重构插件了。 Module - 实例模块 一个 Game 中可以存在多个 Module。 每个 Module 在 Game 开始之后遵从 Minecraft 的游戏世界循环(也称 t…
thumbnail
[项目设计]基于Minecraft的公共沙盒服务器平台 —— MetaSandBox
本文中提及的所有内容目前仅为设计阶段,还未有任何实现和产品 基本理念: 一个开放式公共服务器和公共服务器平台。 提供基于沙盒为单位的创造模式(或其拓展)的游戏服务。 也可以使用相同技术向其他方向拓展延伸,比如说 游戏沙盒, 主题生存沙盒,冒险沙盒。 对于沙盒这个概念,你可以理解为 Docker 中的 Container。 预设的基本服务: 下述的基本服务是在撰写这个计划时假想的,仅供参考。 临时沙盒(创造)高级沙盒(创造)大沙盒(创造)其他…… 术语概念: 该节介绍 MetaSandBox 的一些基础概念。 沙盒 为玩家服务的基本服务单位。可以是一个区块,一张地图/世界,一个服务器实例。 玩家…