Skip to content

Commit 40d91ca

Browse files
committed
Fixed incompatibilities with DraconicEvolution, Mekanism, and a few other mods
- Fixes #152 - Fixes #151
1 parent eae024a commit 40d91ca

6 files changed

Lines changed: 39 additions & 10 deletions

File tree

src/main/java/org/dimdev/vanillafix/blockstates/NumericalBlockState.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ public static NumericalBlockState fromPropertyValueMap(BlockStateContainer conta
8181
}
8282

8383
public static <T extends Comparable<T>> void makePropertyInfo(IProperty<T> property) {
84-
if (propertyWidths.containsKey(property)) return;
84+
if (propertyWidths.containsKey(property)) {
85+
return;
86+
}
8587

8688
Collection<T> allowedValues = property.getAllowedValues();
8789

src/main/java/org/dimdev/vanillafix/blockstates/mixins/MixinBlockStateContainer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public abstract class MixinBlockStateContainer implements IPatchedBlockStateCont
3030
// @formatter:on
3131

3232
@SuppressWarnings("EqualsBetweenInconvertibleTypes") // mixin
33-
private boolean isNumerical = getClass().equals(BlockStateContainer.class) || getClass().equals(ExtendedBlockState.class);
33+
protected
34+
boolean isNumerical = getClass().equals(BlockStateContainer.class) || getClass().equals(ExtendedBlockState.class);
3435
private final ImmutableMap<IUnlistedProperty<?>, Optional<?>> unlistedProperties;
3536
private final Map<IProperty<?>, Integer> propertyOffsets = new HashMap<>();
3637
protected ImmutableList<IBlockState> validStatesCache = null;

src/main/java/org/dimdev/vanillafix/blockstates/mixins/MixinExtendedBlockState.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import net.minecraftforge.common.property.IUnlistedProperty;
1010
import org.dimdev.vanillafix.blockstates.NumericalExtendedBlockState;
1111
import org.spongepowered.asm.mixin.Mixin;
12-
import org.spongepowered.asm.mixin.Overwrite;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1315

1416
import javax.annotation.Nullable;
1517
import java.util.Optional;
@@ -20,11 +22,11 @@ public MixinExtendedBlockState(Block block, IProperty<?>[] properties, Immutable
2022
super(block, properties, unlistedProperties);
2123
}
2224

23-
@Override
24-
@Overwrite(remap = false)
25-
@SuppressWarnings("OverwriteModifiers" /* (no @NonNull) */)
26-
protected BlockStateContainer.StateImplementation createState(Block block, ImmutableMap<IProperty<?>, Comparable<?>> properties, @Nullable ImmutableMap<IUnlistedProperty<?>, Optional<?>> unlistedProperties) {
27-
return null;
25+
@Inject(method = "createState", remap = false, at = @At("HEAD"), cancellable = true)
26+
protected void overrideCreateState(Block block, ImmutableMap<IProperty<?>, Comparable<?>> properties, @Nullable ImmutableMap<IUnlistedProperty<?>, Optional<?>> unlistedProperties, CallbackInfoReturnable<BlockStateContainer.StateImplementation> cir) {
27+
if (isNumerical) {
28+
cir.setReturnValue(null);
29+
}
2830
}
2931

3032
@Override
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.dimdev.vanillafix.blockstates.mixins;
2+
3+
import net.minecraft.block.properties.IProperty;
4+
import net.minecraft.block.properties.PropertyHelper;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.At;
7+
import org.spongepowered.asm.mixin.injection.Inject;
8+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9+
10+
@Mixin(PropertyHelper.class)
11+
public abstract class MixinPropertyHelper<T extends Comparable<T>> implements IProperty<T> {
12+
/**
13+
* Fix mods using duplicate property names.
14+
*/
15+
@Inject(method = "equals", at = @At("RETURN"), cancellable = true)
16+
public void overrideEquals(Object obj, CallbackInfoReturnable<Boolean> cir) {
17+
if (cir.getReturnValue() && obj instanceof PropertyHelper) {
18+
if (!getClass().getName().startsWith("net.minecraft") && !getAllowedValues().equals(((PropertyHelper<?>) obj).getAllowedValues())) {
19+
cir.setReturnValue(false);
20+
}
21+
}
22+
}
23+
}

src/main/java/org/dimdev/vanillafix/dynamicresources/EventUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static void postEventAllowingErrors(Event event) {
1717
try {
1818
Field busIDField = EventBus.class.getDeclaredField("busID");
1919
busIDField.setAccessible(true);
20-
busID = (int) busIDField.get(MinecraftForge.EVENT_BUS);
20+
busID = busIDField.getInt(MinecraftForge.EVENT_BUS);
2121
} catch (ReflectiveOperationException e) {
2222
throw new RuntimeException(e);
2323
}

src/main/resources/mixins.vanillafix.blockstates.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"compatibilityLevel": "JAVA_8",
99
"mixins": [
1010
"MixinBlockStateContainer",
11-
"MixinExtendedBlockState"
11+
"MixinExtendedBlockState",
12+
"MixinPropertyHelper"
1213
],
1314
"client": [
1415
],

0 commit comments

Comments
 (0)