首页
留言板
统计
友链
关于
推荐
图片压缩
在线PO转MO
柠娜汉化站
搜索
1
PCL我的世界启动器设置第三方登录
44 阅读
2
Debian搭建wireguard组网
12 阅读
3
开源、轻量、易用的服务器监控,实战部署哪吒监控
4 阅读
4
哪吒监控配置nginx反向代理
3 阅读
5
Rust静态编译
3 阅读
服务器
技术
闲谈
MC
VPN
登录
搜索
标签搜索
debian
服务器
Linux
监控
雨云
wireguard
Android
MC
我的世界
硬盘
nginx
反向代理
哪吒
部署
Rust
静态编译
组网
局域网
联机
虚拟网卡
mohuangNPC
累计撰写
18
篇文章
累计收到
1
条评论
首页
栏目
服务器
技术
闲谈
MC
VPN
页面
留言板
统计
友链
关于
推荐
图片压缩
在线PO转MO
柠娜汉化站
搜索到
2
篇与
的结果
2025-12-22
Forge或NeoForge开发过程记录
@Mixin 注解重要的注解,写在类名上,用来表示注入到哪个类@Mixin(TeleportCommand.class)@Shadow 注解当你mixin一个类的时候,然后要用该类的某个内部字段,或者某个方法签名的时候 // @Invoker("teleportToPos") @Shadow private static int teleportToPos(CommandSourceStack p_139026_, Collection<? extends Entity> p_139027_, ServerLevel p_139028_, Coordinates p_139029_, @Nullable Coordinates p_139030_, @Nullable TeleportCommand.LookAt p_139031_) throws CommandSyntaxException { throw new AssertionError(); } // @Invoker("teleportToEntity") @Shadow private static int teleportToEntity(CommandSourceStack source, Collection<? extends Entity> targets, Entity destination) throws CommandSyntaxException { throw new AssertionError(); }如果有某些无语的问题,比如私有方法中还调用了注入类的内部接口或者各种奇葩方法,那干脆直接方法全部复制一遍也可以@Inject注解该注解是直接注入方法@Inject(method = "register", at = @At("HEAD"),cancellable = true)method 代表需要注入的方法at 参数详解at代表注入位置 HEAD 代表方法头插入 RETURN 代表方法RETURN之前插入 TAIL 在方法的最后一条指令之前注入(在return之前)。 INVOKE 方法调用相关的注入点@At(value = "INVOKE", target = "目标方法签名") // 在调用特定方法时注入。 @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getX()D")INVOKE_ASSIGN 在调用方法并将结果赋值给变量时注入。@At(value = "INVOKE_ASSIGN", target = "目标方法签名")INVOKE_STRING 在调用方法且栈顶有特定字符串常量时注入。@At(value = "INVOKE_STRING", target = "目标方法签名", args = "ldc=要匹配的字符串")FIELD 字段访问相关的注入点@At(value = "FIELD", target = "字段签名") //在访问(读取或写入)字段时注入。 @At(value = "FIELD", target = "Lnet/minecraft/world/entity/Entity;x:D")GETFIELD@At(value = "GETFIELD", target = "字段签名") 在读取字段值时注入。PUTFIELD@At(value = "PUTFIELD", target = "字段签名") 在写入字段值时注入。FIELD_GET@At(value = "FIELD_GET", target = "字段签名") 同GETFIELD。FIELD_SET@At(value = "FIELD_SET", target = "字段签名") 同PUTFIELD。数组访问相关的注入点 ARRAY@At(value = "ARRAY") 在数组访问时注入。ARRAY_GET@At(value = "ARRAY_GET") 在读取数组元素时注入。ARRAY_SET@At(value = "ARRAY_SET") 在写入数组元素时注入。局部变量相关的注入点 STORE@At(value = "STORE", ordinal = 0) 在存储到局部变量时注入。LOAD@At(value = "LOAD", ordinal = 0) 在从局部变量加载时注入。JUMP 条件判断相关的注入点@At(value = "JUMP", opcode = Opcodes.IFNE) 在条件跳转指令处注入。IFNULL@At(value = "IFNULL") 在ifnull指令处注入。IFNONNULL@At(value = "IFNONNULL") 在ifnonnull指令处注入。IF_ACMPEQ, IF_ACMPNE@At(value = "IF_ACMPEQ") 在对象引用比较时注入。IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT等@At(value = "IF_ICMPEQ") 在整数比较时注入。常量相关的注入点 CONSTANT@At(value = "CONSTANT", args = "doubleValue=0.0") 在加载常量时注入。新建对象相关的注入点 NEW@At(value = "NEW", target = "类签名") 在创建新对象时注入。 @At(value = "NEW", target = "net/minecraft/world/item/ItemStack")异常处理相关的注入点 THROW@At(value = "THROW") 在抛出异常时注入。特殊注入点 INVOKE_SPECIAL@At(value = "INVOKE_SPECIAL", target = "方法签名") 在调用私有方法或构造方法时注入。INVOKE_VIRTUAL@At(value = "INVOKE_VIRTUAL", target = "方法签名") 在调用虚方法时注入。INVOKE_STATIC@At(value = "INVOKE_STATIC", target = "方法签名") 在调用静态方法时注入。INVOKE_INTERFACE@At(value = "INVOKE_INTERFACE", target = "方法签名") 在调用接口方法时注入。字节码指令相关的注入点 INVOKE_DYNAMIC@At(value = "INVOKE_DYNAMIC") 在invokedynamic指令处注入。INSTANCEOF@At(value = "INSTANCEOF") 在instanceof检查时注入。常用的组合参数 ordinal参数 指定第几次出现的位置:@At(value = "INVOKE", target = "...", ordinal = 0) shift参数 调整注入位置: Shift.BEFORE: 在目标指令之前 Shift.AFTER: 在目标指令之后 Shift.BY: 偏移指定数量 @At(value = "INVOKE", target = "...", shift = Shift.BEFORE)by参数 与Shift.BY一起使用:@At(value = "INVOKE", target = "...", shift = Shift.BY, by = 2)cancellable 参数它控制是否允许取消(跳过)原始方法的执行@Inject(method = "register", at = @At("HEAD"),cancellable = true) private static void modifyCommandPermissions(CommandDispatcher<CommandSourceStack> dispatcher, CallbackInfo ci) { ci.cancel(); }
2025年12月22日
1 阅读
0 评论
0 点赞
2025-12-22
PCL我的世界启动器设置第三方登录
本教程展示如何在PCL中使用第三方登录选择版本首先打开PCL如图:点击版本选择并选择游玩的版本:这里我选择机械动力,各位需要玩什么就选择什么进入版本独立设置PCL采用版本独立设置,通俗的来说就是每个版本单独设置正版登录或者第三方登录,按照上面步骤选择版本后,我们点击设置:拖到最下方点击版本独立设置:拖到最下方找到服务器配置部分:设置第三方登录按照上述步骤进入服务器配置后,我们下拉选择第三方登录输入第三方服务器的 认证服务器 , 注册连接 , 服务器名称 服务器名称随意写一个即可,只是为了展示。填完后直接点击左上角的返回即可:然后点击启动返回登陆界面:如图已经变为我们刚才填入的服务器名称注册账号我们已经添加完第三方服务器了,现在我们需要注册一个账号,点击界面的注册账号:这时我们会自动打开浏览器跳到第三方界面的注册页面:这是我的注册页面,不同的网站有不同的注册页面,大家可以自行鉴别,这里就不演示注册方式了,都差不多登录账号输入用户名密码点击启动游戏,这里比较坑,没法先登陆账号,必须连带游戏一起启动不过第二次就记住密码了,只要密码没打错这是第二次打开登录成功后的样子
2025年12月22日
44 阅读
0 评论
0 点赞
Warning
: file_put_contents(/var/www/html/rss.xml): failed to open stream: Permission denied in
/var/www/html/usr/plugins/CustomRSS/Plugin.php
on line
149