Class ReplaceFieldComparisonWithInstanceOf

java.lang.Object
net.neoforged.neoforge.coremods.ReplaceFieldComparisonWithInstanceOf
All Implemented Interfaces:
cpw.mods.modlauncher.api.ITransformer<org.objectweb.asm.tree.MethodNode>

public class ReplaceFieldComparisonWithInstanceOf extends Object implements cpw.mods.modlauncher.api.ITransformer<org.objectweb.asm.tree.MethodNode>
Replaces code such as itemstack.getItem() == Items.CROSSBOW with instanceof checks such as itemstack.getItem() instanceof CrossbowItem. This transformer targets a set of methods to replace the occurrence of a single field-comparison.
  • Nested Class Summary

    Nested classes/interfaces inherited from interface cpw.mods.modlauncher.api.ITransformer

    cpw.mods.modlauncher.api.ITransformer.Target<T>
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final String
     
    private final String
     
    private static final org.slf4j.Logger
     
    private final String
     
    private final Set<cpw.mods.modlauncher.api.ITransformer.Target<org.objectweb.asm.tree.MethodNode>>
     

    Fields inherited from interface cpw.mods.modlauncher.api.ITransformer

    DEFAULT_LABEL
  • Constructor Summary

    Constructors
    Constructor
    Description
    ReplaceFieldComparisonWithInstanceOf(String fieldOwner, String fieldName, String replacementClassName, List<cpw.mods.modlauncher.api.ITransformer.Target<org.objectweb.asm.tree.MethodNode>> methodsToScan)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    cpw.mods.modlauncher.api.TransformerVoteResult
    castVote(cpw.mods.modlauncher.api.ITransformerVotingContext context)
     
    cpw.mods.modlauncher.api.TargetType<org.objectweb.asm.tree.MethodNode>
     
    Set<cpw.mods.modlauncher.api.ITransformer.Target<org.objectweb.asm.tree.MethodNode>>
     
    org.objectweb.asm.tree.MethodNode
    transform(org.objectweb.asm.tree.MethodNode methodNode, cpw.mods.modlauncher.api.ITransformerVotingContext votingContext)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface cpw.mods.modlauncher.api.ITransformer

    labels
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • targets

      private final Set<cpw.mods.modlauncher.api.ITransformer.Target<org.objectweb.asm.tree.MethodNode>> targets
    • fieldOwner

      private final String fieldOwner
    • fieldName

      private final String fieldName
    • replacementClassName

      private final String replacementClassName
  • Constructor Details

    • ReplaceFieldComparisonWithInstanceOf

      public ReplaceFieldComparisonWithInstanceOf(String fieldOwner, String fieldName, String replacementClassName, List<cpw.mods.modlauncher.api.ITransformer.Target<org.objectweb.asm.tree.MethodNode>> methodsToScan)
      Parameters:
      fieldOwner - The class that owns fieldName
      fieldName - The name of a field in fieldOwner
      replacementClassName - Reference comparisons against fieldName in fieldOwner are replaced by instanceof checks against this class.
      methodsToScan - The methods to scan
  • Method Details

    • getTargetType

      public cpw.mods.modlauncher.api.TargetType<org.objectweb.asm.tree.MethodNode> getTargetType()
      Specified by:
      getTargetType in interface cpw.mods.modlauncher.api.ITransformer<org.objectweb.asm.tree.MethodNode>
    • targets

      public Set<cpw.mods.modlauncher.api.ITransformer.Target<org.objectweb.asm.tree.MethodNode>> targets()
      Specified by:
      targets in interface cpw.mods.modlauncher.api.ITransformer<org.objectweb.asm.tree.MethodNode>
    • transform

      public org.objectweb.asm.tree.MethodNode transform(org.objectweb.asm.tree.MethodNode methodNode, cpw.mods.modlauncher.api.ITransformerVotingContext votingContext)
      Specified by:
      transform in interface cpw.mods.modlauncher.api.ITransformer<org.objectweb.asm.tree.MethodNode>
    • castVote

      public cpw.mods.modlauncher.api.TransformerVoteResult castVote(cpw.mods.modlauncher.api.ITransformerVotingContext context)
      Specified by:
      castVote in interface cpw.mods.modlauncher.api.ITransformer<org.objectweb.asm.tree.MethodNode>