@@ -949,6 +949,27 @@ private static void patchBlock(ClassNode classNode) {
949949 prependHarvestBlock .add (new JumpInsnNode (IF_ICMPGE , skipStatIncrease ));
950950 TransformerUtils .insertToBeginningOfCode (harvestBlock , prependHarvestBlock );
951951 harvestBlock .instructions .insert (addStat , skipStatIncrease );
952+ // dropBlockAsItem_do fix
953+ MethodNode dropBlockAsItem_do = TransformerUtils .getMethod (classNode , "dropBlockAsItem_do" );
954+ JumpInsnNode dropBlockAsItem_doCheck = null ;
955+ for (AbstractInsnNode abstractInsnNode : dropBlockAsItem_do .instructions ) {
956+ if (abstractInsnNode .getOpcode () == IFNE ) {
957+ dropBlockAsItem_doCheck = (JumpInsnNode ) abstractInsnNode ;
958+ break ;
959+ }
960+ }
961+ Objects .requireNonNull (dropBlockAsItem_doCheck );
962+ InsnList dropBlockAsItem_doNewChecks = new InsnList ();
963+ dropBlockAsItem_doNewChecks .add (new VarInsnNode (ALOAD , 5 ));
964+ dropBlockAsItem_doNewChecks .add (new JumpInsnNode (
965+ IFNULL , dropBlockAsItem_doCheck .label ));
966+ dropBlockAsItem_doNewChecks .add (new VarInsnNode (ALOAD , 5 ));
967+ dropBlockAsItem_doNewChecks .add (new MethodInsnNode (INVOKESTATIC ,
968+ GameRegistry , "isMissingItemStack" , "(L" + ItemStack + ";)Z" ));
969+ dropBlockAsItem_doNewChecks .add (new JumpInsnNode (
970+ IFNE , dropBlockAsItem_doCheck .label ));
971+ dropBlockAsItem_do .instructions .insert (
972+ dropBlockAsItem_doCheck , dropBlockAsItem_doNewChecks );
952973 // getRegisterFLTab
953974 injectGetRegisterFLTab (classNode , "MISCELLANEOUS" , true );
954975 injectGetCreativeTab (classNode );
0 commit comments