chore: add some fixes discovered while porting
This commit is contained in:
parent
dac6013763
commit
e5e8522f8b
@ -5,6 +5,8 @@ import io.gitlab.jfronny.libjf.config.api.v2.ConfigInstance;
|
|||||||
import io.gitlab.jfronny.libjf.config.api.v2.dsl.ConfigBuilder;
|
import io.gitlab.jfronny.libjf.config.api.v2.dsl.ConfigBuilder;
|
||||||
import io.gitlab.jfronny.libjf.config.api.v2.dsl.DSL;
|
import io.gitlab.jfronny.libjf.config.api.v2.dsl.DSL;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class DSLImpl implements DSL {
|
public class DSLImpl implements DSL {
|
||||||
@Override
|
@Override
|
||||||
public ConfigInstance config(String configId, ConfigBuilder.ConfigBuilderFunction builder) {
|
public ConfigInstance config(String configId, ConfigBuilder.ConfigBuilderFunction builder) {
|
||||||
@ -32,17 +34,17 @@ public class DSLImpl implements DSL {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigInstance config(ConfigBuilder.ConfigBuilderFunction builder) {
|
public ConfigInstance config(ConfigBuilder.ConfigBuilderFunction builder) {
|
||||||
return config(defaultId, builder);
|
return config(Objects.requireNonNull(defaultId), builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigInstance register(ConfigBuilder.ConfigBuilderFunction builder) {
|
public ConfigInstance register(ConfigBuilder.ConfigBuilderFunction builder) {
|
||||||
return register(defaultId, builder);
|
return register(Objects.requireNonNull(defaultId), builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigInstance register(ConfigHolder config, ConfigBuilder.ConfigBuilderFunction builder) {
|
public ConfigInstance register(ConfigHolder config, ConfigBuilder.ConfigBuilderFunction builder) {
|
||||||
return register(config, defaultId, builder);
|
return register(config, Objects.requireNonNull(defaultId), builder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ public class RequestRouter {
|
|||||||
} while (keys.contains(id));
|
} while (keys.contains(id));
|
||||||
currentRequests.put(id, new Request(temporaryHandlers, responseHandler));
|
currentRequests.put(id, new Request(temporaryHandlers, responseHandler));
|
||||||
}
|
}
|
||||||
responseSender.sendPacket(new RequestPacket(id, parent, name, PacketByteBufs.copy(body)));
|
responseSender.sendPacket(new RequestPacket(id, parent, name, body == null ? PacketByteBufs.empty() : PacketByteBufs.copy(body)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private record Request(Map<String, RequestHandler> temporaryHandlers, ResponseHandler responseHandler) {}
|
private record Request(Map<String, RequestHandler> temporaryHandlers, ResponseHandler responseHandler) {}
|
||||||
|
@ -16,7 +16,7 @@ public record RequestPacket(long request, @Nullable Long parent, String name, Pa
|
|||||||
PacketCodecs.VAR_LONG, RequestPacket::request,
|
PacketCodecs.VAR_LONG, RequestPacket::request,
|
||||||
PacketCodecs.optional(PacketCodecs.VAR_LONG), RequestPacket::optionalParent,
|
PacketCodecs.optional(PacketCodecs.VAR_LONG), RequestPacket::optionalParent,
|
||||||
PacketCodecs.STRING, RequestPacket::name,
|
PacketCodecs.STRING, RequestPacket::name,
|
||||||
PacketCodec.of(PacketByteBuf::writeBytes, PacketByteBufs::copy), RequestPacket::aux,
|
PacketCodec.of((value, buf) -> buf.writeBytes(value), PacketByteBufs::copy), RequestPacket::aux,
|
||||||
RequestPacket::new);
|
RequestPacket::new);
|
||||||
|
|
||||||
private RequestPacket(long request, Optional<Long> parent, String name, PacketByteBuf aux) {
|
private RequestPacket(long request, Optional<Long> parent, String name, PacketByteBuf aux) {
|
||||||
|
@ -12,7 +12,7 @@ public record ResponsePacket(long request, int status, PacketByteBuf aux) implem
|
|||||||
public static final PacketCodec<PacketByteBuf, ResponsePacket> CODEC = PacketCodec.tuple(
|
public static final PacketCodec<PacketByteBuf, ResponsePacket> CODEC = PacketCodec.tuple(
|
||||||
PacketCodecs.VAR_LONG, ResponsePacket::request,
|
PacketCodecs.VAR_LONG, ResponsePacket::request,
|
||||||
PacketCodecs.INTEGER, ResponsePacket::status,
|
PacketCodecs.INTEGER, ResponsePacket::status,
|
||||||
PacketCodec.of(PacketByteBuf::writeBytes, PacketByteBufs::copy), ResponsePacket::aux,
|
PacketCodec.of((value, buf) -> buf.writeBytes(value), PacketByteBufs::copy), ResponsePacket::aux,
|
||||||
ResponsePacket::new
|
ResponsePacket::new
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package io.gitlab.jfronny.libjf.config.impl.network.rci;
|
package io.gitlab.jfronny.libjf.config.impl.network.rci;
|
||||||
|
|
||||||
import io.gitlab.jfronny.libjf.LibJf;
|
|
||||||
import io.gitlab.jfronny.libjf.config.api.v2.*;
|
import io.gitlab.jfronny.libjf.config.api.v2.*;
|
||||||
import io.gitlab.jfronny.libjf.config.api.v2.type.Type;
|
import io.gitlab.jfronny.libjf.config.api.v2.type.Type;
|
||||||
import io.gitlab.jfronny.libjf.config.impl.network.rci.entry.*;
|
import io.gitlab.jfronny.libjf.config.impl.network.rci.entry.*;
|
||||||
|
@ -5,7 +5,8 @@ import net.fabricmc.fabric.api.networking.v1.PacketSender;
|
|||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.locks.Condition;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class MirrorObject {
|
public class MirrorObject {
|
||||||
@ -17,22 +18,24 @@ public class MirrorObject {
|
|||||||
|
|
||||||
protected <T> T synchronize(Consumer<Hold<T>> action) {
|
protected <T> T synchronize(Consumer<Hold<T>> action) {
|
||||||
Object[] result = {null};
|
Object[] result = {null};
|
||||||
AtomicBoolean pause = new AtomicBoolean(true);
|
ReentrantLock lock = new ReentrantLock();
|
||||||
|
Condition condition = lock.newCondition();
|
||||||
action.accept(with -> {
|
action.accept(with -> {
|
||||||
result[0] = with;
|
result[0] = with;
|
||||||
pause.set(false);
|
lock.lock();
|
||||||
synchronized (result) {
|
try {
|
||||||
result.notifyAll();
|
condition.signal();
|
||||||
|
} finally {
|
||||||
|
lock.unlock();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
synchronized (result) {
|
lock.lock();
|
||||||
while (pause.get()) {
|
try {
|
||||||
try {
|
condition.await();
|
||||||
if (pause.get()) result.wait();
|
} catch (InterruptedException e) {
|
||||||
} catch (InterruptedException e) {
|
Thread.currentThread().interrupt();
|
||||||
// ignored
|
} finally {
|
||||||
}
|
lock.unlock();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return (T) result[0];
|
return (T) result[0];
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ public class EntryInfoWidgetBuilder {
|
|||||||
state.managedTemp = false;
|
state.managedTemp = false;
|
||||||
state.tempValue = null;
|
state.tempValue = null;
|
||||||
return (screen, textRenderer) -> {
|
return (screen, textRenderer) -> {
|
||||||
final ButtonWidget button = ButtonWidget.builder(Text.translatable("libjf-config-core-v2.edit"), $ -> {
|
final ButtonWidget button = ButtonWidget.builder(Text.translatable(ConfigCore.MOD_ID + ".edit"), $ -> {
|
||||||
final String jsonified;
|
final String jsonified;
|
||||||
if (state.tempValue == null) {
|
if (state.tempValue == null) {
|
||||||
try {
|
try {
|
||||||
|
@ -9,7 +9,6 @@ import net.minecraft.client.gui.screen.Screen;
|
|||||||
import net.minecraft.client.gui.widget.*;
|
import net.minecraft.client.gui.widget.*;
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.text.*;
|
import net.minecraft.text.*;
|
||||||
import net.minecraft.util.math.MathHelper;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -19,7 +19,7 @@ public class TestConfig implements JfCustomConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(DSL.Defaulted dsl) {
|
public void register(DSL.Defaulted dsl) {
|
||||||
dsl.register(builder -> builder
|
dsl.register("libjf-config-ui-tiny-testmod", builder -> builder
|
||||||
.category("ca1", builder1 -> builder1
|
.category("ca1", builder1 -> builder1
|
||||||
.value("value1", value1, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, () -> value1, v -> value1 = v)
|
.value("value1", value1, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, () -> value1, v -> value1 = v)
|
||||||
.value("doubleValue", doubleValue, -0.74, 1.6, () -> doubleValue, v -> doubleValue = v)
|
.value("doubleValue", doubleValue, -0.74, 1.6, () -> doubleValue, v -> doubleValue = v)
|
||||||
|
@ -17,7 +17,7 @@ public class JfWebConfig {
|
|||||||
public static void ensureValidPort() {
|
public static void ensureValidPort() {
|
||||||
if (port == 0) {
|
if (port == 0) {
|
||||||
port = findAvailablePort();
|
port = findAvailablePort();
|
||||||
ConfigHolder.getInstance().getRegistered().get("libjf-web-v1").write();
|
JFC_JfWebConfig.INSTANCE.write();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user