Jump to content

[MC 1.10] A few Issues with slabs


Komodo2013

Recommended Posts

I've got the following issues with my slab:

They won't stack.

The metadata isn't being saved (upper slabs revert to lower once reloaded)

The item has no texture. (no info in log though, and all 3 blocks have their textures)

The double slab block won't drop two slabs - tried to fix this one by using the ItemSlab, which crashes the game.

Blocks class:

public class BettermentsBlocks {
   public static MarbleSlab marble_slab;

   public static MarbleDoubleSlab marble_double_slab;

   public static void init() {
      marble_double_slab = register(new MarbleDoubleSlab("marble_double_slab", marble_double_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW));
      marble_slab = register(new MarbleSlab("marble_slab", marble_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW)).setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
   }
   
   private static <T extends Block> T register(T block, ItemBlock itemBlock) {
      GameRegistry.register(block);
      GameRegistry.register(itemBlock);

      return block;
   }
   
   private static <T extends Block> T registerd(T block) {
      GameRegistry.register(block);
      return block;
   }
   
   private static <T extends Block> T register(T block, ItemSlab itemSlab){
      GameRegistry.register(block);
      GameRegistry.register(itemSlab);
      ((MarbleSlab)block).registerItemModel(itemSlab);
      return block;
   }
   
   private static <T extends Block> T register(T block) {
      if(block instanceof MarbleSlab) {
         ItemSlab itemSlab = new ItemSlab(marble_slab, marble_slab, marble_double_slab);
         itemSlab.setRegistryName(Reference.MOD_ID + ":" + "marble_slab");
         return register(block, itemSlab);
      } else if(!(block instanceof MarbleDoubleSlab)){
         ItemBlock itemBlock = new ItemBlock(block);
         itemBlock.setRegistryName(block.getRegistryName());
         return register(block, itemBlock);
      } else {
         return registerd(block);
      }
   }

}

 

Slab and Double Slab class:

 

public class MarbleSlab extends BlockSlab {

protected String name;

public MarbleSlab(String name, Block BlockIn, Material material, float hardness, float resistance, int harvest, String tool, MapColor color) {
	super(material);

	IBlockState iblockstate = this.blockState.getBaseState();
	if (!this.isDouble()){
            iblockstate = iblockstate.withProperty(HALF, EnumBlockHalf.BOTTOM);
        }

        this.setDefaultState(iblockstate);
        
	this.name = name;

	setUnlocalizedName(name);
	setRegistryName(name);
	setHardness(hardness);
	setResistance(resistance);
	setHarvestLevel(tool, harvest);

	this.useNeighborBrightness = true;
}

@Override
public String getUnlocalizedName(int meta) {
	return this.getLocalizedName();
}

@Override
public Comparable<?> getTypeForItem(ItemStack stack) {
	return false;
}

@Override
public IProperty<?> getVariantProperty() {
	return null;
}

@Override
    public int damageDropped(IBlockState state) {
        return 0;
    }

@Override
public final IBlockState getStateFromMeta(final int meta) {
	IBlockState iblockstate = this.getDefaultState();
	if (!this.isDouble()){
            EnumBlockHalf value = EnumBlockHalf.BOTTOM;
            if ((meta &  != 0){
            	value = EnumBlockHalf.TOP;
            }
        }
        return iblockstate;
}

@Override
    public final int getMetaFromState(final IBlockState state){
        if (this.isDouble()){
        	return 0;
        }
        if ((EnumBlockHalf) state.getValue(HALF) == EnumBlockHalf.TOP){
        	return 8;
        } else {
            return 0;
        }
    }

@Override
protected final BlockStateContainer createBlockState(){
	if(this.isDouble()){
		return new BlockStateContainer(this, new IProperty[] {});
	} else {
		return new BlockStateContainer(this, new IProperty[] {HALF});
	}
}

public void registerItemModel(ItemSlab itemBlock) {
	BettermentsMod.proxy.registerItemRenderer(itemBlock, 0, name);
}

@Override
public MarbleSlab setCreativeTab(CreativeTabs tab) {
	super.setCreativeTab(tab);
	return this;
}

@Override
public MapColor getMapColor(IBlockState state){
	return MapColor.SNOW;
}

@Override
public boolean isDouble() {
	return false;
}
}

public class MarbleDoubleSlab extends MarbleSlab{

public MarbleDoubleSlab(String name, Block BlockIn, Material material, float hardness, float resistance, int harvest, String tool, MapColor color) {
	super(name, BlockIn, material, hardness, resistance, harvest, tool, color);
}

@Override
public boolean isDouble() {
	return true;
}
}

 

.json files:

 

marble_slab

{
    "forge_marker": 1,
    "variants": {
        "half=bottom": { "model": "betterments:marble_slab_half_bottom" },
        "half=top": { "model": "betterments:marble_slab_half_top" },
        "inventory": { 
            "model": "betterments:marble_slab_half_bottom", 
            "transform": "forge:default-block" 
        }
    }
}

marble_double_slab:

{
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "all": "betterments:blocks/dummy_side"
        }
    },
    "variants": {
        "normal": {
            "model": "cube_all"
        },
        "inventory": {
            "model": "cube_all"
        }
    }
}

marble_slab_half_bottom:

{
    "parent": "block/half_slab",
    "textures": {
        "bottom": "betterments:blocks/dummy_side",
        "top": "betterments:blocks/dummy_side",
        "side": "betterments:blocks/dummy_side"
    }
}

marble_slab_half_top:

{
    "parent": "block/upper_slab",
    "textures": {
        "bottom": "betterments:blocks/dummy_side",
        "top": "betterments:blocks/dummy_side",
        "side": "betterments:blocks/dummy_side"
    }
}

 

And crash report for the code above:

http://pastebin.com/zbr1jygH

I am human and thus will make stupid and obvious mistakes and cannot be expected to know everything.

Link to comment
Share on other sites

I could really use some help creating this slab. I have tried moving the itemSlab as the last thing, and it is still not working. I don't see why Forge can't find the unlocalized name for the single slab block.

 

*Edit: just noticed I didn't post the error eclipse gave me: http://pastebin.com/Fm7JgAz0

I am human and thus will make stupid and obvious mistakes and cannot be expected to know everything.

Link to comment
Share on other sites

.json files:

marble_slab

marble_double_slab

marble_slab_half_bottom

marble_slab_half_top

 

Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of model betterments:blockstates/marble_single_slab.json

 

You don't have a json file named "marble_single_slab"

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

You don't have a json file named "marble_single_slab"

Right, sorry... As I try to debug, I occasionally change names of things as I re-do them. But that doesn't fix the null pointer exception...

I am human and thus will make stupid and obvious mistakes and cannot be expected to know everything.

Link to comment
Share on other sites

That's because you never set it:

 

if(block instanceof MarbleSlab) {
         ItemSlab itemSlab = new ItemSlab(marble_slab, marble_slab, marble_double_slab);
         itemSlab.setRegistryName(Reference.MOD_ID + ":" + "marble_slab");
         return register(block, itemSlab);
      }

 

You never call itemSlab.setUnlocalizedName(...)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I'm sorry... I've tried setting the unlocalized name and it is still crashing with the null pointer exception. Is this not where I would set it?

public class BettermentsBlocks {
public static BlockBase marble;
public static MarbleDoubleSlab marble_double_slab;
public static MarbleSingleSlab marble_single_slab;
public static MarbleStair marble_stair;

public static void init() {
	marble = register(new BlockBase("marble", marble, Material.ROCK, 1.5f, 30f, 1, "Pickaxe", MapColor.SNOW).setCreativeTab(CreativeTabs.BUILDING_BLOCKS));
	marble_double_slab = register(new MarbleDoubleSlab("marble_double_slab", marble_double_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW));
	marble_single_slab = register(new MarbleSingleSlab("marble_single_slab", marble_single_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW)).setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
	marble_stair = register(new MarbleStair(marble.getDefaultState(), "marble_stair", marble_stair, Material.ROCK, 1.5f, 30f, 1, "Pickaxe", MapColor.SNOW).setCreativeTab(CreativeTabs.BUILDING_BLOCKS));

}

private static <T extends Block> T register(T block, ItemBlock itemBlock) {
	GameRegistry.register(block);
	GameRegistry.register(itemBlock);
	if (block instanceof BlockBase) {
		((BlockBase)block).registerItemModel(itemBlock);
	} else if (block instanceof MarbleStair) {
		((MarbleStair)block).registerItemModel(itemBlock);
	}
	return block;
}

private static <T extends Block> T registernoitemblock(T block) {
	GameRegistry.register(block);
	return block;
}

private static <T extends Block> T register(T block) {
	if(block instanceof MarbleSingleSlab) {
		GameRegistry.register(block);
		ItemSlab itemSlab = new ItemSlab(marble, marble_single_slab, marble_double_slab);

//********* Right Here: **********			
		itemSlab.setUnlocalizedName(block.getUnlocalizedName());

		itemSlab.setRegistryName(block.getRegistryName());

		GameRegistry.register(itemSlab);
		((MarbleSlab)block).registerItemModel(itemSlab);
		return block;
	} else if(!(block instanceof MarbleDoubleSlab)){
		ItemBlock itemBlock = new ItemBlock(block);
		itemBlock.setRegistryName(block.getRegistryName());
		return register(block, itemBlock);
	} else {
		return registernoitemblock(block);
	}
}
}

I am human and thus will make stupid and obvious mistakes and cannot be expected to know everything.

Link to comment
Share on other sites

Well...do you ever call setUnlocalizedName on the block?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Alright, so I've realized that the block that I am using is the standard block. I also fixed most things, but I still have four issues that I can't seem to resolve:

  • The slabs do not stack,
  • The block is not saving its metadata (I think... It reverts to the bottom slab if reloaded)
  • The inventory item has no texture and is not showing in the creative inventory (registration problem, right?)

But the game no longer crashes, so that's a plus. The game is also placing marble_slab blocks, not marble_single_slab. I don't know if this is a problem or not. Updated codes:

Blocks File:

 

public class BettermentsBlocks {
public static BlockBase marble;
public static MarbleSlab marble_slab;
public static MarbleDoubleSlab marble_double_slab;
public static MarbleSingleSlab marble_single_slab;
public static MarbleStair marble_stair;

public static void init() {

	marble = register(new BlockBase("marble", marble, Material.ROCK, 1.5f, 30f, 1, "Pickaxe", MapColor.SNOW).setCreativeTab(CreativeTabs.BUILDING_BLOCKS));
	marble_slab = register(new MarbleSlab("marble_slab", marble_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW));
	marble_double_slab = register(new MarbleDoubleSlab("marble_double_slab", marble_double_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW));
	marble_single_slab = register(new MarbleSingleSlab("marble_single_slab", marble_single_slab, Material.ROCK, 0.6f, 30f, 1, "Pickaxe", MapColor.SNOW)).setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
	marble_stair = register(new MarbleStair(marble.getDefaultState(), "marble_stair", marble_stair, Material.ROCK, 1.5f, 30f, 1, "Pickaxe", MapColor.SNOW).setCreativeTab(CreativeTabs.BUILDING_BLOCKS));
	MarbleSlabItem itemSlab = new MarbleSlabItem(marble_slab, marble_single_slab, marble_double_slab);
	ModelLoader.setCustomModelResourceLocation(itemSlab, 1, new ModelResourceLocation("marble_slab"));
}

private static <T extends Block> T register(T block, ItemBlock itemBlock) {
	GameRegistry.register(block);
	GameRegistry.register(itemBlock);
	if (block instanceof BlockBase) {
		((BlockBase)block).registerItemModel(itemBlock);
	} else if (block instanceof MarbleStair) {
		((MarbleStair)block).registerItemModel(itemBlock);
	}
	return block;
}

private static <T extends Block> T registernoitemblock(T block) {
	GameRegistry.register(block);
	return block;
}

private static <T extends Block> T register(T block) {
	if(block instanceof MarbleSingleSlab) {
		GameRegistry.register(block);
		return block;
	} else if(!(block instanceof MarbleDoubleSlab)){
		ItemBlock itemBlock = new ItemBlock(block);
		itemBlock.setRegistryName(block.getRegistryName());
		return register(block, itemBlock);
	} else {
		return registernoitemblock(block);
	}
}
}

 

MarbleSlab:

 

public class MarbleSlab extends BlockSlab {

protected String name;

public MarbleSlab(String name, Block BlockIn, Material material, float hardness, float resistance, int harvest, String tool, MapColor color) {
	super(material);

	IBlockState iblockstate = this.blockState.getBaseState();
	if (!this.isDouble()){
            iblockstate = iblockstate.withProperty(HALF, EnumBlockHalf.BOTTOM);
        }

        this.setDefaultState(iblockstate);
        
	this.name = name;

	setUnlocalizedName(name);
	setRegistryName(name);
	setHardness(hardness);
	setResistance(resistance);
	setHarvestLevel(tool, harvest);

	this.useNeighborBrightness = !this.isDouble();
}

@Override
public String getUnlocalizedName(int meta) {
	return this.getLocalizedName();
}

@Override
public Comparable<?> getTypeForItem(ItemStack stack) {
	return false;
}

@Override
public IProperty<?> getVariantProperty() {
	return null;
}

@Override
    public int damageDropped(IBlockState state) {
        return 0;
    }

@Override
public final IBlockState getStateFromMeta(final int meta) {
	IBlockState iblockstate = this.getDefaultState();
	if (!this.isDouble()){
            EnumBlockHalf value = EnumBlockHalf.BOTTOM;
            if ((meta &  != 0){
            	value = EnumBlockHalf.TOP;
            }
        }
        return iblockstate;
}

@Override
    public final int getMetaFromState(final IBlockState state){
        if (this.isDouble()){
        	return 0;
        }
        if ((EnumBlockHalf) state.getValue(HALF) == EnumBlockHalf.TOP){
        	return 8;
        } else {
            return 0;
        }
    }

@Override
protected final BlockStateContainer createBlockState(){
	if(this.isDouble()){
		return new BlockStateContainer(this, new IProperty[] {});
	} else {
		return new BlockStateContainer(this, new IProperty[] {HALF});
	}
}

public void registerItemModel(ItemSlab itemBlock) {
	BettermentsMod.proxy.registerItemRenderer(itemBlock, 0, name);
}

@Override
public MarbleSlab setCreativeTab(CreativeTabs tab) {
	super.setCreativeTab(tab);
	return this;
}

@Override
public MapColor getMapColor(IBlockState state){
	return MapColor.SNOW;
}

@Override
public boolean isDouble() {
	return false;
}
}

 

MarbleDoubleSlab:

 

public class MarbleDoubleSlab extends MarbleSlab{	

public MarbleDoubleSlab(String name, Block BlockIn, Material material, float hardness, float resistance,
		int harvest, String tool, MapColor color) {
	super(name, BlockIn, material, hardness, resistance, harvest, tool, color);
}

@Override
public boolean isDouble() {
	return true;
}

@Override
public String getUnlocalizedName(int meta) {
	return this.getLocalizedName();
}
}

 

MarbleSingleSlab:

 

public class MarbleSingleSlab extends MarbleSlab{	

public MarbleSingleSlab(String name, Block BlockIn, Material material, float hardness, float resistance,
		int harvest, String tool, MapColor color) {
	super(name, BlockIn, material, hardness, resistance, harvest, tool, color);
}

@Override
public boolean isDouble() {
	return false;
}

@Override
public void registerItemModel(ItemSlab itemBlock) {
	BettermentsMod.proxy.registerItemRenderer(itemBlock, 0, name);
}

@Override
public MarbleSingleSlab setCreativeTab(CreativeTabs tab) {
	super.setCreativeTab(tab);
	return this;
}

@Override
public String getUnlocalizedName(int meta) {
	return this.getLocalizedName();
}
}

 

MarbleSlabItem:

 

public class MarbleSlabItem extends ItemSlab{

public MarbleSlabItem(Block block, BlockSlab singleSlab, BlockSlab doubleSlab) {
	super(block, singleSlab, doubleSlab);
	setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
}

}

 

marble_slab.json (marble_single_slab.json is the same, but the game is not using it):

 

{
    "forge_marker": 1,
    "variants": {
        "half": {
            "bottom":{"model": "betterments:marble_slab_half_bottom" },
            "top": { "model": "betterments:marble_slab_half_top" }
        },
        "inventory": { 
            "model": "betterments:marble_slab_half_bottom", 
            "transform": "forge:default-block" 
        }
    }
}

 

 

I am human and thus will make stupid and obvious mistakes and cannot be expected to know everything.

Link to comment
Share on other sites

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hello, I just finished my first mod for MC for 1.19.2, I've used: IntelliJ 2024.1.3 Forge MDK 43.3.13 SDK 17.0.11 (eclipse Temurin) Basically, my mod plays scary music at night time, stopping any music played by the game. For that I needed to access via reflection to a private MusicManager.class attribute (SoundInstance currentMusic), and the management of this is giving me errors (I think). Here's the full stacktrace: ---- Minecraft Crash Report ---- // There are four lights! Time: 2024-06-16 20:29:25 Description: Ticking entity java.lang.NoSuchMethodError: 'net.minecraft.client.Minecraft net.minecraft.client.Minecraft.m_91087_()' at com.miorg.scarysounds.SoundHandler.onWorldTick(SoundHandler.java:64) ~[scarysounds-1.0.0.jar%23188!/:1.0.0] {re:classloading} at com.miorg.scarysounds.__SoundHandler_onWorldTick_PlayerTickEvent.invoke(.dynamic) ~[scarysounds-1.0.0.jar%23188!/:1.0.0] {re:classloading,pl:eventbus:B} at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73) ~[eventbus-6.0.3.jar%23113!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.3.jar%23113!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.3.jar%23113!/:?] {} at net.minecraftforge.event.ForgeEventFactory.onPlayerPreTick(ForgeEventFactory.java:814) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23189%23197!/:?] {re:classloading} at net.minecraft.world.entity.player.Player.tick(Player.java:216) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.player.LocalPlayer.tick(LocalPlayer.java:200) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.multiplayer.ClientLevel.tickNonPassenger(ClientLevel.java:269) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.world.level.Level.guardEntityTick(Level.java:457) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.multiplayer.ClientLevel.lambda$tickEntities$4(ClientLevel.java:251) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:54) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading} at net.minecraft.client.multiplayer.ClientLevel.tickEntities(ClientLevel.java:249) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.tick(Minecraft.java:1791) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:1078) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:700) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.run(Main.java:212) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:51) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:25) ~[fmlloader-1.19.2-43.3.13.jar%23101!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) [bootstraplauncher-1.1.2.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Suspected Mod: ScarySounds (scarysounds), Version: 1.0.0 at TRANSFORMER/[email protected]/com.miorg.scarysounds.SoundHandler.onWorldTick(SoundHandler.java:64) Stacktrace: at com.miorg.scarysounds.SoundHandler.onWorldTick(SoundHandler.java:64) ~[scarysounds-1.0.0.jar%23188!/:1.0.0] {re:classloading} at com.miorg.scarysounds.__SoundHandler_onWorldTick_PlayerTickEvent.invoke(.dynamic) ~[scarysounds-1.0.0.jar%23188!/:1.0.0] {re:classloading,pl:eventbus:B} at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73) ~[eventbus-6.0.3.jar%23113!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.3.jar%23113!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.3.jar%23113!/:?] {} at net.minecraftforge.event.ForgeEventFactory.onPlayerPreTick(ForgeEventFactory.java:814) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23189%23197!/:?] {re:classloading} at net.minecraft.world.entity.player.Player.tick(Player.java:216) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.player.LocalPlayer.tick(LocalPlayer.java:200) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.multiplayer.ClientLevel.tickNonPassenger(ClientLevel.java:269) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.world.level.Level.guardEntityTick(Level.java:457) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.multiplayer.ClientLevel.lambda$tickEntities$4(ClientLevel.java:251) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:54) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading} at net.minecraft.client.multiplayer.ClientLevel.tickEntities(ClientLevel.java:249) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} -- Entity being ticked -- Details: Entity Type: minecraft:player (net.minecraft.client.player.LocalPlayer) Entity ID: 227 Entity Name: Dev Entity's Exact location: -55.87, 119.00, -7.99 Entity's Block location: World: (-56,119,-8), Section: (at 8,7,8 in -4,7,-1; chunk contains blocks -64,-64,-16 to -49,319,-1), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,-64,-512 to -1,319,-1) Entity's Momentum: 0.00, 0.00, 0.00 Entity's Passengers: [] Entity's Vehicle: null Stacktrace: at net.minecraft.world.level.Level.guardEntityTick(Level.java:457) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.multiplayer.ClientLevel.lambda$tickEntities$4(ClientLevel.java:251) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:54) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading} at net.minecraft.client.multiplayer.ClientLevel.tickEntities(ClientLevel.java:249) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.tick(Minecraft.java:1791) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:1078) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:700) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.run(Main.java:212) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:51) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:25) ~[fmlloader-1.19.2-43.3.13.jar%23101!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) [bootstraplauncher-1.1.2.jar:?] {} -- Affected level -- Details: All players: 1 total; [LocalPlayer['Dev'/227, l='ClientLevel', x=-55.87, y=119.00, z=-7.99]] Chunk stats: 961, 400 Level dimension: minecraft:overworld Level spawn location: World: (0,106,0), Section: (at 0,10,0 in 0,6,0; chunk contains blocks 0,-64,0 to 15,319,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511) Level time: 6100 game time, 14340 day time Server brand: forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.multiplayer.ClientLevel.fillReportDetails(ClientLevel.java:450) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.fillReport(Minecraft.java:2280) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:717) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.run(Main.java:212) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:51) ~[forge-1.19.2-43.3.13_mapped_official_1.19.2.jar%23190!/:?] {re:classloading,pl:runtimedistcleaner:A} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:25) ~[fmlloader-1.19.2-43.3.13.jar%23101!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-10.0.9.jar%23114!/:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) [bootstraplauncher-1.1.2.jar:?] {} -- Last reload -- Details: Reload number: 1 Reload reason: initial Finished: Yes Packs: Default, Mod Resources -- System Details -- Details: Minecraft Version: 1.19.2 Minecraft Version ID: 1.19.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 17.0.11, Eclipse Adoptium Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Eclipse Adoptium Memory: 1080430488 bytes (1030 MiB) / 2302672896 bytes (2196 MiB) up to 4208984064 bytes (4014 MiB) CPUs: 12 Processor Vendor: GenuineIntel Processor Name: 12th Gen Intel(R) Core(TM) i5-12450H Identifier: Intel64 Family 6 Model 154 Stepping 3 Microarchitecture: unknown Frequency (GHz): 2.50 Number of physical packages: 1 Number of physical CPUs: 8 Number of logical CPUs: 12 Graphics card #0 name: NVIDIA GeForce RTX 3050 Laptop GPU Graphics card #0 vendor: NVIDIA (0x10de) Graphics card #0 VRAM (MB): 4095.00 Graphics card #0 deviceId: 0x25a2 Graphics card #0 versionInfo: DriverVersion=31.0.15.4680 Graphics card #1 name: Intel(R) UHD Graphics Graphics card #1 vendor: Intel Corporation (0x8086) Graphics card #1 VRAM (MB): 128.00 Graphics card #1 deviceId: 0x46a3 Graphics card #1 versionInfo: DriverVersion=31.0.101.5186 Memory slot #0 capacity (MB): 8192.00 Memory slot #0 clockSpeed (GHz): 3.20 Memory slot #0 type: DDR4 Memory slot #1 capacity (MB): 8192.00 Memory slot #1 clockSpeed (GHz): 3.20 Memory slot #1 type: DDR4 Virtual memory max (MB): 19530.51 Virtual memory used (MB): 17390.07 Swap memory total (MB): 3478.36 Swap memory used (MB): 253.88 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump Launched Version: MOD_DEV Backend library: LWJGL version 3.3.1 build 7 Backend API: Intel(R) UHD Graphics GL version 3.2.0 - Build 31.0.101.5186, Intel Window size: 854x480 GL Caps: Using framebuffer using OpenGL 3.2 GL debug messages: Using VBOs: Yes Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge' Type: Integrated Server (map_client.txt) Graphics mode: fancy Resource Packs: Current Language: English (US) CPU: 12x 12th Gen Intel(R) Core(TM) i5-12450H Server Running: true Player Count: 1 / 8; [ServerPlayer['Dev'/227, l='ServerLevel[New World]', x=-55.87, y=119.00, z=-7.99]] Data Packs: vanilla, mod:scarysounds, mod:forge World Generation: Stable ModLauncher: 10.0.9+10.0.9+main.dcd20f30 ModLauncher launch target: forgeclientuserdev ModLauncher naming: mcp ModLauncher services: mixin-0.8.5.jar mixin PLUGINSERVICE eventbus-6.0.3.jar eventbus PLUGINSERVICE fmlloader-1.19.2-43.3.13.jar slf4jfixer PLUGINSERVICE fmlloader-1.19.2-43.3.13.jar object_holder_definalize PLUGINSERVICE fmlloader-1.19.2-43.3.13.jar runtime_enum_extender PLUGINSERVICE fmlloader-1.19.2-43.3.13.jar capability_token_subclass PLUGINSERVICE accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE fmlloader-1.19.2-43.3.13.jar runtimedistcleaner PLUGINSERVICE modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE FML Language Providers: [email protected] lowcodefml@null javafml@null Mod List: forge-1.19.2-43.3.13_mapped_official_1.19.2.jar |Minecraft |minecraft |1.19.2 |DONE |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f scarysounds-1.0.0.jar |ScarySounds |scarysounds |1.0.0 |DONE |Manifest: NOSIGNATURE |Forge |forge |43.3.13 |DONE |Manifest: NOSIGNATURE Crash Report UUID: dc1c47a9-be1f-45b8-b70f-eab49d54148b FML: 43.3 Forge: net.minecraftforge:43.3.13   Here's my code, the most important lines are at the start of the class and the start of onWorldTick(). These lines manage the private attribute (currentMusic) and the exception fires at line 64: MusicManager musicManager = Minecraft.getInstance().getMusicManager(); Anybody knows what is happening????? I've spent 2 days trying to find a solution and I can't get it  Really appreciate your time package com.miorg.scarysounds; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.client.sounds.MusicManager; import net.minecraft.client.sounds.SoundManager; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.sounds.Musics; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.util.profiling.jfr.event.WorldLoadFinishedEvent; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraftforge.client.ClientCommandHandler; import net.minecraft.world.level.Level; import net.minecraft.core.BlockPos; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.EntityJoinLevelEvent; import net.minecraftforge.event.level.LevelEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.Random; @Mod.EventBusSubscriber(modid = "scarysounds", value = Dist.CLIENT) public class SoundHandler { private static Field currentMusicField; static { try { currentMusicField = MusicManager.class.getDeclaredField("currentMusic"); currentMusicField.setAccessible(true); } catch (NoSuchFieldException e) { e.printStackTrace(); } } private static final Random random = new Random(); static int ticksUntilNextSound = 0; static int ticksRestantes = 0; static int espera; static boolean flag = false; static boolean flagLoad = false; static String soundName; private static final String[] SOUND_NAMES = { "sound1", "sound2", "sound3", "sound4", "sound5", "sound6", "sound7", "sound8", "sound9", "sound10", "sound11", "sound12", "sound13", "sound14", "sound15" }; @SubscribeEvent public static void onWorldLoad(LevelEvent.Load event) { ticksUntilNextSound = getRandomTicks(); flagLoad = true; } @SubscribeEvent public static void onWorldTick(TickEvent.PlayerTickEvent event) throws InterruptedException { if (flagLoad) { try { MusicManager musicManager = Minecraft.getInstance().getMusicManager(); Object currentMusic = currentMusicField.get(musicManager); Level world = (Level) event.player.level; BlockPos playerPos = event.player.blockPosition(); //Coordenadas del jugador if (!world.isClientSide && event.phase == TickEvent.Phase.END) { long dayTime = world.getDayTime() % 24000L; if ((dayTime >= 13000L && dayTime <= 23000L) && !flag) { // De noche if (ticksUntilNextSound > 0) { ticksUntilNextSound--; if (ticksUntilNextSound == 75) Minecraft.getInstance().getMusicManager().stopPlaying(); if (ticksUntilNextSound == 110) { if (currentMusic != null) { event.player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 200, 4, true, true)); event.player.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 10, true, true)); event.player.addEffect(new MobEffectInstance(MobEffects.DARKNESS, 200, 10, true, true)); world.playSound(null, playerPos, ScarySounds.FX.get(), SoundSource.MUSIC, 1.0F, 1.0F); } } System.out.println(ticksUntilNextSound); } else { soundName = SOUND_NAMES[random.nextInt(SOUND_NAMES.length)]; ResourceLocation resourceLocation = new ResourceLocation("scarysounds", soundName); SoundEvent soundEvent = ForgeRegistries.SOUND_EVENTS.getValue(resourceLocation); switch (soundName) { case "sound1": { soundEvent = ScarySounds.SOUND1.get(); espera = 112; break; } case "sound2": { soundEvent = ScarySounds.SOUND2.get(); espera = 164; break; } case "sound3": { soundEvent = ScarySounds.SOUND3.get(); espera = 70; break; } case "sound4": { soundEvent = ScarySounds.SOUND4.get(); espera = 184; break; } case "sound5": { soundEvent = ScarySounds.SOUND5.get(); espera = 135; break; } case "sound6": { soundEvent = ScarySounds.SOUND6.get(); espera = 255; break; } case "sound7": { soundEvent = ScarySounds.SOUND7.get(); espera = 151; break; } case "sound8": { soundEvent = ScarySounds.SOUND8.get(); espera = 107; break; } case "sound9": { soundEvent = ScarySounds.SOUND9.get(); espera = 304; break; } case "sound10": { soundEvent = ScarySounds.SOUND10.get(); espera = 48; break; } case "sound11": { soundEvent = ScarySounds.SOUND11.get(); espera = 181; break; } case "sound12": { soundEvent = ScarySounds.SOUND12.get(); espera = 11; break; } case "sound13": { soundEvent = ScarySounds.SOUND13.get(); espera = 216; break; } case "sound14": { soundEvent = ScarySounds.SOUND14.get(); espera = 52; break; } case "sound15": { soundEvent = ScarySounds.SOUND15.get(); espera = 120; break; } } if (soundEvent != null) { ticksRestantes = espera * 20; world.playSound(null, playerPos, soundEvent, SoundSource.MUSIC, 1.0F, 1.0F); flag = true; } else { System.out.println("SoundEvent es nulo para: " + resourceLocation); } } } else { if (ticksRestantes > 0) { ticksRestantes--; Minecraft.getInstance().getMusicManager().stopPlaying(); System.out.println("Ticks restantes: " + ticksRestantes); } else { flag = false; ticksUntilNextSound = getRandomTicks(); } } } } catch (IllegalAccessException e) { e.printStackTrace(); } } } static int getRandomTicks() { return 500 + random.nextInt(1500); } }  
    • It is mentioned in the log
  • Topics

×
×
  • Create New...

Important Information

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