Не удалось выполнить задачу ': compileJava' - PullRequest
1 голос
/ 06 октября 2019

Я пытаюсь сделать мод для Minecraft, который должен заставить Bats бросать сырую курицу. Minecraft запускается и фактически открывается, но когда он достигает этапа compileJava, в консоли отображаются ошибки. У меня очень мало знаний о Java, поэтому я не знаю, как их обобщить.

Мой вопрос: что означают эти сообщения об ошибках и как я могу их исправить?

Iспросил некоторых из моих партнеров об этой проблеме, но они тоже не знали.


//NOTE TO SELF: Learn to indent.

package net.mcreator.trevcorp_meat_paste;

import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.client.event.RenderGameOverlayEvent;

import net.minecraft.world.World;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.passive.EntityBat;

public static class GUIRenderEventClass
{@SubscribeEvent
public void playerKilledBat(livingDropsEvent event)
   {
      if(event.entityLiving instanceof EntityBat)
      {
         event.drops.clear();
         itemStack itemStackToDrop = new itemStack(items.chicken, 1);
         event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, 
              event.entity.posY, event.entity.posZ, itemStackToDrop));

      }
}
}

Майнкрафт действительно открывается, но когда он достигает стадии compileJava, в консоли отображаются следующие сообщения об ошибках:

C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:16: error: class GUIRenderEventClass is public, should be declared in a file named GUIRenderEventClass.java
public static class GUIRenderEventClass
              ^
C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:18: error: cannot find symbol
public void playerKilledBat(livingDropsEvent event)
                            ^
  symbol:   class livingDropsEvent
  location: class GUIRenderEventClass
C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:24: error: cannot find symbol
         itemStack itemStackToDrop = new itemStack(items.chicken, 1);
         ^
  symbol:   class itemStack
  location: class GUIRenderEventClass
C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:24: error: cannot find symbol
         itemStack itemStackToDrop = new itemStack(items.chicken, 1);
                                         ^
  symbol:   class itemStack
  location: class GUIRenderEventClass
C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:24: error: cannot find symbol
         itemStack itemStackToDrop = new itemStack(items.chicken, 1);
                                                   ^
  symbol:   variable items
  location: class GUIRenderEventClass
C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:25: error: cannot find symbol
         event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, 
                             ^
  symbol:   class EntityItem
  location: class GUIRenderEventClass
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 8s

1 Ответ

0 голосов
/ 06 октября 2019

Первое сообщение об ошибке

class GUIRenderEventClass is public, should be declared in a file named GUIRenderEventClass.java public static class GUIRenderEventClass

указывает, что ваш источник Java находится в файле, имя которого не совпадает с именем класса Java в исходном коде. И имя исходного файла Java, и имя класса Java класса в файле должны совпадать. Это то, как компилятор Java находит вещи.

У вас также есть несколько ошибок того же типа, например:

 C:\Users\USER\MCreatorWorkspaces\trevcorp_meat_paste\build\sources\main\java\net\mcreator\trevcorp_meat_paste\MCreatorBatMeat.java:18: error: cannot find symbol public void playerKilledBat(livingDropsEvent event)

Это означает, что когда компилятор Java обрабатывает исходный кодкод это обнаружение символа или типа или имени какого-то рода, о котором он не знает. Это ошибка, означающая, что указанный символ, тип или имя не найдены при его поиске компилятором Java.

Существует несколько причин для этого.

Наиболее обычноеcase - это отсутствующая директива import для файла, который содержит символ, тип или имя. Это наиболее вероятная причина ошибки «символ не найден», связанной с типом. Похоже, у вас есть несколько случаев «символа не найден», который, вероятно, связан с отсутствующим файлом import, например:

  • class livingDropsEvent - это символ не найден
  • class itemStack - символ не найден
  • class EntityItem - символ не найден

Также переменная items не найдена. Я предполагаю, что это глобальная переменная где-то, вероятно, также в файле import.

Посмотрите эту статью в Учебниках по моддингу Minecraft Forge Джабелара, Minecraft Forge 1.7.2 / 1.7.10 Изменение паденийВанильные сущности , а также Minecraft Modding: Event Handling , для получения подробной информации об этих символах.

Также посмотрите пример кода на этом форуме mincraftforge, https://www.minecraftforge.net/forum/topic/28747-how-to-add-a-drop-to-a-vanilla-mob-1710/который содержит следующие наборы import директив:

   import net.minecraft.block.Block;
   import net.minecraft.block.material.Material;
   import net.minecraft.creativetab.CreativeTabs;
   import net.minecraft.entity.boss.EntityWither;
   import net.minecraft.entity.item.EntityItem;
   import net.minecraft.init.Items;
   import net.minecraft.item.Item;
   import net.minecraft.item.ItemStack;
   import net.minecraft.util.WeightedRandomChestContent;
   import net.minecraftforge.common.ChestGenHooks;
   import net.minecraftforge.common.util.EnumHelper;
   import net.minecraftforge.event.entity.living.LivingDropsEvent;

Наконец, у вас есть несколько предупреждений:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Эти предупреждения могут быть или не быть важными. Если они получены из какого-то источника, который вы используете из какой-то библиотеки, вы не сможете решить эти проблемы. Ваше приложение может работать независимо от этих предупреждений.

...