43 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.util.datafix.fixes;
 | |
| 
 | |
| import com.mojang.datafixers.DataFix;
 | |
| import com.mojang.datafixers.TypeRewriteRule;
 | |
| import com.mojang.datafixers.schemas.Schema;
 | |
| import com.mojang.serialization.Dynamic;
 | |
| import java.util.Optional;
 | |
| import java.util.stream.Stream;
 | |
| 
 | |
| public class FoodToConsumableFix extends DataFix {
 | |
| 	public FoodToConsumableFix(Schema outputSchema) {
 | |
| 		super(outputSchema, true);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	protected TypeRewriteRule makeRule() {
 | |
| 		return this.writeFixAndRead(
 | |
| 			"Food to consumable fix",
 | |
| 			this.getInputSchema().getType(References.DATA_COMPONENTS),
 | |
| 			this.getOutputSchema().getType(References.DATA_COMPONENTS),
 | |
| 			dynamic -> {
 | |
| 				Optional<? extends Dynamic<?>> optional = dynamic.get("minecraft:food").result();
 | |
| 				if (optional.isPresent()) {
 | |
| 					float f = ((Dynamic)optional.get()).get("eat_seconds").asFloat(1.6F);
 | |
| 					Stream<? extends Dynamic<?>> stream = ((Dynamic)optional.get()).get("effects").asStream();
 | |
| 					Stream<? extends Dynamic<?>> stream2 = stream.map(
 | |
| 						dynamicx -> dynamicx.emptyMap()
 | |
| 							.set("type", dynamicx.createString("minecraft:apply_effects"))
 | |
| 							.set("effects", dynamicx.createList(dynamicx.get("effect").result().stream()))
 | |
| 							.set("probability", dynamicx.createFloat(dynamicx.get("probability").asFloat(1.0F)))
 | |
| 					);
 | |
| 					dynamic = Dynamic.copyField((Dynamic<?>)optional.get(), "using_converts_to", dynamic, "minecraft:use_remainder");
 | |
| 					dynamic = dynamic.set("minecraft:food", ((Dynamic)optional.get()).remove("eat_seconds").remove("effects").remove("using_converts_to"));
 | |
| 					return dynamic.set(
 | |
| 						"minecraft:consumable", dynamic.emptyMap().set("consume_seconds", dynamic.createFloat(f)).set("on_consume_effects", dynamic.createList(stream2))
 | |
| 					);
 | |
| 				} else {
 | |
| 					return dynamic;
 | |
| 				}
 | |
| 			}
 | |
| 		);
 | |
| 	}
 | |
| }
 |