Skip to content

Commit

Permalink
prevent double wrapping GrandPower-FE
Browse files Browse the repository at this point in the history
  • Loading branch information
thiakil committed Jan 27, 2025
1 parent 7921460 commit d56013e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ default boolean capabilityExists() {
*
* @param handler Handler to wrap. Can be assumed to be the same type as this energy compat.
*/
@Nullable
IStrictEnergyHandler wrapAsStrictEnergyHandler(Object handler);

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package mekanism.common.integration.energy.grandpower;

import dev.technici4n.grandpower.api.ILongEnergyStorage;
import dev.technici4n.grandpower.impl.NonLongWrapper;
import mekanism.api.annotations.NothingNullByDefault;
import mekanism.api.energy.IStrictEnergyHandler;
import mekanism.common.Mekanism;
Expand All @@ -9,10 +10,25 @@
import mekanism.common.integration.energy.IEnergyCompat;
import mekanism.common.util.UnitDisplayUtils.EnergyUnit;
import net.neoforged.neoforge.capabilities.ICapabilityProvider;
import org.jetbrains.annotations.Nullable;

@NothingNullByDefault
public class GPEnergyCompat implements IEnergyCompat {

@Nullable
private static final Class<?> NON_LONG_WRAPPER;

static {
Class<?> tmp;
try {
//noinspection UnstableApiUsage
tmp = NonLongWrapper.class;
} catch (NoClassDefFoundError e) {
tmp = null;
}
NON_LONG_WRAPPER = tmp;
}

@Override
public MultiTypeCapability<ILongEnergyStorage> getCapability() {
return GPCapability.ENERGY;
Expand Down Expand Up @@ -46,7 +62,11 @@ public Object wrapStrictEnergyHandler(IStrictEnergyHandler handler) {
}

@Override
@Nullable
public IStrictEnergyHandler wrapAsStrictEnergyHandler(Object handler) {
if (NON_LONG_WRAPPER == null || NON_LONG_WRAPPER.isInstance(handler)) {
return null;//prevent double wrapping of FE by GP
}
return new GPStrictEnergyHandler((ILongEnergyStorage) handler);
}
}

0 comments on commit d56013e

Please sign in to comment.