为收发器增加抗卸载机制。
This commit is contained in:
parent
35fe0af647
commit
b69abee69e
|
|
@ -26,8 +26,6 @@ import java.util.EnumSet;
|
|||
* - 频率设置;
|
||||
* - 集成 AE2 节点;
|
||||
* - 集成无线主/从逻辑。
|
||||
*
|
||||
* 注意:本类不包含注册常量,需在你的注册系统中完成 BlockEntityType 的创建与绑定。
|
||||
*/
|
||||
public class WirelessTransceiverBlockEntity extends BlockEntity implements IWirelessEndpoint, IInWorldGridNodeHost {
|
||||
|
||||
|
|
@ -149,6 +147,14 @@ public class WirelessTransceiverBlockEntity extends BlockEntity implements IWire
|
|||
// 在首个 tick 创建,以保证区块已就绪
|
||||
GridHelper.onFirstTick(this, be -> {
|
||||
be.managedNode.create(be.getLevel(), be.getBlockPos());
|
||||
// 节点创建后,重新应用当前模式与频率,确保:
|
||||
// - 主端在重载后完成注册;
|
||||
// - 从端在重载后开始维护连接。
|
||||
if (be.masterMode) {
|
||||
be.masterLink.setFrequency(be.frequency);
|
||||
} else {
|
||||
be.slaveLink.setFrequency(be.frequency);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,15 +18,25 @@ public class WirelessMasterLink {
|
|||
public long getFrequency() { return frequency; }
|
||||
|
||||
public void setFrequency(long frequency) {
|
||||
if (this.frequency == frequency) return;
|
||||
// 先反注册旧频率
|
||||
if (registered) {
|
||||
unregister();
|
||||
// 如果频率发生变化,先撤销旧频率的注册
|
||||
if (this.frequency != frequency) {
|
||||
if (registered) {
|
||||
unregister();
|
||||
}
|
||||
this.frequency = frequency;
|
||||
}
|
||||
this.frequency = frequency;
|
||||
// 再尝试注册新频率
|
||||
|
||||
// 频率未变的情况下也要校正注册状态:
|
||||
// - 当从“从端”切回“主端”时,registered 可能为 false,需要重新注册;
|
||||
// - 当频率为 0 或端点被移除时,确保处于未注册。
|
||||
if (frequency != 0L && !host.isEndpointRemoved()) {
|
||||
register();
|
||||
if (!registered) {
|
||||
register();
|
||||
}
|
||||
} else {
|
||||
if (registered) {
|
||||
unregister();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 1005 KiB |
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"RRR",
|
||||
"RLR",
|
||||
"RRR"
|
||||
],
|
||||
"key": {
|
||||
"R": { "item": "ae2:quantum_ring" },
|
||||
"L": { "item": "ae2:quantum_link" }
|
||||
},
|
||||
"result": {
|
||||
"item": "extendedae_plus:wireless_transceiver",
|
||||
"count": 1
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user