Skip to content

Commit 0736cf1

Browse files
committed
build: 26.2-snapshot-1
1 parent 0f0c40d commit 0736cf1

File tree

6 files changed

+45
-69
lines changed

6 files changed

+45
-69
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
4242
- name: upload to modrinth and curseforge
4343
run: ./gradlew modrinth publishMainPublicationToCurseForge
44-
if: github.ref == 'refs/heads/dev/26.1.1'
44+
if: github.ref == 'refs/heads/dev/26.2.0'
4545
env:
4646
MODRINTH_TOKEN: ${{ secrets.MODRINTH_UPLOAD_TOKEN }}
4747
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}

c2me-opts-dfc/src/main/java/com/ishland/c2me/opts/dfc/common/ast/McToAst.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public static AstNode toAst(DensityFunction df) {
9999
case DensityFunctionTypes.ShiftB f -> new DFTShiftBNode(f.offsetNoise());
100100
case DensityFunctionTypes.YClampedGradient f -> new YClampedGradientNode(f.fromY(), f.toY(), f.fromValue(), f.toValue());
101101
case DensityFunctionTypes.WeirdScaledSampler f -> new DFTWeirdScaledSamplerNode(toAst(f.input()), f.noise(), f.rarityValueMapper());
102-
case DensityFunctionTypes.Spline f -> new SplineAstNode(f.spline());
102+
case DensityFunctionTypes.Spline f -> new SplineAstNode(f.method_1_4461());
103103
case DensityFunctionTypes.FindTopSurface f -> new FindTopSurfaceNode(toAst(f.density()), toAst(f.upperBound()), new ConstantNode(f.lowerBound()), f.cellHeight());
104104

105105
default -> {

c2me-opts-dfc/src/main/java/com/ishland/c2me/opts/dfc/common/ast/spline/SplineAstNode.java

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.ishland.flowsched.util.Assertions;
1111
import it.unimi.dsi.fastutil.Pair;
1212
import it.unimi.dsi.fastutil.ints.IntObjectPair;
13+
import net.minecraft.util.function.ToFloatFunction;
1314
import net.minecraft.util.math.MathHelper;
1415
import net.minecraft.util.math.Spline;
1516
import net.minecraft.world.gen.densityfunction.DensityFunctionTypes;
@@ -26,15 +27,17 @@
2627
public class SplineAstNode implements AstNode {
2728

2829
public static final String SPLINE_METHOD_DESC = Type.getMethodDescriptor(Type.getType(float.class), Type.getType(int.class), Type.getType(int.class), Type.getType(int.class), Type.getType(EvalType.class));
29-
private final Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline;
30+
private final Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline;
31+
private final ToFloatFunction<DensityFunctionTypes.Spline.SplinePos> applier;
3032

31-
public SplineAstNode(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline) {
33+
public SplineAstNode(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline) {
3234
this.spline = spline;
35+
this.applier = Spline.method_1_3942(spline);
3336
}
3437

3538
@Override
3639
public double evalSingle(int x, int y, int z, EvalType type) {
37-
return spline.apply(new DensityFunctionTypes.Spline.SplinePos(new NoisePosVanillaInterface(x, y, z, type)));
40+
return applier.apply(new DensityFunctionTypes.Spline.SplinePos(new NoisePosVanillaInterface(x, y, z, type)));
3841
}
3942

4043
@Override
@@ -62,14 +65,14 @@ public void doBytecodeGenSingle(BytecodeGen.Context context, InstructionAdapter
6265
m.areturn(Type.DOUBLE_TYPE);
6366
}
6467

65-
private static ValuesMethodDef doBytecodeGenSpline(BytecodeGen.Context context, Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline) {
68+
private static ValuesMethodDef doBytecodeGenSpline(BytecodeGen.Context context, Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline) {
6669
{
6770
String cachedSplineMethod = context.getCachedSplineMethod(spline);
6871
if (cachedSplineMethod != null) {
6972
return new ValuesMethodDef(false, cachedSplineMethod, 0.0F);
7073
}
7174
}
72-
if (spline instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline1) {
75+
if (spline instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline1) {
7376
return new ValuesMethodDef(true, null, spline1.value());
7477
}
7578
String name = context.nextMethodName("Spline");
@@ -98,7 +101,7 @@ private static ValuesMethodDef doBytecodeGenSpline(BytecodeGen.Context context,
98101
return ordinal;
99102
};
100103

101-
if (spline instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> impl) {
104+
if (spline instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> impl) {
102105
ValuesMethodDef[] valuesMethods = impl.values().stream()
103106
.map(spline1 -> doBytecodeGenSpline(context, spline1))
104107
.toArray(ValuesMethodDef[]::new);
@@ -111,7 +114,7 @@ private static ValuesMethodDef doBytecodeGenSpline(BytecodeGen.Context context,
111114

112115
int lastConst = impl.locations().length - 1;
113116

114-
String locationFunction = context.newSingleMethod(McToAst.toAst(impl.locationFunction().function().value()));
117+
String locationFunction = context.newSingleMethod(McToAst.toAst(impl.locationFunction().function()));
115118
context.callDelegateSingle(m, locationFunction);
116119
m.cast(Type.DOUBLE_TYPE, Type.FLOAT_TYPE);
117120
m.store(point, Type.FLOAT_TYPE);
@@ -375,7 +378,7 @@ private static ValuesMethodDef doBytecodeGenSpline(BytecodeGen.Context context,
375378
m.areturn(Type.FLOAT_TYPE);
376379
}
377380

378-
} else if (spline instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> floatFunction) {
381+
} else if (spline instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> floatFunction) {
379382
m.fconst(floatFunction.value());
380383
m.areturn(Type.FLOAT_TYPE);
381384
} else {
@@ -420,17 +423,17 @@ public void doBytecodeGenMulti(BytecodeGen.Context context, InstructionAdapter m
420423
m.areturn(Type.VOID_TYPE);
421424
}
422425

423-
private static boolean deepEquals(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a,
424-
Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> b) {
425-
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
426-
b instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
426+
private static boolean deepEquals(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> a,
427+
Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> b) {
428+
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
429+
b instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
427430
return a1.value() == b1.value();
428-
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
429-
b instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
431+
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
432+
b instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
430433
boolean equals1 = Arrays.equals(a1.derivatives(), b1.derivatives()) &&
431434
Arrays.equals(a1.locations(), b1.locations()) &&
432435
a1.values().size() == b1.values().size() &&
433-
McToAst.toAst(a1.locationFunction().function().value()).equals(McToAst.toAst(b1.locationFunction().function().value()));
436+
McToAst.toAst(a1.locationFunction().function()).equals(McToAst.toAst(b1.locationFunction().function()));
434437
if (!equals1) return false;
435438
int size = a1.values().size();
436439
for (int i = 0; i < size; i++) {
@@ -445,15 +448,15 @@ private static boolean deepEquals(Spline<DensityFunctionTypes.Spline.SplinePos,
445448
}
446449
}
447450

448-
private static boolean deepRelaxedEquals(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a,
449-
Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> b) {
450-
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
451-
b instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
451+
private static boolean deepRelaxedEquals(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> a,
452+
Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> b) {
453+
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
454+
b instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
452455
return a1.value() == b1.value();
453-
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
454-
b instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
456+
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1 &&
457+
b instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> b1) {
455458
boolean equals1 = a1.values().size() == b1.values().size() &&
456-
McToAst.toAst(a1.locationFunction().function().value()).relaxedEquals(McToAst.toAst(b1.locationFunction().function().value()));
459+
McToAst.toAst(a1.locationFunction().function()).relaxedEquals(McToAst.toAst(b1.locationFunction().function()));
457460
if (!equals1) return false;
458461
int size = a1.values().size();
459462
for (int i = 0; i < size; i++) {
@@ -468,35 +471,35 @@ private static boolean deepRelaxedEquals(Spline<DensityFunctionTypes.Spline.Spli
468471
}
469472
}
470473

471-
private static int deepHashcode(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a) {
472-
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
474+
private static int deepHashcode(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> a) {
475+
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
473476
return Float.hashCode(a1.value());
474-
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
477+
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
475478
int result = 1;
476479

477480
result = 31 * result + Arrays.hashCode(a1.derivatives());
478481
result = 31 * result + Arrays.hashCode(a1.locations());
479-
for (Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline : a1.values()) {
482+
for (Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline : a1.values()) {
480483
result = 31 * result + deepHashcode(spline);
481484
}
482-
result = 31 * result + McToAst.toAst(a1.locationFunction().function().value()).hashCode();
485+
result = 31 * result + McToAst.toAst(a1.locationFunction().function()).hashCode();
483486

484487
return result;
485488
} else {
486489
return a.hashCode();
487490
}
488491
}
489492

490-
private static int deepRelaxedHashcode(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a) {
491-
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
493+
private static int deepRelaxedHashcode(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> a) {
494+
if (a instanceof Spline.FixedFloatFunction<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
492495
return Float.hashCode(a1.value());
493-
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
496+
} else if (a instanceof Spline.Implementation<DensityFunctionTypes.Spline.DensityFunctionWrapper> a1) {
494497
int result = 1;
495498

496-
for (Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline : a1.values()) {
499+
for (Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline : a1.values()) {
497500
result = 31 * result + deepRelaxedHashcode(spline);
498501
}
499-
result = 31 * result + McToAst.toAst(a1.locationFunction().function().value()).relaxedHashCode();
502+
result = 31 * result + McToAst.toAst(a1.locationFunction().function()).relaxedHashCode();
500503

501504
return result;
502505
} else {

c2me-opts-dfc/src/main/java/com/ishland/c2me/opts/dfc/common/gen/BytecodeGen.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ public static class Context {
318318
private int methodIdx = 0;
319319
private final Object2ReferenceOpenHashMap<AstNode, String> singleMethods = new Object2ReferenceOpenHashMap<>();
320320
private final Object2ReferenceOpenHashMap<AstNode, String> multiMethods = new Object2ReferenceOpenHashMap<>();
321-
private final Object2ReferenceOpenHashMap<Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper>, String> splineMethods = new Object2ReferenceOpenHashMap<>();
321+
private final Object2ReferenceOpenHashMap<Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper>, String> splineMethods = new Object2ReferenceOpenHashMap<>();
322322
private final ObjectOpenHashSet<String> postProcessMethods = new ObjectOpenHashSet<>();
323323
private final Reference2ObjectOpenHashMap<Object, FieldRecord> args = new Reference2ObjectOpenHashMap<>();
324324

@@ -438,11 +438,11 @@ private void newMultiMethod0(BiConsumer<InstructionAdapter, LocalVarConsumer> ge
438438
adapter.visitMaxs(0, 0);
439439
}
440440

441-
public String getCachedSplineMethod(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline) {
441+
public String getCachedSplineMethod(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline) {
442442
return this.splineMethods.get(spline);
443443
}
444444

445-
public void cacheSplineMethod(Spline<DensityFunctionTypes.Spline.SplinePos, DensityFunctionTypes.Spline.DensityFunctionWrapper> spline, String method) {
445+
public void cacheSplineMethod(Spline<DensityFunctionTypes.Spline.DensityFunctionWrapper> spline, String method) {
446446
this.splineMethods.put(spline, method);
447447
}
448448

c2me-opts-dfc/src/main/java/com/ishland/c2me/opts/dfc/mixin/MixinSplineImplementation.java

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import java.util.Objects;
1414

1515
@Mixin(Spline.Implementation.class)
16-
public abstract class MixinSplineImplementation<C, I extends ToFloatFunction<C>> {
16+
public abstract class MixinSplineImplementation<I extends ToFloatFunction<?>> {
1717

1818
/**
1919
* @author ishland
@@ -47,42 +47,15 @@ protected static float sampleOutsideRange(float point, float[] locations, float
4747
throw new AbstractMethodError();
4848
}
4949

50-
@Shadow @Final private List<Spline<C, I>> values;
50+
@Shadow @Final private List<Spline<I>> values;
5151

5252
@Shadow @Final private float[] derivatives;
5353

54-
/**
55-
* @author ishland
56-
* @reason simplify method a bit
57-
*/
58-
@Overwrite
59-
public float apply(C x) {
60-
float point = this.locationFunction.apply(x);
61-
int rangeForLocation = findRangeForLocation(this.locations, point);
62-
int last = this.locations.length - 1;
63-
if (rangeForLocation < 0) {
64-
return sampleOutsideRange(point, this.locations, this.values.get(0).apply(x), this.derivatives, 0);
65-
} else if (rangeForLocation == last) {
66-
return sampleOutsideRange(point, this.locations, this.values.get(last).apply(x), this.derivatives, last);
67-
} else {
68-
float loc0 = this.locations[rangeForLocation];
69-
float loc1 = this.locations[rangeForLocation + 1];
70-
float locDist = loc1 - loc0;
71-
float k = (point - loc0) / locDist;
72-
float n = this.values.get(rangeForLocation).apply(x);
73-
float o = this.values.get(rangeForLocation + 1).apply(x);
74-
float onDist = o - n;
75-
float p = this.derivatives[rangeForLocation] * locDist - onDist;
76-
float q = -this.derivatives[rangeForLocation + 1] * locDist + onDist;
77-
return MathHelper.lerp(k, n, o) + k * (1.0F - k) * MathHelper.lerp(k, p, q);
78-
}
79-
}
80-
8154
@Override
8255
public boolean equals(Object o) {
8356
if (this == o) return true;
8457
if (o == null || getClass() != o.getClass()) return false;
85-
Spline.Implementation<?, ?> that = (Spline.Implementation<?, ?>) o;
58+
Spline.Implementation<?> that = (Spline.Implementation<?>) o;
8659
return Objects.equals(locationFunction, that.locationFunction()) && Arrays.equals(locations, that.locations()) && Objects.equals(values, that.values()) && Arrays.equals(derivatives, that.derivatives());
8760
}
8861

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ gradle-curseforge-publish.interop.neogradle=false
1111
#org.gradle.configuration-cache=true
1212
# Fabric Properties
1313
# check these on https://fabricmc.net/versions.html
14-
minecraft_version=26.1.1
15-
yarn_mappings=26.1.1+build.1
14+
minecraft_version=26.2-snapshot-1
15+
yarn_mappings=26.2-snapshot-1+build.1
1616
loader_version=0.18.5
1717
fabric_version=0.144.4+26.1
1818
# Mod Properties

0 commit comments

Comments
 (0)