JIT
Структура src для мода квестов в майнкрафт 1.21 на java forge
Сделай полную, готовую структуру src для мода для майнкрафт 1.21 java forge где будут даваться квесты и будет отслеживаться их выполнение, к примеру убить 5 свиней. Чтобы всё было на русском, с дерикторей com.nort8985.questmod
Updated files
v1
Добавь ещё 9 квестов

Я добавлю 9 новых типов квестов с разными задачами. Вот обновленная структура:

Теперь в моде доступны 10 типов квестов:

  1. Убить свиней
  2. Убить коров
  3. Убить овец
  4. Убить кур
  5. Собрать алмазы
  6. Собрать железо
  7. Скрафтить кирки
  8. Поставить камень
  9. Разрушить землю
  10. Пройти расстояние

Все квесты полностью на русском языке и отслеживают выполнение задач. Для добавления квеста используйте команды вида:

  • /quest add kill pigs 5
  • /quest add collect diamonds 3
  • /quest add travel 1000 и т.д.
Updated files
v2
.../ModForge/ForgeQuests $ gradle build To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.14.2/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build > Configure project : Java: 21.0.7, JVM: 21.0.7 (Termux), Arch: aarch64 > Task :compileJava Setting up MCP environment Initializing steps Executing steps > Running 'downloadManifest' > Running 'downloadJson' > Running 'downloadClient' > Running 'downloadServer' > Running 'extractServer' > Running 'downloadClientMappings' > Running 'mergeMappings' > Running 'stripClient' > Running 'stripServer' > Running 'merge' > Running 'listLibraries' > Running 'rename' Stopping at requested step: /data/data/com.termux/files/home/.gradle/caches/forge_gradle/mcp_repo/de/oceanlabs/mcp/mcp_config/1.21-20240613.102039/joined/rename/output.jar [11:30:00] [main/INFO]: Writing debug log file accesstransform.log [11:30:00] [main/INFO]: Access Transformer processor running version 8.2.1 [11:30:00] [main/INFO]: Command line arguments [--inJar, /data/data/com.termux/files/home/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21-51.0.32/forge-1.21-51.0.32-injected.jar, --outJar, /data/data/com.termux/files/home/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21-51.0.32_mapped_parchment_2024.07.28-1.21/forge-1.21-51.0.32_mapped_parchment_2024.07.28-1.21.jar, --logFile, accesstransform.log, --atFile, /storage/emulated/0/Download/ModForge/ForgeQuests/build/_atJar_4/parent_at.cfg] [11:30:00] [main/INFO]: Reading from /data/data/com.termux/files/home/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21-51.0.32/forge-1.21-51.0.32-injected.jar [11:30:00] [main/INFO]: Writing to /data/data/com.termux/files/home/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21-51.0.32_mapped_parchment_2024.07.28-1.21/forge-1.21-51.0.32_mapped_parchment_2024.07.28-1.21.jar [11:30:00] [main/INFO]: Transformer file /storage/emulated/0/Download/ModForge/ForgeQuests/build/_atJar_4/parent_at.cfg [11:30:00] [main/WARN]: Found existing output jar /data/data/com.termux/files/home/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21-51.0.32_mapped_parchment_2024.07.28-1.21/forge-1.21-51.0.32_mapped_parchment_2024.07.28-1.21.jar, overwriting [11:30:14] [main/INFO]: JAR transformation complete /data/data/com.termux/files/home/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21-51.0.32_mapped_parchment_2024.07.28-1.21/forge-1.21-51.0.32_mapped_parchment_2024.07.28-1.21.jar Creating SRG -> MCP TSRG /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:4: error: package net.minecraftforge.event.world does not exist import net.minecraftforge.event.world.BlockEvent; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:4: error: package net.minecraftforge.event.world does not exist import net.minecraftforge.event.world.BlockEvent; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/QuestManager.java:8: error: package net.minecraftforge.event.world does not exist import net.minecraftforge.event.world.BlockEvent; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/QuestManager.java:55: error: package BlockEvent does not exist public static void onBlockPlaced(BlockEvent.EntityPlaceEvent event) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/QuestManager.java:64: error: package BlockEvent does not exist public static void onBlockBroken(BlockEvent.BreakEvent event) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:8: error: package net.minecraftforge.client.gui.overlay does not exist import net.minecraftforge.client.gui.overlay.IGuiOverlay; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:12: error: cannot find symbol public class QuestHud implements IGuiOverlay { ^ symbol: class IGuiOverlay /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/ClientSetup.java:3: error: cannot find symbol import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; ^ symbol: class RegisterGuiOverlaysEvent location: package net.minecraftforge.client.event /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/ClientSetup.java:10: error: cannot find symbol public static void onRegisterOverlays(RegisterGuiOverlaysEvent event) { ^ symbol: class RegisterGuiOverlaysEvent location: class ClientSetup /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/ClientSetup.java:7: error: cannot find symbol @Mod.EventBusSubscriber(modid = QuestMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) ^ symbol: variable QuestMod /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:16: error: package BlockEvent does not exist if (event instanceof BlockEvent.EntityPlaceEvent) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.EntityPlaceEvent placeEvent = (BlockEvent.EntityPlaceEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.EntityPlaceEvent placeEvent = (BlockEvent.EntityPlaceEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:16: error: package BlockEvent does not exist if (event instanceof BlockEvent.BreakEvent) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.BreakEvent breakEvent = (BlockEvent.BreakEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.BreakEvent breakEvent = (BlockEvent.BreakEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:19: error: cannot find symbol if (event instanceof LivingEvent.LivingUpdateEvent) { ^ symbol: class LivingUpdateEvent location: class LivingEvent /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:20: error: cannot find symbol LivingEvent.LivingUpdateEvent updateEvent = (LivingEvent.LivingUpdateEvent) event; ^ symbol: class LivingUpdateEvent location: class LivingEvent /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:20: error: cannot find symbol LivingEvent.LivingUpdateEvent updateEvent = (LivingEvent.LivingUpdateEvent) event; ^ symbol: class LivingUpdateEvent location: class LivingEvent /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:30: error: completed has private access in Quest completed = true; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/commands/QuestCommand.java:82: error: incompatible types: Class<CAP#1> cannot be converted to Class<? extends Entity> mobType ^ where CAP#1 is a fresh type-variable: CAP#1 extends Object from capture of ? /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:16: error: method does not override or implement a method from a supertype @Override ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:22: error: cannot find symbol font.draw(poseStack, progressText, 10, yOffset, Color.WHITE.getRGB()); ^ symbol: method draw(PoseStack,String,int,int,int) location: variable font of type Font Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output 23 errors > Task :compileJava FAILED [Incubating] Problems report is available at: file:///storage/emulated/0/Download/ModForge/ForgeQuests/build/reports/problems/problems-report.html FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler output below. /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/commands/QuestCommand.java:82: error: incompatible types: Class<CAP#1> cannot be converted to Class<? extends Entity> mobType ^ where CAP#1 is a fresh type-variable: CAP#1 extends Object from capture of ? /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/ClientSetup.java:3: error: cannot find symbol import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; ^ symbol: class RegisterGuiOverlaysEvent location: package net.minecraftforge.client.event /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/ClientSetup.java:10: error: cannot find symbol public static void onRegisterOverlays(RegisterGuiOverlaysEvent event) { ^ symbol: class RegisterGuiOverlaysEvent location: class ClientSetup /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:19: error: cannot find symbol if (event instanceof LivingEvent.LivingUpdateEvent) { ^ symbol: class LivingUpdateEvent location: class LivingEvent /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:20: error: cannot find symbol LivingEvent.LivingUpdateEvent updateEvent = (LivingEvent.LivingUpdateEvent) event; ^ symbol: class LivingUpdateEvent location: class LivingEvent /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:20: error: cannot find symbol LivingEvent.LivingUpdateEvent updateEvent = (LivingEvent.LivingUpdateEvent) event; ^ symbol: class LivingUpdateEvent location: class LivingEvent /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/TravelDistanceQuest.java:30: error: completed has private access in Quest completed = true; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:16: error: method does not override or implement a method from a supertype @Override ^ Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:12: error: cannot find symbol public class QuestHud implements IGuiOverlay { ^ symbol: class IGuiOverlay /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/ClientSetup.java:7: error: cannot find symbol @Mod.EventBusSubscriber(modid = QuestMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) ^ symbol: variable QuestMod /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:22: error: cannot find symbol font.draw(poseStack, progressText, 10, yOffset, Color.WHITE.getRGB()); ^ symbol: method draw(PoseStack,String,int,int,int) location: variable font of type Font /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:4: error: package net.minecraftforge.event.world does not exist import net.minecraftforge.event.world.BlockEvent; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:4: error: package net.minecraftforge.event.world does not exist import net.minecraftforge.event.world.BlockEvent; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/QuestManager.java:8: error: package net.minecraftforge.event.world does not exist import net.minecraftforge.event.world.BlockEvent; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/QuestManager.java:55: error: package BlockEvent does not exist public static void onBlockPlaced(BlockEvent.EntityPlaceEvent event) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/QuestManager.java:64: error: package BlockEvent does not exist public static void onBlockBroken(BlockEvent.BreakEvent event) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/client/QuestHud.java:8: error: package net.minecraftforge.client.gui.overlay does not exist import net.minecraftforge.client.gui.overlay.IGuiOverlay; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:16: error: package BlockEvent does not exist if (event instanceof BlockEvent.EntityPlaceEvent) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.EntityPlaceEvent placeEvent = (BlockEvent.EntityPlaceEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/PlaceBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.EntityPlaceEvent placeEvent = (BlockEvent.EntityPlaceEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:16: error: package BlockEvent does not exist if (event instanceof BlockEvent.BreakEvent) { ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.BreakEvent breakEvent = (BlockEvent.BreakEvent) event; ^ /storage/emulated/0/Download/ModForge/ForgeQuests/src/main/java/com/nort8985/questmod/quest/BreakBlockQuest.java:17: error: package BlockEvent does not exist BlockEvent.BreakEvent breakEvent = (BlockEvent.BreakEvent) event; ^ 23 errors * Try: > Check your code and dependencies to fix the compilation error(s) > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.14.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 7m 46s 1 actionable task: 1 executed .../ModForge/ForgeQuests $

Похоже, что в Forge 1.21 изменились некоторые API. Давайте исправим ошибки компиляции:

Основные изменения:

  1. Обновлены импорты для Forge 1.21 (например, net.minecraftforge.event.worldnet.minecraftforge.event.level)
  2. Обновлен метод render в QuestHud для работы с новым API
  3. Изменен LivingUpdateEvent на LivingTickEvent в TravelDistanceQuest
  4. Добавлен метод setCompleted в класс Quest
  5. Исправлены типы в QuestCommand для совместимости с новым API
  6. Добавлен импорт QuestMod в ClientSetup

Эти изменения должны решить проблемы компиляции для Forge 1.21.

Updated files
v3