eagler-1-12-4 / src /game /java /net /minecraft /util /datafix /fixes /BlockEntitySignDoubleSidedEditableTextFix.java
soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.util.datafix.fixes;
import com.google.common.collect.Streams;
import com.mojang.datafixers.DSL;
import com.mojang.datafixers.Typed;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.serialization.Dynamic;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
import net.minecraft.util.datafix.ComponentDataFixUtils;
public class BlockEntitySignDoubleSidedEditableTextFix extends NamedEntityFix {
public static final String FILTERED_CORRECT = "_filtered_correct";
private static final String DEFAULT_COLOR = "black";
public BlockEntitySignDoubleSidedEditableTextFix(Schema p_277789_, String p_278061_, String p_277403_) {
super(p_277789_, false, p_278061_, References.BLOCK_ENTITY, p_277403_);
}
private static <T> Dynamic<T> fixTag(Dynamic<T> p_278110_) {
return p_278110_.set("front_text", fixFrontTextTag(p_278110_)).set("back_text", createDefaultText(p_278110_)).set("is_waxed", p_278110_.createBoolean(false));
}
private static <T> Dynamic<T> fixFrontTextTag(Dynamic<T> p_300654_) {
Dynamic<T> dynamic = ComponentDataFixUtils.createEmptyComponent(p_300654_.getOps());
List<Dynamic<T>> list = getLines(p_300654_, "Text").map(p_297945_ -> p_297945_.orElse(dynamic)).toList();
Dynamic<T> dynamic1 = p_300654_.emptyMap()
.set("messages", p_300654_.createList(list.stream()))
.set("color", p_300654_.get("Color").result().orElse(p_300654_.createString("black")))
.set("has_glowing_text", p_300654_.get("GlowingText").result().orElse(p_300654_.createBoolean(false)))
.set("_filtered_correct", p_300654_.createBoolean(true));
List<Optional<Dynamic<T>>> list1 = getLines(p_300654_, "FilteredText").toList();
if (list1.stream().anyMatch(Optional::isPresent)) {
dynamic1 = dynamic1.set("filtered_messages", p_300654_.createList(Streams.mapWithIndex(list1.stream(), (p_299542_, p_300269_) -> {
Dynamic<T> dynamic2 = list.get((int)p_300269_);
return p_299542_.orElse(dynamic2);
})));
}
return dynamic1;
}
private static <T> Stream<Optional<Dynamic<T>>> getLines(Dynamic<T> p_298173_, String p_299789_) {
return Stream.of(
p_298173_.get(p_299789_ + "1").result(),
p_298173_.get(p_299789_ + "2").result(),
p_298173_.get(p_299789_ + "3").result(),
p_298173_.get(p_299789_ + "4").result()
);
}
private static <T> Dynamic<T> createDefaultText(Dynamic<T> p_299439_) {
return p_299439_.emptyMap()
.set("messages", createEmptyLines(p_299439_))
.set("color", p_299439_.createString("black"))
.set("has_glowing_text", p_299439_.createBoolean(false));
}
private static <T> Dynamic<T> createEmptyLines(Dynamic<T> p_299579_) {
Dynamic<T> dynamic = ComponentDataFixUtils.createEmptyComponent(p_299579_.getOps());
return p_299579_.createList(Stream.of(dynamic, dynamic, dynamic, dynamic));
}
@Override
protected Typed<?> fix(Typed<?> p_277962_) {
return p_277962_.update(DSL.remainderFinder(), BlockEntitySignDoubleSidedEditableTextFix::fixTag);
}
}