Jump to content

Recommended Posts

Posted

So I just started my mod, and I seem to get a weird error that makes my block not in the game, here is my code:

 

 package gmod.mods.roleplay.main;

import gmod.mods.roleplay.main.common.block.BlockTest;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLLoadEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;


@Mod(modid = "Roleplay Craft", version = "0.0.1a")
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class main_roleplay {
public static Block testBlock; 
public static CreativeTabs tabRoleplay;
public static int testBlockID = 3645;


public void init(FMLInitializationEvent event) {

}

@EventHandler
    public void preInit(FMLPreInitializationEvent event) {
	testBlock = new BlockTest(testBlockID, Material.cloth).setUnlocalizedName("testBlock").setCreativeTab(this.tabRoleplay);
        


	GameRegistry.registerBlock(testBlock, "testBlock");

tabRoleplay = new CreativeTabs("tabRoleplay") {
        public ItemStack getIconItemStack() {
                return new ItemStack(Item.eyeOfEnder, 1, 0);
        }};
}

public void load(FMLLoadEvent event) {
	LanguageRegistry.addName(testBlock, "Test Block");
}



}


Not new to java >> New to modding.

Posted

If you somehow did not understand the post above:

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        tabRoleplay = new CreativeTabs("tabRoleplay") {
            public ItemStack getIconItemStack() {
                return new ItemStack(Item.eyeOfEnder, 1, 0);
        }};

        testBlock = new BlockTest(testBlockID, Material.cloth).setUnlocalizedName("testBlock").setCreativeTab(this.tabRoleplay);
        
        GameRegistry.registerBlock(testBlock, "testBlock");
    }

Before you even think about modding,

  Quote
Posted

I'm *really* new to this, but don't you have to register the same string name through GameRegistry.registerBlock and LanguageRegistry.addName?

 

At least, I'm doing that and I have things showing up in the Creative inventory. It may not actually be required, but couldn't hurt to check right? :)

Posted
  On 1/10/2014 at 4:21 AM, Naah said:

don't you have to register the same string name through GameRegistry.registerBlock and LanguageRegistry.addName?

No.

GameRegistry.registerBlock

registers a block into the code.

LanguageRegistry.addName

adds a name to be displayed in-game. For example:

Block testBlock = new Block(1000, Material.air).setUnlocalizedName("testBlock").setTextureName("test_block");
GameRegistry.registerBlock(testBlock, "testBlock");
LanguageRegistry.addName(testBlock, "Test Block");

I personally like to register blocks with their unlocalized names like so:

GameRegistry.registerBlock(testBlock, testBlock.getUnlocalizedName.substring(5));

Before you even think about modding,

  Quote

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

  Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

  Your link has been automatically embedded.   Display as a link instead

  Your previous content has been restored.   Clear editor

  You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Well, as usual, it was user error. Naming mismatch in sounds.json.  Please delete this post if you find it necessary. 
    • Hello Forge community.  I'm running into an issue with a mod I'm working on.  To preface, I can call /playsound modId:name music @a and I can hear the sound I registered being played in game. Great!  However, I cannot get it to trigger via my mod code.    Registration: public static final RegistryObject<SoundEvent> A_WORLD_OF_MADNESS = SOUND_EVENTS.register("a_world_of_madness", () -> new SoundEvent(new ResourceLocation("tetheredsouls", "a_world_of_madness")));   Playback: Minecraft mc = Minecraft.getInstance(); if (!(mc.player instanceof LocalPlayer) || mc.level == null) return; LocalPlayer player = (LocalPlayer) mc.player; BlockPos pos = player.blockPosition(); SoundEvent track = ModSounds.A_WORLD_OF_MADNESS.get(); System.out.println(track); System.out.println(pos); System.out.println(player); // play exactly like the tutorial: client-only, at the player's position try { mc.level.playLocalSound( player.getX(), player.getY(), player.getZ(), track, SoundSource.MUSIC, // Or MASTER if needed 1f, 1f, false ); System.out.println("[DEBUG] playSound success: " + track.getLocation()); } catch (Exception e) { System.err.println("[ERROR] Failed to play sound: " + track.getLocation()); e.printStackTrace(); } Sounds.json:   { "theme_of_laura": { "category": "music", "sounds": [ { "name": "tetheredsouls:a_world_of_madness", "stream": true } ] } } Things I have tried: - multiple .ogg files. Short .ogg files (5 seconds, <100KB).  - default minecraft sounds imported from import net.minecraft.sounds.SoundEvents; These work given my code. No idea why these are different.  - playSound() method, as well as several others in past iterations that did not work   I would be forever grateful if somebody could point me in the right direction. I've looked at several mod github repositories and found extremely similar code to what I'm doing. I've also found several threads in this forum that did not solve my issue. I just cannot figure out what I'm doing differently, and why I'm able to queue sounds manually with playsound but the code won't play it (despite confirming the code is being run with the debug statements.)
    • Delete the tensura-reincarnated/common.toml file (config folder)
    • Jesus Christ is God's Son, Jesus died for our sins and rose from the dead to Give us eternal life. Ask Him to also heal your body.
  • Topics

  • Create New...

Important Information

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