diff --git a/src/main/java/cpw/mods/fml/client/CustomModLoadingErrorDisplayException.java b/src/main/java/cpw/mods/fml/client/CustomModLoadingErrorDisplayException.java index 078780c77f..d131d6d825 100644 --- a/src/main/java/cpw/mods/fml/client/CustomModLoadingErrorDisplayException.java +++ b/src/main/java/cpw/mods/fml/client/CustomModLoadingErrorDisplayException.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -31,6 +31,8 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public abstract class CustomModLoadingErrorDisplayException extends RuntimeException implements IFMLHandledException { + private static final long serialVersionUID = 1L; + /** * Called after the GUI is inited by the parent code. You can do extra stuff here, maybe? * diff --git a/src/main/java/cpw/mods/fml/client/FMLClientHandler.java b/src/main/java/cpw/mods/fml/client/FMLClientHandler.java index 5332e3143e..9a52d4a1d8 100644 --- a/src/main/java/cpw/mods/fml/client/FMLClientHandler.java +++ b/src/main/java/cpw/mods/fml/client/FMLClientHandler.java @@ -12,11 +12,8 @@ */ package cpw.mods.fml.client; -import java.io.File; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -30,11 +27,8 @@ import net.minecraft.client.multiplayer.NetClientHandler; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.resources.FileResourcePack; -import net.minecraft.client.resources.FolderResourcePack; import net.minecraft.client.resources.ReloadableResourceManager; import net.minecraft.client.resources.ResourcePack; -import net.minecraft.client.resources.SimpleReloadableResourceManager; import net.minecraft.crash.CrashReport; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; @@ -50,12 +44,10 @@ import net.minecraft.world.World; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; import com.google.common.collect.MapDifference; import com.google.common.collect.MapDifference.ValueDifference; import com.google.common.collect.Maps; -import cpw.mods.fml.client.modloader.ModLoaderClientHelper; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.DummyModContainer; @@ -76,11 +68,9 @@ import cpw.mods.fml.common.network.EntitySpawnPacket; import cpw.mods.fml.common.network.ModMissingPacket; import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration; import cpw.mods.fml.common.registry.GameData; -import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; import cpw.mods.fml.common.registry.IThrowableEntity; import cpw.mods.fml.common.registry.ItemData; -import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.common.toposort.ModSortingException; import cpw.mods.fml.relauncher.Side; @@ -118,8 +108,10 @@ public class FMLClientHandler implements IFMLSidedHandler private DummyModContainer optifineContainer; + @SuppressWarnings("unused") private boolean guiLoaded; + @SuppressWarnings("unused") private boolean serverIsRunning; private MissingModsException modsMissing; @@ -138,6 +130,7 @@ public class FMLClientHandler implements IFMLSidedHandler private List resourcePackList; + @SuppressWarnings("unused") private ReloadableResourceManager resourceManager; private Map resourcePackMap; @@ -149,7 +142,8 @@ public class FMLClientHandler implements IFMLSidedHandler * @param resourcePackList The resource pack list we will populate with mods * @param resourceManager The resource manager */ - public void beginMinecraftLoading(Minecraft minecraft, List resourcePackList, ReloadableResourceManager resourceManager) + @SuppressWarnings("unchecked") + public void beginMinecraftLoading(Minecraft minecraft, @SuppressWarnings("rawtypes") List resourcePackList, ReloadableResourceManager resourceManager) { client = minecraft; this.resourcePackList = resourcePackList; @@ -162,9 +156,7 @@ public class FMLClientHandler implements IFMLSidedHandler return; } -// TextureFXManager.instance().setClient(client); FMLCommonHandler.instance().beginLoading(this); - new ModLoaderClientHelper(client); try { Class optifineConfig = Class.forName("Config", false, Loader.instance().getModClassLoader()); @@ -237,7 +229,7 @@ public class FMLClientHandler implements IFMLSidedHandler * Also initializes key bindings * */ - @SuppressWarnings("deprecation") + @SuppressWarnings({ "deprecation", "unchecked" }) public void finishMinecraftLoading() { if (modsMissing != null || wrongMC != null || customError!=null || dupesFound!=null || modSorting!=null) @@ -259,7 +251,7 @@ public class FMLClientHandler implements IFMLSidedHandler haltGame("There was a severe problem during mod loading that has caused the game to fail", le); return; } - + client.field_71416_A.LOAD_SOUND_SYSTEM = true; // Reload resources client.func_110436_a(); @@ -269,8 +261,10 @@ public class FMLClientHandler implements IFMLSidedHandler KeyBindingRegistry.instance().uploadKeyBindingsToGame(client.field_71474_y); } + @SuppressWarnings("unused") public void extendModList() { + @SuppressWarnings("unchecked") Map> modList = (Map>) Launch.blackboard.get("modList"); if (modList != null) { @@ -398,6 +392,7 @@ public class FMLClientHandler implements IFMLSidedHandler client.func_71373_a(gui); } + @SuppressWarnings("rawtypes") @Override public Entity spawnEntityIntoClientWorld(EntityRegistration er, EntitySpawnPacket packet) { diff --git a/src/main/java/cpw/mods/fml/client/FMLFileResourcePack.java b/src/main/java/cpw/mods/fml/client/FMLFileResourcePack.java index 81a87af7d5..aaca5c2488 100644 --- a/src/main/java/cpw/mods/fml/client/FMLFileResourcePack.java +++ b/src/main/java/cpw/mods/fml/client/FMLFileResourcePack.java @@ -2,20 +2,19 @@ package cpw.mods.fml.client; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.logging.Level; import javax.imageio.ImageIO; +import net.minecraft.client.resources.FileResourcePack; + import com.google.common.base.Charsets; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.ModContainer; -import net.minecraft.client.resources.FileResourcePack; - public class FMLFileResourcePack extends FileResourcePack { private ModContainer container; diff --git a/src/main/java/cpw/mods/fml/client/GuiCustomModLoadingErrorScreen.java b/src/main/java/cpw/mods/fml/client/GuiCustomModLoadingErrorScreen.java index fbd8b20a97..6137ded962 100644 --- a/src/main/java/cpw/mods/fml/client/GuiCustomModLoadingErrorScreen.java +++ b/src/main/java/cpw/mods/fml/client/GuiCustomModLoadingErrorScreen.java @@ -13,8 +13,6 @@ package cpw.mods.fml.client; import net.minecraft.client.gui.GuiErrorScreen; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.WrongMinecraftVersionException; public class GuiCustomModLoadingErrorScreen extends GuiErrorScreen { diff --git a/src/main/java/cpw/mods/fml/client/GuiDupesFound.java b/src/main/java/cpw/mods/fml/client/GuiDupesFound.java index 2fbf17b4b9..81cc916c05 100644 --- a/src/main/java/cpw/mods/fml/client/GuiDupesFound.java +++ b/src/main/java/cpw/mods/fml/client/GuiDupesFound.java @@ -16,11 +16,8 @@ import java.io.File; import java.util.Map.Entry; import net.minecraft.client.gui.GuiErrorScreen; - import cpw.mods.fml.common.DuplicateModsFoundException; -import cpw.mods.fml.common.MissingModsException; import cpw.mods.fml.common.ModContainer; -import cpw.mods.fml.common.versioning.ArtifactVersion; public class GuiDupesFound extends GuiErrorScreen { diff --git a/src/main/java/cpw/mods/fml/client/GuiIdMismatchScreen.java b/src/main/java/cpw/mods/fml/client/GuiIdMismatchScreen.java index 6994f08a90..c399bbaf96 100644 --- a/src/main/java/cpw/mods/fml/client/GuiIdMismatchScreen.java +++ b/src/main/java/cpw/mods/fml/client/GuiIdMismatchScreen.java @@ -18,14 +18,12 @@ import java.util.Map.Entry; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.resources.I18n; -import net.minecraft.util.StringTranslate; import com.google.common.collect.Lists; import com.google.common.collect.MapDifference; import com.google.common.collect.MapDifference.ValueDifference; import cpw.mods.fml.common.registry.ItemData; -import cpw.mods.fml.common.versioning.ArtifactVersion; public class GuiIdMismatchScreen extends GuiYesNo { private List missingIds = Lists.newArrayList(); @@ -43,7 +41,7 @@ public class GuiIdMismatchScreen extends GuiYesNo { for (Entry> entry : idDifferences.entriesDiffering().entrySet()) { ItemData world = entry.getValue().leftValue(); - ItemData game = entry.getValue().rightValue(); +// ItemData game = entry.getValue().rightValue(); mismatchedIds.add(String.format("ID %d is mismatched between world and game", world.getItemId())); } this.allowContinue = allowContinue; diff --git a/src/main/java/cpw/mods/fml/client/GuiModList.java b/src/main/java/cpw/mods/fml/client/GuiModList.java index b5cf30bfc9..f32afeffd1 100644 --- a/src/main/java/cpw/mods/fml/client/GuiModList.java +++ b/src/main/java/cpw/mods/fml/client/GuiModList.java @@ -29,13 +29,10 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiSmallButton; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.DynamicTexture; -import net.minecraft.client.renderer.texture.SimpleTexture; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.texture.TextureObject; import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.ResourcePack; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StringTranslate; import org.lwjgl.opengl.GL11; @@ -84,6 +81,7 @@ public class GuiModList extends GuiScreen } } + @SuppressWarnings("unchecked") @Override public void func_73866_w_() { diff --git a/src/main/java/cpw/mods/fml/client/GuiModsMissingForServer.java b/src/main/java/cpw/mods/fml/client/GuiModsMissingForServer.java index 23944626f2..3098e44673 100644 --- a/src/main/java/cpw/mods/fml/client/GuiModsMissingForServer.java +++ b/src/main/java/cpw/mods/fml/client/GuiModsMissingForServer.java @@ -16,7 +16,6 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiSmallButton; import net.minecraft.client.resources.I18n; -import net.minecraft.util.StringTranslate; import cpw.mods.fml.common.network.ModMissingPacket; import cpw.mods.fml.common.versioning.ArtifactVersion; @@ -29,6 +28,7 @@ public class GuiModsMissingForServer extends GuiScreen this.modsMissing = modsMissing; } + @SuppressWarnings("unchecked") @Override public void func_73866_w_() { diff --git a/src/main/java/cpw/mods/fml/client/GuiScrollingList.java b/src/main/java/cpw/mods/fml/client/GuiScrollingList.java index f3dd621514..559ec53655 100644 --- a/src/main/java/cpw/mods/fml/client/GuiScrollingList.java +++ b/src/main/java/cpw/mods/fml/client/GuiScrollingList.java @@ -104,7 +104,7 @@ public abstract class GuiScrollingList return p_27256_1_ >= var3 && p_27256_1_ <= var4 && var6 >= 0 && var5 >= 0 && var6 < this.getSize() ? var6 : -1; } - public void registerScrollButtons(List p_22240_1_, int p_22240_2_, int p_22240_3_) + public void registerScrollButtons(@SuppressWarnings("rawtypes") List p_22240_1_, int p_22240_2_, int p_22240_3_) { this.scrollUpActionId = p_22240_2_; this.scrollDownActionId = p_22240_3_; diff --git a/src/main/java/cpw/mods/fml/client/GuiSortingProblem.java b/src/main/java/cpw/mods/fml/client/GuiSortingProblem.java index ad15770cd8..973cd710c8 100644 --- a/src/main/java/cpw/mods/fml/client/GuiSortingProblem.java +++ b/src/main/java/cpw/mods/fml/client/GuiSortingProblem.java @@ -1,19 +1,15 @@ package cpw.mods.fml.client; +import net.minecraft.client.gui.GuiScreen; import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.toposort.ModSortingException; import cpw.mods.fml.common.toposort.ModSortingException.SortingExceptionData; -import cpw.mods.fml.common.versioning.ArtifactVersion; -import cpw.mods.fml.common.versioning.DefaultArtifactVersion; -import net.minecraft.client.gui.GuiScreen; public class GuiSortingProblem extends GuiScreen { - private ModSortingException modSorting; private SortingExceptionData failedList; public GuiSortingProblem(ModSortingException modSorting) { - this.modSorting = modSorting; this.failedList = modSorting.getExceptionData(); } diff --git a/src/main/java/cpw/mods/fml/client/GuiWrongMinecraft.java b/src/main/java/cpw/mods/fml/client/GuiWrongMinecraft.java index 6d87027dbb..8fa3fc0f44 100644 --- a/src/main/java/cpw/mods/fml/client/GuiWrongMinecraft.java +++ b/src/main/java/cpw/mods/fml/client/GuiWrongMinecraft.java @@ -15,7 +15,6 @@ package cpw.mods.fml.client; import net.minecraft.client.gui.GuiErrorScreen; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.WrongMinecraftVersionException; -import cpw.mods.fml.common.versioning.ArtifactVersion; public class GuiWrongMinecraft extends GuiErrorScreen { diff --git a/src/main/java/cpw/mods/fml/client/TextureFXManager.java b/src/main/java/cpw/mods/fml/client/TextureFXManager.java deleted file mode 100644 index e613b4f38b..0000000000 --- a/src/main/java/cpw/mods/fml/client/TextureFXManager.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Forge Mod Loader - * Copyright (c) 2012-2013 cpw. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v2.1 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * Contributors: - * cpw - implementation - */ - -package cpw.mods.fml.client; - -import java.awt.Dimension; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.imageio.ImageIO; - -import org.lwjgl.opengl.ContextCapabilities; -import org.lwjgl.opengl.GLContext; - -import com.google.common.collect.Maps; - -import cpw.mods.fml.common.FMLLog; - -import net.minecraft.client.Minecraft; - -public class TextureFXManager -{ - private static final TextureFXManager INSTANCE = new TextureFXManager(); - - private Minecraft client; - - private Map texturesById = Maps.newHashMap(); - private Map texturesByName = Maps.newHashMap(); - -// private TextureHelper helper; - - void setClient(Minecraft client) - { - this.client = client; - } -// public BufferedImage loadImageFromTexturePack(RenderEngine renderEngine, String path) throws IOException -// { -// InputStream image=client.field_71418_C.func_77292_e().func_77532_a(path); -// if (image==null) { -// throw new RuntimeException(String.format("The requested image path %s is not found",path)); -// } -// BufferedImage result=ImageIO.read(image); -// if (result==null) -// { -// throw new RuntimeException(String.format("The requested image path %s appears to be corrupted",path)); -// } -// return result; -// } -// - public static TextureFXManager instance() - { - return INSTANCE; - } - - public void fixTransparency(BufferedImage loadedImage, String textureName) - { - if (textureName.matches("^/mob/.*_eyes.*.png$")) - { - for (int x = 0; x < loadedImage.getWidth(); x++) { - for (int y = 0; y < loadedImage.getHeight(); y++) { - int argb = loadedImage.getRGB(x, y); - if ((argb & 0xff000000) == 0 && argb != 0) { - loadedImage.setRGB(x, y, 0); - } - } - } - } - } - public void bindTextureToName(String name, int index) - { - TextureHolder holder = new TextureHolder(); - holder.textureId = index; - holder.textureName = name; - texturesById.put(index,holder); - texturesByName.put(name,holder); - } - - public void setTextureDimensions(int index, int j, int k) - { - TextureHolder holder = texturesById.get(index); - if (holder == null) - { - return; - } - holder.x = j; - holder.y = k; - } - - private class TextureHolder { - private int textureId; - private String textureName; - private int x; - private int y; - } - - public Dimension getTextureDimensions(String texture) - { - return texturesByName.containsKey(texture) ? new Dimension(texturesByName.get(texture).x, texturesByName.get(texture).y) : new Dimension(1,1); - } - - -// public TextureHelper getHelper() -// { -// if (helper == null) -// { -// ContextCapabilities capabilities = GLContext.getCapabilities(); -// boolean has43 = false; -// try -// { -// has43 = capabilities.getClass().getField("GL_ARB_copy_image").getBoolean(capabilities); -// } -// catch (Exception e) -// { -// //e.printStackTrace(); -// // NOOP - LWJGL needs updating -// FMLLog.info("Forge Mod Loader has detected an older LWJGL version, new advanced texture animation features are disabled"); -// } -//// if (has43 && Boolean.parseBoolean(System.getProperty("fml.useGL43","true"))) -//// { -//// FMLLog.info("Using the new OpenGL 4.3 advanced capability for animations"); -//// helper = new OpenGL43TextureHelper(); -//// } -//// else -// { -// FMLLog.info("Not using advanced OpenGL 4.3 advanced capability for animations : OpenGL 4.3 is %s", has43 ? "available" : "not available"); -//// helper = new CopySubimageTextureHelper(); -// } -// } -// return helper; -// } -} diff --git a/src/main/java/cpw/mods/fml/client/modloader/ModLoaderBlockRendererHandler.java b/src/main/java/cpw/mods/fml/client/modloader/ModLoaderBlockRendererHandler.java deleted file mode 100644 index c6acea43ce..0000000000 --- a/src/main/java/cpw/mods/fml/client/modloader/ModLoaderBlockRendererHandler.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Forge Mod Loader - * Copyright (c) 2012-2013 cpw. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v2.1 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * Contributors: - * cpw - implementation - */ - -package cpw.mods.fml.client.modloader; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.src.BaseMod; -import net.minecraft.world.IBlockAccess; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; - -/** - * @author cpw - * - */ -public class ModLoaderBlockRendererHandler implements ISimpleBlockRenderingHandler -{ - private int renderId; - private boolean render3dInInventory; - private BaseMod mod; - - /** - * @param mod - * - */ - public ModLoaderBlockRendererHandler(int renderId, boolean render3dInInventory, BaseMod mod) - { - this.renderId=renderId; - this.render3dInInventory=render3dInInventory; - this.mod=mod; - } - - @Override - public int getRenderId() - { - return renderId; - } - - @Override - public boolean shouldRender3DInInventory() - { - return render3dInInventory; - } - - /** - * @param world - * @param x - * @param y - * @param z - * @param block - * @param modelId - * @param renderer - */ - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) - { - return mod.renderWorldBlock(renderer, world, x, y, z, block, modelId); - } - - /** - * @param block - * @param metadata - * @param modelID - * @param renderer - */ - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) - { - mod.renderInvBlock(renderer, block, metadata, modelID); - } - -} diff --git a/src/main/java/cpw/mods/fml/client/modloader/ModLoaderClientHelper.java b/src/main/java/cpw/mods/fml/client/modloader/ModLoaderClientHelper.java deleted file mode 100644 index 05e49c186a..0000000000 --- a/src/main/java/cpw/mods/fml/client/modloader/ModLoaderClientHelper.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Forge Mod Loader - * Copyright (c) 2012-2013 cpw. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v2.1 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * Contributors: - * cpw - implementation - */ - -package cpw.mods.fml.client.modloader; - -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Map.Entry; -import java.util.logging.Level; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.NetHandler; -import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraft.src.BaseMod; -import net.minecraft.client.*; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.client.multiplayer.NetClientHandler; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; - -import com.google.common.base.Equivalence; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.Iterables; -import com.google.common.collect.Iterators; -import com.google.common.collect.MapDifference; -import com.google.common.collect.MapDifference.ValueDifference; -import com.google.common.collect.MapMaker; -import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; - -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.client.registry.KeyBindingRegistry; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.common.FMLLog; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.modloader.BaseModProxy; -import cpw.mods.fml.common.modloader.IModLoaderSidedHelper; -import cpw.mods.fml.common.modloader.ModLoaderHelper; -import cpw.mods.fml.common.modloader.ModLoaderModContainer; -import cpw.mods.fml.common.network.EntitySpawnPacket; -import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration; - -public class ModLoaderClientHelper implements IModLoaderSidedHelper -{ - public static int obtainBlockModelIdFor(BaseMod mod, boolean inventoryRenderer) - { - int renderId=RenderingRegistry.getNextAvailableRenderId(); - ModLoaderBlockRendererHandler bri=new ModLoaderBlockRendererHandler(renderId, inventoryRenderer, mod); - RenderingRegistry.registerBlockHandler(bri); - return renderId; - } - - - public static void handleFinishLoadingFor(ModLoaderModContainer mc, Minecraft game) - { - FMLLog.log(mc.getModId(), Level.FINE, "Handling post startup activities for ModLoader mod %s", mc.getModId()); - BaseMod mod = (BaseMod) mc.getMod(); - - Map, Render> renderers = Maps.newHashMap(RenderManager.field_78727_a.field_78729_o); - - try - { - FMLLog.log(mc.getModId(), Level.FINEST, "Requesting renderers from basemod %s", mc.getModId()); - mod.addRenderer(renderers); - FMLLog.log(mc.getModId(), Level.FINEST, "Received %d renderers from basemod %s", renderers.size(), mc.getModId()); - } - catch (Exception e) - { - FMLLog.log(mc.getModId(), Level.SEVERE, e, "A severe problem was detected with the mod %s during the addRenderer call. Continuing, but expect odd results", mc.getModId()); - } - - MapDifference, Render> difference = Maps.difference(RenderManager.field_78727_a.field_78729_o, renderers, Equivalence.identity()); - - for ( Entry, Render> e : difference.entriesOnlyOnLeft().entrySet()) - { - FMLLog.log(mc.getModId(), Level.WARNING, "The mod %s attempted to remove an entity renderer %s from the entity map. This will be ignored.", mc.getModId(), e.getKey().getName()); - } - - for (Entry, Render> e : difference.entriesOnlyOnRight().entrySet()) - { - FMLLog.log(mc.getModId(), Level.FINEST, "Registering ModLoader entity renderer %s as instance of %s", e.getKey().getName(), e.getValue().getClass().getName()); - RenderingRegistry.registerEntityRenderingHandler(e.getKey(), e.getValue()); - } - - for (Entry, ValueDifference> e : difference.entriesDiffering().entrySet()) - { - FMLLog.log(mc.getModId(), Level.FINEST, "Registering ModLoader entity rendering override for %s as instance of %s", e.getKey().getName(), e.getValue().rightValue().getClass().getName()); - RenderingRegistry.registerEntityRenderingHandler(e.getKey(), e.getValue().rightValue()); - } - - try - { - mod.registerAnimation(game); - } - catch (Exception e) - { - FMLLog.log(mc.getModId(), Level.SEVERE, e, "A severe problem was detected with the mod %s during the registerAnimation call. Continuing, but expect odd results", mc.getModId()); - } - } - - public ModLoaderClientHelper(Minecraft client) - { - this.client = client; - ModLoaderHelper.sidedHelper = this; - keyBindingContainers = Multimaps.newMultimap(Maps.>newHashMap(), new Supplier>() - { - @Override - public Collection get() - { - return Collections.singleton(new ModLoaderKeyBindingHandler()); - } - }); - } - - private Minecraft client; - private static Multimap keyBindingContainers; - - @Override - public void finishModLoading(ModLoaderModContainer mc) - { - handleFinishLoadingFor(mc, client); - } - - - public static void registerKeyBinding(BaseModProxy mod, KeyBinding keyHandler, boolean allowRepeat) - { - ModLoaderModContainer mlmc = (ModLoaderModContainer) Loader.instance().activeModContainer(); - ModLoaderKeyBindingHandler handler = Iterables.getOnlyElement(keyBindingContainers.get(mlmc)); - handler.setModContainer(mlmc); - handler.addKeyBinding(keyHandler, allowRepeat); - KeyBindingRegistry.registerKeyBinding(handler); - } - - - @Override - public Object getClientGui(BaseModProxy mod, EntityPlayer player, int ID, int x, int y, int z) - { - return ((net.minecraft.src.BaseMod)mod).getContainerGUI((EntityClientPlayerMP) player, ID, x, y, z); - } - - - @Override - public Entity spawnEntity(BaseModProxy mod, EntitySpawnPacket input, EntityRegistration er) - { - return ((net.minecraft.src.BaseMod)mod).spawnEntity(er.getModEntityId(), client.field_71441_e, input.scaledX, input.scaledY, input.scaledZ); - } - - - @Override - public void sendClientPacket(BaseModProxy mod, Packet250CustomPayload packet) - { - ((net.minecraft.src.BaseMod)mod).clientCustomPayload(client.field_71439_g.field_71174_a, packet); - } - - private Map managerLookups = new MapMaker().weakKeys().weakValues().makeMap(); - @Override - public void clientConnectionOpened(NetHandler netClientHandler, INetworkManager manager, BaseModProxy mod) - { - managerLookups.put(manager, netClientHandler); - ((BaseMod)mod).clientConnect((NetClientHandler)netClientHandler); - } - - - @Override - public boolean clientConnectionClosed(INetworkManager manager, BaseModProxy mod) - { - if (managerLookups.containsKey(manager)) - { - ((BaseMod)mod).clientDisconnect((NetClientHandler) managerLookups.get(manager)); - return true; - } - return false; - } -} diff --git a/src/main/java/cpw/mods/fml/client/modloader/ModLoaderKeyBindingHandler.java b/src/main/java/cpw/mods/fml/client/modloader/ModLoaderKeyBindingHandler.java deleted file mode 100644 index a0fff7e3f4..0000000000 --- a/src/main/java/cpw/mods/fml/client/modloader/ModLoaderKeyBindingHandler.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Forge Mod Loader - * Copyright (c) 2012-2013 cpw. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v2.1 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * Contributors: - * cpw - implementation - */ - -package cpw.mods.fml.client.modloader; - -import java.util.Arrays; -import java.util.EnumSet; -import java.util.List; - -import org.lwjgl.input.Mouse; - -import com.google.common.collect.ObjectArrays; -import com.google.common.primitives.Booleans; - -import net.minecraft.client.settings.KeyBinding; -import cpw.mods.fml.client.registry.KeyBindingRegistry; -import cpw.mods.fml.common.TickType; -import cpw.mods.fml.common.modloader.ModLoaderModContainer; - -/** - * @author cpw - * - */ -public class ModLoaderKeyBindingHandler extends KeyBindingRegistry.KeyHandler -{ - private ModLoaderModContainer modContainer; - private List helper; - private boolean[] active = new boolean[0]; - private boolean[] mlRepeats = new boolean[0]; - private boolean[] armed = new boolean[0]; - - public ModLoaderKeyBindingHandler() - { - super(new KeyBinding[0], new boolean[0]); - } - - void setModContainer(ModLoaderModContainer modContainer) - { - this.modContainer = modContainer; - } - - public void fireKeyEvent(KeyBinding kb) - { - ((net.minecraft.src.BaseMod)modContainer.getMod()).keyboardEvent(kb); - } - - @Override - public void keyDown(EnumSet type, KeyBinding kb, boolean end, boolean repeats) - { - if (!end) - { - return; - } - int idx = helper.indexOf(kb); - if (type.contains(TickType.CLIENT)) - { - armed[idx] = true; - } - if (armed[idx] && type.contains(TickType.RENDER) && (!active[idx] || mlRepeats[idx])) - { - fireKeyEvent(kb); - active[idx] = true; - armed[idx] = false; - } - } - - @Override - public void keyUp(EnumSet type, KeyBinding kb, boolean end) - { - if (!end) - { - return; - } - int idx = helper.indexOf(kb); - active[idx] = false; - } - - @Override - public EnumSet ticks() - { - return EnumSet.of(TickType.CLIENT, TickType.RENDER); - } - - @Override - public String getLabel() - { - return modContainer.getModId() +" KB "+keyBindings[0].field_74512_d; - } - - void addKeyBinding(KeyBinding binding, boolean repeats) - { - this.keyBindings = ObjectArrays.concat(this.keyBindings, binding); - this.repeatings = new boolean[this.keyBindings.length]; - Arrays.fill(this.repeatings, true); - this.active = new boolean[this.keyBindings.length]; - this.armed = new boolean[this.keyBindings.length]; - this.mlRepeats = Booleans.concat(this.mlRepeats, new boolean[] { repeats }); - this.keyDown = new boolean[this.keyBindings.length]; - this.helper = Arrays.asList(this.keyBindings); - } -} diff --git a/src/main/java/cpw/mods/fml/client/registry/ClientRegistry.java b/src/main/java/cpw/mods/fml/client/registry/ClientRegistry.java index 0316952a40..771cfd0c89 100644 --- a/src/main/java/cpw/mods/fml/client/registry/ClientRegistry.java +++ b/src/main/java/cpw/mods/fml/client/registry/ClientRegistry.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -20,9 +20,9 @@ import net.minecraft.tileentity.TileEntity; public class ClientRegistry { /** - * + * * Utility method for registering a tile entity and it's renderer at once - generally you should register them separately - * + * * @param tileEntityClass * @param id * @param specialRenderer @@ -32,7 +32,8 @@ public class ClientRegistry GameRegistry.registerTileEntity(tileEntityClass, id); bindTileEntitySpecialRenderer(tileEntityClass, specialRenderer); } - + + @SuppressWarnings("unchecked") public static void bindTileEntitySpecialRenderer(Class tileEntityClass, TileEntitySpecialRenderer specialRenderer) { TileEntityRenderer.field_76963_a.field_76966_m.put(tileEntityClass, specialRenderer); diff --git a/src/main/java/cpw/mods/fml/client/registry/RenderingRegistry.java b/src/main/java/cpw/mods/fml/client/registry/RenderingRegistry.java index 10421c5751..0fbf611573 100644 --- a/src/main/java/cpw/mods/fml/client/registry/RenderingRegistry.java +++ b/src/main/java/cpw/mods/fml/client/registry/RenderingRegistry.java @@ -17,7 +17,9 @@ import java.util.Map; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.entity.*; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderBiped; +import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import net.minecraft.world.IBlockAccess; @@ -25,8 +27,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.ObjectArrays; -import cpw.mods.fml.client.TextureFXManager; - /** * @author cpw * diff --git a/src/main/java/cpw/mods/fml/common/DuplicateModsFoundException.java b/src/main/java/cpw/mods/fml/common/DuplicateModsFoundException.java index e2446771ee..f067605ff8 100644 --- a/src/main/java/cpw/mods/fml/common/DuplicateModsFoundException.java +++ b/src/main/java/cpw/mods/fml/common/DuplicateModsFoundException.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -13,13 +13,12 @@ package cpw.mods.fml.common; import java.io.File; -import java.util.List; import com.google.common.collect.SetMultimap; public class DuplicateModsFoundException extends LoaderException { - - public SetMultimap dupes; + private static final long serialVersionUID = 1L; + public SetMultimap dupes; public DuplicateModsFoundException(SetMultimap dupes) { this.dupes = dupes; diff --git a/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java b/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java index af75c186d1..2e544ed5e0 100644 --- a/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java +++ b/src/main/java/cpw/mods/fml/common/FMLCommonHandler.java @@ -15,7 +15,6 @@ package cpw.mods.fml.common; import java.util.EnumSet; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -232,7 +231,7 @@ public class FMLCommonHandler { if (brandings == null) { - Builder brd = ImmutableList.builder(); + Builder brd = ImmutableList.builder(); brd.add(Loader.instance().getMCVersionString()); brd.add(Loader.instance().getMCPVersionString()); brd.add("FML v"+Loader.instance().getFMLVersionString()); diff --git a/src/main/java/cpw/mods/fml/common/FMLDummyContainer.java b/src/main/java/cpw/mods/fml/common/FMLDummyContainer.java index f860217847..55f02c1b5a 100644 --- a/src/main/java/cpw/mods/fml/common/FMLDummyContainer.java +++ b/src/main/java/cpw/mods/fml/common/FMLDummyContainer.java @@ -31,7 +31,6 @@ import cpw.mods.fml.client.FMLFileResourcePack; import cpw.mods.fml.client.FMLFolderResourcePack; import cpw.mods.fml.common.asm.FMLSanityChecker; import cpw.mods.fml.common.registry.GameData; -import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.ItemData; /** diff --git a/src/main/java/cpw/mods/fml/common/FMLLog.java b/src/main/java/cpw/mods/fml/common/FMLLog.java index 4b583fd314..4c8e64c379 100644 --- a/src/main/java/cpw/mods/fml/common/FMLLog.java +++ b/src/main/java/cpw/mods/fml/common/FMLLog.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -15,6 +15,7 @@ package cpw.mods.fml.common; import java.util.logging.Level; import java.util.logging.Logger; +@SuppressWarnings("static-access") public class FMLLog { private static cpw.mods.fml.relauncher.FMLRelaunchLog coreLog = cpw.mods.fml.relauncher.FMLRelaunchLog.log; diff --git a/src/main/java/cpw/mods/fml/common/FMLModContainer.java b/src/main/java/cpw/mods/fml/common/FMLModContainer.java index ee404310b5..a01513f9f4 100644 --- a/src/main/java/cpw/mods/fml/common/FMLModContainer.java +++ b/src/main/java/cpw/mods/fml/common/FMLModContainer.java @@ -27,10 +27,8 @@ import java.util.Set; import java.util.logging.Level; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import java.util.zip.ZipInputStream; import com.google.common.base.Function; -import com.google.common.base.Predicates; import com.google.common.base.Strings; import com.google.common.base.Throwables; import com.google.common.collect.ArrayListMultimap; @@ -40,17 +38,14 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterators; import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; import com.google.common.collect.SetMultimap; import com.google.common.collect.Sets; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; -import cpw.mods.fml.common.Mod.CustomProperty; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.Metadata; import cpw.mods.fml.common.discovery.ASMDataTable; @@ -58,9 +53,9 @@ import cpw.mods.fml.common.discovery.ASMDataTable.ASMData; import cpw.mods.fml.common.discovery.ModCandidate; import cpw.mods.fml.common.event.FMLConstructionEvent; import cpw.mods.fml.common.event.FMLEvent; +import cpw.mods.fml.common.event.FMLFingerprintViolationEvent; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; -import cpw.mods.fml.common.event.FMLFingerprintViolationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerAboutToStartEvent; @@ -68,7 +63,6 @@ import cpw.mods.fml.common.event.FMLServerStartedEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.event.FMLServerStoppedEvent; import cpw.mods.fml.common.event.FMLServerStoppingEvent; -import cpw.mods.fml.common.event.FMLStateEvent; import cpw.mods.fml.common.network.FMLNetworkHandler; import cpw.mods.fml.common.versioning.ArtifactVersion; import cpw.mods.fml.common.versioning.DefaultArtifactVersion; @@ -77,7 +71,6 @@ import cpw.mods.fml.common.versioning.VersionRange; public class FMLModContainer implements ModContainer { - private Mod modDescriptor; private Object modInstance; private File source; private ModMetadata modMetadata; @@ -322,6 +315,7 @@ public class FMLModContainer implements ModContainer } } + @SuppressWarnings("unchecked") private Method gatherAnnotations(Class clazz) throws Exception { Method factoryMethod = null; @@ -498,6 +492,7 @@ public class FMLModContainer implements ModContainer } } + @SuppressWarnings("unchecked") List> props = (List>) descriptor.get("customProperties"); if (props != null) { diff --git a/src/main/java/cpw/mods/fml/common/ILanguageAdapter.java b/src/main/java/cpw/mods/fml/common/ILanguageAdapter.java index d5b1c24384..86d3644a6f 100644 --- a/src/main/java/cpw/mods/fml/common/ILanguageAdapter.java +++ b/src/main/java/cpw/mods/fml/common/ILanguageAdapter.java @@ -5,7 +5,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.logging.Level; -import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.relauncher.Side; public interface ILanguageAdapter { diff --git a/src/main/java/cpw/mods/fml/common/LoadController.java b/src/main/java/cpw/mods/fml/common/LoadController.java index 5a7c827759..c6bf979814 100644 --- a/src/main/java/cpw/mods/fml/common/LoadController.java +++ b/src/main/java/cpw/mods/fml/common/LoadController.java @@ -15,12 +15,10 @@ package cpw.mods.fml.common; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import java.util.logging.Level; import java.util.logging.Logger; -import com.google.common.base.Functions; import com.google.common.base.Joiner; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; @@ -51,7 +49,6 @@ public class LoadController private LoaderState state; private Multimap modStates = ArrayListMultimap.create(); private Multimap errors = ArrayListMultimap.create(); - private Map modList; private List activeModList = Lists.newArrayList(); private ModContainer activeContainer; private BiMap modObjectList; @@ -70,7 +67,6 @@ public class LoadController @Subscribe public void buildModList(FMLLoadEvent event) { - this.modList = loader.getIndexedModList(); Builder eventBus = ImmutableMap.builder(); for (ModContainer mod : loader.getModList()) @@ -80,7 +76,7 @@ public class LoadController Logger modLogger = Logger.getLogger(mod.getModId()); Logger eventLog = Logger.getLogger(EventBus.class.getName() + "." + mod.getModId()); eventLog.setParent(modLogger); - + EventBus bus = new EventBus(mod.getModId()); boolean isActive = mod.registerBus(bus, this); if (isActive) diff --git a/src/main/java/cpw/mods/fml/common/Loader.java b/src/main/java/cpw/mods/fml/common/Loader.java index 2f52b54929..86c176f8b8 100644 --- a/src/main/java/cpw/mods/fml/common/Loader.java +++ b/src/main/java/cpw/mods/fml/common/Loader.java @@ -13,49 +13,36 @@ package cpw.mods.fml.common; import java.io.File; -import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.net.MalformedURLException; import java.util.Comparator; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; -import java.util.concurrent.Callable; import java.util.logging.Level; import net.minecraft.crash.CallableMinecraftVersion; -import net.minecraft.item.ItemStack; import com.google.common.base.CharMatcher; -import com.google.common.base.Charsets; import com.google.common.base.Function; import com.google.common.base.Joiner; -import com.google.common.base.Joiner.MapJoiner; import com.google.common.base.Splitter; -import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableListMultimap; -import com.google.common.collect.ImmutableListMultimap.Builder; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultiset; -import com.google.common.collect.Iterables; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.collect.SetMultimap; -import com.google.common.collect.Sets; import com.google.common.collect.Multiset.Entry; import com.google.common.collect.Multisets; import com.google.common.collect.Ordering; -import com.google.common.collect.Sets.SetView; -import com.google.common.collect.Table; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; import com.google.common.collect.TreeMultimap; -import com.google.common.io.Files; import cpw.mods.fml.common.LoaderState.ModState; import cpw.mods.fml.common.discovery.ModDiscoverer; @@ -63,7 +50,6 @@ import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.event.FMLLoadEvent; import cpw.mods.fml.common.functions.ArtifactVersionNameFunction; import cpw.mods.fml.common.functions.ModIdFunction; -import cpw.mods.fml.common.modloader.BaseModProxy; import cpw.mods.fml.common.registry.GameData; import cpw.mods.fml.common.toposort.ModSorter; import cpw.mods.fml.common.toposort.ModSortingException; @@ -138,14 +124,6 @@ public class Loader * The canonical configuration directory */ private File canonicalConfigDir; - /** - * The canonical minecraft directory - */ - private File canonicalMinecraftDir; - /** - * The captured error - */ - private Exception capturedError; private File canonicalModsDir; private LoadController modController; private MinecraftDummyContainer minecraft; @@ -166,6 +144,7 @@ public class Loader return instance; } + @SuppressWarnings("unchecked") public static void injectData(Object... data) { major = (String) data[0]; @@ -409,7 +388,6 @@ public class Loader try { - canonicalMinecraftDir = minecraftDir.getCanonicalFile(); canonicalModsPath = modsDir.getCanonicalPath(); canonicalConfigPath = configDir.getCanonicalPath(); canonicalConfigDir = configDir.getCanonicalFile(); diff --git a/src/main/java/cpw/mods/fml/common/LoaderState.java b/src/main/java/cpw/mods/fml/common/LoaderState.java index 58d88c53a3..eec7dcf0f5 100644 --- a/src/main/java/cpw/mods/fml/common/LoaderState.java +++ b/src/main/java/cpw/mods/fml/common/LoaderState.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -15,7 +15,6 @@ package cpw.mods.fml.common; import com.google.common.base.Throwables; import cpw.mods.fml.common.event.FMLConstructionEvent; -import cpw.mods.fml.common.event.FMLEvent; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLLoadCompleteEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -50,6 +49,7 @@ public enum LoaderState private Class eventClass; + @SuppressWarnings("unused") private String name; private LoaderState(String name, Class event) diff --git a/src/main/java/cpw/mods/fml/common/MetadataCollection.java b/src/main/java/cpw/mods/fml/common/MetadataCollection.java index beb03ee0bf..58de078817 100644 --- a/src/main/java/cpw/mods/fml/common/MetadataCollection.java +++ b/src/main/java/cpw/mods/fml/common/MetadataCollection.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -29,6 +29,7 @@ public class MetadataCollection { private static JdomParser parser = new JdomParser(); private Map metadatas = Maps.newHashMap(); + @SuppressWarnings("unused") private int metadataVersion = 1; public static MetadataCollection from(InputStream inputStream, String sourceName) diff --git a/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java b/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java index 1cffba8beb..0ab81d88b8 100644 --- a/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java +++ b/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java @@ -5,15 +5,13 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ package cpw.mods.fml.common; -import cpw.mods.fml.common.versioning.ArtifactVersion; -import cpw.mods.fml.common.versioning.DefaultArtifactVersion; import cpw.mods.fml.common.versioning.VersionParser; import cpw.mods.fml.common.versioning.VersionRange; diff --git a/src/main/java/cpw/mods/fml/common/MissingModsException.java b/src/main/java/cpw/mods/fml/common/MissingModsException.java index 262b8753b7..3e90c0addf 100644 --- a/src/main/java/cpw/mods/fml/common/MissingModsException.java +++ b/src/main/java/cpw/mods/fml/common/MissingModsException.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -14,13 +14,11 @@ package cpw.mods.fml.common; import java.util.Set; -import com.google.common.collect.Sets.SetView; - import cpw.mods.fml.common.versioning.ArtifactVersion; public class MissingModsException extends RuntimeException { - + private static final long serialVersionUID = 1L; public Set missingMods; public MissingModsException(Set missingMods) diff --git a/src/main/java/cpw/mods/fml/common/Mod.java b/src/main/java/cpw/mods/fml/common/Mod.java index 504e872067..f9bb98673d 100644 --- a/src/main/java/cpw/mods/fml/common/Mod.java +++ b/src/main/java/cpw/mods/fml/common/Mod.java @@ -19,21 +19,18 @@ import java.lang.annotation.Target; import net.minecraft.item.ItemBlock; import net.minecraft.network.packet.Packet250CustomPayload; - import cpw.mods.fml.common.event.FMLEvent; import cpw.mods.fml.common.event.FMLFingerprintViolationEvent; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerAboutToStartEvent; import cpw.mods.fml.common.event.FMLServerStartedEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.event.FMLServerStoppedEvent; import cpw.mods.fml.common.event.FMLServerStoppingEvent; -import cpw.mods.fml.common.event.FMLStateEvent; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; diff --git a/src/main/java/cpw/mods/fml/common/ModAPIManager.java b/src/main/java/cpw/mods/fml/common/ModAPIManager.java index fa80cd4b4d..81c87924e8 100644 --- a/src/main/java/cpw/mods/fml/common/ModAPIManager.java +++ b/src/main/java/cpw/mods/fml/common/ModAPIManager.java @@ -1,9 +1,6 @@ package cpw.mods.fml.common; import java.io.File; -import java.security.acl.Owner; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @@ -25,6 +22,7 @@ import cpw.mods.fml.common.versioning.VersionParser; public class ModAPIManager { public static final ModAPIManager INSTANCE = new ModAPIManager(); + @SuppressWarnings("unused") private ModAPITransformer transformer; private ASMDataTable dataTable; private Map apiContainers; diff --git a/src/main/java/cpw/mods/fml/common/ModClassLoader.java b/src/main/java/cpw/mods/fml/common/ModClassLoader.java index 52256cb7ef..527efcbcda 100644 --- a/src/main/java/cpw/mods/fml/common/ModClassLoader.java +++ b/src/main/java/cpw/mods/fml/common/ModClassLoader.java @@ -26,11 +26,8 @@ import net.minecraft.launchwrapper.LaunchClassLoader; import com.google.common.collect.ImmutableList; -import cpw.mods.fml.common.asm.ASMTransformer; -import cpw.mods.fml.common.asm.transformers.AccessTransformer; import cpw.mods.fml.common.asm.transformers.ModAPITransformer; import cpw.mods.fml.common.discovery.ASMDataTable; -import cpw.mods.fml.common.modloader.BaseModProxy; /** * A simple delegating class loader used to load mods into the system @@ -84,26 +81,6 @@ public class ModClassLoader extends URLClassLoader return STANDARD_LIBRARIES; } - public Class loadBaseModClass(String modClazzName) throws Exception - { - AccessTransformer accessTransformer = null; - for (IClassTransformer transformer : mainClassLoader.getTransformers()) - { - if (transformer instanceof AccessTransformer) - { - accessTransformer = (AccessTransformer) transformer; - break; - } - } - if (accessTransformer == null) - { - FMLLog.log(Level.SEVERE, "No access transformer found"); - throw new LoaderException(); - } - accessTransformer.ensurePublicAccessFor(modClazzName); - return (Class) Class.forName(modClazzName, true, this); - } - public void clearNegativeCacheFor(Set classList) { mainClassLoader.clearNegativeEntries(classList); diff --git a/src/main/java/cpw/mods/fml/common/ModContainerFactory.java b/src/main/java/cpw/mods/fml/common/ModContainerFactory.java index 4899296ef4..f13776b5ab 100644 --- a/src/main/java/cpw/mods/fml/common/ModContainerFactory.java +++ b/src/main/java/cpw/mods/fml/common/ModContainerFactory.java @@ -20,7 +20,6 @@ import org.objectweb.asm.Type; import cpw.mods.fml.common.discovery.ModCandidate; import cpw.mods.fml.common.discovery.asm.ASMModParser; import cpw.mods.fml.common.discovery.asm.ModAnnotation; -import cpw.mods.fml.common.modloader.ModLoaderModContainer; public class ModContainerFactory { @@ -34,8 +33,8 @@ public class ModContainerFactory String className = modParser.getASMType().getClassName(); if (modParser.isBaseMod(container.getRememberedBaseMods()) && modClass.matcher(className).find()) { - FMLLog.fine("Identified a BaseMod type mod %s", className); - return new ModLoaderModContainer(className, modSource, modParser.getBaseModProperties()); + FMLLog.severe("Found a BaseMod type mod %s", className); + FMLLog.severe("This will not be loaded and will be ignored. ModLoader mechanisms are no longer available."); } else if (modClass.matcher(className).find()) { diff --git a/src/main/java/cpw/mods/fml/common/ModMetadata.java b/src/main/java/cpw/mods/fml/common/ModMetadata.java index ecff0813f3..e31dad5776 100644 --- a/src/main/java/cpw/mods/fml/common/ModMetadata.java +++ b/src/main/java/cpw/mods/fml/common/ModMetadata.java @@ -28,7 +28,6 @@ import argo.jdom.JsonStringNode; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.base.Objects; -import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -89,6 +88,7 @@ public class ModMetadata public List dependants; public boolean autogenerated; + @SuppressWarnings("unchecked") public ModMetadata(JsonNode node) { Map processedFields = Maps.transformValues(node.getFields(), new JsonStringConverter()); @@ -117,6 +117,7 @@ public class ModMetadata { } + @SuppressWarnings("unchecked") private > T processReferences(Object refs, Class retType) { T res = null; diff --git a/src/main/java/cpw/mods/fml/common/ObfuscationReflectionHelper.java b/src/main/java/cpw/mods/fml/common/ObfuscationReflectionHelper.java index d17d4384e7..42d70a4bcb 100644 --- a/src/main/java/cpw/mods/fml/common/ObfuscationReflectionHelper.java +++ b/src/main/java/cpw/mods/fml/common/ObfuscationReflectionHelper.java @@ -28,7 +28,6 @@ import cpw.mods.fml.relauncher.ReflectionHelper.UnableToFindFieldException; */ public class ObfuscationReflectionHelper { - @SuppressWarnings("unchecked") public static T getPrivateValue(Class classToAccess, E instance, int fieldIndex) { try @@ -53,7 +52,7 @@ public class ObfuscationReflectionHelper } return mappedNames; } - @SuppressWarnings("unchecked") + public static T getPrivateValue(Class classToAccess, E instance, String... fieldNames) { try diff --git a/src/main/java/cpw/mods/fml/common/WrongMinecraftVersionException.java b/src/main/java/cpw/mods/fml/common/WrongMinecraftVersionException.java index a98b13a55a..77cbb07514 100644 --- a/src/main/java/cpw/mods/fml/common/WrongMinecraftVersionException.java +++ b/src/main/java/cpw/mods/fml/common/WrongMinecraftVersionException.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -14,7 +14,7 @@ package cpw.mods.fml.common; public class WrongMinecraftVersionException extends RuntimeException { - + private static final long serialVersionUID = 1L; public ModContainer mod; public WrongMinecraftVersionException(ModContainer mod) diff --git a/src/main/java/cpw/mods/fml/common/asm/FMLSanityChecker.java b/src/main/java/cpw/mods/fml/common/asm/FMLSanityChecker.java index c08c43ad72..3a0bf4882c 100644 --- a/src/main/java/cpw/mods/fml/common/asm/FMLSanityChecker.java +++ b/src/main/java/cpw/mods/fml/common/asm/FMLSanityChecker.java @@ -12,33 +12,15 @@ package cpw.mods.fml.common.asm; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.ObjectInputStream.GetField; -import java.io.StringReader; -import java.net.JarURLConnection; -import java.net.URL; import java.net.URLDecoder; -import java.nio.charset.Charset; import java.security.CodeSource; -import java.security.cert.CertPath; -import java.security.cert.CertPathValidator; import java.security.cert.Certificate; -import java.security.cert.CertificateFactory; -import java.security.cert.PKIXCertPathValidatorResult; -import java.security.cert.PKIXParameters; -import java.security.cert.TrustAnchor; -import java.security.cert.X509Certificate; -import java.util.Arrays; -import java.util.Collections; -import java.util.Locale; import java.util.Map; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.logging.Level; -import java.util.zip.ZipEntry; import javax.swing.JOptionPane; @@ -129,7 +111,7 @@ public class FMLSanityChecker implements IFMLCallHook int certCount = 0; try { - Class cbr = Class.forName("net.minecraft.client.ClientBrandRetriever",false, cl); + Class cbr = Class.forName("net.minecraft.client.ClientBrandRetriever",false, cl); codeSource = cbr.getProtectionDomain().getCodeSource(); } catch (Exception e) @@ -173,7 +155,7 @@ public class FMLSanityChecker implements IFMLCallHook { if (mcJarFile != null) { - try + try { mcJarFile.close(); } diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/DeobfuscationTransformer.java b/src/main/java/cpw/mods/fml/common/asm/transformers/DeobfuscationTransformer.java index 833f5ef7f3..34f45f69d5 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/DeobfuscationTransformer.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/DeobfuscationTransformer.java @@ -17,9 +17,7 @@ import net.minecraft.launchwrapper.IClassTransformer; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Opcodes; import org.objectweb.asm.commons.RemappingClassAdapter; -import org.objectweb.asm.tree.ClassNode; import cpw.mods.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper; import cpw.mods.fml.common.asm.transformers.deobf.FMLRemappingAdapter; diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/MCPMerger.java b/src/main/java/cpw/mods/fml/common/asm/transformers/MCPMerger.java deleted file mode 100644 index b332dc7b23..0000000000 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/MCPMerger.java +++ /dev/null @@ -1,659 +0,0 @@ -/* - * Forge Mod Loader - * Copyright (c) 2012-2013 cpw. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v2.1 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * Contributors: - * cpw - implementation - */ - -package cpw.mods.fml.common.asm.transformers; - -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map.Entry; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipOutputStream; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Type; -import org.objectweb.asm.tree.AnnotationNode; -import org.objectweb.asm.tree.ClassNode; -import org.objectweb.asm.tree.FieldNode; -import org.objectweb.asm.tree.MethodNode; - -import com.google.common.base.Objects; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class MCPMerger -{ - private static Hashtable clients = new Hashtable(); - private static Hashtable shared = new Hashtable(); - private static Hashtable servers = new Hashtable(); - private static HashSet copyToServer = new HashSet(); - private static HashSet copyToClient = new HashSet(); - private static HashSet dontAnnotate = new HashSet(); - private static HashSet dontProcess = new HashSet(); - private static final boolean DEBUG = false; - - public static void main(String[] args) - { - if (args.length != 3) - { - System.out.println("Usage: MCPMerger "); - System.exit(1); - } - - File map_file = new File(args[0]); - File client_jar = new File(args[1]); - File server_jar = new File(args[2]); - File client_jar_tmp = new File(args[1] + ".backup_merge"); - File server_jar_tmp = new File(args[2] + ".backup_merge"); - - if (client_jar_tmp.exists() && !client_jar_tmp.delete()) - { - System.out.println("Could not delete temp file: " + client_jar_tmp); - } - - if (server_jar_tmp.exists() && !server_jar_tmp.delete()) - { - System.out.println("Could not delete temp file: " + server_jar_tmp); - } - - if (!client_jar.exists()) - { - System.out.println("Could not find minecraft.jar: " + client_jar); - System.exit(1); - } - - if (!server_jar.exists()) - { - System.out.println("Could not find minecraft_server.jar: " + server_jar); - System.exit(1); - } - - if (!client_jar.renameTo(client_jar_tmp)) - { - System.out.println("Could not rename file: " + client_jar + " -> " + client_jar_tmp); - System.exit(1); - } - - if (!server_jar.renameTo(server_jar_tmp)) - { - System.out.println("Could not rename file: " + server_jar + " -> " + server_jar_tmp); - System.exit(1); - } - - if (!readMapFile(map_file)) - { - System.out.println("Could not read map file: " + map_file); - System.exit(1); - } - - try - { - processJar(client_jar_tmp, server_jar_tmp, client_jar, server_jar); - } - catch (IOException e) - { - e.printStackTrace(); - System.exit(1); - } - - if (!client_jar_tmp.delete()) - { - System.out.println("Could not delete temp file: " + client_jar_tmp); - } - - if (!server_jar_tmp.delete()) - { - System.out.println("Could not delete temp file: " + server_jar_tmp); - } - } - - private static boolean readMapFile(File mapFile) - { - try - { - FileInputStream fstream = new FileInputStream(mapFile); - DataInputStream in = new DataInputStream(fstream); - BufferedReader br = new BufferedReader(new InputStreamReader(in)); - - String line; - while ((line = br.readLine()) != null) - { - line = line.split("#")[0]; - char cmd = line.charAt(0); - line = line.substring(1).trim(); - - switch (cmd) - { - case '!': dontAnnotate.add(line); break; - case '<': copyToClient.add(line); break; - case '>': copyToServer.add(line); break; - case '^': dontProcess.add(line); break; - } - } - - in.close(); - return true; - } - catch (Exception e) - { - System.err.println("Error: " + e.getMessage()); - return false; - } - } - - public static void processJar(File clientInFile, File serverInFile, File clientOutFile, File serverOutFile) throws IOException - { - ZipFile cInJar = null; - ZipFile sInJar = null; - ZipOutputStream cOutJar = null; - ZipOutputStream sOutJar = null; - - try - { - try - { - cInJar = new ZipFile(clientInFile); - sInJar = new ZipFile(serverInFile); - } - catch (FileNotFoundException e) - { - throw new FileNotFoundException("Could not open input file: " + e.getMessage()); - } - try - { - cOutJar = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(clientOutFile))); - sOutJar = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(serverOutFile))); - } - catch (FileNotFoundException e) - { - throw new FileNotFoundException("Could not open output file: " + e.getMessage()); - } - Hashtable cClasses = getClassEntries(cInJar, cOutJar); - Hashtable sClasses = getClassEntries(sInJar, sOutJar); - HashSet cAdded = new HashSet(); - HashSet sAdded = new HashSet(); - - for (Entry entry : cClasses.entrySet()) - { - String name = entry.getKey(); - ZipEntry cEntry = entry.getValue(); - ZipEntry sEntry = sClasses.get(name); - - if (sEntry == null) - { - if (!copyToServer.contains(name)) - { - copyClass(cInJar, cEntry, cOutJar, null, true); - cAdded.add(name); - } - else - { - if (DEBUG) - { - System.out.println("Copy class c->s : " + name); - } - copyClass(cInJar, cEntry, cOutJar, sOutJar, true); - cAdded.add(name); - sAdded.add(name); - } - continue; - } - - sClasses.remove(name); - ClassInfo info = new ClassInfo(name); - shared.put(name, info); - - byte[] cData = readEntry(cInJar, entry.getValue()); - byte[] sData = readEntry(sInJar, sEntry); - byte[] data = processClass(cData, sData, info); - - ZipEntry newEntry = new ZipEntry(cEntry.getName()); - cOutJar.putNextEntry(newEntry); - cOutJar.write(data); - sOutJar.putNextEntry(newEntry); - sOutJar.write(data); - cAdded.add(name); - sAdded.add(name); - } - - for (Entry entry : sClasses.entrySet()) - { - if (DEBUG) - { - System.out.println("Copy class s->c : " + entry.getKey()); - } - copyClass(sInJar, entry.getValue(), cOutJar, sOutJar, false); - } - - for (String name : new String[]{SideOnly.class.getName(), Side.class.getName()}) - { - String eName = name.replace(".", "/"); - byte[] data = getClassBytes(name); - ZipEntry newEntry = new ZipEntry(name.replace(".", "/").concat(".class")); - if (!cAdded.contains(eName)) - { - cOutJar.putNextEntry(newEntry); - cOutJar.write(data); - } - if (!sAdded.contains(eName)) - { - sOutJar.putNextEntry(newEntry); - sOutJar.write(data); - } - } - - } - finally - { - if (cInJar != null) - { - try { cInJar.close(); } catch (IOException e){} - } - - if (sInJar != null) - { - try { sInJar.close(); } catch (IOException e) {} - } - if (cOutJar != null) - { - try { cOutJar.close(); } catch (IOException e){} - } - - if (sOutJar != null) - { - try { sOutJar.close(); } catch (IOException e) {} - } - } - } - - private static void copyClass(ZipFile inJar, ZipEntry entry, ZipOutputStream outJar, ZipOutputStream outJar2, boolean isClientOnly) throws IOException - { - ClassReader reader = new ClassReader(readEntry(inJar, entry)); - ClassNode classNode = new ClassNode(); - - reader.accept(classNode, 0); - - if (!dontAnnotate.contains(classNode.name)) - { - if (classNode.visibleAnnotations == null) classNode.visibleAnnotations = new ArrayList(); - classNode.visibleAnnotations.add(getSideAnn(isClientOnly)); - } - - ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS); - classNode.accept(writer); - byte[] data = writer.toByteArray(); - - ZipEntry newEntry = new ZipEntry(entry.getName()); - if (outJar != null) - { - outJar.putNextEntry(newEntry); - outJar.write(data); - } - if (outJar2 != null) - { - outJar2.putNextEntry(newEntry); - outJar2.write(data); - } - } - - private static AnnotationNode getSideAnn(boolean isClientOnly) - { - AnnotationNode ann = new AnnotationNode(Type.getDescriptor(SideOnly.class)); - ann.values = new ArrayList(); - ann.values.add("value"); - ann.values.add(new String[]{ Type.getDescriptor(Side.class), (isClientOnly ? "CLIENT" : "SERVER")}); - return ann; - } - - private static Hashtable getClassEntries(ZipFile inFile, ZipOutputStream outFile) throws IOException - { - Hashtable ret = new Hashtable(); - for (ZipEntry entry : Collections.list(inFile.entries())) - { - if (entry.isDirectory()) - { - outFile.putNextEntry(entry); - continue; - } - - String entryName = entry.getName(); - - boolean filtered = false; - for (String filter : dontProcess) - { - if (entryName.startsWith(filter)) - { - filtered = true; - break; - } - } - - if (filtered || !entryName.endsWith(".class") || entryName.startsWith(".")) - { - ZipEntry newEntry = new ZipEntry(entry.getName()); - outFile.putNextEntry(newEntry); - outFile.write(readEntry(inFile, entry)); - } - else - { - ret.put(entryName.replace(".class", ""), entry); - } - } - return ret; - } - private static byte[] readEntry(ZipFile inFile, ZipEntry entry) throws IOException - { - return readFully(inFile.getInputStream(entry)); - } - private static byte[] readFully(InputStream stream) throws IOException - { - byte[] data = new byte[4096]; - ByteArrayOutputStream entryBuffer = new ByteArrayOutputStream(); - int len; - do - { - len = stream.read(data); - if (len > 0) - { - entryBuffer.write(data, 0, len); - } - } while (len != -1); - - return entryBuffer.toByteArray(); - } - private static class ClassInfo - { - public String name; - public ArrayList cField = new ArrayList(); - public ArrayList sField = new ArrayList(); - public ArrayList cMethods = new ArrayList(); - public ArrayList sMethods = new ArrayList(); - public ClassInfo(String name){ this.name = name; } - public boolean isSame() { return (cField.size() == 0 && sField.size() == 0 && cMethods.size() == 0 && sMethods.size() == 0); } - } - - public static byte[] processClass(byte[] cIn, byte[] sIn, ClassInfo info) - { - ClassNode cClassNode = getClassNode(cIn); - ClassNode sClassNode = getClassNode(sIn); - - processFields(cClassNode, sClassNode, info); - processMethods(cClassNode, sClassNode, info); - - ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS); - cClassNode.accept(writer); - return writer.toByteArray(); - } - - private static ClassNode getClassNode(byte[] data) - { - ClassReader reader = new ClassReader(data); - ClassNode classNode = new ClassNode(); - reader.accept(classNode, 0); - return classNode; - } - - private static void processFields(ClassNode cClass, ClassNode sClass, ClassInfo info) - { - List cFields = cClass.fields; - List sFields = sClass.fields; - - int sI = 0; - for (int x = 0; x < cFields.size(); x++) - { - FieldNode cF = cFields.get(x); - if (sI < sFields.size()) - { - if (!cF.name.equals(sFields.get(sI).name)) - { - boolean serverHas = false; - for (int y = sI + 1; y < sFields.size(); y++) - { - if (cF.name.equals(sFields.get(y).name)) - { - serverHas = true; - break; - } - } - if (serverHas) - { - boolean clientHas = false; - FieldNode sF = sFields.get(sI); - for (int y = x + 1; y < cFields.size(); y++) - { - if (sF.name.equals(cFields.get(y).name)) - { - clientHas = true; - break; - } - } - if (!clientHas) - { - if (sF.visibleAnnotations == null) sF.visibleAnnotations = new ArrayList(); - sF.visibleAnnotations.add(getSideAnn(false)); - cFields.add(x++, sF); - info.sField.add(sF); - } - } - else - { - if (cF.visibleAnnotations == null) cF.visibleAnnotations = new ArrayList(); - cF.visibleAnnotations.add(getSideAnn(true)); - sFields.add(sI, cF); - info.cField.add(cF); - } - } - } - else - { - if (cF.visibleAnnotations == null) cF.visibleAnnotations = new ArrayList(); - cF.visibleAnnotations.add(getSideAnn(true)); - sFields.add(sI, cF); - info.cField.add(cF); - } - sI++; - } - if (sFields.size() != cFields.size()) - { - for (int x = cFields.size(); x < sFields.size(); x++) - { - FieldNode sF = sFields.get(x); - if (sF.visibleAnnotations == null) sF.visibleAnnotations = new ArrayList(); - sF.visibleAnnotations.add(getSideAnn(true)); - cFields.add(x++, sF); - info.sField.add(sF); - } - } - } - - private static class MethodWrapper - { - private MethodNode node; - public boolean client; - public boolean server; - public MethodWrapper(MethodNode node) - { - this.node = node; - } - @Override - public boolean equals(Object obj) - { - if (obj == null || !(obj instanceof MethodWrapper)) return false; - MethodWrapper mw = (MethodWrapper) obj; - boolean eq = Objects.equal(node.name, mw.node.name) && Objects.equal(node.desc, mw.node.desc); - if (eq) - { - mw.client = this.client | mw.client; - mw.server = this.server | mw.server; - this.client = this.client | mw.client; - this.server = this.server | mw.server; - if (DEBUG) - { - System.out.printf(" eq: %s %s\n", this, mw); - } - } - return eq; - } - - @Override - public int hashCode() - { - return Objects.hashCode(node.name, node.desc); - } - @Override - public String toString() - { - return Objects.toStringHelper(this).add("name", node.name).add("desc",node.desc).add("server",server).add("client",client).toString(); - } - } - private static void processMethods(ClassNode cClass, ClassNode sClass, ClassInfo info) - { - List cMethods = (List)cClass.methods; - List sMethods = (List)sClass.methods; - LinkedHashSet allMethods = Sets.newLinkedHashSet(); - - int cPos = 0; - int sPos = 0; - int cLen = cMethods.size(); - int sLen = sMethods.size(); - String clientName = ""; - String lastName = clientName; - String serverName = ""; - while (cPos < cLen || sPos < sLen) - { - do - { - if (sPos>=sLen) - { - break; - } - MethodNode sM = sMethods.get(sPos); - serverName = sM.name; - if (!serverName.equals(lastName) && cPos != cLen) - { - if (DEBUG) - { - System.out.printf("Server -skip : %s %s %d (%s %d) %d [%s]\n", sClass.name, clientName, cLen - cPos, serverName, sLen - sPos, allMethods.size(), lastName); - } - break; - } - MethodWrapper mw = new MethodWrapper(sM); - mw.server = true; - allMethods.add(mw); - if (DEBUG) - { - System.out.printf("Server *add* : %s %s %d (%s %d) %d [%s]\n", sClass.name, clientName, cLen - cPos, serverName, sLen - sPos, allMethods.size(), lastName); - } - sPos++; - } - while (sPos < sLen); - do - { - if (cPos>=cLen) - { - break; - } - MethodNode cM = cMethods.get(cPos); - lastName = clientName; - clientName = cM.name; - if (!clientName.equals(lastName) && sPos != sLen) - { - if (DEBUG) - { - System.out.printf("Client -skip : %s %s %d (%s %d) %d [%s]\n", cClass.name, clientName, cLen - cPos, serverName, sLen - sPos, allMethods.size(), lastName); - } - break; - } - MethodWrapper mw = new MethodWrapper(cM); - mw.client = true; - allMethods.add(mw); - if (DEBUG) - { - System.out.printf("Client *add* : %s %s %d (%s %d) %d [%s]\n", cClass.name, clientName, cLen - cPos, serverName, sLen - sPos, allMethods.size(), lastName); - } - cPos++; - } - while (cPos < cLen); - } - - cMethods.clear(); - sMethods.clear(); - - for (MethodWrapper mw : allMethods) - { - if (DEBUG) - { - System.out.println(mw); - } - cMethods.add(mw.node); - sMethods.add(mw.node); - if (mw.server && mw.client) - { - // no op - } - else - { - if (mw.node.visibleAnnotations == null) mw.node.visibleAnnotations = Lists.newArrayListWithExpectedSize(1); - mw.node.visibleAnnotations.add(getSideAnn(mw.client)); - if (mw.client) - { - info.sMethods.add(mw.node); - } - else - { - info.cMethods.add(mw.node); - } - } - } - } - - public static byte[] getClassBytes(String name) throws IOException - { - InputStream classStream = null; - try - { - classStream = MCPMerger.class.getResourceAsStream("/" + name.replace('.', '/').concat(".class")); - return readFully(classStream); - } - finally - { - if (classStream != null) - { - try - { - classStream.close(); - } - catch (IOException e){} - } - } - } -} diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java b/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java index e9a7770e91..57892a9f9f 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java @@ -1,16 +1,15 @@ package cpw.mods.fml.common.asm.transformers; -import java.lang.annotation.Annotation; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Set; -import java.util.logging.Level; + +import net.minecraft.launchwrapper.IClassTransformer; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Type; import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.MethodNode; @@ -18,16 +17,12 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Sets; -import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.ModAPIManager; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.discovery.ASMDataTable; import cpw.mods.fml.common.discovery.ASMDataTable.ASMData; import cpw.mods.fml.relauncher.FMLRelaunchLog; -import net.minecraft.launchwrapper.IClassTransformer; - public class ModAPITransformer implements IClassTransformer { private static final boolean logDebugInfo = Boolean.valueOf(System.getProperty("fml.debugAPITransformer", "true")); @@ -133,6 +128,7 @@ public class ModAPITransformer implements IClassTransformer { Set result = Sets.newHashSet(); for (ASMData data : packedInterfaces) { + @SuppressWarnings("unchecked") List> packedList = (List>) data.getAnnotationInfo().get("value"); for (Map packed : packedList) { diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java b/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java index 06513d0af2..e40cd34750 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java @@ -17,46 +17,39 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.nio.charset.Charset; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; import net.minecraft.launchwrapper.LaunchClassLoader; import org.objectweb.asm.ClassReader; import org.objectweb.asm.commons.Remapper; +import org.objectweb.asm.tree.ClassNode; +import org.objectweb.asm.tree.FieldNode; import com.google.common.base.CharMatcher; import com.google.common.base.Charsets; import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.BiMap; -import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableBiMap.Builder; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.common.collect.ListMultimap; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.google.common.collect.ImmutableBiMap.Builder; import com.google.common.io.CharStreams; import com.google.common.io.InputSupplier; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.patcher.ClassPatchManager; import cpw.mods.fml.relauncher.FMLRelaunchLog; -import org.objectweb.asm.tree.ClassNode; -import org.objectweb.asm.tree.FieldNode; public class FMLDeobfuscatingRemapper extends Remapper { public static final FMLDeobfuscatingRemapper INSTANCE = new FMLDeobfuscatingRemapper(); diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLRemappingAdapter.java b/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLRemappingAdapter.java index d435091e89..7918f77434 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLRemappingAdapter.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/FMLRemappingAdapter.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -13,7 +13,6 @@ package cpw.mods.fml.common.asm.transformers.deobf; import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.commons.Remapper; import org.objectweb.asm.commons.RemappingClassAdapter; public class FMLRemappingAdapter extends RemappingClassAdapter { diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/LZMAInputSupplier.java b/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/LZMAInputSupplier.java index 85c83ea6d9..bd22a0a510 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/LZMAInputSupplier.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/deobf/LZMAInputSupplier.java @@ -14,8 +14,6 @@ package cpw.mods.fml.common.asm.transformers.deobf; import java.io.IOException; import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; import LZMA.LzmaInputStream; diff --git a/src/main/java/cpw/mods/fml/common/discovery/ASMDataTable.java b/src/main/java/cpw/mods/fml/common/discovery/ASMDataTable.java index 1ec55964ea..51ddb25ae8 100644 --- a/src/main/java/cpw/mods/fml/common/discovery/ASMDataTable.java +++ b/src/main/java/cpw/mods/fml/common/discovery/ASMDataTable.java @@ -17,7 +17,6 @@ import java.util.Map; import java.util.Set; import com.google.common.base.Predicate; -import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSetMultimap; diff --git a/src/main/java/cpw/mods/fml/common/discovery/ModDiscoverer.java b/src/main/java/cpw/mods/fml/common/discovery/ModDiscoverer.java index 3dff09bed2..5145673437 100644 --- a/src/main/java/cpw/mods/fml/common/discovery/ModDiscoverer.java +++ b/src/main/java/cpw/mods/fml/common/discovery/ModDiscoverer.java @@ -19,8 +19,6 @@ import java.util.logging.Level; import java.util.regex.Matcher; import java.util.regex.Pattern; -import net.minecraft.launchwrapper.LaunchClassLoader; - import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -29,7 +27,6 @@ import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.LoaderException; import cpw.mods.fml.common.ModClassLoader; import cpw.mods.fml.common.ModContainer; -import cpw.mods.fml.common.asm.transformers.ModAPITransformer; import cpw.mods.fml.relauncher.CoreModManager; public class ModDiscoverer diff --git a/src/main/java/cpw/mods/fml/common/discovery/asm/ASMModParser.java b/src/main/java/cpw/mods/fml/common/discovery/asm/ASMModParser.java index 005e79d661..116ed75fed 100644 --- a/src/main/java/cpw/mods/fml/common/discovery/asm/ASMModParser.java +++ b/src/main/java/cpw/mods/fml/common/discovery/asm/ASMModParser.java @@ -19,8 +19,6 @@ import java.util.LinkedList; import java.util.List; import java.util.logging.Level; -import net.minecraft.src.BaseMod; - import org.objectweb.asm.ClassReader; import org.objectweb.asm.Type; diff --git a/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotation.java b/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotation.java index 8888e897fe..9a079f2385 100644 --- a/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotation.java +++ b/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotation.java @@ -27,8 +27,9 @@ public class ModAnnotation { public class EnumHolder { - + @SuppressWarnings("unused") private String desc; + @SuppressWarnings("unused") private String value; public EnumHolder(String desc, String value) @@ -43,9 +44,7 @@ public class ModAnnotation String member; Map values = Maps.newHashMap(); private ArrayList arrayList; - private Object array; private String arrayName; - private ModAnnotation parent; public ModAnnotation(AnnotationType type, Type asmType, String member) { this.type = type; @@ -57,7 +56,6 @@ public class ModAnnotation { this.type = type; this.asmType = asmType; - this.parent = parent; } @Override public String toString() diff --git a/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotationVisitor.java b/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotationVisitor.java index f772a94653..c7b4a91f80 100644 --- a/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotationVisitor.java +++ b/src/main/java/cpw/mods/fml/common/discovery/asm/ModAnnotationVisitor.java @@ -5,7 +5,7 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: * cpw - implementation */ @@ -19,6 +19,7 @@ public class ModAnnotationVisitor extends AnnotationVisitor { private ASMModParser discoverer; private boolean array; + @SuppressWarnings("unused") private String name; private boolean isSubAnnotation; @@ -27,7 +28,7 @@ public class ModAnnotationVisitor extends AnnotationVisitor super(Opcodes.ASM4); this.discoverer = discoverer; } - + public ModAnnotationVisitor(ASMModParser discoverer, String name) { this(discoverer); @@ -47,13 +48,13 @@ public class ModAnnotationVisitor extends AnnotationVisitor { discoverer.addAnnotationProperty(key, value); } - + @Override public void visitEnum(String name, String desc, String value) { discoverer.addAnnotationEnumProperty(name, desc, value); } - + @Override public AnnotationVisitor visitArray(String name) { @@ -72,7 +73,7 @@ public class ModAnnotationVisitor extends AnnotationVisitor { discoverer.endArray(); } - + if (isSubAnnotation) { discoverer.endSubAnnotation(); diff --git a/src/main/java/cpw/mods/fml/common/discovery/asm/ModClassVisitor.java b/src/main/java/cpw/mods/fml/common/discovery/asm/ModClassVisitor.java index 76d90a39b1..97d7f85e39 100644 --- a/src/main/java/cpw/mods/fml/common/discovery/asm/ModClassVisitor.java +++ b/src/main/java/cpw/mods/fml/common/discovery/asm/ModClassVisitor.java @@ -12,14 +12,11 @@ package cpw.mods.fml.common.discovery.asm; -import java.util.Collections; - import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; -import org.objectweb.asm.Type; public class ModClassVisitor extends ClassVisitor { @@ -55,13 +52,6 @@ public class ModClassVisitor extends ClassVisitor @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (discoverer.isBaseMod(Collections.emptyList()) && name.equals("getPriorities") && desc.equals(Type.getMethodDescriptor(Type.getType(String.class)))) - { - return new ModLoaderPropertiesMethodVisitor(name, discoverer); - } - else - { - return new ModMethodVisitor(name, desc, discoverer); - } + return new ModMethodVisitor(name, desc, discoverer); } } diff --git a/src/main/java/cpw/mods/fml/common/discovery/asm/ModLoaderPropertiesMethodVisitor.java b/src/main/java/cpw/mods/fml/common/discovery/asm/ModLoaderPropertiesMethodVisitor.java deleted file mode 100644 index 4f523a2288..0000000000 --- a/src/main/java/cpw/mods/fml/common/discovery/asm/ModLoaderPropertiesMethodVisitor.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Forge Mod Loader - * Copyright (c) 2012-2013 cpw. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v2.1 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * Contributors: - * cpw - implementation - */ - -package cpw.mods.fml.common.discovery.asm; - -import java.util.LinkedList; - -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -import com.google.common.collect.Lists; - -public class ModLoaderPropertiesMethodVisitor extends MethodVisitor -{ - - private ASMModParser discoverer; - private boolean inCode; - private LinkedList