Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
1package net.lerariemann.infinity.item.function;
2
3import com.google.gson.JsonDeserializationContext;
4import com.google.gson.JsonObject;
5import net.lerariemann.infinity.block.custom.BiomeBottleBlock;
6import net.lerariemann.infinity.registry.core.ModItemFunctions;
7import net.minecraft.world.item.ItemStack;
8import net.minecraft.world.level.storage.loot.LootContext;
9import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction;
10import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType;
11import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
12import org.jetbrains.annotations.NotNull;
13
14//? if >1.21 {
15import com.mojang.serialization.MapCodec;
16import com.mojang.serialization.codecs.RecordCodecBuilder;
17import java.util.List;
18//?}
19
20public class SetLevelLootFunction extends LootItemConditionalFunction {
21 //? if >1.21 {
22 public static final MapCodec<SetLevelLootFunction> CODEC = RecordCodecBuilder.mapCodec(
23 instance -> commonFields(instance).apply(instance, SetLevelLootFunction::new)
24 );
25 protected SetLevelLootFunction(List<LootItemCondition> conditions) {
26 super(conditions);
27 }
28 //?} else {
29 /*protected SetLevelLootFunction(LootItemCondition[] lootItemConditions) {
30 super(lootItemConditions);
31 }
32 *///?}
33
34 @Override
35 protected @NotNull ItemStack run(ItemStack stack, LootContext context) {
36 BiomeBottleBlock.updateCharge(stack);
37 return stack;
38 }
39
40 @Override
41 public @NotNull LootItemFunctionType
42 //? if >1.21 {
43 <? extends LootItemConditionalFunction>
44 //?}
45 getType() {
46 return ModItemFunctions.SET_BIOME_BOTTLE_LEVEL.get();
47 }
48
49 //? if <1.21 {
50 /*public static class Serializer extends LootItemConditionalFunction.Serializer<SetLevelLootFunction> {
51 public Serializer() {
52 }
53 public @NotNull SetLevelLootFunction deserialize(JsonObject object, JsonDeserializationContext deserializationContext, LootItemCondition[] conditions) {
54 return new SetLevelLootFunction(new LootItemCondition[0]);
55 }
56 }
57 *///?}
58}