更换无线收发器材质
|
|
@ -19,14 +19,25 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
|||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class WirelessTransceiverBlock extends Block implements EntityBlock {
|
||||
public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5);
|
||||
|
||||
public WirelessTransceiverBlock(Properties props) {
|
||||
super(props);
|
||||
this.registerDefaultState(this.stateDefinition.any().setValue(STATE, 5));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
|
||||
super.createBlockStateDefinition(builder);
|
||||
builder.add(STATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -207,6 +207,51 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements
|
|||
// 从端需要周期检查与维护连接
|
||||
be.slaveLink.updateStatus();
|
||||
}
|
||||
// 更新状态
|
||||
be.updateState();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据连接状态和频道数更新方块状态
|
||||
*/
|
||||
private void updateState() {
|
||||
if (this.level == null || this.level.isClientSide) return;
|
||||
|
||||
IGridNode node = this.getGridNode();
|
||||
int newState = 5; // 默认状态:无连接
|
||||
|
||||
if (node != null && node.isActive()) {
|
||||
// 获取该节点使用的频道数(与 jade 中获取频道使用量的方式一致)
|
||||
int usedChannels = 0;
|
||||
for (var connection : node.getConnections()) {
|
||||
usedChannels = Math.max(connection.getUsedChannels(), usedChannels);
|
||||
}
|
||||
|
||||
// 根据频道数计算状态:
|
||||
// 有连接但频道数 < 8:状态0(创建连接时)
|
||||
// 频道数 >= 8 且 < 16:状态1
|
||||
// 频道数 >= 16 且 < 24:状态2
|
||||
// 频道数 >= 24 且 < 32:状态3
|
||||
// 频道数 >= 32:状态4
|
||||
if (usedChannels >= 32) {
|
||||
newState = 4;
|
||||
} else if (usedChannels >= 24) {
|
||||
newState = 3;
|
||||
} else if (usedChannels >= 16) {
|
||||
newState = 2;
|
||||
} else if (usedChannels >= 8) {
|
||||
newState = 1;
|
||||
} else if (usedChannels >= 0) {
|
||||
newState = 0; // 有连接但频道数 < 8
|
||||
}
|
||||
// 如果 usedChannels == 0,保持 newState = 5(无连接状态)
|
||||
}
|
||||
|
||||
// 更新方块状态
|
||||
BlockState currentState = this.getBlockState();
|
||||
if (currentState.getValue(WirelessTransceiverBlock.STATE) != newState) {
|
||||
this.level.setBlock(this.worldPosition, currentState.setValue(WirelessTransceiverBlock.STATE, newState), 3);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -284,11 +329,18 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements
|
|||
@Override
|
||||
public void onStateChanged(WirelessTransceiverBlockEntity host, IGridNode node, State state) {
|
||||
// 可在此响应 POWER/CHANNEL 等变化,刷新显示等
|
||||
host.updateState();
|
||||
}
|
||||
@Override
|
||||
public void onInWorldConnectionChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
||||
public void onInWorldConnectionChanged(WirelessTransceiverBlockEntity host, IGridNode node) {
|
||||
// 连接变化时更新状态
|
||||
host.updateState();
|
||||
}
|
||||
@Override
|
||||
public void onGridChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
||||
public void onGridChanged(WirelessTransceiverBlockEntity host, IGridNode node) {
|
||||
// 网格变化时更新状态
|
||||
host.updateState();
|
||||
}
|
||||
@Override
|
||||
public void onOwnerChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
{
|
||||
"variants": {
|
||||
"": { "model": "extendedae_plus:block/wireless_transceiver" }
|
||||
"state=0": { "model": "extendedae_plus:block/wireless_transceiver_0" },
|
||||
"state=1": { "model": "extendedae_plus:block/wireless_transceiver_1" },
|
||||
"state=2": { "model": "extendedae_plus:block/wireless_transceiver_2" },
|
||||
"state=3": { "model": "extendedae_plus:block/wireless_transceiver_3" },
|
||||
"state=4": { "model": "extendedae_plus:block/wireless_transceiver_4" },
|
||||
"state=5": { "model": "extendedae_plus:block/wireless_transceiver_5" }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_0"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_1"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_2"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_3"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_4"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_5"
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 394 B |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 439 B |
|
After Width: | Height: | Size: 439 B |
|
After Width: | Height: | Size: 448 B |
|
After Width: | Height: | Size: 452 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 423 B |