更换无线收发器材质

This commit is contained in:
GaLicn 2025-12-02 13:10:39 +08:00
parent e07901295a
commit 035c26f15c
18 changed files with 113 additions and 9 deletions

View File

@ -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

View File

@ -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) {}
}

View File

@ -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" }
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_0"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_1"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_2"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_3"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_4"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "extendedae_plus:block/wireless_transceiver/wireless_transceiver_5"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B