完善材质,更新版本为1.2.0

This commit is contained in:
GaLicn 2025-08-13 10:26:04 +08:00
parent f7e57d9dd8
commit 35fe0af647
6 changed files with 32 additions and 13 deletions

View File

@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
loom.platform = forge
# Mod properties
mod_version = 1.1.4
mod_version = 1.2.0
maven_group = com.extendedae_plus
archives_name = extendedae_plus

View File

@ -6,6 +6,7 @@ public final class ModConfigs {
public static final ForgeConfigSpec COMMON_SPEC;
public static final ForgeConfigSpec.IntValue PAGE_MULTIPLIER;
public static final ForgeConfigSpec.DoubleValue WIRELESS_MAX_RANGE;
public static final ForgeConfigSpec.BooleanValue WIRELESS_CROSS_DIM_ENABLE;
static {
ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder();
@ -24,6 +25,13 @@ public final class ModConfigs {
"无线收发器最大连接距离(单位:方块)",
"从端与主端的直线距离需小于等于该值才会建立连接。")
.defineInRange("wirelessMaxRange", 256.0D, 1.0D, 4096.0D);
// 是否允许跨维度连接忽略维度差异进行频道传输
WIRELESS_CROSS_DIM_ENABLE = builder
.comment(
"是否允许无线收发器跨维度建立连接",
"开启后,从端可连接到不同维度的主端(忽略距离限制)")
.define("wirelessCrossDimEnable", true);
builder.pop();
COMMON_SPEC = builder.build();
}

View File

@ -42,7 +42,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
f -= step;
if (f < 0) f = 0;
te.setFrequency(f);
player.displayClientMessage(Component.literal("Freq: " + te.getFrequency()), true);
player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true);
}
}
super.attack(state, level, pos, player);
@ -71,10 +71,10 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
if (f < 0) f = 0;
}
te.setFrequency(f);
player.displayClientMessage(Component.literal("Freq: " + te.getFrequency()), true);
player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true);
} else {
te.setMasterMode(!te.isMasterMode());
player.displayClientMessage(Component.literal(te.isMasterMode() ? "Mode: MASTER" : "Mode: SLAVE"), true);
player.displayClientMessage(Component.literal(te.isMasterMode() ? "模式:主端" : "模式:从端"), true);
}
return InteractionResult.CONSUME;
}

View File

@ -9,6 +9,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import com.extendedae_plus.config.ModConfigs;
/**
* 无线主端注册中心 维度 + 频率 唯一注册一个主收发器端点
* 从端通过本注册中心按频率查找主端实现一对多连接
@ -22,7 +24,7 @@ public final class WirelessMasterRegistry {
Objects.requireNonNull(level, "level");
Objects.requireNonNull(endpoint, "endpoint");
if (frequency == 0L) return false;
final Key key = new Key(level.dimension(), frequency);
final Key key = new Key(useGlobal() ? null : level.dimension(), frequency);
cleanupIfCleared(key);
var existing = MASTERS.get(key);
var existingVal = existing == null ? null : existing.get();
@ -36,7 +38,7 @@ public final class WirelessMasterRegistry {
public static synchronized void unregister(ServerLevel level, long frequency, IWirelessEndpoint endpoint) {
if (frequency == 0L || level == null) return;
final Key key = new Key(level.dimension(), frequency);
final Key key = new Key(useGlobal() ? null : level.dimension(), frequency);
var ref = MASTERS.get(key);
if (ref != null) {
var cur = ref.get();
@ -48,7 +50,7 @@ public final class WirelessMasterRegistry {
public static synchronized IWirelessEndpoint get(ServerLevel level, long frequency) {
if (frequency == 0L || level == null) return null;
final Key key = new Key(level.dimension(), frequency);
final Key key = new Key(useGlobal() ? null : level.dimension(), frequency);
cleanupIfCleared(key);
var ref = MASTERS.get(key);
return ref == null ? null : ref.get();
@ -61,7 +63,13 @@ public final class WirelessMasterRegistry {
}
}
private static boolean useGlobal() {
return ModConfigs.WIRELESS_CROSS_DIM_ENABLE.get();
}
private record Key(ResourceKey<Level> dim, long freq) {
@Override public String toString() { return dim.location() + "#" + freq; }
@Override public String toString() {
return (dim == null ? "*" : dim.location().toString()) + "#" + freq;
}
}
}

View File

@ -64,10 +64,13 @@ public class WirelessSlaveLink {
shutdown = false;
distance = 0.0D;
if (master != null && !master.isEndpointRemoved() && master.getServerLevel() == level) {
distance = Math.sqrt(master.getBlockPos().distSqr(host.getBlockPos()));
boolean crossDim = ModConfigs.WIRELESS_CROSS_DIM_ENABLE.get();
if (master != null && !master.isEndpointRemoved() && (crossDim || master.getServerLevel() == level)) {
if (!crossDim) {
distance = Math.sqrt(master.getBlockPos().distSqr(host.getBlockPos()));
}
double maxRange = ModConfigs.WIRELESS_MAX_RANGE.get();
if (distance <= maxRange) {
if (crossDim || distance <= maxRange) {
// 保持/建立连接
try {
var current = connection.getConnection();
@ -97,7 +100,7 @@ public class WirelessSlaveLink {
shutdown = true; // 超出范围
}
} else {
shutdown = true; // 无主或主端不可用/不同维度
shutdown = true; // 无主或主端不可用
}
// 需要关闭连接

View File

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