Skip to content

Commit 57b5071

Browse files
committed
Fix equals check for certain records
1 parent 8ed3f06 commit 57b5071

File tree

7 files changed

+79
-7
lines changed

7 files changed

+79
-7
lines changed

src/datagen/main/java/mekanism/common/integration/crafttweaker/example/component/CrTExampleRecipeComponentBuilder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.LinkedHashMap;
1818
import java.util.List;
1919
import java.util.Map;
20+
import java.util.Objects;
2021
import mekanism.common.integration.crafttweaker.example.BaseCrTExampleProvider;
2122
import mekanism.common.integration.crafttweaker.example.CrTExampleBuilder;
2223
import mekanism.common.integration.crafttweaker.recipe.manager.MekanismRecipeManager;
@@ -408,9 +409,7 @@ public boolean equals(Object o) {
408409

409410
@Override
410411
public int hashCode() {
411-
int result = method.hashCode();
412-
result = 31 * result + Arrays.hashCode(params);
413-
return result;
412+
return Objects.hash(method, Arrays.deepHashCode(params));
414413
}
415414
}
416415
}

src/main/java/mekanism/client/model/ModelToVoxelShapeUtil.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import java.nio.file.Paths;
1111
import java.text.DecimalFormat;
1212
import java.text.DecimalFormatSymbols;
13+
import java.util.Arrays;
1314
import java.util.Locale;
1415
import java.util.Map;
16+
import java.util.Objects;
1517
import java.util.stream.Stream;
1618

1719
//TODO: JavaDoc - contains client side methods to help convert models to VoxelShapes
@@ -120,5 +122,21 @@ private static ChildData from(JsonArray[] childElements) {
120122
}
121123
return new ChildData(childElements, elements);
122124
}
125+
126+
@Override
127+
public boolean equals(Object o) {
128+
if (this == o) {
129+
return true;
130+
} else if (o == null || getClass() != o.getClass()) {
131+
return false;
132+
}
133+
ChildData other = (ChildData) o;
134+
return totalElements == other.totalElements && Arrays.equals(childElements, other.childElements);
135+
}
136+
137+
@Override
138+
public int hashCode() {
139+
return Objects.hash(Arrays.hashCode(childElements), totalElements);
140+
}
123141
}
124142
}

src/main/java/mekanism/client/render/lib/QuickHash.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public record QuickHash(Object... objs) {
77
@Override
88
public int hashCode() {
99
//TODO: Cache the hashcode?
10-
return Arrays.hashCode(objs);
10+
return Arrays.deepHashCode(objs);
1111
}
1212

1313
@Override

src/main/java/mekanism/common/base/holiday/HolidayMessage.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package mekanism.common.base.holiday;
22

33
import java.util.Arrays;
4+
import java.util.Objects;
45
import net.minecraft.network.chat.Component;
56

67
record HolidayMessage(Component themedLines, Component... lines) {
@@ -15,8 +16,6 @@ public boolean equals(Object o) {
1516

1617
@Override
1718
public int hashCode() {
18-
int result = themedLines.hashCode();
19-
result = 31 * result + Arrays.hashCode(lines);
20-
return result;
19+
return Objects.hash(themedLines, Arrays.hashCode(lines));
2120
}
2221
}

src/main/java/mekanism/common/integration/computer/MethodData.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package mekanism.common.integration.computer;
22

3+
import java.util.Arrays;
4+
import java.util.Objects;
35
import mekanism.common.integration.computer.ComputerMethodFactory.ComputerFunctionCaller;
46
import net.neoforged.fml.ModList;
57
import org.jetbrains.annotations.Nullable;
@@ -27,6 +29,26 @@ private boolean modsLoaded(String[] mods) {
2729
return true;
2830
}
2931

32+
@Override
33+
public boolean equals(Object o) {
34+
if (this == o) {
35+
return true;
36+
} else if (o == null || getClass() != o.getClass()) {
37+
return false;
38+
}
39+
MethodData<?> other = (MethodData<?>) o;
40+
return threadSafe == other.threadSafe && requiresPublicSecurity == other.requiresPublicSecurity && restriction == other.restriction && returnType == other.returnType &&
41+
name.equals(other.name) && Arrays.equals(requiredMods, other.requiredMods) && Arrays.equals(argClasses, other.argClasses) &&
42+
Arrays.equals(argumentNames, other.argumentNames) && Arrays.equals(returnExtra, other.returnExtra) &&
43+
Objects.equals(methodDescription, other.methodDescription) && handler.equals(other.handler);
44+
}
45+
46+
@Override
47+
public int hashCode() {
48+
return Objects.hash(name, restriction, Arrays.hashCode(requiredMods), threadSafe, Arrays.hashCode(argumentNames), Arrays.hashCode(argClasses), returnType,
49+
Arrays.hashCode(returnExtra), handler, methodDescription, requiresPublicSecurity);
50+
}
51+
3052
public static <T> Builder<T> builder(String methodName, ComputerFunctionCaller<T> handler) {
3153
return new Builder<>(methodName, handler);
3254
}

src/main/java/mekanism/common/integration/computer/MethodHelpData.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,22 @@ public static Returns from(MethodData<?> data) {
158158
}
159159
return Returns.NOTHING;
160160
}
161+
162+
@Override
163+
public boolean equals(Object o) {
164+
if (this == o) {
165+
return true;
166+
} else if (o == null || getClass() != o.getClass()) {
167+
return false;
168+
}
169+
Returns other = (Returns) o;
170+
return javaType == other.javaType && type.equals(other.type) && Objects.equals(values, other.values) && Arrays.equals(javaExtra, other.javaExtra);
171+
}
172+
173+
@Override
174+
public int hashCode() {
175+
return Objects.hash(javaType, type, Arrays.hashCode(javaExtra), values);
176+
}
161177
}
162178

163179
}

src/main/java/mekanism/common/integration/computer/TableType.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import com.mojang.serialization.Codec;
44
import com.mojang.serialization.codecs.RecordCodecBuilder;
5+
import java.util.Arrays;
56
import java.util.Collections;
67
import java.util.LinkedHashMap;
78
import java.util.Map;
9+
import java.util.Objects;
810
import mekanism.api.SerializationConstants;
911
import mekanism.common.util.MekCodecs;
1012

@@ -37,6 +39,22 @@ public record FieldType(String description, Class<?> javaType, String type, Clas
3739
MekCodecs.optionalClassArrayCodec("javaExtra").forGetter(FieldType::javaExtra)
3840
).apply(instance, FieldType::new)
3941
);
42+
43+
@Override
44+
public boolean equals(Object o) {
45+
if (this == o) {
46+
return true;
47+
} else if (o == null || getClass() != o.getClass()) {
48+
return false;
49+
}
50+
FieldType other = (FieldType) o;
51+
return javaType == other.javaType && type.equals(other.type) && description.equals(other.description) && Arrays.equals(javaExtra, other.javaExtra);
52+
}
53+
54+
@Override
55+
public int hashCode() {
56+
return Objects.hash(javaType, description, type, Arrays.hashCode(javaExtra));
57+
}
4058
}
4159

4260
public static class Builder {

0 commit comments

Comments
 (0)