Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 72 lines 2.7 kB view raw
1package net.lerariemann.infinity.item.function; 2 3import com.google.gson.JsonDeserializationContext; 4import com.google.gson.JsonObject; 5import net.lerariemann.infinity.block.custom.AltarBlock; 6import net.lerariemann.infinity.registry.core.ModItemFunctions; 7import net.minecraft.world.item.ItemStack; 8import net.minecraft.world.level.block.state.BlockState; 9import net.minecraft.world.level.storage.loot.LootContext; 10import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; 11import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; 12import net.minecraft.world.level.storage.loot.parameters.LootContextParams; 13import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; 14import org.jetbrains.annotations.NotNull; 15 16//? if >1.21 { 17import com.mojang.serialization.MapCodec; 18import com.mojang.serialization.codecs.RecordCodecBuilder; 19import java.util.List; 20//?} 21 22public class SetAltarStateLootFunction extends LootItemConditionalFunction { 23 //? if >1.21 { 24 public static final MapCodec<SetAltarStateLootFunction> CODEC = RecordCodecBuilder.mapCodec( 25 instance -> commonFields(instance).apply(instance, SetAltarStateLootFunction::new) 26 ); 27 private SetAltarStateLootFunction(List<LootItemCondition> conditions) { 28 super(conditions); 29 } 30 //?} else { 31 /*protected SetAltarStateLootFunction(LootItemCondition[] lootItemConditions) { 32 super(lootItemConditions); 33 } 34 *///?} 35 36 @Override 37 public @NotNull LootItemFunctionType 38 //? if >1.21 { 39 <? extends LootItemConditionalFunction> 40 //?} 41 getType() { 42 return ModItemFunctions.SET_ALTAR_STATE.get(); 43 } 44 45 @Override 46 protected @NotNull ItemStack run(ItemStack stack, LootContext context) { 47 //? if >1.21.2 { 48 BlockState st = context.getOptionalParameter(LootContextParams.BLOCK_STATE); 49 //?} else { 50 /*BlockState st = context.getParamOrNull(LootContextParams.BLOCK_STATE); 51 *///?} 52 if (st != null) { 53 //? if >1.21 { 54 stack.applyComponentsAndValidate(AltarBlock.toComponentChanges(st)); 55 //?} else { 56 /*stack.setTag(AltarBlock.toComponentChanges(st)); 57 *///?} 58 } 59 return stack; 60 } 61 62 //? if <1.21 { 63 /*public static class Serializer extends LootItemConditionalFunction.Serializer<SetAltarStateLootFunction> { 64 public Serializer() { 65 } 66 public @NotNull SetAltarStateLootFunction deserialize(JsonObject object, JsonDeserializationContext deserializationContext, LootItemCondition[] conditions) { 67 return new SetAltarStateLootFunction(new LootItemCondition[0]); 68 } 69 } 70 *///?} 71} 72