jopi
Попрошайка
- 1,421
- 30
- 260
Перестал работать класстрансформер на замену класса RenderPlayer,
Юзаю RenderPlayerAPI и Crafting Dead(его я и ремонтирую), т.к. в крафтинг деад сломался трансформер классов, в среде когда я изменил дефолтный класс всё работает, но когда дело доходит до компиляции и трансформера, ничего не патчится и не работает, классы и скриншоты ниже.
Классы:
Скриншоты:
Юзаю RenderPlayerAPI и Crafting Dead(его я и ремонтирую), т.к. в крафтинг деад сломался трансформер классов, в среде когда я изменил дефолтный класс всё работает, но когда дело доходит до компиляции и трансформера, ничего не патчится и не работает, классы и скриншоты ниже.
Классы:
Код:
package com.ferullogaming.craftingdead.core;
import java.io.File;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import net.minecraft.launchwrapper.IClassTransformer;
public class CDAClassTransformer implements IClassTransformer {
public byte[] transform(String arg0, String arg1, byte[] arg2) {
if (arg0.equals("bhj")) {
CDADummyContainer.log("PATCHING! RenderPlayer: " + arg0);
return this.patchClassInJar(arg0, arg2, arg0, CDAFMLLoadingPlugin.location);
} else if (arg0.equals("bbj")) {
CDADummyContainer.log("PATCHING! ModelBiped: " + arg0);
return this.patchClassInJar(arg0, arg2, arg0, CDAFMLLoadingPlugin.location);
} else if (arg0.equals("bfe")) {
CDADummyContainer.log("PATCHING! something bfe: " + arg0);
return this.patchClassInJar(arg0, arg2, arg0, CDAFMLLoadingPlugin.location);
} else {
return arg2;
}
}
public byte[] patchClassInJar(String name, byte[] bytes, String ObfName, File location) {
try {
ZipFile zip = new ZipFile(location);
ZipEntry entry = zip.getEntry(name.replace('.', '/') + ".class");
if (entry == null) {
System.out.println(name + " not found in " + location.getName());
} else {
InputStream zin = zip.getInputStream(entry);
bytes = new byte[(int)entry.getSize()];
zin.read(bytes);
zin.close();
System.out.println("[CDAftermathCore]: Class " + name + " patched!");
}
zip.close();
return bytes;
} catch (Exception var8) {
throw new RuntimeException("Error overriding " + name + " from " + location.getName(), var8);
}
}
}
Код:
package com.ferullogaming.craftingdead.core;
import com.google.common.eventbus.Subscribe;
import cpw.mods.fml.common.DummyModContainer;
import cpw.mods.fml.common.LoadController;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.event.FMLConstructionEvent;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import java.util.Arrays;
import net.minecraftforge.event.EventBus;
public class CDADummyContainer extends DummyModContainer {
public CDADummyContainer() {
super(new ModMetadata());
ModMetadata meta = this.getMetadata();
meta.modId = "CDAftermathCore";
meta.name = "Dayz";
meta.version = "1.0.0";
meta.credits = "Id like to thank F3RULLO14 for being so sexy";
meta.authorList = Arrays.asList("F3RULLO14", "FXG");
meta.description = "";
meta.url = "http://";
meta.updateUrl = "";
meta.screenshots = new String[0];
meta.logoFile = "";
}
@Subscribe
public boolean registerBus(EventBus bus, LoadController controller) {
return false;
}
@Subscribe
public void modConstruction(FMLConstructionEvent evt) {
}
@Subscribe
public void preInit(FMLPreInitializationEvent evt) {
}
@Subscribe
public void init(FMLInitializationEvent evt) {
}
@Subscribe
public void postInit(FMLPostInitializationEvent evt) {
}
public static void log(String par1) {
System.out.println("[DAYZ] " + par1);
}
}
Код:
package com.ferullogaming.craftingdead.core;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import java.io.File;
import java.util.Map;
@MCVersion("1.6.4")
public class CDAFMLLoadingPlugin implements IFMLLoadingPlugin {
public static File location;
public String[] getLibraryRequestClass() {
return null;
}
public String[] getASMTransformerClass() {
return new String[]{CDAClassTransformer.class.getName()};
}
public String getModContainerClass() {
return CDADummyContainer.class.getName();
}
public String getSetupClass() {
return null;
}
public void injectData(Map data) {
location = (File)data.get("coremodLocation");
}
}
Скриншоты: