Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
1package net.lerariemann.infinity.options;
2
3import net.lerariemann.infinity.util.core.NbtUtils;
4import net.minecraft.nbt.CompoundTag;
5import java.util.function.Function;
6
7import static net.lerariemann.infinity.util.core.NbtUtils.getFloat;
8
9public interface PitchShifter {
10 Function<Float, Float> applier();
11
12 enum Empty implements PitchShifter {
13 INSTANCE;
14 @Override
15 public Function<Float, Float> applier() {
16 return Function.identity();
17 }
18 }
19 record Constant(float value) implements PitchShifter {
20 @Override
21 public Function<Float, Float> applier() {
22 return f -> value;
23 }
24 }
25 record Add(float value) implements PitchShifter {
26 @Override
27 public Function<Float, Float> applier() {
28 return f -> f + value;
29 }
30 }
31
32 static PitchShifter decode(CompoundTag comp) {
33 return switch(NbtUtils.getString(comp, "type")) {
34 case "constant" -> new Constant(getFloat(comp, "value", 1));
35 case "add" -> new Add(getFloat(comp, "value", 1));
36 default -> Empty.INSTANCE;
37 };
38 }
39}