Created
May 14, 2017 12:17
-
-
Save marysaka/5a66561861ac123d59ddb639c65280ac to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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