Как изменить метод интерфейса с помощью миксинов? использование Spongepowered в Minecraft Forge 1.18.2JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как изменить метод интерфейса с помощью миксинов? использование Spongepowered в Minecraft Forge 1.18.2

Сообщение Anonymous »

Итак, я использую IntelliJ IDEA для модификации Minecraft Forge 1.18.2 и пытаюсь изменить метод isEmptyBlock класса LevelReader с помощью миксинов SpongePowered.
Но LevelReader — это интерфейс, и мод не запустится, если я попытаюсь отредактировать интерфейс.
И после долгих поисков на InterWebs я ничего не нашел. >
Итак, вопрос:
Так как мне изменить метод интерфейса?
Я использую это код: в: MixinLevelReader

Код: Выделить всё

package net.iateminecraft.jetpacksfix.mixin;

import com.mojang.logging.LogUtils;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.LevelAccessor;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(LevelReader.class)
public abstract class MixinLevelReader {
@Unique
private static final Logger LOGGER = LogUtils.getLogger();
@Unique
LevelAccessor world = (LevelAccessor) (Object) this;

@Inject(at = @At("HEAD"), method = "isEmptyBlock(Lnet/minecraft/core/BlockPos;)Z", cancellable = true)
private void isEmptyBlock(BlockPos blockposition, CallbackInfoReturnable callback) {
LOGGER.info(String.valueOf(world.getBlockState(blockposition).isAir()));
callback.setReturnValue(world.getBlockState(blockposition).isAir());
}
}
Когда я запускаю ./gradlew :build, он компилируется нормально, но как только я это делаю ./gradlew :runClient, возникает ошибка: Причина: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: несоответствие целевого типа @Mixin: net.minecraft.world.level.LevelReader — это интерфейс в org.spongepowered.asm.mixin.transformer.MixinInfo$SubType$Standard@75b6dd5b

Подробнее здесь: https://stackoverflow.com/questions/786 ... ered-on-mi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»