Геттер(gamerule) из миксина для другого миксина

Версия Minecraft
1.20.1
API
Forge
35
2
2
Задача - получить геймрул и использовать его миксине. Пришла идеяфикс написать геттер внутри другого миксина - пояснение ниже

Обнаружил что в коде игры в GameRules.class есть подкласс и в нем метод onChanged(@nullable MinecraftServer server) который содержит нужный для вытягивания геймрулов MinecraftServer, функция срабатывает когда игровые правила меняются.

Идея - сделать иньекцию в метод и вытянуть конкретное правило (то есть значение boolean) на примере правила doFireTick.

Интерфейс для геттера:
Интерфейс:
package ru.senjmam.extrarules;

public interface GetterRule {
    public boolean Get_DoFireTick();
}

Миксин геймрула
Java:
package ru.senjmam.extrarules.mixin;
@Mixin(targets = "net.minecraft.world.level.GameRules$Value")
public abstract class GameRuleMixin implements GetterRule
{
    boolean do_fire_tick;
    
        @Inject(method = "onChanged", at = @At("TAIL"))
    private void injected( MinecraftServer server,CallbackInfo ci)
                {
                    do_fire_tick = server.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK);
                }

        @Override
    public boolean Get_DoFireTick() {
        return do_fire_tick;
    }
}

Миксин в который надо втянуть Get_DoFireTick()

Миксин с "геттером":
@Mixin(VillagerHostilesSensor.class)
public  abstract class VillagerHostilesSensorMixin {

    GetterRule rule = new GameRuleMixin() {
        @Override
        public boolean Get_DoFireTick() {
            return super.Get_DoFireTick();
        }
    };

    @Overwrite
    private boolean isHostile(LivingEntity Hostile) {
        return rule.Get_DoFireTick();
    }
}

Однако - не работает, при срабатывании метода - игра напросто крашится. причина в том, что после компиляции кода миксины "исчезают".

Собственно, как сделать иначе, чтобы работал геттер и его можно было использовать в другом классе?


(PS я плохо понимаю работу интерфейсов. Единственное что здесь "реально" это интерфейс - и верно вытягивать геттер через него. как следует правильно к нему обращаться??)

Краш лог прилагаю
 
Краш-лог
[11:21:08] [Render thread/FATAL] [ne.mi.co.ForgeMod/]: Preparing crash report with UUID 5398cd83-3625-4a10-88cc-fbc99320b9e0
---- Minecraft Crash Report ----
// My bad.

Time: 2024-12-29 11:21:08
Description: Exception in server tick loop

java.lang.NoClassDefFoundError: ru.senjmam.extrarules.mixin.GameRuleMixin is invalid
at net.minecraft.world.entity.ai.sensing.VillagerHostilesSensor.<init>(VillagerHostilesSensor.java:12) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,re:classloading,pl:mixin:APP:mixins.extrarules.json:VillagerHostilesSensorMixin,pl:mixin:A}
at net.minecraft.world.entity.ai.sensing.SensorType.create(SensorType.java:47) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.world.entity.ai.Brain.<init>(Brain.java:117) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.world.entity.ai.Brain$1.decode(Brain.java:84) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.DataResult.lambda$flatMap$11(DataResult.java:139) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.DataResult.flatMap(DataResult.java:137) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.DataResult.lambda$flatMap$11(DataResult.java:139) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.DataResult.flatMap(DataResult.java:137) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.Decoder.decode(Decoder.java:22) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at com.mojang.serialization.Decoder.parse(Decoder.java:26) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
at net.minecraft.world.entity.ai.Brain$Provider.makeBrain(Brain.java:543) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.world.entity.npc.Villager.makeBrain(Villager.java:155) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.entity.LivingEntity.<init>(LivingEntity.java:245) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,re:mixin}
at net.minecraft.world.entity.Mob.<init>(Mob.java:123) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.world.entity.PathfinderMob.<init>(PathfinderMob.java:14) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.world.entity.AgeableMob.<init>(AgeableMob.java:29) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.world.entity.npc.AbstractVillager.<init>(AbstractVillager.java:49) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.world.entity.npc.Villager.<init>(Villager.java:139) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.entity.npc.Villager.<init>(Villager.java:135) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.entity.EntityType.create(EntityType.java:525) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.entity.EntityType.create(EntityType.java:403) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.entity.EntityType.spawn(EntityType.java:393) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.entity.EntityType.spawn(EntityType.java:361) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
at net.minecraft.world.item.SpawnEggItem.useOn(SpawnEggItem.java:85) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:585) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23190%23197!/:?] {re:classloading}
at net.minecraft.world.item.ItemStack.useOn(ItemStack.java:245) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:itemstack}
at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:355) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:1055) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:34) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:8) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:22) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:156) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:23) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:770) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:161) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:130) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:753) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:747) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:139) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:733) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:665) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:251) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at java.lang.Thread.run(Thread.java:840) ~[?:?] {}
Краш-лог:
[11:21:08] [Render thread/FATAL] [ne.mi.co.ForgeMod/]: Preparing crash report with UUID 5398cd83-3625-4a10-88cc-fbc99320b9e0
---- Minecraft Crash Report ----
// My bad.

Time: 2024-12-29 11:21:08
Description: Exception in server tick loop

java.lang.NoClassDefFoundError: ru.senjmam.extrarules.mixin.GameRuleMixin is invalid
	at net.minecraft.world.entity.ai.sensing.VillagerHostilesSensor.<init>(VillagerHostilesSensor.java:12) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,re:classloading,pl:mixin:APP:mixins.extrarules.json:VillagerHostilesSensorMixin,pl:mixin:A}
	at net.minecraft.world.entity.ai.sensing.SensorType.create(SensorType.java:47) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.entity.ai.Brain.<init>(Brain.java:117) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.world.entity.ai.Brain$1.decode(Brain.java:84) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.DataResult.lambda$flatMap$11(DataResult.java:139) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:137) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.DataResult.lambda$flatMap$11(DataResult.java:139) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:137) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.Decoder.decode(Decoder.java:22) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at com.mojang.serialization.Decoder.parse(Decoder.java:26) ~[datafixerupper-6.0.8.jar%23136!/:?] {}
	at net.minecraft.world.entity.ai.Brain$Provider.makeBrain(Brain.java:543) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.world.entity.npc.Villager.makeBrain(Villager.java:155) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.entity.LivingEntity.<init>(LivingEntity.java:245) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,re:mixin}
	at net.minecraft.world.entity.Mob.<init>(Mob.java:123) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.entity.PathfinderMob.<init>(PathfinderMob.java:14) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.world.entity.AgeableMob.<init>(AgeableMob.java:29) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.world.entity.npc.AbstractVillager.<init>(AbstractVillager.java:49) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.world.entity.npc.Villager.<init>(Villager.java:139) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.entity.npc.Villager.<init>(Villager.java:135) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.entity.EntityType.create(EntityType.java:525) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.entity.EntityType.create(EntityType.java:403) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.entity.EntityType.spawn(EntityType.java:393) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.entity.EntityType.spawn(EntityType.java:361) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:forge_method_redirector}
	at net.minecraft.world.item.SpawnEggItem.useOn(SpawnEggItem.java:85) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:585) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23190%23197!/:?] {re:classloading}
	at net.minecraft.world.item.ItemStack.useOn(ItemStack.java:245) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,xf:fml:forge:itemstack}
	at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:355) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:1055) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:34) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:8) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:22) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:156) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:23) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading}
	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:770) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:161) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:130) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:753) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:747) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:139) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:733) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:665) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:251) ~[forge-1.20.1-47.3.1_mapped_official_1.20.1.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at java.lang.Thread.run(Thread.java:840) ~[?:?] {}
Решение
как следует правильно к нему обращаться??
Java:
GetterRule getter = (GetterRule) value_object;

UPD: Зачем вообще всё это?
Можно просто:
Java:
@Inject(method = "isHostile", at = @At("HEAD"), cancellable = true) //Не используй ты этот @Overwrite
public void isHostile(LivingEntity entity, CallbackInfoReturnable<Boolean> cir) {
     cir.setReturnValue(entity.level().getGameRules().getBoolean(GameRules.RULE_DOFIRETICK));
}

UPD2: Судя по тому что IDE тебя не отдёрнула от создания new GameRuleMixin(), у тебя не установлен плагин Minecraft develompent.
как следует правильно к нему обращаться??
Java:
GetterRule getter = (GetterRule) value_object;

UPD: Зачем вообще всё это?
Можно просто:
Java:
@Inject(method = "isHostile", at = @At("HEAD"), cancellable = true) //Не используй ты этот @Overwrite
public void isHostile(LivingEntity entity, CallbackInfoReturnable<Boolean> cir) {
     cir.setReturnValue(entity.level().getGameRules().getBoolean(GameRules.RULE_DOFIRETICK));
}

UPD2: Судя по тому что IDE тебя не отдёрнула от создания new GameRuleMixin(), у тебя не установлен плагин Minecraft develompent.
 
Последнее редактирование:
cir.setReturnValue(entity.level().getGameRules().getBoolean(GameRules.RULE_DOFIRETICK));
FACEPALM.... ентити наследует level.... эх.... учиться и учиться мне, спасибо!!!

но все для интереса, если же надо вытянуть значение через миксин?

Java:
@Mixin(VillagerHostilesSensor.class)
public  abstract class VillagerHostilesSensorMixin {

    ;


    GetterRule getter = (GetterRule) XXX; // не совсем понимаю что тут должно быть? GameRuleMixin()? так товарищ компилятор ругается

    @Overwrite //предположим я нормально написал. и тут не будет оверврайта
    private boolean isHostile(LivingEntity Hostile) {

        return getter.Get_DoFireTick();
    }

(PS инжекты - это круто!!! я учусь ими пользоваться... Спасибо за наставление mr.toad!)

​

)
 
Я пробиваю свой лоб... Каюсь... Не стоит............................
Спасибо))

UPD

АГА! Проблема в том что разрабы плагина считают что я тоталитарный тиран и истребляющий человечество.. Не будем о политоте говорить - ВПН в помощь)
 
Последнее редактирование:
Назад
Сверху