diff --git a/build.gradle b/build.gradle index 3eb19a2..6274cb2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1704751096 +//version: 1705357285 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. @@ -122,6 +122,7 @@ propertyDefaultIfUnset("modrinthProjectId", "") propertyDefaultIfUnset("modrinthRelations", "") propertyDefaultIfUnset("curseForgeProjectId", "") propertyDefaultIfUnset("curseForgeRelations", "") +propertyDefaultIfUnset("versionPattern", "") propertyDefaultIfUnset("minimizeShadowedDependencies", true) propertyDefaultIfUnset("relocateShadowedDependencies", true) // Deprecated properties (kept for backwards compat) @@ -370,6 +371,7 @@ catch (Exception ignored) { // Pulls version first from the VERSION env and then git tag String identifiedVersion String versionOverride = System.getenv("VERSION") ?: null +boolean checkVersion = false try { // Produce a version based on the tag, or for branches something like 0.2.2-configurable-maven-and-extras.38+43090270b6-dirty if (versionOverride == null) { @@ -388,6 +390,8 @@ try { } } else if (isDirty) { identifiedVersion += "-${branchName}+${gitDetails.gitHash}-dirty" + } else { + checkVersion = true } } else { identifiedVersion = versionOverride @@ -409,6 +413,8 @@ ext { if (identifiedVersion == versionOverride) { out.style(Style.Failure).text('Override version to ').style(Style.Identifier).text(modVersion).style(Style.Failure).println('!\7') +} else if (checkVersion && versionPattern && !(identifiedVersion ==~ versionPattern)) { + throw new GradleException("Invalid version: '$identifiedVersion' does not match version pattern '$versionPattern'") } group = "com.github.GTNewHorizons" @@ -428,18 +434,31 @@ minecraft { for (f in replaceGradleTokenInFile.split(',')) { tagReplacementFiles.add f } + out.style(Style.Info).text('replaceGradleTokenInFile is deprecated! Consider using generateGradleTokenClass.').println() } if (gradleTokenModId) { - injectedTags.put gradleTokenModId, modId + if (replaceGradleTokenInFile) { + injectedTags.put gradleTokenModId, modId + } else { + out.style(Style.Failure).text('gradleTokenModId is deprecated! The field will no longer be generated.').println() + } } if (gradleTokenModName) { - injectedTags.put gradleTokenModName, modName + if (replaceGradleTokenInFile) { + injectedTags.put gradleTokenModName, modName + } else { + out.style(Style.Failure).text('gradleTokenModName is deprecated! The field will no longer be generated.').println() + } } if (gradleTokenVersion) { injectedTags.put gradleTokenVersion, modVersion } if (gradleTokenGroupName) { - injectedTags.put gradleTokenGroupName, modGroup + if (replaceGradleTokenInFile) { + injectedTags.put gradleTokenGroupName, modGroup + } else { + out.style(Style.Failure).text('gradleTokenGroupName is deprecated! The field will no longer be generated.').println() + } } if (enableGenericInjection.toBoolean()) { injectMissingGenerics.set(true) diff --git a/dependencies.gradle b/dependencies.gradle index 7e336b3..618b3b2 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,7 +4,7 @@ // also being more explicit about what is depended on. dependencies { - api('com.github.GTNewHorizons:Steve-s-Factory-Manager:1.2.0-GTNH:dev') + api('com.github.GTNewHorizons:Steve-s-Factory-Manager:1.2.3-GTNH:dev') api('curse.maven:cofh-core-69162:2388751') diff --git a/gradle.properties b/gradle.properties index e4f3a98..0aef33f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,22 +15,40 @@ autoUpdateBuildScript = false minecraftVersion = 1.7.10 forgeVersion = 10.13.4.1614 +# Specify a MCP channel and mappings version for dependency deobfuscation and the deobfParams task. +channel = stable +mappingsVersion = 12 + +# Define other MCP mappings for dependency deobfuscation +remoteMappings = https://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/ + # Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you # restart Minecraft in development. Choose this dependent on your mod: # Do you need consistent player progressing (for example Thaumcraft)? -> Select a name # Do you need to test how your custom blocks interacts with a player that is not the owner? -> leave name empty developmentEnvironmentUserName = Developer -# Define a source file of your project with: +# Enables using modern java syntax (up to version 17) via Jabel, while still targeting JVM 8. +# See https://github.com/bsideup/jabel for details on how this works. +enableModernJavaSyntax = true + +# Enables injecting missing generics into the decompiled source code for a better coding experience +# Turns most publicly visible List, Map, etc. into proper List, Map types +enableGenericInjection = true + +# Generate a class with String fields for the mod id, name, version and group name named with the fields below +generateGradleTokenClass = stevesaddons.Tags +gradleTokenModId = +gradleTokenModName = +gradleTokenVersion = VERSION +gradleTokenGroupName = +# [DEPRECATED] +# Multiple source files can be defined here by providing a comma-seperated list: Class1.java,Class2.java,Class3.java # public static final String VERSION = "GRADLETOKEN_VERSION"; # The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's # version in @Mod([...], version = VERSION, [...]) # Leave these properties empty to skip individual token replacements -replaceGradleTokenInFile = Reference.java -gradleTokenModId = GRADLETOKEN_MODID -gradleTokenModName = -gradleTokenVersion = GRADLETOKEN_VERSION -gradleTokenGroupName = +replaceGradleTokenInFile = # In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can # leave this property empty. @@ -38,11 +56,14 @@ gradleTokenGroupName = apiPackage = # Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/ -# Example value: mymodid_at.cfg +# There can be multiple files in a space-separated list. +# Example value: mymodid_at.cfg nei_at.cfg accessTransformersFile = # Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! usesMixins = false +# Adds some debug arguments like verbose output and export +usesMixinDebug = false # Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. mixinPlugin = # Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! @@ -50,15 +71,82 @@ mixinsPackage = # Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! # This parameter is for legacy compatibility only # Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin -coreModClass = asm.LoadingPlugin +coreModClass = # If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class # that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! containsMixinsAndOrCoreModOnly = false +# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins. +forceEnableMixins = false + # If enabled, you may use 'shadowCompile' for dependencies. They will be integrated in your jar. It is your # responsibility check the licence and request permission for distribution, if required. usesShadowedDependencies = false +# If disabled, won't remove unused classes from shaded dependencies. Some libraries use reflection to access +# their own classes, making the minimization unreliable. +minimizeShadowedDependencies = true +# If disabled, won't rename the shadowed classes. +relocateShadowedDependencies = true + +# Adds the GTNH maven, CurseMaven, IC2/Player maven, and some more well-known 1.7.10 repositories +includeWellKnownRepositories = true + +# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven. +# Authenticate with the MAVEN_USERNAME and MAVEN_PASSWORD environment variables. +# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle. +usesMavenPublishing = true +# mavenPublishUrl = https://nexus.gtnewhorizons.com/repository/releases/ + +# Publishing to modrinth requires you to set the MODRINTH_TOKEN environment variable to your current modrinth API token. + +# The project's ID on Modrinth. Can be either the slug or the ID. +# Leave this empty if you don't want to publish on Modrinth. +modrinthProjectId = + +# The project's relations on Modrinth. You can use this to refer to other projects on Modrinth. +# Syntax: scope1-type1:name1;scope2-type2:name2;... +# Where scope can be one of [required, optional, incompatible, embedded], +# type can be one of [project, version], +# and the name is the Modrinth project or version slug/id of the other mod. +# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech +# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true +modrinthRelations = + + +# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens. + +# The project's numeric ID on CurseForge. You can find this in the About Project box. +# Leave this empty if you don't want to publish on CurseForge. +curseForgeProjectId = + +# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge. +# Syntax: type1:name1;type2:name2;... +# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible], +# and the name is the CurseForge project slug of the other mod. +# Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft +# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true +curseForgeRelations = + # Optional parameter to customize the produced artifacts. Use this to preserver artifact naming when migrating older # projects. New projects should not use this parameter. -#customArchiveBaseName = StevesAddons +# customArchiveBaseName = + +# Optional parameter to prevent the source code from being published +# noPublishedSources = + +# Uncomment this to disable spotless checks +# This should only be uncommented to keep it easier to sync with upstream/other forks. +# That is, if there is no other active fork/upstream, NEVER change this. +# disableSpotless = true + +# Uncomment this to disable checkstyle checks (currently wildcard import check). +# disableCheckstyle = true + +# Override the IDEA build type. Valid value is "" (leave blank, do not override), "idea" (force use native IDEA build), "gradle" +# (force use delegated build). +# This is meant to be set in $HOME/.gradle/gradle.properties. +# e.g. add "systemProp.org.gradle.project.ideaOverrideBuildType=idea" will override the build type to be always native build. +# WARNING: If you do use this option, it will overwrite whatever you have in your existing projects. This might not be what you want! +# Usually there is no need to uncomment this here as other developers do not necessarily use the same build type as you. +# ideaOverrideBuildType = idea diff --git a/src/main/java/stevesaddons/StevesAddons.java b/src/main/java/stevesaddons/StevesAddons.java index 5efff46..6aeebd6 100644 --- a/src/main/java/stevesaddons/StevesAddons.java +++ b/src/main/java/stevesaddons/StevesAddons.java @@ -23,6 +23,7 @@ import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; +import stevesaddons.asm.StevesHooks; import stevesaddons.helpers.Config; import stevesaddons.helpers.StevesEnum; import stevesaddons.interfaces.GuiHandler; @@ -33,33 +34,41 @@ import stevesaddons.proxy.CommonProxy; import stevesaddons.recipes.ClusterUncraftingRecipe; import stevesaddons.reference.Metadata; -import stevesaddons.reference.Reference; import stevesaddons.registry.BlockRegistry; import stevesaddons.registry.CommandRegistry; import stevesaddons.registry.ItemRegistry; import vswe.stevesfactory.blocks.TileEntityManager; +import vswe.stevesfactory.compat.Compat; @Mod( - modid = Reference.ID, - name = Reference.NAME, - version = Reference.VERSION_FULL, + modid = StevesAddons.ID, + name = StevesAddons.NAME, + version = Tags.VERSION, dependencies = "required-after:StevesFactoryManager;required-after:CoFHCore") public class StevesAddons { - @Mod.Instance(value = Reference.ID) + // User friendly version of our mods name. + public static final String NAME = "Steve's Addons"; + + // Internal mod name used for reference purposes and resource gathering. + public static final String ID = "StevesAddons"; + + @Mod.Instance(value = ID) public static StevesAddons INSTANCE; - @Mod.Metadata(Reference.ID) + @Mod.Metadata(ID) public static ModMetadata metadata; @SidedProxy(clientSide = "stevesaddons.proxy.ClientProxy", serverSide = "stevesaddons.proxy.CommonProxy") public static CommonProxy PROXY; public static GuiHandler guiHandler = new GuiHandler(); - public static Logger log = LogManager.getLogger(Reference.ID); + public static Logger log = LogManager.getLogger(ID); @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { + Compat.ADDONS_HOOKS = new StevesHooks(); + metadata = Metadata.init(metadata); Config.init(event.getSuggestedConfigurationFile()); ItemRegistry.registerItems(); diff --git a/src/main/java/stevesaddons/asm/LoadingPlugin.java b/src/main/java/stevesaddons/asm/LoadingPlugin.java deleted file mode 100644 index 41dfe80..0000000 --- a/src/main/java/stevesaddons/asm/LoadingPlugin.java +++ /dev/null @@ -1,37 +0,0 @@ -package stevesaddons.asm; - -import java.util.Map; - -import net.minecraftforge.classloading.FMLForgePlugin; - -import cpw.mods.fml.relauncher.IFMLLoadingPlugin; - -@IFMLLoadingPlugin.TransformerExclusions({ "stevesaddons.asm." }) -@IFMLLoadingPlugin.MCVersion(value = "1.7.10") -public class LoadingPlugin implements IFMLLoadingPlugin { - - public static boolean runtimeDeobfEnabled = FMLForgePlugin.RUNTIME_DEOBF; - - @Override - public String[] getASMTransformerClass() { - return new String[] { getAccessTransformerClass() }; - } - - @Override - public String getModContainerClass() { - return null; - } - - @Override - public String getSetupClass() { - return null; - } - - @Override - public void injectData(Map data) {} - - @Override - public String getAccessTransformerClass() { - return "stevesaddons.asm.StevesAddonsTransformer"; - } -} diff --git a/src/main/java/stevesaddons/asm/StevesAddonsTransformer.java b/src/main/java/stevesaddons/asm/StevesAddonsTransformer.java deleted file mode 100644 index 6194286..0000000 --- a/src/main/java/stevesaddons/asm/StevesAddonsTransformer.java +++ /dev/null @@ -1,717 +0,0 @@ -package stevesaddons.asm; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import net.minecraft.launchwrapper.IClassTransformer; -import net.minecraftforge.classloading.FMLForgePlugin; - -import org.apache.logging.log4j.Level; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Label; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.tree.AbstractInsnNode; -import org.objectweb.asm.tree.ClassNode; -import org.objectweb.asm.tree.FieldInsnNode; -import org.objectweb.asm.tree.FieldNode; -import org.objectweb.asm.tree.InnerClassNode; -import org.objectweb.asm.tree.InsnList; -import org.objectweb.asm.tree.InsnNode; -import org.objectweb.asm.tree.IntInsnNode; -import org.objectweb.asm.tree.JumpInsnNode; -import org.objectweb.asm.tree.LabelNode; -import org.objectweb.asm.tree.LineNumberNode; -import org.objectweb.asm.tree.MethodInsnNode; -import org.objectweb.asm.tree.MethodNode; -import org.objectweb.asm.tree.TypeInsnNode; -import org.objectweb.asm.tree.VarInsnNode; - -import stevesaddons.StevesAddons; - -public class StevesAddonsTransformer implements IClassTransformer, Opcodes { - - private enum TransformType { - METHOD, - FIELD, - INNER_CLASS, - MODIFY, - MAKE_PUBLIC, - DELETE, - HOOK_REPLACE - } - - private enum Transformer { - - ACTIVATE_TRIGGER("activateTrigger", "(Lvswe/stevesfactory/components/FlowComponent;Ljava/util/EnumSet;)V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - return replace( - list, - "vswe/stevesfactory/components/CommandExecutor", - "vswe/stevesfactory/components/CommandExecutorRF"); - } - }, - GET_GUI("getGui", - "(Lnet/minecraft/tileentity/TileEntity;Lnet/minecraft/entity/player/InventoryPlayer;)Lnet/minecraft/client/gui/GuiScreen;") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - return replace( - list, - "vswe/stevesfactory/interfaces/GuiManager", - "stevesaddons/interfaces/GuiRFManager"); - } - }, - CREATE_TE("func_149915_a", "(Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity;") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - return replace( - list, - "vswe/stevesfactory/blocks/TileEntityCluster", - "vswe/stevesfactory/blocks/TileEntityRFCluster"); - } - }, - MANAGER_INIT("", "()V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getLast(); - while (!(node instanceof LineNumberNode && ((LineNumberNode) node).line == 114) - && node != list.getFirst()) - node = node.getPrevious(); - list.insertBefore(node, new VarInsnNode(ALOAD, 0)); - list.insertBefore( - node, - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "addCopyButton", - "(Lvswe/stevesfactory/blocks/TileEntityManager;)V", - false)); - return list; - } - }, - ITEM_SETTING_LOAD("load", "(Lnet/minecraft/nbt/NBTTagCompound;)V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getLast(); - while (node.getOpcode() != RETURN && node != list.getFirst()) node = node.getPrevious(); - list.insertBefore(node, new VarInsnNode(ALOAD, 0)); - list.insertBefore(node, new VarInsnNode(ALOAD, 0)); - list.insertBefore( - node, - new FieldInsnNode( - GETFIELD, - "vswe/stevesfactory/components/ItemSetting", - "item", - "Lnet/minecraft/item/ItemStack;")); - list.insertBefore( - node, - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "fixLoadingStack", - "(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;", - false)); - list.insertBefore( - node, - new FieldInsnNode( - PUTFIELD, - "vswe/stevesfactory/components/ItemSetting", - "item", - "Lnet/minecraft/item/ItemStack;")); - return list; - } - }, - STRING_NULL_CHECK("updateSearch", "(Ljava/lang/String;Z)Ljava/util/List;") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getLast(); - LabelNode labelNode = null; - while (node != list.getFirst()) { - if (node instanceof JumpInsnNode) labelNode = ((JumpInsnNode) node).label; - else if (node instanceof VarInsnNode && node.getOpcode() == ALOAD - && ((VarInsnNode) node).var == 10) { - list.insertBefore(node, new VarInsnNode(ALOAD, 10)); - list.insertBefore(node, new JumpInsnNode(IFNULL, labelNode)); - break; - } - node = node.getPrevious(); - } - return list; - } - }, - GET_DESCRIPTION("getDescription", "(Lvswe/stevesfactory/interfaces/GuiManager;)Ljava/lang/String;") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - while (node != null) { - if (node.getOpcode() == ASTORE) { - list.insertBefore(node, new VarInsnNode(ALOAD, 0)); - list.insertBefore( - node, - new FieldInsnNode( - GETFIELD, - "vswe/stevesfactory/blocks/ConnectionBlock", - "tileEntity", - "Lnet/minecraft/tileentity/TileEntity;")); - list.insertBefore( - node, - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "fixToolTip", - "(Ljava/lang/String;Lnet/minecraft/tileentity/TileEntity;)Ljava/lang/String;", - false)); - break; - } - node = node.getNext(); - } - return list; - } - }, - ITEM_SEARCH("updateSearch", "(Ljava/lang/String;Z)Ljava/util/List;", TransformType.METHOD, - TransformType.HOOK_REPLACE) { - - @Override - protected InsnList modifyInstructions(InsnList list) { - list.clear(); - list.add(new VarInsnNode(ALOAD, 0)); - list.add(new VarInsnNode(ALOAD, 1)); - list.add(new VarInsnNode(ILOAD, 2)); - list.add( - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "updateItemSearch", - "(Lvswe/stevesfactory/components/ComponentMenuItem;Ljava/lang/String;Z)Ljava/util/List;", - false)); - list.add(new InsnNode(ARETURN)); - return list; - } - }, - CONTAINER_SEARCH("updateSearch", "(Ljava/lang/String;Z)Ljava/util/List;") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - LabelNode label = null; - while (node != null) { - if (node instanceof JumpInsnNode) { - label = ((JumpInsnNode) node).label; - } - if (node.getOpcode() == ALOAD && ((VarInsnNode) node).var == 8) { - list.insertBefore(node, new VarInsnNode(ALOAD, 8)); - list.insertBefore(node, new VarInsnNode(ALOAD, 1)); - list.insertBefore( - node, - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "containerAdvancedSearch", - "(Lvswe/stevesfactory/blocks/ConnectionBlock;Ljava/lang/String;)Z", - false)); - list.insertBefore(node, new JumpInsnNode(IFNE, label)); - break; - } - node = node.getNext(); - } - return list; - } - }, - GET_PUBLIC_REGISTRATIONS("getRegistrations", - "(Lvswe/stevesfactory/blocks/ClusterMethodRegistration;)Ljava/util/List;", TransformType.METHOD, - TransformType.MAKE_PUBLIC), - GET_REGISTRATIONS("getRegistrations", "(Lvswe/stevesfactory/blocks/ClusterMethodRegistration;)Ljava/util/List;", - TransformType.METHOD, TransformType.DELETE), - GET_RF_NODE("getTileEntity", "(Ljava/lang/Object;)Lstevesaddons/tileentities/TileEntityRFNode;") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - InsnList result = new InsnList(); - result.add(new VarInsnNode(ALOAD, 1)); - result.add(new TypeInsnNode(CHECKCAST, "vswe/stevesfactory/blocks/TileEntityCluster$Pair")); - result.add( - new FieldInsnNode( - GETFIELD, - "vswe/stevesfactory/blocks/TileEntityCluster$Pair", - "te", - "Lvswe/stevesfactory/blocks/TileEntityClusterElement;")); - result.add(new TypeInsnNode(CHECKCAST, "stevesaddons/tileentities/TileEntityRFNode")); - result.add(new InsnNode(ARETURN)); - return result; - } - }, - PUBLIC_TE("te", "Lvswe/stevesfactory/blocks/TileEntityClusterElement;", TransformType.FIELD, - TransformType.MAKE_PUBLIC), - PUBLIC_PAIR("Pair"), - REMOVE_FLOW_COMPONENT("removeFlowComponent", "(ILjava/util/List;)V", TransformType.METHOD, - TransformType.HOOK_REPLACE) { - - @Override - protected InsnList modifyInstructions(InsnList list) { - list.clear(); - list.add(new VarInsnNode(ALOAD, 0)); - list.add(new VarInsnNode(ILOAD, 1)); - list.add(new VarInsnNode(ALOAD, 2)); - list.add( - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "removeFlowComponent", - "(Lvswe/stevesfactory/blocks/TileEntityManager;ILjava/util/List;)V", - false)); - list.add(new InsnNode(RETURN)); - return list; - } - }, - LOAD_DEFAULT("loadDefault", "()V") { - - private Set change = new HashSet( - Arrays.asList("largeOpenHitBox", "largeOpenHitBoxMenu", "autoBlacklist", "autoSide")); - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - while (node != null) { - if (node instanceof FieldInsnNode && change.contains(((FieldInsnNode) node).name)) { - list.remove(node.getPrevious()); - list.insertBefore(node, new InsnNode(ICONST_1)); - } - node = node.getNext(); - } - return list; - } - }, - READ_FROM_NBT("readFromNBT", "(Lnet/minecraft/nbt/NBTTagCompound;IZ)V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - while (node != null) { - if (node.getOpcode() == INVOKEVIRTUAL && ((MethodInsnNode) node).name - .equals(FMLForgePlugin.RUNTIME_DEOBF ? "func_74771_c" : "getByte")) { - node = node.getPrevious(); - list.remove(node.getNext()); - list.insert( - node, - new MethodInsnNode( - INVOKEVIRTUAL, - "net/minecraft/nbt/NBTTagCompound", - FMLForgePlugin.RUNTIME_DEOBF ? "func_74765_d" : "getShort", - "(Ljava/lang/String;)S", - false)); - break; - } - node = node.getNext(); - } - return list; - } - }, - WRITE_TO_NBT("writeToNBT", "(Lnet/minecraft/nbt/NBTTagCompound;Z)V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - while (node != null) { - if (node.getOpcode() == I2B) { - node = node.getPrevious(); - list.remove(node.getNext()); - list.insert(node, new InsnNode(I2S)); - } else if (node.getOpcode() == INVOKEVIRTUAL && ((MethodInsnNode) node).name - .equals(FMLForgePlugin.RUNTIME_DEOBF ? "func_74774_a" : "setByte")) { - node = node.getPrevious(); - list.remove(node.getNext()); - list.insert( - node, - new MethodInsnNode( - INVOKEVIRTUAL, - "net/minecraft/nbt/NBTTagCompound", - FMLForgePlugin.RUNTIME_DEOBF ? "func_74777_a" : "setShort", - "(Ljava/lang/String;S)V", - false)); - } - node = node.getNext(); - } - return list; - } - }, - BIT_HELPER_INIT("", "()V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - while (node != null) { - if (node.getOpcode() == BIPUSH && ((IntInsnNode) node).operand == 39) { - list.remove(node.getNext()); - list.insert(node, new InsnNode(ICONST_4)); - break; - } - node = node.getNext(); - } - return list; - } - }, - IS_INSTANCE("isInstance", "(Lnet/minecraft/tileentity/TileEntity;)Z", TransformType.METHOD, - TransformType.HOOK_REPLACE) { - - @Override - protected InsnList modifyInstructions(InsnList list) { - list.clear(); - list.add(new VarInsnNode(ALOAD, 0)); - list.add( - new FieldInsnNode( - GETFIELD, - "vswe/stevesfactory/blocks/ConnectionBlockType", - "clazz", - "Ljava/lang/Class;")); - list.add(new VarInsnNode(ALOAD, 1)); - list.add( - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "instanceOf", - "(Ljava/lang/Class;Lnet/minecraft/tileentity/TileEntity;)Z", - false)); - list.add(new InsnNode(IRETURN)); - return list; - } - }, - IS_VISIBLE("isVisible", "()Z", TransformType.METHOD, TransformType.MODIFY, true) { - - @Override - public void transform(ClassNode node) { - MethodNode isVisible = new MethodNode(ACC_PUBLIC, this.name, this.args, null, new String[0]); - isVisible.instructions.add(new VarInsnNode(ALOAD, 0)); - isVisible.instructions.add( - new MethodInsnNode( - INVOKEVIRTUAL, - "vswe/stevesfactory/components/ComponentMenuInterval", - "getParent", - "()Lvswe/stevesfactory/components/FlowComponent;", - false)); - isVisible.instructions.add( - new MethodInsnNode( - INVOKEVIRTUAL, - "vswe/stevesfactory/components/FlowComponent", - "getConnectionSet", - "()Lvswe/stevesfactory/components/ConnectionSet;", - false)); - isVisible.instructions.add( - new FieldInsnNode( - GETSTATIC, - "stevesaddons/helpers/StevesEnum", - "DELAYED", - "Lvswe/stevesfactory/components/ConnectionSet;")); - LabelNode l1 = new LabelNode(new Label()); - isVisible.instructions.add(new JumpInsnNode(IF_ACMPEQ, l1)); - isVisible.instructions.add(new InsnNode(ICONST_1)); - isVisible.instructions.add(new InsnNode(IRETURN)); - isVisible.instructions.add(l1); - isVisible.instructions.add(new InsnNode(ICONST_0)); - isVisible.instructions.add(new InsnNode(IRETURN)); - node.methods.add(isVisible); - } - }, - UPDATE_ENTITY(FMLForgePlugin.RUNTIME_DEOBF ? "func_145845_h" : "updateEntity", "()V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getFirst(); - while (node != null) { - if (node instanceof FieldInsnNode && ((FieldInsnNode) node).name.equals("timer")) { - list.insertBefore( - node, - new MethodInsnNode( - INVOKESTATIC, - "stevesaddons/asm/StevesHooks", - "tickTriggers", - "(Lvswe/stevesfactory/blocks/TileEntityManager;)Lvswe/stevesfactory/blocks/TileEntityManager;", - false)); - break; - } - node = node.getNext(); - } - return list; - } - }, - REMOVE_COMPONENT("removeFlowComponent", "(I)V") { - - @Override - protected InsnList modifyInstructions(InsnList list) { - AbstractInsnNode node = list.getLast(); - JumpInsnNode jump = null; - while (node != null) { - if (node.getOpcode() == GOTO) jump = (JumpInsnNode) node; - else if (node.getOpcode() == IFNE) { - ((JumpInsnNode) node).label = jump.label; - break; - } - node = node.getPrevious(); - } - return list; - } - }; - - protected final String name; - protected final String args; - protected final TransformType type; - protected final TransformType action; - protected final boolean computeFrames; - - Transformer(String name) { - this(name, "", TransformType.INNER_CLASS, TransformType.MAKE_PUBLIC); - } - - Transformer(String name, String args) { - this(name, args, TransformType.METHOD, TransformType.MODIFY); - } - - Transformer(String name, String args, TransformType type, TransformType action) { - this(name, args, type, action, false); - } - - Transformer(String name, String args, TransformType type, TransformType action, boolean computeFrames) { - this.name = name; - this.args = args; - this.type = type; - this.action = action; - this.computeFrames = computeFrames; - } - - protected InsnList modifyInstructions(InsnList list) { - return list; - } - - private static InsnList replace(InsnList list, String toReplace, String replace) { - AbstractInsnNode node = list.getFirst(); - InsnList result = new InsnList(); - while (node != null) { - result.add(checkReplace(node, toReplace, replace)); - node = node.getNext(); - } - return result; - } - - public String getName() { - return name; - } - - public String getArgs() { - return args; - } - - protected void methodTransform(ClassNode node) { - MethodNode methodNode = getMethod(node); - if (methodNode != null) { - switch (action) { - case HOOK_REPLACE: - clearList(methodNode.localVariables); - clearList(methodNode.tryCatchBlocks); - clearList(methodNode.invisibleLocalVariableAnnotations); - case MODIFY: - methodNode.instructions = modifyInstructions(methodNode.instructions); - break; - case DELETE: - node.methods.remove(methodNode); - break; - case MAKE_PUBLIC: - methodNode.access = (methodNode.access & ~7) ^ 1; - } - complete(); - } - } - - private static void clearList(List list) { - if (list != null) list.clear(); - } - - private void fieldTransform(ClassNode node) { - FieldNode fieldNode = getField(node); - if (fieldNode != null) { - switch (action) { - case MODIFY: - modifyField(fieldNode); - break; - case DELETE: - node.fields.remove(fieldNode); - break; - case MAKE_PUBLIC: - fieldNode.access = (fieldNode.access & ~7) ^ 1; - } - complete(); - } - } - - private void modifyField(FieldNode fieldNode) {} - - private void innerClassTransform(ClassNode node) { - InnerClassNode innerClassNode = getInnerClass(node); - if (innerClassNode != null) { - switch (action) { - case MODIFY: - modifyInnerClass(innerClassNode); - break; - case DELETE: - node.innerClasses.remove(innerClassNode); - break; - case MAKE_PUBLIC: - innerClassNode.access = (innerClassNode.access & ~7) ^ 1; - } - complete(); - } - } - - private void modifyInnerClass(InnerClassNode innerClassNode) {} - - public void transform(ClassNode node) { - switch (this.type) { - case METHOD: - methodTransform(node); - return; - case FIELD: - fieldTransform(node); - return; - case INNER_CLASS: - innerClassTransform(node); - } - } - - private static AbstractInsnNode checkReplace(AbstractInsnNode node, String toReplace, String replace) { - if (node instanceof TypeInsnNode && ((TypeInsnNode) node).desc.equals(toReplace)) { - return new TypeInsnNode(NEW, replace); - } else if (node instanceof MethodInsnNode && ((MethodInsnNode) node).owner.contains(toReplace)) { - return new MethodInsnNode( - node.getOpcode(), - replace, - ((MethodInsnNode) node).name, - ((MethodInsnNode) node).desc, - false); - } - return node; - } - - public void complete() { - StevesAddons.log.info("Applied " + this + " transformer"); - } - - public MethodNode getMethod(ClassNode classNode) { - for (MethodNode method : classNode.methods) { - if (method.name.equals(getName()) && method.desc.equals(getArgs())) { - return method; - } - } - for (MethodNode method : classNode.methods) { - if (method.desc.equals(getArgs())) { - return method; - } - } - return null; - } - - public FieldNode getField(ClassNode classNode) { - for (FieldNode field : classNode.fields) { - if (field.name.equals(getName()) && field.desc.equals(getArgs())) { - return field; - } - } - return null; - } - - public InnerClassNode getInnerClass(ClassNode classNode) { - String name = classNode.name + "$" + getName(); - for (InnerClassNode inner : classNode.innerClasses) { - if (name.equals(inner.name)) { - return inner; - } - } - return null; - } - } - - private enum ClassName { - - TE_MANAGER("vswe.stevesfactory.blocks.TileEntityManager", Transformer.ACTIVATE_TRIGGER, Transformer.GET_GUI, - Transformer.MANAGER_INIT, Transformer.UPDATE_ENTITY), - CLUSTER_BLOCK("vswe.stevesfactory.blocks.BlockCableCluster", Transformer.CREATE_TE), - ITEM_SETTING_LOAD("vswe.stevesfactory.components.ItemSetting", Transformer.ITEM_SETTING_LOAD), - COMPONENT_MENU_ITEM("vswe.stevesfactory.components.ComponentMenuItem", Transformer.ITEM_SEARCH), - CONNECTION_BLOCK("vswe.stevesfactory.blocks.ConnectionBlock", Transformer.GET_DESCRIPTION), - COMPONENT_MENU_CONTAINER("vswe.stevesfactory.components.ComponentMenuContainer$2", - Transformer.CONTAINER_SEARCH), - CLUSTER_TILE("vswe.stevesfactory.blocks.TileEntityCluster", Transformer.PUBLIC_PAIR, - Transformer.GET_PUBLIC_REGISTRATIONS), - RF_CLUSTER_TILE("vswe.stevesfactory.blocks.TileEntityRFCluster", Transformer.GET_REGISTRATIONS, - Transformer.GET_RF_NODE), - CLUSTER_PAIR("vswe.stevesfactory.blocks.TileEntityCluster$Pair", Transformer.PUBLIC_TE), - SETTINGS("vswe.stevesfactory.settings.Settings", Transformer.LOAD_DEFAULT), - CONTAINER_TYPES("vswe.stevesfactory.components.ComponentMenuContainerTypes", Transformer.WRITE_TO_NBT, - Transformer.READ_FROM_NBT), - DATA_BIT_HELPER("vswe.stevesfactory.network.DataBitHelper", Transformer.BIT_HELPER_INIT), - CONNECTION_BLOCK_TYPE("vswe.stevesfactory.blocks.ConnectionBlockType", Transformer.IS_INSTANCE), - COMPONENT_MENU_INTERVAL("vswe.stevesfactory.components.ComponentMenuInterval", Transformer.IS_VISIBLE); - - private String name; - private Transformer[] transformers; - - ClassName(String name, Transformer... transformers) { - this.name = name; - this.transformers = transformers; - } - - public String getName() { - return name; - } - - public Transformer[] getTransformers() { - return transformers; - } - - public byte[] transform(byte[] bytes) { - ClassNode classNode = new ClassNode(); - ClassReader classReader = new ClassReader(bytes); - classReader.accept(classNode, 0); - - StevesAddons.log.log( - Level.INFO, - "Applying Transformer" + (transformers.length > 1 ? "s " : " ") + "to " + getName()); - - boolean computeFrames = false; - - for (Transformer transformer : getTransformers()) { - transformer.transform(classNode); - computeFrames = computeFrames || transformer.computeFrames; - } - - ClassWriter writer = new ClassWriter(computeFrames ? ClassWriter.COMPUTE_FRAMES : ClassWriter.COMPUTE_MAXS); - classNode.accept(writer); - return writer.toByteArray(); - } - } - - private static Map classMap = new HashMap(); - - static { - for (ClassName className : ClassName.values()) classMap.put(className.getName(), className); - } - - @Override - public byte[] transform(String className, String className2, byte[] bytes) { - ClassName clazz = classMap.get(className); - if (clazz != null) { - bytes = clazz.transform(bytes); - classMap.remove(className); - } - return bytes; - } -} diff --git a/src/main/java/stevesaddons/asm/StevesHooks.java b/src/main/java/stevesaddons/asm/StevesHooks.java index 4fe98b5..0cca447 100644 --- a/src/main/java/stevesaddons/asm/StevesHooks.java +++ b/src/main/java/stevesaddons/asm/StevesHooks.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.EnumSet; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; @@ -10,6 +11,8 @@ import java.util.Map; import java.util.regex.Pattern; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -24,33 +27,43 @@ import cofh.api.energy.IEnergyConnection; import cofh.api.energy.IEnergyProvider; import cofh.api.energy.IEnergyReceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; import stevesaddons.api.IHiddenInventory; import stevesaddons.api.IHiddenTank; import stevesaddons.components.ComponentMenuTriggered; import stevesaddons.helpers.StevesEnum; +import stevesaddons.interfaces.GuiRFManager; import stevesaddons.naming.BlockCoord; import stevesaddons.naming.NameRegistry; import stevesaddons.reference.Null; import stevesaddons.threading.SearchItems; import vswe.stevesfactory.Localization; import vswe.stevesfactory.blocks.ConnectionBlock; +import vswe.stevesfactory.blocks.TileEntityCluster; import vswe.stevesfactory.blocks.TileEntityManager; +import vswe.stevesfactory.blocks.TileEntityRFCluster; +import vswe.stevesfactory.compat.Hooks; +import vswe.stevesfactory.components.CommandExecutorRF; import vswe.stevesfactory.components.ComponentHelper; import vswe.stevesfactory.components.ComponentMenuItem; import vswe.stevesfactory.components.ComponentType; import vswe.stevesfactory.components.Connection; +import vswe.stevesfactory.components.ConnectionOption; +import vswe.stevesfactory.components.ConnectionSet; import vswe.stevesfactory.components.FlowComponent; import vswe.stevesfactory.components.ScrollController; import vswe.stevesfactory.network.DataReader; import vswe.stevesfactory.network.DataWriter; import vswe.stevesfactory.settings.Settings; -public class StevesHooks { +public class StevesHooks implements Hooks { public static final Multimap delayedRegistry = HashMultimap.create(); - public static void addCopyButton(final TileEntityManager manager) { + @Override + public void addCopyButton(final TileEntityManager manager) { int index = getAfterDelete(manager.buttons); manager.buttons.add(index, manager.new Button(StevesEnum.COPY_COMMAND) { @@ -159,12 +172,30 @@ private static void reconnect(Map added) { } } - public static ItemStack fixLoadingStack(ItemStack stack) { + @Override + public ItemStack fixLoadingStack(ItemStack stack) { if (stack != null && stack.getItem() == null) return null; return stack; } - public static String fixToolTip(String string, TileEntity tileEntity) { + @Override + public void executeTriggerCommand(TileEntityManager thiz, FlowComponent component, + EnumSet validTriggerOutputs) { + new CommandExecutorRF(thiz).executeTriggerCommand(component, validTriggerOutputs); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen getGui(TileEntity te, InventoryPlayer inv) { + return new GuiRFManager((TileEntityManager) te, inv); + } + + @Override + public boolean isNotDelayed(ConnectionSet s) { + return s != StevesEnum.DELAYED; + } + + public String fixToolTip(String string, TileEntity tileEntity) { if (tileEntity != null && tileEntity.hasWorldObj()) { String label = getLabel(tileEntity); if (label != null) string = "ยง3" + label; @@ -173,6 +204,11 @@ public static String fixToolTip(String string, TileEntity tileEntity) { return string; } + @Override + public TileEntityCluster getTERFC() { + return new TileEntityRFCluster(); + } + public static void removeFlowComponent(TileEntityManager manager, int idToRemove, List components) { boolean isManagerList = manager.getFlowItems() == components; List ids = getIdsToRemove(idToRemove, components); @@ -227,7 +263,8 @@ private static void getIdsToRemove(List ids, int idToRemove, List triggers) { diff --git a/src/main/java/stevesaddons/blocks/BlockCableAE.java b/src/main/java/stevesaddons/blocks/BlockCableAE.java index db297dd..7b2294b 100644 --- a/src/main/java/stevesaddons/blocks/BlockCableAE.java +++ b/src/main/java/stevesaddons/blocks/BlockCableAE.java @@ -6,8 +6,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import stevesaddons.StevesAddons; import stevesaddons.reference.Names; -import stevesaddons.reference.Reference; import stevesaddons.tileentities.TileEntityAENode; import vswe.stevesfactory.blocks.ModBlocks; @@ -28,6 +28,6 @@ public TileEntity createNewTileEntity(World world, int meta) { @Override public void registerBlockIcons(IIconRegister ir) { - this.blockIcon = ir.registerIcon(Reference.ID + ":" + Names.CABLE_AE); + this.blockIcon = ir.registerIcon(StevesAddons.ID + ":" + Names.CABLE_AE); } } diff --git a/src/main/java/stevesaddons/blocks/BlockCableRF.java b/src/main/java/stevesaddons/blocks/BlockCableRF.java index 3976826..871fd15 100644 --- a/src/main/java/stevesaddons/blocks/BlockCableRF.java +++ b/src/main/java/stevesaddons/blocks/BlockCableRF.java @@ -10,8 +10,8 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import stevesaddons.StevesAddons; import stevesaddons.reference.Names; -import stevesaddons.reference.Reference; import stevesaddons.tileentities.TileEntityRFNode; import vswe.stevesfactory.blocks.ModBlocks; @@ -36,7 +36,7 @@ public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister registry) { icons = new IIcon[4]; - for (int i = 0; i < 4; i++) icons[i] = registry.registerIcon(Reference.ID + ":" + Names.CABLE_RF + "_" + i); + for (int i = 0; i < 4; i++) icons[i] = registry.registerIcon(StevesAddons.ID + ":" + Names.CABLE_RF + "_" + i); } @Override diff --git a/src/main/java/stevesaddons/items/ItemLabeler.java b/src/main/java/stevesaddons/items/ItemLabeler.java index b0eab20..03f6042 100644 --- a/src/main/java/stevesaddons/items/ItemLabeler.java +++ b/src/main/java/stevesaddons/items/ItemLabeler.java @@ -24,7 +24,6 @@ import stevesaddons.StevesAddons; import stevesaddons.naming.NameRegistry; import stevesaddons.reference.Names; -import stevesaddons.reference.Reference; import stevesaddons.registry.ItemRegistry; import vswe.stevesfactory.blocks.ModBlocks; import vswe.stevesfactory.blocks.TileEntityClusterElement; @@ -34,7 +33,7 @@ public class ItemLabeler extends Item { public ItemLabeler() { this.setCreativeTab(ModBlocks.creativeTab); this.setUnlocalizedName(Names.LABELER); - this.setTextureName(Reference.ID.toLowerCase() + ":" + Names.LABELER); + this.setTextureName(StevesAddons.ID.toLowerCase() + ":" + Names.LABELER); this.setMaxStackSize(1); } diff --git a/src/main/java/stevesaddons/items/ItemSFMDrive.java b/src/main/java/stevesaddons/items/ItemSFMDrive.java index 5b7f2a2..6fb6f5b 100644 --- a/src/main/java/stevesaddons/items/ItemSFMDrive.java +++ b/src/main/java/stevesaddons/items/ItemSFMDrive.java @@ -10,8 +10,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import stevesaddons.StevesAddons; import stevesaddons.reference.Names; -import stevesaddons.reference.Reference; import vswe.stevesfactory.blocks.ModBlocks; import vswe.stevesfactory.blocks.TileEntityManager; @@ -20,7 +20,7 @@ public class ItemSFMDrive extends Item { public ItemSFMDrive() { this.setCreativeTab(ModBlocks.creativeTab); this.setUnlocalizedName(Names.DRIVE); - this.setTextureName(Reference.ID.toLowerCase() + ":" + Names.DRIVE); + this.setTextureName(StevesAddons.ID.toLowerCase() + ":" + Names.DRIVE); this.setMaxStackSize(1); } diff --git a/src/main/java/stevesaddons/network/MessageHandler.java b/src/main/java/stevesaddons/network/MessageHandler.java index 8386911..2d03399 100644 --- a/src/main/java/stevesaddons/network/MessageHandler.java +++ b/src/main/java/stevesaddons/network/MessageHandler.java @@ -5,17 +5,17 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; +import stevesaddons.StevesAddons; import stevesaddons.network.message.FullDataSyncMessage; import stevesaddons.network.message.LabelSyncMessage; import stevesaddons.network.message.NameDataUpdateMessage; import stevesaddons.network.message.RFNodeUpdateMessage; import stevesaddons.network.message.SearchRegistryGenerateMessage; import stevesaddons.network.message.WorldDataSyncMessage; -import stevesaddons.reference.Reference; public class MessageHandler implements IMessageHandler { - public static SimpleNetworkWrapper INSTANCE = new SimpleNetworkWrapper(Reference.ID); + public static SimpleNetworkWrapper INSTANCE = new SimpleNetworkWrapper(StevesAddons.ID); public static void init() { INSTANCE.registerMessage(RFNodeUpdateMessage.class, RFNodeUpdateMessage.class, 0, Side.CLIENT); diff --git a/src/main/java/stevesaddons/reference/Metadata.java b/src/main/java/stevesaddons/reference/Metadata.java index da319d7..3aeee61 100644 --- a/src/main/java/stevesaddons/reference/Metadata.java +++ b/src/main/java/stevesaddons/reference/Metadata.java @@ -3,15 +3,17 @@ import java.util.Arrays; import cpw.mods.fml.common.ModMetadata; +import stevesaddons.StevesAddons; +import stevesaddons.Tags; public class Metadata { public static ModMetadata init(ModMetadata metadata) { - metadata.modId = Reference.ID; - metadata.name = Reference.NAME; + metadata.modId = StevesAddons.ID; + metadata.name = StevesAddons.NAME; metadata.description = "Adds extra things to improve SFM"; metadata.url = "https://github.com/hilburn/StevesAddons"; - metadata.version = Reference.VERSION_FULL; + metadata.version = Tags.VERSION; metadata.authorList = Arrays.asList("hilburn"); metadata.credits = ""; metadata.autogenerated = false; diff --git a/src/main/java/stevesaddons/reference/Reference.java b/src/main/java/stevesaddons/reference/Reference.java deleted file mode 100644 index 2a753bd..0000000 --- a/src/main/java/stevesaddons/reference/Reference.java +++ /dev/null @@ -1,13 +0,0 @@ -package stevesaddons.reference; - -public class Reference { - - // User friendly version of our mods name. - public static final String NAME = "Steve's Addons"; - - // Internal mod name used for reference purposes and resource gathering. - public static final String ID = "GRADLETOKEN_MODID"; - - // Main version information that will be displayed in mod listing and for other purposes. - public static final String VERSION_FULL = "GRADLETOKEN_VERSION"; -} diff --git a/src/main/java/vswe/stevesfactory/blocks/TileEntityRFCluster.java b/src/main/java/vswe/stevesfactory/blocks/TileEntityRFCluster.java index bb97892..8232e6b 100644 --- a/src/main/java/vswe/stevesfactory/blocks/TileEntityRFCluster.java +++ b/src/main/java/vswe/stevesfactory/blocks/TileEntityRFCluster.java @@ -1,8 +1,5 @@ package vswe.stevesfactory.blocks; -import java.util.ArrayList; -import java.util.List; - import net.minecraftforge.common.util.ForgeDirection; import cofh.api.energy.IEnergyHandler; @@ -11,19 +8,11 @@ public class TileEntityRFCluster extends TileEntityCluster implements IEnergyHandler { - private List getRegistrations(ClusterMethodRegistration clusterMethodRegistration) { - return new ArrayList(); // This gets ASMed out when the access transformers take place - } - - private TileEntityRFNode getTileEntity(Object i) { - return new TileEntityRFNode(); // This return value gets ASMed in when the access transformers take place - } - @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { int toReceive = 0; - for (Object i : getRegistrations(StevesEnum.RECEIVE_ENERGY)) { - toReceive += getTileEntity(i).receiveEnergy(from, maxReceive - toReceive, simulate); + for (Pair i : getRegistrations(StevesEnum.RECEIVE_ENERGY)) { + toReceive += ((TileEntityRFNode) i.te).receiveEnergy(from, maxReceive - toReceive, simulate); } return toReceive; } @@ -31,32 +20,32 @@ public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) @Override public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { int toExtract = maxExtract; - for (Object i : getRegistrations(StevesEnum.EXTRACT_ENERGY)) { - toExtract -= getTileEntity(i).extractEnergy(from, toExtract, simulate); + for (Pair i : getRegistrations(StevesEnum.EXTRACT_ENERGY)) { + toExtract -= ((TileEntityRFNode) i.te).extractEnergy(from, toExtract, simulate); } return maxExtract - toExtract; } @Override public int getEnergyStored(ForgeDirection from) { - for (Object i : getRegistrations(StevesEnum.CONNECT_ENERGY)) { - return getTileEntity(i).getEnergyStored(from); + for (Pair i : getRegistrations(StevesEnum.CONNECT_ENERGY)) { + return ((TileEntityRFNode) i.te).getEnergyStored(from); } return -1; } @Override public int getMaxEnergyStored(ForgeDirection from) { - for (Object i : getRegistrations(StevesEnum.CONNECT_ENERGY)) { - return getTileEntity(i).getMaxEnergyStored(from); + for (Pair i : getRegistrations(StevesEnum.CONNECT_ENERGY)) { + return ((TileEntityRFNode) i.te).getMaxEnergyStored(from); } return -1; } @Override public boolean canConnectEnergy(ForgeDirection from) { - for (Object i : getRegistrations(StevesEnum.CONNECT_ENERGY)) { - if (getTileEntity(i).canConnectEnergy(from)) return true; + for (Pair i : getRegistrations(StevesEnum.CONNECT_ENERGY)) { + if (((TileEntityRFNode) i.te).canConnectEnergy(from)) return true; } return false; }