Ph-苯 发表于 2022-4-22 17:35
@ModifyArg的index是从0开始的呀,如果是第三个参数的话应该是2。
super(server, registryManager, saveHandler, 8);
这里“8”是第4个参数,所以写index=3应该没错呀
无敌三脚猫 发表于 2022-4-23 20:42
super(server, registryManager, saveHandler, 8);
这里“8”是第4个参数,所以写index=3应该没错呀 ...
我眼抽了不好意思😂……
你试试这个?
- import net.minecraft.server.integrated.IntegratedPlayerManager;
- import net.minecraft.server.integrated.IntegratedServer;
- import net.minecraft.util.registry.DynamicRegistryManager;
- import net.minecraft.world.WorldSaveHandler;
- import org.spongepowered.asm.mixin.Mixin;
- import org.spongepowered.asm.mixin.injection.At;
- import org.spongepowered.asm.mixin.injection.Desc;
- import org.spongepowered.asm.mixin.injection.ModifyArg;
- @Mixin(IntegratedPlayerManager.class)
- public abstract class MixinIntegratedPlayerManager {
- @ModifyArg(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;<init>(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/util/registry/DynamicRegistryManager$Impl;Lnet/minecraft/world/WorldSaveHandler;I)V", desc = @Desc(value = "<init>", args = {IntegratedServer.class, DynamicRegistryManager.Impl.class, WorldSaveHandler.class})), index = 3)
- private static int chageMaxPlayers(int maxPlayers) {
- return 20;
- }
- }
Mixin也可以直接改字节码。
不过需要一个假Mixin和MixinConfig套个壳。
See: Mixin套壳和真正的实现——向Abstract Enum中插入实现
See: 单独开一个mixins.json,声明MixinConfig
不过需要一个假Mixin和MixinConfig套个壳。
See: Mixin套壳和真正的实现——向Abstract Enum中插入实现
See: 单独开一个mixins.json,声明MixinConfig
诶楼主我好像明白了什么,出来挨打!
复制代码
这里的常量8不是index=3!是index=4!
为什么呢?因为this是0,所以对于non-static方法,第一个参数就是1,而不是0。
- super(server, registryManager, saveHandler, 8);
这里的常量8不是index=3!是index=4!
为什么呢?因为this是0,所以对于non-static方法,第一个参数就是1,而不是0。