Игре не нравится, что метод не private static и не только

Версия Minecraft
1.21.1
API
Fabric
39
3
3
Решил попробовать сделать миксин на деревья, а конкретно захотел попробовать поиграть с формой тёмного дуба
Выглядит это всё дело так:
TreeConfiguredFeaturesMixin.java:
package net.yaksolo.ambulance.mixin;

import net.minecraft.block.*;
import net.minecraft.registry.Registerable;
import net.minecraft.util.math.intprovider.ConstantIntProvider;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.size.ThreeLayersFeatureSize;
import net.minecraft.world.gen.foliage.*;
import net.minecraft.world.gen.stateprovider.BlockStateProvider;
import net.minecraft.world.gen.trunk.*;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.util.OptionalInt;

import static net.minecraft.world.gen.feature.TreeConfiguredFeatures.DARK_OAK;


@Mixin(TreeConfiguredFeatures.class)

public class TreeConfiguredFeaturesMixin {
   @Inject(method = {"bootstrap"}, at = @At("INVOKE"), cancellable = true)
    public static void bootstrap (Registerable<ConfiguredFeature<?, ?>> featureRegisterable, CallbackInfo info) {
       info.cancel();
       ConfiguredFeatures.register(
               featureRegisterable,
               DARK_OAK,
               Feature.TREE,
               new TreeFeatureConfig.Builder(
                       BlockStateProvider.of(Blocks.DARK_OAK_LOG),
                       new DarkOakTrunkPlacer(26, 26, 16),
                       BlockStateProvider.of(Blocks.DARK_OAK_LEAVES),
                       new DarkOakFoliagePlacer(ConstantIntProvider.create(0), ConstantIntProvider.create(0)),
                       new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty())
               )
                       .ignoreVines()
                       .build()
       );
   }
}

К сожалению я который день не могу понять что с этим делать, помогите пожалуйста

Ниже я добавил самый важный кусок крашлога
 
Краш-лог
Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.world.gen.feature.TreeConfiguredFeatures failed
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:427)
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323)
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218)
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at net.minecraft.block.SaplingGenerator.<clinit>(SaplingGenerator.java:85)
... 11 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422)
... 16 more
Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [ambulance.mixins.json:TreeConfiguredFeaturesMixin from mod ambulance] from phase [DEFAULT] in config [ambulance.mixins.json] FAILED during APPLY
at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinError(MixinProcessor.java:638)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinApplyError(MixinProcessor.java:589)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:379)
... 19 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: Mixin ambulance.mixins.json:TreeConfiguredFeaturesMixin from mod ambulance contains non-private static method bootstrap(Lnet/minecraft/registry/Registerable;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;)V [ -> MAIN Applicator Phase -> ambulance.mixins.json:TreeConfiguredFeaturesMixin from mod ambulance -> Apply Methods -> (Lnet/minecraft/registry/Registerable;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;)V:handler$zfe000$ambulance$bootstrap]
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.checkMethodVisibility(MixinApplicatorStandard.java:781)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyNormalMethod(MixinApplicatorStandard.java:466)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMethods(MixinApplicatorStandard.java:449)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:308)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:246)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:437)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:418)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
... 19 more
Краш-лог:
Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.world.gen.feature.TreeConfiguredFeatures failed
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:427)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at net.minecraft.block.SaplingGenerator.<clinit>(SaplingGenerator.java:85)
	... 11 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422)
	... 16 more
Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [ambulance.mixins.json:TreeConfiguredFeaturesMixin from mod ambulance] from phase [DEFAULT] in config [ambulance.mixins.json] FAILED during APPLY
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinError(MixinProcessor.java:638)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinApplyError(MixinProcessor.java:589)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:379)
	... 19 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: Mixin ambulance.mixins.json:TreeConfiguredFeaturesMixin from mod ambulance contains non-private static method bootstrap(Lnet/minecraft/registry/Registerable;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;)V [ -> MAIN Applicator Phase -> ambulance.mixins.json:TreeConfiguredFeaturesMixin from mod ambulance -> Apply Methods -> (Lnet/minecraft/registry/Registerable;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;)V:handler$zfe000$ambulance$bootstrap]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.checkMethodVisibility(MixinApplicatorStandard.java:781)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyNormalMethod(MixinApplicatorStandard.java:466)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMethods(MixinApplicatorStandard.java:449)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:308)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:246)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:437)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:418)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
	... 19 more
В ошибке чётко написано что метод bootstrap() должен быть приватным
Вот именно что нет, в оригинальном классе метод публичный, я пробовал писать приват, но тогда все изменения миксина абсолютно не работают, просто запускается игра
 
У тебя миксины, документация библиотеки говорит о том, что все статичные методы должны быть приватными и не важно какой модификатор доступа у метода в оригинале. То что игра запускается без каких-либо изменений это нормально. Миксины применятся только когда произойдёт вызов метода/поля из класса или когда будет создан объект. Для дебага есть флаг, который позволяет сделать дамп классов и помимо этого также присутствует консоль, которая оповестит об ошибках
 
Назад
Сверху