Skip to content

Instantly share code, notes, and snippets.

@marysaka
Created May 14, 2017 12:17
Show Gist options
  • Save marysaka/5a66561861ac123d59ddb639c65280ac to your computer and use it in GitHub Desktop.
Save marysaka/5a66561861ac123d59ddb639c65280ac to your computer and use it in GitHub Desktop.
package eu.thog.prometheus.core;
import com.google.common.eventbus.EventBus;
import net.minecraftforge.fml.common.*;
import net.minecraftforge.fml.common.versioning.ArtifactVersion;
import net.minecraftforge.fml.common.versioning.VersionRange;
import net.minecraftforge.fml.relauncher.ReflectionHelper;
import java.io.File;
import java.net.URL;
import java.security.cert.Certificate;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* ModContainer bridge used to dupe FML registries
* Created by Thog
* 23/07/2016
*/
public class ModContainerBridge implements ModContainer
{
public static final ModContainerBridge INSTANCE = new ModContainerBridge();
private ModContainer container, prevContainer;
private ModContainerBridge()
{
}
@Override
public String getModId()
{
return container.getModId();
}
@Override
public String getName()
{
return container.getName();
}
@Override
public String getVersion()
{
return container.getVersion();
}
@Override
public File getSource()
{
return container.getSource();
}
@Override
public ModMetadata getMetadata()
{
return container.getMetadata();
}
@Override
public void bindMetadata(MetadataCollection mc)
{
container.bindMetadata(mc);
}
@Override
public void setEnabledState(boolean enabled)
{
container.setEnabledState(enabled);
}
@Override
public Set<ArtifactVersion> getRequirements()
{
return container.getRequirements();
}
@Override
public List<ArtifactVersion> getDependencies()
{
return container.getDependencies();
}
@Override
public List<ArtifactVersion> getDependants()
{
return container.getDependants();
}
@Override
public String getSortingRules()
{
return container.getSortingRules();
}
@Override
public boolean registerBus(EventBus bus, LoadController controller)
{
return container.registerBus(bus, controller);
}
@Override
public boolean matches(Object mod)
{
return container.matches(mod);
}
@Override
public Object getMod()
{
return container.getMod();
}
@Override
public ArtifactVersion getProcessedVersion()
{
return container.getProcessedVersion();
}
@Override
public boolean isImmutable()
{
return container.isImmutable();
}
@Override
public String getDisplayVersion()
{
return container.getDisplayVersion();
}
@Override
public VersionRange acceptableMinecraftVersionRange()
{
return container.acceptableMinecraftVersionRange();
}
@Override
public Certificate getSigningCertificate()
{
return container.getSigningCertificate();
}
@Override
public Map<String, String> getCustomModProperties()
{
return container.getCustomModProperties();
}
@Override
public Class<?> getCustomResourcePackClass()
{
return container.getCustomResourcePackClass();
}
@Override
public Map<String, String> getSharedModDescriptor()
{
return container.getSharedModDescriptor();
}
@Override
public Disableable canBeDisabled()
{
return container.canBeDisabled();
}
@Override
public String getGuiClassName()
{
return container.getGuiClassName();
}
@Override
public List<String> getOwnedPackages()
{
return container.getOwnedPackages();
}
@Override
public boolean shouldLoadInEnvironment()
{
return container.shouldLoadInEnvironment();
}
@Override
public URL getUpdateUrl()
{
return container.getUpdateUrl();
}
@Override
public void setClassVersion(int classVersion)
{
container.setClassVersion(classVersion);
}
@Override
public int getClassVersion()
{
return container.getClassVersion();
}
public void injectInside()
{
Loader loader = Loader.instance();
// Get the ModController
LoadController controller = ReflectionHelper.getPrivateValue(Loader.class, loader, "modController");
this.container = controller.activeContainer();
ReflectionHelper.setPrivateValue(LoadController.class, controller, this, "activeContainer");
}
public void replaceContainer(ModContainer container)
{
this.prevContainer = this.container;
this.container = container;
}
public void restorePrevContainer()
{
this.container = prevContainer;
this.prevContainer = null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment