为收发器增加抗卸载机制。
This commit is contained in:
parent
25ff601368
commit
73b7666bde
|
|
@ -26,8 +26,6 @@ import java.util.EnumSet;
|
||||||
* - 频率设置;
|
* - 频率设置;
|
||||||
* - 集成 AE2 节点;
|
* - 集成 AE2 节点;
|
||||||
* - 集成无线主/从逻辑。
|
* - 集成无线主/从逻辑。
|
||||||
*
|
|
||||||
* 注意:本类不包含注册常量,需在你的注册系统中完成 BlockEntityType 的创建与绑定。
|
|
||||||
*/
|
*/
|
||||||
public class WirelessTransceiverBlockEntity extends BlockEntity implements IWirelessEndpoint, IInWorldGridNodeHost {
|
public class WirelessTransceiverBlockEntity extends BlockEntity implements IWirelessEndpoint, IInWorldGridNodeHost {
|
||||||
|
|
||||||
|
|
@ -149,6 +147,14 @@ public class WirelessTransceiverBlockEntity extends BlockEntity implements IWire
|
||||||
// 在首个 tick 创建,以保证区块已就绪
|
// 在首个 tick 创建,以保证区块已就绪
|
||||||
GridHelper.onFirstTick(this, be -> {
|
GridHelper.onFirstTick(this, be -> {
|
||||||
be.managedNode.create(be.getLevel(), be.getBlockPos());
|
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 long getFrequency() { return frequency; }
|
||||||
|
|
||||||
public void setFrequency(long frequency) {
|
public void setFrequency(long frequency) {
|
||||||
if (this.frequency == frequency) return;
|
// 如果频率发生变化,先撤销旧频率的注册
|
||||||
// 先反注册旧频率
|
if (this.frequency != frequency) {
|
||||||
if (registered) {
|
if (registered) {
|
||||||
unregister();
|
unregister();
|
||||||
|
}
|
||||||
|
this.frequency = frequency;
|
||||||
}
|
}
|
||||||
this.frequency = frequency;
|
|
||||||
// 再尝试注册新频率
|
// 频率未变的情况下也要校正注册状态:
|
||||||
|
// - 当从“从端”切回“主端”时,registered 可能为 false,需要重新注册;
|
||||||
|
// - 当频率为 0 或端点被移除时,确保处于未注册。
|
||||||
if (frequency != 0L && !host.isEndpointRemoved()) {
|
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