Jump to content

Getting SoundType/Material from and to String


jredfox

Recommended Posts

Best Way for Deserializing and Serializing SoundType and BlockMaterials. I want the string to be simple as possible since The end user has to configure the string in order to change a block sound and or block material. I could have a registry between long strings to a readable name for users but, the main goal I hope to achieve is mod support for both block sounds and materials.

The issues are:

they are not required to be static
they are not enums so I can't get an array of them
no toString() I could make one using all values but, still can't get around other two issues
hard coding only vanilla would make mods incompatible for any modded material and sound type.
I see no possible way to grab the object besides iterating through all blocks in post init way after I am suppose to be registering the auto configurable blocks in preinit. 

Here is what I got so far but, it only supports vanilla period:
 

	/**
	 * Only supports vanilla
	 */
	public static Material getMat(String s)
	{
		s = s.toUpperCase();
		if(s.equals("AIR"))
			return Material.AIR;
		else if(s.equals("ANVIL"))
			return Material.ANVIL;
		else if(s.equals("BARRIER"))
			return Material.BARRIER;
		else if(s.equals("CACTUS"))
			return Material.CACTUS;
		else if(s.equals("CAKE"))
			return Material.CAKE;
		else if(s.equals("CIRCUITS"))
			return Material.CIRCUITS;
		else if(s.equals("CARPET"))
			return Material.CARPET;
		else if(s.equals("CLAY"))
			return Material.CLAY;
		else if(s.equals("CLOTH"))
			return Material.CLOTH;
		else if(s.equals("CORAL"))
			return Material.CORAL;
		else if(s.equals("CRAFTED_SNOW"))
			return Material.CRAFTED_SNOW;
		else if(s.equals("DRAGON_EGG"))
			return Material.DRAGON_EGG;
		else if(s.equals("FIRE"))
			return Material.FIRE;
		else if(s.equals("GLASS"))
			return Material.GLASS;
		else if(s.equals("GOURD"))
			return Material.GOURD;
		else if(s.equals("GRASS"))
			return Material.GRASS;
		else if(s.equals("GROUND"))
			return Material.GROUND;
		else if(s.equals("ICE"))
			return Material.ICE;
		else if(s.equals("IRON"))
			return Material.IRON;
		else if(s.equals("LAVA"))
			return Material.LAVA;
		else if(s.equals("LEAVES"))
			return Material.LEAVES;
		else if(s.equals("PACKED_ICE"))
			return Material.PACKED_ICE;
		else if(s.equals("PISTON"))
			return Material.PISTON;
		else if(s.equals("PLANTS"))
			return Material.PLANTS;
		else if(s.equals("PORTAL"))
			return Material.PORTAL;
		else if(s.equals("REDSTONE_LIGHT"))
			return Material.REDSTONE_LIGHT;
		else if(s.equals("ROCK"))
			return Material.ROCK;
		else if(s.equals("SAND"))
			return Material.SAND;
		else if(s.equals("SNOW"))
			return Material.SNOW;
		else if(s.equals("SPONGE"))
			return Material.SPONGE;
		else if(s.equals("STRUCTURE_VOID"))
			return Material.STRUCTURE_VOID;
		else if(s.equals("TNT"))
			return Material.TNT;
		else if(s.equals("VINE"))
			return Material.VINE;
		else if(s.equals("WATER"))
			return Material.WATER;
		else if(s.equals("WEB"))
			return Material.WEB;
		else if(s.equals("WOOD"))
			return Material.WOOD;
		
		return null;
	}
	public static SoundType getSoundType(String s)
	{
		s = s.toUpperCase();
		if(s.equals("ANVIL"))
			return SoundType.ANVIL;
		else if(s.equals("CLOTH"))
			return SoundType.CLOTH;
		else if(s.equals("GLASS"))
			return SoundType.GLASS;
		else if(s.equals("GROUND"))
			return SoundType.GROUND;
		else if(s.equals("LADDER"))
			return SoundType.LADDER;
		else if(s.equals("METAL"))
			return SoundType.METAL;
		else if(s.equals("PLANT"))
			return SoundType.PLANT;
		else if(s.equals("SAND"))
			return SoundType.SAND;
		else if(s.equals("SLIME"))
			return SoundType.SLIME;
		else if(s.equals("SNOW"))
			return SoundType.SNOW;
		else if(s.equals("STONE"))
			return SoundType.STONE;
		else if(s.equals("WOOD"))
			return SoundType.WOOD;
		
		return null;
	}

 

Edited by jredfox
Link to comment
Share on other sites

2 minutes ago, diesieben07 said:

Correct, there is no such registry.

Should I post a pull to forge even if the soundTypes are client only people should have to register them so other mods know what is and isn't there same with Block Materials. I would also say force resource location if it's going to be global since other mods might come up with the same name like "tropical" material

Edited by jredfox
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.



×
×
  • Create New...

Important Information

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