Jump to content

Issue starting modding on Eclipse


JardRily

Recommended Posts

To be honest I can't completely figure out what my issue is, so a quick run through of the process. I downloaded and extracted forge mod 12.2 (file name: forge-1.12.2-14.23.5.2854-mdk), then copied it and renamed the copied folder to Forge Mod Test (saved at "D:\Documents\Forge Mod Test"). On Eclipse, I import an Existing Gradle Project, with Project root directory "D:\Documents\Forge Mod Test" and click finish. When the project is done importing, I go to the Gradle Tasks bar, select fg_runs, and run "genEclipseRuns". When this is done, I go to IDE task folder and run "eclipse". Then I refresh the project by going to File, and selecting "Refresh". (I've tried running "eclipse" then "genEclipseRuns" and run into the same issues described next). With the project slected, I click File, Import, Launch Configurations, Browse, and select the folder at path "D:\Documents\Forge Mod Test". I select the "Forge Mod Test" folder, then select the next 2 files "runClient.launch" and "runServer.launch", then click finish. I select the drop down menu next to the run button on eclipse, go to run configurations, and select runClient under the Java Application tab. Here, I go to environment and change "${MC_VERSION}" to "1.12" and click apply. I repeat that same process for runServer. Now I click run, and it tell me that "Errors exist inrequired project(s): Forge Mod Test". I proceed with launch and get the following error: 

Error: Could not find or load main class net.minecraftforge.legacydev.MainServer
Caused by: java.lang.ClassNotFoundException: net.minecraftforge.legacydev.MainServer

From what I have read, there is an issue with dependencies, and I'm not sure exactly how or where to run the "gradlew --refresh-dependencies". Below is a screenshot (and text) of the example code given by the forge MDK (the code has not been touched by my hands).

The error messages given on eclipse for the lines 3-8 are:

Multiple markers at this line
    - The import net cannot be resolved
    - The import org.apache cannot be 
     resolved
    - The import net cannot be resolved
    - The import net cannot be resolved
    - The import net cannot be resolved
    - The import net cannot be resolved

The rest of the errors are simply "xxx cannot be resolved to a type".

 

Mod Example Code: 

package com.example.examplemod;

import net.minecraft.init.Blocks;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import org.apache.logging.log4j.Logger;

@Mod(modid = ExampleMod.MODID, name = ExampleMod.NAME, version = ExampleMod.VERSION)
public class ExampleMod
{
    public static final String MODID = "examplemod";
    public static final String NAME = "Example Mod";
    public static final String VERSION = "1.0";

    private static Logger logger;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
        logger = event.getModLog();
    }

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        // some example code
        logger.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName());
    }
}
 

  

image.png

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • i keep getting these errors and im not sure how to fix them or if i can just leave them be :PS i know about the missing tags i just dont have the mods required to add those extra villages Here is the log  https://paste.ee/p/KpYoV
    • Minecraft: 1.18.2, Forge: 40.2.21 I created some code that renders a custom particle. The particle renders without depth test: `disableDepthTest()` and should be visible through other blocks. Locally, all works fine. When I install it on the server and client, it also works fine. But when the mod is removed from the server, it no longer works.   The particle is registered under the name "DEPTH_VISION", and if i check if it is present `ModParticles.DEPTH_VISION.isPresent()`, while the mod is not on the server, I get a `false` back.   So my question is: - Is it even possible to make a custom particle, while staying client side only? - What do I need to change to make it work?    ModParticles.java import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.core.particles.ParticleType; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; public class ModParticles { public static final DeferredRegister<ParticleType<?>> REGISTRY = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, SomeNameMod.MODID); public static final RegistryObject<SimpleParticleType> DEPTH_VISION = REGISTRY.register("depth_vision", () -> new SimpleParticleType(true)); }    SomeNameMod.java import com.peet.somename.HighlightBlock; import com.peet.somename.DepthVisionParticle; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.core.particles.ParticleType; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.entity.player.Player; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; import net.minecraftforge.client.event.TextureStitchEvent; @Mod(com.peet.somename.SomeNameMod.MODID) public class SomeNameMod { public static final String MODID = "somename"; private static int tickCounter = 0; // Counter to track ticks public SomeNameMod() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener(this::onTextureStitch); modEventBus.addListener(this::registerParticleFactories); ModParticles.REGISTRY.register(modEventBus); MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent public void registerParticleFactories(ParticleFactoryRegisterEvent event) { Minecraft.getInstance().particleEngine.register((ParticleType) ModParticles.DEPTH_VISION.get(), DepthVisionParticle.Factory::new); } @SubscribeEvent public void onWorldTick(TickEvent.WorldTickEvent event) { if (event.phase == TickEvent.Phase.END) { Level world = event.world; if (!world.isClientSide) return; if (tickCounter++ >= 20) { // 5 seconds = 100 ticks Player player = Minecraft.getInstance().player; if (player != null) { HighlightBlock.spawnParticles(world, player); } tickCounter = 0; // Reset the counter after spawning particles } } } @SubscribeEvent public void onClientTick(TickEvent.ClientTickEvent event) { } @SubscribeEvent public void onTextureStitch(TextureStitchEvent.Pre event) { if (event.getAtlas().location().equals(TextureAtlas.LOCATION_PARTICLES)) { event.addSprite(new ResourceLocation(MODID, "particles/depth_vision")); } } }    HighlightBlock.java import com.peet.somename.ModParticles; import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.ParticleEngine; public class HighlightBlock { public static <ExceptionType> void spawnParticles(Level world, Player player ) { ParticleEngine particleEngine = Minecraft.getInstance().particleEngine; if (!ModParticles.DEPTH_VISION.isPresent()) { Minecraft.getInstance().player.sendMessage(new TextComponent("DEPTH_VISION particle is not registered."), Minecraft.getInstance().player.getUUID()); return; } particleEngine.createParticle(ModParticles.DEPTH_VISION.get(), 0, 0, 0, 0.0, 0.0, 0.0); } }    DepthVisionParticle.java package com.peet.somename.particles; import net.minecraft.client.particle.Particle; import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.client.particle.ParticleProvider; import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.renderer.texture.TextureManager; import com.mojang.blaze3d.vertex.BufferBuilder; import net.minecraft.world.entity.player.Player; import net.minecraft.client.Minecraft; import net.minecraft.client.Camera; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.ParticleRenderType; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraft.client.particle.SimpleAnimatedParticle; @OnlyIn(Dist.CLIENT) public class DepthVisionParticle extends SimpleAnimatedParticle { private static final ParticleRenderType DEPTH_PARTICLE_SHEET_TRANSLUCENT; private DepthVisionParticle(final ClientLevel world, final double x, final double y, final double z, final double motionX, final double motionY, final double motionZ, final SpriteSet spriteWithAge) { super(world, x, y, z, spriteWithAge, 0.0f); this.xd = motionX; this.yd = motionY; this.zd = motionZ; this.lifetime = 20; this.setSpriteFromAge(spriteWithAge); } public void render(final VertexConsumer buffer, final Camera renderInfo, final float partialTicks) { final Player player = Minecraft.getInstance().player; super.render(buffer, renderInfo, partialTicks); } public void tick() { super.tick(); this.setSprite(this.sprite); if (this.age++ >= this.lifetime) { this.remove(); } } public ParticleRenderType getRenderType() { return com.peet.somename.particles.DepthVisionParticle.DEPTH_PARTICLE_SHEET_TRANSLUCENT; } static { DEPTH_PARTICLE_SHEET_TRANSLUCENT = new ParticleRenderType() { public void begin(BufferBuilder buffer, TextureManager textureManager) { RenderSystem.disableDepthTest(); ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT.begin(buffer, textureManager); } public void end(Tesselator tessellator) { ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT.end(tessellator); RenderSystem.enableDepthTest(); } }; } @OnlyIn(Dist.CLIENT) public static class Factory implements ParticleProvider<SimpleParticleType> { private final SpriteSet spriteSet; public Factory(final SpriteSet spriteSet) { this.spriteSet = spriteSet; } public Particle createParticle(final SimpleParticleType type, final ClientLevel world, final double x, final double y, final double z, final double xSpeed, final double ySpeed, final double zSpeed ) { final com.peet.somename.particles.DepthVisionParticle particle = new com.peet.somename.particles.DepthVisionParticle(world, x, y, z, 0.0, 0.0, 0.0, this.spriteSet); particle.setParticleSpeed((float) xSpeed, (float) ySpeed, (float) zSpeed); return particle; } } }  
    • no, but do you know  any alternatives that will give me access to shaders?
    • I used an alternative for this, this is a sheet template, which helped me simplify my task and I did not have to count, because every time I start counting again, I always get confused. In the same way, when I change something, in the template, I can edit everything and put it in the order I need.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.