本帖最后由 teddyxlandlee 于 2023-3-25 17:38 编辑 
没想到这么快就4500了,我简单说两句罢。
自上次发4000分的帖子已经过去一个月了,没想到开学期间升级也蛮快的。
自那时起,我发了2个插件帖、1个模组帖。这2个插件都拿到了原创奖励,甚至其中一个是用ChatGPT 3.5辅助完成的,然而不知为什么绿宝石奖励迟迟没下来XD过了2周奖励终于下来了XD,泥潭淡季审核周期看来确实长一些
我还把之前用来制作 Speedrace2 插件的汉化补丁的工具《简单》修缮了一下,并发了出来
月初,我发了个附魔等级语言补丁Mod的更新,修改了把>10 的附魔等级切换成罗马数字的方式——这不再依赖于“罗马数字扩展”(即 langpatch-conf3 模组)。
——我还在 Mod 代码中发现了一个0day漏洞,并进行了修复。
虽然修复的代码还没有推送到 GitHub,但是已经传到了 Modrinth。
刚修复的时候我还没有公布漏洞内容,现在我简单说一下:
模组实现部分的NumberFormatUtil.isDigit(String, int)方法没有进行数组越位检测,即如果输入参数为 "abc" 和 3 时,由于程序会读取 "abc".charAt(3) 并检测其是否是 '0',而 "abc" 的最大下标就是 2,所以会报 StringIndexOutOfBoundsException。后果就是模组崩溃。
然而,附魔等级的检测条件是:(String s) -> s.startsWith("enchantment.level.") && NumberFormatUtil.isDigit(s, 18)
而 "enchantment.level." 的最大下标为 17;不仅仅 "enchantment.level.114514" 满足 startsWith("enchantment.level."),就连 "enchantment.level." 本身也满足 startsWith 它自己的条件。
然后当客户端尝试渲染 Text.translatable("enchantment.level.") 时,它就崩了。
为什么它可以作为一个0day呢?因为它可以在服务器中用于花式踢人。
只要任意的游戏元素,包括物品名称、实体名称、Lore、聊天框内容、Title、Tellraw 等包含 {"translate": "enchantment.level."},当客户端碰到了,它在尝试渲染的时候会当场趋势。
"potion.potency." 同理。
晚些时候我会把三个月前就做好了的End Poem Extension(终末之诗扩展补丁)发出来。
它会包含 SSModification(闪烁标语修改)模组的内容,并与后者不兼容。请各位留意。
先说这么多吧,本来这帖上周就该发的
没想到这么快就4500了,我简单说两句罢。
自上次发4000分的帖子已经过去一个月了,没想到开学期间升级也蛮快的。
自那时起,我发了2个插件帖、1个模组帖。这2个插件都拿到了原创奖励,
我还把之前用来制作 Speedrace2 插件的汉化补丁的工具《简单》修缮了一下,并发了出来
月初,我发了个附魔等级语言补丁Mod的更新,修改了把>10 的附魔等级切换成罗马数字的方式——这不再依赖于“罗马数字扩展”(即 langpatch-conf3 模组)。
——我还在 Mod 代码中发现了一个0day漏洞,并进行了修复。
虽然修复的代码还没有推送到 GitHub,但是已经传到了 Modrinth。
刚修复的时候我还没有公布漏洞内容,现在我简单说一下:
以下内容需要积分高于 1000 才可浏览
模组实现部分的NumberFormatUtil.isDigit(String, int)方法没有进行数组越位检测,即如果输入参数为 "abc" 和 3 时,由于程序会读取 "abc".charAt(3) 并检测其是否是 '0',而 "abc" 的最大下标就是 2,所以会报 StringIndexOutOfBoundsException。后果就是模组崩溃。
然而,附魔等级的检测条件是:(String s) -> s.startsWith("enchantment.level.") && NumberFormatUtil.isDigit(s, 18)
而 "enchantment.level." 的最大下标为 17;不仅仅 "enchantment.level.114514" 满足 startsWith("enchantment.level."),就连 "enchantment.level." 本身也满足 startsWith 它自己的条件。
然后当客户端尝试渲染 Text.translatable("enchantment.level.") 时,它就崩了。
为什么它可以作为一个0day呢?因为它可以在服务器中用于花式踢人。
只要任意的游戏元素,包括物品名称、实体名称、Lore、聊天框内容、Title、Tellraw 等包含 {"translate": "enchantment.level."},当客户端碰到了,它在尝试渲染的时候会当场趋势。
"potion.potency." 同理。
晚些时候我会把
它会包含 SSModification(闪烁标语修改)模组的内容,并与后者不兼容。请各位留意。
先说这么多吧,本来这帖上周就该发的
大手子升级之路啊!
非常牛逼、
标题是被压缩了吗(大雾
我也离9级好遥远啊😰
非常好标题,爱来自药水(
建议改为4k5,⑨,遥…(
End Poem Extension会是一个怎么样的模组?单纯只是翻译终末之诗吗?(如果是的话感觉用处不大(((((
建议改为4k5,⑨,遥…(
End Poem Extension会是一个怎么样的模组?单纯只是翻译终末之诗吗?(如果是的话感觉用处不大(((((
大佬厉害的哇。666
Crable_Potion 发表于 2023-3-25 17:10
非常好标题,爱来自药水(
建议改为4k5,⑨,遥…(
End Poem Extension会是一个怎么样的模组?单纯只是翻 ...
你觉得依我的德行只会整这么个东西吗?
发布帖在写了,你先看看这个:https://modrinth.com/mod/end-poem-extension
 本帖最后由 幻心飞小骥 于 2023-3-25 17:42 编辑 
网卡多发出去乐一份…求删
网卡多发出去乐一份…求删
祝插件开发顺利
我默默看了一眼我的3000多积分…
七级以后,没有一技之长可真难升经验啊…
我默默看了一眼我的3000多积分…
七级以后,没有一技之长可真难升经验啊…
teddyxlandlee 发表于 2023-3-25 17:34
你觉得依我的德行只会整这么个东西吗?
发布帖在写了,你先看看这个:https://modrinth.com/mod/e ...
懂了,终末之诗,但是CC0 (((
Crable_Potion 发表于 2023-3-25 17:48
懂了,终末之诗,但是CC0 (((
否——终末之诗,但是支持i18n
teddyxlandlee 发表于 2023-3-25 17:50
否——终末之诗,但是支持i18n
In addition, the mod enables you to customize your End Poem, inserting text before/after the End Poem, and append your mod / resource pack credits after Mojang.
CC0 enables scientists, educators, artists and other creators and owners of copyright- or database-protected content to waive those interests in their works and thereby place them as completely as possible in the public domain, so that others may freely build upon, enhance and reuse the works for any purposes without restriction under copyright or database law.
终末之诗,但是基于CC0
这下总对了吧(
Crable_Potion 发表于 2023-3-25 17:57
终末之诗,但是基于CC0
这下总对了吧(
你说得对,但是EPX是……(后面忘了)总之EPX绝不是汉化这么简单;它只是个允许在不同游戏语言下插入不同文本的工具罢了;它还允许在Poem前后插入文字,等等。
发出来之后再看罢,东西有亿点多。
事实上,EPX模组本体不包含汉化
teddyxlandlee 发表于 2023-3-25 18:03
方便发一下这段文字的来源及其中文版?谢谢
https://creativecommons.org/share-your-work/public-domain/cc0/
https://creativecommons.org/publicdomain/zero/1.0/deed.zh
你和南南比一下谁先氵到9级(雾)
虽然输出的不是正确答案,但还是不明白为什么会报错啊,楼主不是像这样写的吗:
复制代码
- public class Temp {
 
-         public static boolean isDigit(String s, int i) {
 
-                 while (i < s.length()) {
 
-                         if (!('0' <= s.charAt(i) && s.charAt(i) <= '9'))
 
-                                 return false;
 
-                         i++;
 
-                 }
 
-                 return true;
 
-         }
 
-     public static void main(String []args) {
 
-                 System.out.println(isDigit("abc", 114514));// -> true
 
-     }
 
- }
开心的阿诺 发表于 2023-3-25 21:31
虽然输出的不是正确答案,但还是不明白为什么会报错啊,楼主不是像这样写的吗:
...
你测一下,("025", 0) 应该是false对不对,而你这个是true;
与此同时,由于越位,你第一步 i < s.length() 就挂了,然后直接 return 1 结束
我在前面加了一个 判定:如果 s.charAt(i) == '0' 那么当且仅当 s.length() - 1 == i 时(即有效字符只有0时才通过);而 charAt 了一个越位的索引会导致报错。
在你的场景中,越位会直接跳过;而在我的场景中,直接忽略了越位情况(因为我原本认为旧的写法不会越位,毕竟加了一层 startsWith 判定)。
所以应当加一行: if (s.length() <= i) return false 这样你我的答案就都是正确的了。
源码库还没有更新,不过sources jar已经发上来了,你可以看看
关于我一看作者和标题就知道讲了什么这件事
大尾巴狼! 发表于 2023-3-25 21:38
关于我一看作者和标题就知道讲了什么这件事
不你不知道,因为内容严重跑题(不是)
 本帖最后由 开心的阿诺 于 2023-3-25 21:55 编辑 
居然忘了前导零 orz
PS:另外我之前只是想表达即使写错了也不至于报错,特判个长度我这个屑还是会的(
teddyxlandlee 发表于 2023-3-25 21:37
你测一下,("025", 0) 应该是false对不对,而你这个是true;
与此同时,由于越位,你第一步 i < s.length ...
居然忘了前导零 orz
PS:另外我之前只是想表达即使写错了也不至于报错,特判个长度我这个屑还是会的(
没查看权限捏
teddyxlandlee 发表于 2023-3-25 22:08
是故意的,我怕漏洞被游客看到从而被滥用。
别的东西都能看到,隐藏内容只有漏洞信息 ...
没事 你能这么给我解释 已经足够了