更换无线收发器材质
|
|
@ -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.BlockEntityTicker;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
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 net.minecraft.world.phys.BlockHitResult;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class WirelessTransceiverBlock extends Block implements EntityBlock {
|
public class WirelessTransceiverBlock extends Block implements EntityBlock {
|
||||||
|
public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5);
|
||||||
|
|
||||||
public WirelessTransceiverBlock(Properties props) {
|
public WirelessTransceiverBlock(Properties props) {
|
||||||
super(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
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -207,6 +207,51 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements
|
||||||
// 从端需要周期检查与维护连接
|
// 从端需要周期检查与维护连接
|
||||||
be.slaveLink.updateStatus();
|
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
|
@Override
|
||||||
|
|
@ -284,11 +329,18 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(WirelessTransceiverBlockEntity host, IGridNode node, State state) {
|
public void onStateChanged(WirelessTransceiverBlockEntity host, IGridNode node, State state) {
|
||||||
// 可在此响应 POWER/CHANNEL 等变化,刷新显示等
|
// 可在此响应 POWER/CHANNEL 等变化,刷新显示等
|
||||||
|
host.updateState();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onInWorldConnectionChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
public void onInWorldConnectionChanged(WirelessTransceiverBlockEntity host, IGridNode node) {
|
||||||
|
// 连接变化时更新状态
|
||||||
|
host.updateState();
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onGridChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
public void onGridChanged(WirelessTransceiverBlockEntity host, IGridNode node) {
|
||||||
|
// 网格变化时更新状态
|
||||||
|
host.updateState();
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onOwnerChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
public void onOwnerChanged(WirelessTransceiverBlockEntity host, IGridNode node) {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
{
|
{
|
||||||
"variants": {
|
"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 |