频道卡逻辑
This commit is contained in:
parent
0571efe2f9
commit
56dcdad91f
|
|
@ -1,7 +1,10 @@
|
||||||
package com.extendedae_plus.init;
|
package com.extendedae_plus.init;
|
||||||
|
|
||||||
import appeng.api.upgrades.Upgrades;
|
import appeng.api.upgrades.Upgrades;
|
||||||
|
import appeng.core.definitions.AEBlocks;
|
||||||
import appeng.core.definitions.AEItems;
|
import appeng.core.definitions.AEItems;
|
||||||
|
import appeng.core.definitions.AEParts;
|
||||||
|
import appeng.core.localization.GuiText;
|
||||||
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,6 +15,23 @@ public class UpgradeCards {
|
||||||
Upgrades.add(AEItems.ENERGY_CARD, ModItems.ENTITY_TICKER_PART_ITEM.get(), 8, "group.entity_ticker.name");
|
Upgrades.add(AEItems.ENERGY_CARD, ModItems.ENTITY_TICKER_PART_ITEM.get(), 8, "group.entity_ticker.name");
|
||||||
// 使用单一的 UpgradeCard Item 作为注册键,总共允许安装 4 张(不同等级由 ItemStack NBT 区分)
|
// 使用单一的 UpgradeCard Item 作为注册键,总共允许安装 4 张(不同等级由 ItemStack NBT 区分)
|
||||||
Upgrades.add(ModItems.ENTITY_SPEED_CARD.get(), ModItems.ENTITY_TICKER_PART_ITEM.get(), 4, "group.entity_ticker.name");
|
Upgrades.add(ModItems.ENTITY_SPEED_CARD.get(), ModItems.ENTITY_TICKER_PART_ITEM.get(), 4, "group.entity_ticker.name");
|
||||||
|
|
||||||
|
// 频道卡:对齐旧版注册 — AE2 接口(方块与部件)
|
||||||
|
String interfaceGroup = GuiText.Interface.getTranslationKey();
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEBlocks.INTERFACE, 1, interfaceGroup);
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEParts.INTERFACE, 1, interfaceGroup);
|
||||||
|
|
||||||
|
// 频道卡:AE2 样板供应器(方块与部件)
|
||||||
|
String patternProviderGroup = "group.pattern_provider.name";
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEBlocks.PATTERN_PROVIDER, 1, patternProviderGroup);
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEParts.PATTERN_PROVIDER, 1, patternProviderGroup);
|
||||||
|
|
||||||
|
// 频道卡:AE2 I/O 总线与存储总线(部件)
|
||||||
|
String ioBusGroup = GuiText.IOBuses.getTranslationKey();
|
||||||
|
String storageGroup = "group.storage.name";
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEParts.IMPORT_BUS, 1, ioBusGroup);
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEParts.EXPORT_BUS, 1, ioBusGroup);
|
||||||
|
Upgrades.add(ModItems.CHANNEL_CARD.get(), AEParts.STORAGE_BUS, 1, storageGroup);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.extendedae_plus.mixin.ae2.helpers;
|
||||||
|
|
||||||
|
import appeng.helpers.InterfaceLogic;
|
||||||
|
import com.extendedae_plus.bridge.InterfaceWirelessLinkBridge;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注入到 InterfaceLogic.Ticker 的每tick回调,驱动无线链接状态更新与延迟初始化。
|
||||||
|
*/
|
||||||
|
@Mixin(targets = "appeng.helpers.InterfaceLogic$Ticker")
|
||||||
|
public abstract class InterfaceLogicTickerMixin {
|
||||||
|
|
||||||
|
// Mixin 访问内部类的外部引用字段(javac 生成名 this$0)
|
||||||
|
@Shadow(remap = false)
|
||||||
|
@Final
|
||||||
|
private InterfaceLogic this$0;
|
||||||
|
|
||||||
|
@Inject(method = "tickingRequest", at = @At("HEAD"), remap = false)
|
||||||
|
private void eap$tickHead(appeng.api.networking.IGridNode node, int ticksSinceLastCall,
|
||||||
|
CallbackInfoReturnable<appeng.api.networking.ticking.TickRateModulation> cir) {
|
||||||
|
// 仅在服务端处理延迟初始化,避免客户端干扰
|
||||||
|
if (node != null && node.getLevel() != null && node.getLevel().isClientSide) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this$0 instanceof InterfaceWirelessLinkBridge bridge) {
|
||||||
|
bridge.eap$handleDelayedInit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "tickingRequest", at = @At("TAIL"), remap = false)
|
||||||
|
private void eap$tickTail(appeng.api.networking.IGridNode node, int ticksSinceLastCall,
|
||||||
|
CallbackInfoReturnable<appeng.api.networking.ticking.TickRateModulation> cir) {
|
||||||
|
if (this$0 instanceof InterfaceWirelessLinkBridge bridge) {
|
||||||
|
bridge.eap$updateWirelessLink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
"ae2.autopattern.CraftingTreeProcessMixin",
|
"ae2.autopattern.CraftingTreeProcessMixin",
|
||||||
"ae2.autopattern.PatternProviderLogicContainsRedirectMixin",
|
"ae2.autopattern.PatternProviderLogicContainsRedirectMixin",
|
||||||
"ae2.helpers.InterfaceLogicChannelCardMixin",
|
"ae2.helpers.InterfaceLogicChannelCardMixin",
|
||||||
|
"ae2.helpers.InterfaceLogicTickerMixin",
|
||||||
"ae2.helpers.PatternProviderLogicAdvancedMixin",
|
"ae2.helpers.PatternProviderLogicAdvancedMixin",
|
||||||
"ae2.helpers.PatternProviderLogicDoublingMixin",
|
"ae2.helpers.PatternProviderLogicDoublingMixin",
|
||||||
"ae2.parts.automation.IOBusPartChannelCardMixin",
|
"ae2.parts.automation.IOBusPartChannelCardMixin",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user