36 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.util.datafix.fixes;
 | |
| 
 | |
| import com.google.common.escape.Escaper;
 | |
| import com.google.common.escape.Escapers;
 | |
| import com.mojang.datafixers.schemas.Schema;
 | |
| import com.mojang.serialization.Dynamic;
 | |
| import java.util.Optional;
 | |
| import org.jetbrains.annotations.Nullable;
 | |
| 
 | |
| public class LockComponentPredicateFix extends DataComponentRemainderFix {
 | |
| 	public static final Escaper ESCAPER = Escapers.builder().addEscape('"', "\\\"").addEscape('\\', "\\\\").build();
 | |
| 
 | |
| 	public LockComponentPredicateFix(Schema outputSchema) {
 | |
| 		super(outputSchema, "LockComponentPredicateFix", "minecraft:lock");
 | |
| 	}
 | |
| 
 | |
| 	@Nullable
 | |
| 	@Override
 | |
| 	protected <T> Dynamic<T> fixComponent(Dynamic<T> component) {
 | |
| 		return fixLock(component);
 | |
| 	}
 | |
| 
 | |
| 	@Nullable
 | |
| 	public static <T> Dynamic<T> fixLock(Dynamic<T> tag) {
 | |
| 		Optional<String> optional = tag.asString().result();
 | |
| 		if (optional.isEmpty()) {
 | |
| 			return null;
 | |
| 		} else if (((String)optional.get()).isEmpty()) {
 | |
| 			return null;
 | |
| 		} else {
 | |
| 			Dynamic<T> dynamic = tag.createString("\"" + ESCAPER.escape((String)optional.get()) + "\"");
 | |
| 			Dynamic<T> dynamic2 = tag.emptyMap().set("minecraft:custom_name", dynamic);
 | |
| 			return tag.emptyMap().set("components", dynamic2);
 | |
| 		}
 | |
| 	}
 | |
| }
 |