Code/net/minecraft/util/datafix/fixes/RedstoneWireConnectionsFix....

51 lines
2.2 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.util.datafix.fixes;
import com.mojang.datafixers.DSL;
import com.mojang.datafixers.DataFix;
import com.mojang.datafixers.TypeRewriteRule;
import com.mojang.datafixers.Typed;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.serialization.Dynamic;
public class RedstoneWireConnectionsFix extends DataFix {
public RedstoneWireConnectionsFix(Schema p_16749_) {
super(p_16749_, false);
}
@Override
protected TypeRewriteRule makeRule() {
Schema schema = this.getInputSchema();
return this.fixTypeEverywhereTyped(
"RedstoneConnectionsFix", schema.getType(References.BLOCK_STATE), p_16751_ -> p_16751_.update(DSL.remainderFinder(), this::updateRedstoneConnections)
);
}
private <T> Dynamic<T> updateRedstoneConnections(Dynamic<T> p_16753_) {
boolean flag = p_16753_.get("Name").asString().result().filter("minecraft:redstone_wire"::equals).isPresent();
return !flag
? p_16753_
: p_16753_.update(
"Properties",
p_16760_ -> {
String s = p_16760_.get("east").asString("none");
String s1 = p_16760_.get("west").asString("none");
String s2 = p_16760_.get("north").asString("none");
String s3 = p_16760_.get("south").asString("none");
boolean flag1 = isConnected(s) || isConnected(s1);
boolean flag2 = isConnected(s2) || isConnected(s3);
String s4 = !isConnected(s) && !flag2 ? "side" : s;
String s5 = !isConnected(s1) && !flag2 ? "side" : s1;
String s6 = !isConnected(s2) && !flag1 ? "side" : s2;
String s7 = !isConnected(s3) && !flag1 ? "side" : s3;
return p_16760_.update("east", p_145627_ -> p_145627_.createString(s4))
.update("west", p_145624_ -> p_145624_.createString(s5))
.update("north", p_145621_ -> p_145621_.createString(s6))
.update("south", p_145618_ -> p_145618_.createString(s7));
}
);
}
private static boolean isConnected(String p_16755_) {
return !"none".equals(p_16755_);
}
}