Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt

Minecraft - Java Edition

Atten007

Mitglied
Hallo Leute,

ich programmiere gerade mit IntelliJ an MCreator herum. Das ist eine App, mit der man sich Minecraft-Mods erstellen kann. Da es dort noch keine Bannervorlagen gibt, möchte ich diese gerne hinzufügen. Es gab auch schonmal eine Pull-Request dafür, diese lässt sich hier finden. Da Bannervorlagen ein nützliches Mod-Element für MCreator wären, programmiere ich dieses gerade ein. Dazu kopiere ich mir die Inhalte aus der alten Pull-Request in das MCreator-Projekt in IntelliJ herein. Die gute Sache ist, dass das Erstellen und Speichern dieses Mod-Elements schon funktioniert, aber die schlechte Sache dabei ist, dass noch einige Fehler auftreten wie "Cannot find Symbol" (siehe Bild). Und immer, wenn ich im Code einen dieser Fehler korrigiert habe, kommen zwei neue Fehler. Das nervt mich auch ein bisschen.

Hier noch das Bild mit den Fehlern:

Bildschirmfoto 2023-12-31 um 14.41.48.png

Und hier die Fehler in der Konsole als Code mit Spoiler, falls das Bild nicht so gut lesbar sein sollte:

[U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerPatterns.java:9[/U]: error: cannot find symbol import net.minecraftforge.common.BannerPattern; ^ symbol: class BannerPattern location: package net.minecraftforge.common [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerPatterns.java:16[/U]: error: cannot find symbol public static final DeferredRegister<BannerPattern> REGISTRY = DeferredRegister.create(BannerPattern.class, BannertestMod.MODID); ^ symbol: class BannerPattern location: class BannertestModBannerPatterns [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerPatterns.java:17[/U]: error: cannot find symbol public static final RegistryObject<BannerPattern> TEST = REGISTRY.register("test", () -> new BannerPattern(new ResourceLocation(BannertestMod.MODID, "test"))); ^ symbol: class BannerPattern location: class BannertestModBannerPatterns [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerPatterns.java:16[/U]: error: cannot find symbol public static final DeferredRegister<BannerPattern> REGISTRY = DeferredRegister.create(BannerPattern.class, BannertestMod.MODID); ^ symbol: class BannerPattern location: class BannertestModBannerPatterns [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerPatterns.java:17[/U]: error: cannot find symbol public static final RegistryObject<BannerPattern> TEST = REGISTRY.register("test", () -> new BannerPattern(new ResourceLocation(BannertestMod.MODID, "test"))); ^ symbol: class BannerPattern location: class BannertestModBannerPatterns [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModItems.java:18[/U]: error: cannot find symbol public static final RegistryObject<Item> TEST = REGISTRY.register("test", () -> new BannerPatternItem(BannertestModBannerPatterns.TEST_PATTERN_TAG, new Item.Properties().stacksTo(1).tab(null))); ^ symbol: variable TEST_PATTERN_TAG location: class BannertestModBannerPatterns [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModItems.java:18[/U]: error: cannot find symbol public static final RegistryObject<Item> TEST = REGISTRY.register("test", () -> new BannerPatternItem(BannertestModBannerPatterns.TEST_PATTERN_TAG, new Item.Properties().stacksTo(1).tab(null))); ^ symbol: method tab(<null>) location: class Properties [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerTagProvider.java:16[/U]: error: BannertestModBannerTagProvider is not abstract and does not override abstract method addTags(Provider) in TagsProvider public class BannertestModBannerTagProvider extends TagsProvider<BannerPattern> { ^ [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerTagProvider.java:18[/U]: error: cannot find symbol super(dataGenerator, Registry.BANNER_PATTERN, BannertestMod.MODID, existingFileHelper); ^ symbol: variable BANNER_PATTERN location: interface Registry [U]/Users/mika/MCreatorWorkspaces/bannertest/src/main/java/net/mcreator/bannertest/init/BannertestModBannerTagProvider.java:22[/U]: error: cannot find symbol this.tag(BannertestModBannerPatterns.TEST_PATTERN_TAG).add(BannertestModBannerPatterns.TEST.get()); ^ symbol: variable TEST_PATTERN_TAG location: class BannertestModBannerPatterns

Ich kann schon verstehen, was der Fehler bedeutet, nachdem ChatGPT es mir erklärt hat. Ich könnte die Fehler theoretisch auch versuchen, alleine zu beheben, aber da ich noch neu in der Java-Programmierung bin, möchte ich lieber, dass jemand erfahrenes mir hierbei hilft.

Die Fehler treten übrigens nur in diesen Dateien auf:
  • BannerTagProvider.java
  • BannerPatterns.java
Am besten wäre es über Discord, falls das möglich ist. Ansonsten geht es für mich auch hier im Forum 🙂

Hier noch der fehlerhafte Quellcode:
BannerPatterns.java.ftl:
Java:
package ${package}.init;

import net.minecraft.world.item.BannerPattern;

public abstract class ${JavaModName}BannerPatterns {

    <#list bannerpatterns as bannerpattern>
    public static final BannerPattern ${bannerpattern.getModElement().getRegistryNameUpper()} = addBanner("${bannerpattern.getModElement().getRegistryName()}");
    </#list>

    public static BannerPattern addBanner(String name) {
        return BannerPattern.create(name.toUpperCase(), name, "${modid}." + name, true);
    }
}

Bannerpattern_Tag_Provider.java.ftl:
Java:
package ${package}.init;

public class ${JavaModName}BannerTagProvider extends TagsProvider<BannerPattern> {

    public ${JavaModName}BannerTagProvider(DataGenerator dataGenerator, ExistingFileHelper existingFileHelper) {
        super(dataGenerator, Registry.BANNER_PATTERN, ${JavaModName}.MODID, existingFileHelper);
    }

    protected void addTags() {
    <#list bannerpatterns as bannerpattern>
        this.tag(${JavaModName}BannerPatterns.${bannerpattern.getModElement().getRegistryNameUpper()}_PATTERN_TAG).add(${JavaModName}BannerPatterns.${bannerpattern.getModElement().getRegistryNameUpper()}.get());
    </#list>
    }
}

Außerdem werden die Texturen für Banner und Schild im falschen Verzeichnis abgespeichert. Bei der Korrektur davon brauche ich auch Hilfe.

Liebe Grüße und einen Guten Rutsch,
Atten007 😊
 
Zuletzt bearbeitet:

Zurück
Oben