完善材质,更新版本为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 loom.platform = forge
# Mod properties # Mod properties
mod_version = 1.1.4 mod_version = 1.2.0
maven_group = com.extendedae_plus maven_group = com.extendedae_plus
archives_name = 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 COMMON_SPEC;
public static final ForgeConfigSpec.IntValue PAGE_MULTIPLIER; public static final ForgeConfigSpec.IntValue PAGE_MULTIPLIER;
public static final ForgeConfigSpec.DoubleValue WIRELESS_MAX_RANGE; public static final ForgeConfigSpec.DoubleValue WIRELESS_MAX_RANGE;
public static final ForgeConfigSpec.BooleanValue WIRELESS_CROSS_DIM_ENABLE;
static { static {
ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder();
@ -24,6 +25,13 @@ public final class ModConfigs {
"无线收发器最大连接距离(单位:方块)", "无线收发器最大连接距离(单位:方块)",
"从端与主端的直线距离需小于等于该值才会建立连接。") "从端与主端的直线距离需小于等于该值才会建立连接。")
.defineInRange("wirelessMaxRange", 256.0D, 1.0D, 4096.0D); .defineInRange("wirelessMaxRange", 256.0D, 1.0D, 4096.0D);
// 是否允许跨维度连接忽略维度差异进行频道传输
WIRELESS_CROSS_DIM_ENABLE = builder
.comment(
"是否允许无线收发器跨维度建立连接",
"开启后,从端可连接到不同维度的主端(忽略距离限制)")
.define("wirelessCrossDimEnable", true);
builder.pop(); builder.pop();
COMMON_SPEC = builder.build(); COMMON_SPEC = builder.build();
} }

View File

@ -42,7 +42,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
f -= step; f -= step;
if (f < 0) f = 0; if (f < 0) f = 0;
te.setFrequency(f); te.setFrequency(f);
player.displayClientMessage(Component.literal("Freq: " + te.getFrequency()), true); player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true);
} }
} }
super.attack(state, level, pos, player); super.attack(state, level, pos, player);
@ -71,10 +71,10 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
if (f < 0) f = 0; if (f < 0) f = 0;
} }
te.setFrequency(f); te.setFrequency(f);
player.displayClientMessage(Component.literal("Freq: " + te.getFrequency()), true); player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true);
} else { } else {
te.setMasterMode(!te.isMasterMode()); 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; return InteractionResult.CONSUME;
} }

View File

@ -9,6 +9,8 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import com.extendedae_plus.config.ModConfigs;
/** /**
* 无线主端注册中心 维度 + 频率 唯一注册一个主收发器端点 * 无线主端注册中心 维度 + 频率 唯一注册一个主收发器端点
* 从端通过本注册中心按频率查找主端实现一对多连接 * 从端通过本注册中心按频率查找主端实现一对多连接
@ -22,7 +24,7 @@ public final class WirelessMasterRegistry {
Objects.requireNonNull(level, "level"); Objects.requireNonNull(level, "level");
Objects.requireNonNull(endpoint, "endpoint"); Objects.requireNonNull(endpoint, "endpoint");
if (frequency == 0L) return false; 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); cleanupIfCleared(key);
var existing = MASTERS.get(key); var existing = MASTERS.get(key);
var existingVal = existing == null ? null : existing.get(); 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) { public static synchronized void unregister(ServerLevel level, long frequency, IWirelessEndpoint endpoint) {
if (frequency == 0L || level == null) return; 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); var ref = MASTERS.get(key);
if (ref != null) { if (ref != null) {
var cur = ref.get(); var cur = ref.get();
@ -48,7 +50,7 @@ public final class WirelessMasterRegistry {
public static synchronized IWirelessEndpoint get(ServerLevel level, long frequency) { public static synchronized IWirelessEndpoint get(ServerLevel level, long frequency) {
if (frequency == 0L || level == null) return null; 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); cleanupIfCleared(key);
var ref = MASTERS.get(key); var ref = MASTERS.get(key);
return ref == null ? null : ref.get(); 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) { 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; shutdown = false;
distance = 0.0D; distance = 0.0D;
if (master != null && !master.isEndpointRemoved() && master.getServerLevel() == level) { boolean crossDim = ModConfigs.WIRELESS_CROSS_DIM_ENABLE.get();
distance = Math.sqrt(master.getBlockPos().distSqr(host.getBlockPos())); 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(); double maxRange = ModConfigs.WIRELESS_MAX_RANGE.get();
if (distance <= maxRange) { if (crossDim || distance <= maxRange) {
// 保持/建立连接 // 保持/建立连接
try { try {
var current = connection.getConnection(); var current = connection.getConnection();
@ -97,7 +100,7 @@ public class WirelessSlaveLink {
shutdown = true; // 超出范围 shutdown = true; // 超出范围
} }
} else { } else {
shutdown = true; // 无主或主端不可用/不同维度 shutdown = true; // 无主或主端不可用
} }
// 需要关闭连接 // 需要关闭连接

View File

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