- 83
- 4
- 23
Кто-нибудь знает как получить нужное поле, используя Миксины?
Суть в том, что мне нужно получить
Я вообще сделал так:
Но мне сказали что это неверно и что нужно "Mix in to HandledScreen to expose what you want"
Сейчас я сижу с этим, и не знаю куда мне двигаться дальше:
Суть в том, что мне нужно получить
TradersOfferList
из MerchantScreen
. В классе MerchantScreen его получают таким образом: TraderOfferList traderOfferList = ((MerchantScreenHandler)this.handler).getRecipes();
. Проблема в том, что handler является полем класса-наследника HandledScreen<MerchantScreenHandler>
. В дисорде SpongePowered мне сказали "смешать" в целевой класс MerchantScreen несколько акцессоров для переменных, затем расширить этот миксин и тогда я смогу вызвать эти акцессоры.Я вообще сделал так:
Java:
@Mixin(MerchantScreen.class)
public abstract class MixinMerchantScreen extends HandledScreen {
public MixinMerchantScreen(ScreenHandler handler, PlayerInventory inventory, Text title) {
super(handler, inventory, title);
}
public MerchantScreenHandler getHandler() {
return ((MerchantScreenHandler)this.handler);
}
}
Сейчас я сижу с этим, и не знаю куда мне двигаться дальше:
Java:
@Mixin(MerchantScreenHandler.class)
public class MixinMerchantScreenHandler {
@Shadow
@Final
private Trader trader;
public Trader getTrader() {
return this.trader;
}
public TraderOfferList getOffers() { return this.trader.getOffers(); }
}