Jump to content

[1.8]OverLayer Textures inBlock get and edit a json on the fly ?


perromercenary00

Recommended Posts

good days

this gona be a llittle long

 

well i get done a block whit 2 textures overlayed for each side but thats a childs game

Captura%20de%20pantalla%20de%202015-01-06%2011%3A19%3A45.png?dl=0

 

wath im triying to do is  a block that counts from 0 to 99  folowing the block states / json  logic it means i must create a blockstate definig 100 states representing the counting from 0 - 99  and if i wanna rotate it becomes 600 states but there is only rom for 16 states so this plan is dead before start

 

well i spend the last nigth playing whit jsons reading things in internet  there is like 3 apis thath allow you to load a json file edit it and saved the changes to json again

.jum load a esternal api and add it to a minecraft mod ñaaaa i prefer to do use stream reader and java nio and do something just to the  size of mi needs

 

ñaa beter explain mi idea before it gets more messy,

in the code for the texture overlayed well is just two perfects cubes one a little bit more big than the other,the two are  defined in a parental cube_layer0_parental.json  andd is called from mi blockeprueba.json where i define every texture to load

 

lets say i do the 3 perfects cubes each one a little bit bigger than the last, the first  the inner holds the yellow background texture

the second is for display the units in the count and the thirth is for the tens in the count

 

soo is something like BlockState blockeprueba.json  > blockmodel blockeprueba.json > parental cube_layer0_parental.json

 

in blockeprueba.json  just define for textures just the backgrond an numbers from 0 -9 and

 

so i wanna do something like create mi own class to load text files a edit it using imput string and java nio or something like to do

 

//JsonObject b = new JsonObject("modmercenario:block/cube_layer0_parental");

miclasse b = new miclasse("modmercenario:block/cube_layer0_parental");

 

then change the value from the second north face from

"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#north" },

to

"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#number0" },

 

saved the file and force somehow minecraft to reload cube_layer0_parental to display in game the change

this part is wath i dont like the accion of reading and writing text files looks like it gonna demand a good piece of resources 

 

soo i  sit and think again, minecraft uses jsons so it must have its own methods to read and likely to edit and change,

minecraft just load jsons at the beginig soo it you minecraft runing and change something in the jsons files it dont get the changes until you close and fireup again soo it must load the jsons values somewhere in the memory and maiby there is alredy some class allowing to change this values in memory on the fly whithout having to restart minecraft

for wath i tested minecraft it using

 

import com.google.gson.JsonArray;

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonPrimitive;

import com.google.gson.JsonSyntaxException;

 

i gets this from the errors it shows wen dont find a json file or json has errors

 

well this wen get stuck

the class JsonObject.class define methods to read and writte values in a json but dont get how to set whath json gonna read or write values

 

there is this class reosuce locations wo aparently is the on in charge of load the jsons in the models folder

but dont get it alwais return the name of the json dont matters if exist or not

example "modmercenario:gato" dont exist but anyway it returns "gato in the exit " 

 

 

 

    ResourceLocation jsona = new ResourceLocation("modmercenario:cube_top");

    System.out.println("####a="+jsona.getResourcePath());

 

   

    ResourceLocation jsonb = new ResourceLocation("modmercenario:blockePrueba");

    System.out.println("####b="+jsonb.getResourcePath());

 

    ResourceLocation jsonc = new ResourceLocation("modmercenario:test/gato");

    System.out.println("####c="+jsonc.getResourcePath());

   

    ResourceLocation jsond = new ResourceLocation("modmercenario:gato");

    System.out.println("####d="+jsond.getResourcePath());

   

go back to the teory

well wath  i need is a method to return a list of the jsons models minecraft has loaded on the start

a method to return the values of an specific json to string to knows whats inside

 

realize how to use JsonObject to edit this jsons on fly and make minecraft load this change on the fly in the world

 

 

 

 

this is code from the overlayed block

 

main class

 

blockePrueba.class

package mercenarymod.blocks.pruebas;

import java.util.Random;

import mercenarymod.Mercenary;
import mercenarymod.blocks.MercenaryModBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.resources.FallbackResourceManager;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraft.util.JsonUtils;

import com.google.gson.JsonObject;

import net.minecraft.util.ResourceLocation;


public class blockePrueba extends Block
{
    public static String name = "blockeprueba";
  //###########################################################3
    public blockePrueba()
    {
    	super(Material.rock);
        setUnlocalizedName(Mercenary.MODID + "_" + name);
        GameRegistry.registerBlock(this, name);
        setCreativeTab(Mercenary.herramientas);
        //this.maxStackSize = 1;
    }

  //###########################################################3  
    public Item getItemDropped(IBlockState state, Random rand, int fortune)
    {
        return Item.getItemFromBlock(MercenaryModBlocks.blockePrueba);
    }
  //###########################################################3  
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ)
    {
    	
    	//"modmercenario:blockePrueba"
    	
    	ResourceLocation jsona = new ResourceLocation("modmercenario:cube_top");
    	System.out.println("####a="+jsona.getResourcePath());

    	
    	ResourceLocation jsonb = new ResourceLocation("modmercenario:blockePrueba");
    	System.out.println("####b="+jsonb.getResourcePath());

    	ResourceLocation jsonc = new ResourceLocation("modmercenario:test/gato");
    	System.out.println("####c="+jsonc.getResourcePath());
    	
    	ResourceLocation jsond = new ResourceLocation("modmercenario:gato");
    	System.out.println("####d="+jsond.getResourcePath());
    	
    	
    	JsonObject b = new JsonObject();
    	
    	
    return false;}
    
  //###########################################################3
    
    
    public boolean isOpaqueCube()
    {
        return false;
    }
    
    
    public boolean translucent()
    {
        return true;
    }
    
    public int lightValue()
    {
        return 1;
    }
    
    public boolean fullBlock()
    {
        return false;
    }
    
    @SideOnly(Side.CLIENT)
    public EnumWorldBlockLayer getBlockLayer()
    {
        //return EnumWorldBlockLayer.CUTOUT;
        
        return EnumWorldBlockLayer.TRANSLUCENT;
        
    }
        
}

 

BlockState

blockeprueba.json

{
    "variants": {
        "normal": { "model": "modmercenario:blockePrueba" }
    }
}

 

model block json

blockePrueba.json

{
    "parent":  "modmercenario:block/cube_layer0_parental",

    "textures": {
        "all": "modmercenario:blocks/charcoal",

"down":  "modmercenario:blocks/metablockes/metablockemercenario18",
"up":    "modmercenario:blocks/metablockes/metablockemercenario19",
"north": "modmercenario:blocks/metablockes/metablockemercenario20",
"south": "modmercenario:blocks/metablockes/metablockemercenario21",
"west":  "modmercenario:blocks/metablockes/metablockemercenario22",
"east":  "modmercenario:blocks/metablockes/metablockemercenario23",

"down0": "modmercenario:items/hachas/hacha_acero_diamante",
"up0":   "modmercenario:items/hachas/hacha_acero_esmeralda",
"north0":"modmercenario:items/hachas/hacha_acero_redstone",
"south0":"modmercenario:items/palas/pala_madera_nokia",
"west0": "modmercenario:items/palas/pala_madera_obsidiana",
"east0": "modmercenario:items/palas/pala_madera_oro"



    }
}

 

paretal whit the two cubes

cube_layer0_parental.json

{
    "elements": [
        {   "from": [0.1, 0.1, 0.1 ],
            "to": [15.9, 15.9, 15.9 ],
            "faces": {

	"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#north" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#south" },
	"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#west" },
                "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#east" },
	"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#up" },
                "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#down" }

              
            }
        },

{   "from": [ 0, 0, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
               "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#north0" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#south0" },
	"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#west0" },
                "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#east0" },
	"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#up0" },
                "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#down0" }
            }
        }

    ]
}

 

 

well at this point i have this bunch of theories it i could get this in order it will grant the posibility to make more complex animated blocks and items, using code to get over the 16 metastates limit and for why not do animations muve using sen cos in the code


 

 

 

 

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

    • The mod has improved a lot from yesterday just 1 last issue  Here's the crash report- https://pastebin.com/k2A1BAKn   Please help, Thanks.
    • Take Your Gaming Experience to the Next Level with These Essential Tools   If you're a Minecraft enthusiast, you've likely experienced the need to customize your world and server to make it more exciting and challenging. Fortunately, there's a perfect solution for you: https://menzatyx.xyz, the website that offers a wide selection of free and pre-configured Minecraft plugins. At https://menzatyx.xyz, you'll find a diverse range of plugins that will allow you to take your gaming experience to the next level. From server management tools to mods that add new functionalities, each of these plugins has been carefully selected and configured, so you can enjoy a more personalized and thrilling Minecraft experience. One of the primary benefits of using these pre-configured plugins is the ease of implementation. You no longer have to spend hours configuring and adjusting each individual plugin. Simply download the package that best suits your needs, and you're good to go! You'll be able to enjoy all the features and improvements without investing too much time and effort. From plugins that enhance the security of your server to mods that add new game modes, the variety offered by https://menzatyx.xyz is impressive. Moreover, as these are free plugins, you can access these tools without spending a single penny. It's the perfect opportunity to take your Minecraft experience to the next level without affecting your wallet! Whether you're a casual player or an experienced server administrator, at https://menzatyx.xyz you'll find the Minecraft plugins you need to personalize and enhance your game. Visit the website now and discover how you can transform your Minecraft world into something unique and thrilling!
    • Meaning I need to restart the server and redownload cobblemon?
    • Crash with the error: The game crashed whilst exception ticking world Error: java.util.ConcurrentModificationException pastebin crashlog the game worked for like 24h, then started to receive this error. Things I've tried: removing optifine or other performace mods. tried different versions (older) of the pack. set true to remove error entities and tiles in forge.cfg asked for help on the sevtech github, they said its fixed in the latest sevpatches mod, i updated that mod and its not. I've tried updating multiple mods with no result. tried a different pc and still crashed happened only one time on another map although i cant make it happen again on that map.
    • no this one https://pastebin.com/5uMxHeWf
  • Topics

×
×
  • Create New...

Important Information

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