2017-04-29 1 views
2

J'essaie d'ajouter une texture à un élément que j'ai, et cela ne se charge pas dans Minecraft. Voici ma classe mod de base: package com.gandiber.thegalaxymod;La forge de Minecraft ne charge pas la texture de l'article 1.10.2

import net.minecraft.client.Minecraft; 
import net.minecraft.client.renderer.RenderItem; 
import net.minecraft.client.renderer.block.model.ModelResourceLocation; 
import net.minecraft.init.Blocks; 
import net.minecraft.init.Items; 
import net.minecraft.item.Item; 
import net.minecraft.item.Item.ToolMaterial; 
import net.minecraft.item.ItemStack; 
import net.minecraft.item.ItemSword; 
import net.minecraftforge.fml.common.Mod; 
import net.minecraftforge.fml.common.Mod.EventHandler; 
import net.minecraftforge.fml.common.SidedProxy; 
import net.minecraftforge.fml.common.event.FMLInitializationEvent; 
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; 
import net.minecraftforge.fml.common.registry.GameRegistry; 
import net.minecraftforge.fml.relauncher.Side; 
import net.minecraftforge.common.util.EnumHelper; 

@Mod(modid = TheGalaxyMod.MODID, version = TheGalaxyMod.VERSION) 
public class TheGalaxyMod { 
    public static final String MODID = "gandiber_thegalaxymod"; 
    public static final String VERSION = "1.0"; 
    public static ItemSword GalaxiumSword; 
    public static ToolMaterial galaxium = EnumHelper.addToolMaterial("galaxium", 3, 4000, 15F, 38.0F, 22); 

    @SidedProxy(serverSide = "com.gandiber.thegalaxymod.CommonProxy", clientSide = "com.gandiber.thegalaxymod.ClientProxy") 
    public static CommonProxy proxy; 

    @EventHandler 
    public void init(FMLInitializationEvent event) { 
     //Weapons 
      GameRegistry.register(GalaxiumSword = new ItemGalaxySword(galaxium, "diamondswordcompressed")); 

     // some example code 
    GameRegistry.addRecipe(new ItemStack(Items.DIAMOND), 
      "XXX", 
      "XXX", 
      "XXX", 
      'X', Items.GOLD_INGOT); 
    } 
} 

Ma commune classe proxy:

package com.gandiber.thegalaxymod; 

import net.minecraft.item.Item; 

public class CommonProxy { 
    public void registerItemRenderer(Item item, int meta, String id) { 

    } 
} 

Mon client classe Proxy:

package com.gandiber.thegalaxymod; 

import net.minecraft.client.renderer.block.model.ModelResourceLocation; 
import net.minecraft.item.Item; 
import net.minecraftforge.client.model.ModelLoader; 

public class ClientProxy extends CommonProxy { 
    @Override 
    public void registerItemRenderer(Item item, int meta, String id) { 
     ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(TheGalaxyMod.MODID + ":" + id, "inventory")); 
    } 
} 

Voici la classe d'élément de l'épée réelle:

package com.gandiber.thegalaxymod; 

import net.minecraft.item.Item; 
import net.minecraft.item.ItemSword; 
import net.minecraftforge.fml.common.registry.GameRegistry; 
import thegalaxymod.tutorial.item.ItemModelProvider; 

public class ItemGalaxySword extends ItemSword implements ItemModelProvider { 
private String name; 
    public ItemGalaxySword(ToolMaterial material, String name) { 
     super(material); 
     setUnlocalizedName(name); 
     setRegistryName(name); 
    } 

    @Override 
    public void registerItemModel(Item item) { 
     TheGalaxyMod.proxy.registerItemRenderer(this, 0, name); 
    } 
} 

Voici de l'article Fichier du modèle json:

{ 
    "parent": "item/generated", 
    "textures": { 
     "layer0": "gandiber_thegalaxymod:items/diamondswordcompressed" 
    }, 
    "display":{ 
     "thirdperson":{ 
      "rotation":[-90, 0, 0], 
      "translation":[0, 1, -3], 
      "scale":[0.55,0.55,0.55] 
     }, 
     "firstperson":{ 
      "rotation":[0,-135,25], 
      "translation":[0,4,2], 
     "scale":[1.7,1.7,1.7] 
     } 
    } 
} 

est ici la chose la classe de rendu qui ne fondamentalement rien:

package thegalaxymod.tutorial.item; 

import net.minecraft.item.Item; 

public interface ItemModelProvider { 
    void registerItemModel(Item item); 
} 

Et enfin voici le PNG réelle: J'espère que vous pouvez télécharger ce. Si non, dites-moi s'il vous plaît!

Ma structure du dossier:

JSON: C: \ Users \ myusername \ Documents \ Mods \ Auto-Bow \ src \ ressources \ principales \ actifs \ gandiber_thegalaxymod \ modèles \ item \ diamondswordcompressed.json

fichier PNG: C: \ Users \ myusername \ Documents \ Mods \ Auto-Bow \ src \ \ \ ressources principales actifs \ gandiber_thegalaxymod \ textures \ objets \ diamondswordcompressed.json

choses que j'ai essayé:

  • Suppression de la seconde partie du fichier json de sorte que seul "layer0" soit présent.
  • Suppression de l'argument "inventory" dans la méthode setCustomModelResourceLocation.

Aussi, si cela est utile à tout le monde est ici mon fichier FML-client-latest.log: (Pastebin)

+0

Quelle est la version mc? –

+0

C'est 1.10.2, je vais l'ajouter au titre. Merci! – TheMCProgrammer

+0

Oh ... Désolé mec, je ne peux que travailler avec 1.8.9:/Je voudrais pouvoir aider ... :( –

Répondre

0

J'ai compris le problème. Bien sûr, avec ma chance, j'ai passé 3 heures à déboguer le problème et j'ai trouvé la réponse dans les 10 minutes qui ont suivi la pose de la question.

Il y avait deux problèmes:

  1. Comme l'a dit BdoubleB97, dans mon « ItemGalaxySword » classe, j'ai oublié d'affecter la valeur du paramètre « name » à la variable globale « nom ». C'était le petit problème.

  2. L'autre problème était que la méthode "registerItemModel" n'était jamais appelée.J'ai effectivement fait une méthode différente dans ItemGalaxySword appelée initmodel qui accomplit la même chose, mais maintenant j'ai une méthode dans TheGalaxyMod qui appelle la méthode initmodel de toutes mes classes, et finalement, le proxy client appelle cette méthode. Ce code devrait effacer cela un peu:

EDIT: Code postal sera plus tard aujourd'hui, a manqué de temps.

+1

Ok, vous faites référence au ModelLoader dans votre proxy client Beaucoup de gens placent cet appel dans leur classe d'élément, ce qui est un non-non. name ('getRegistryName()') pour le nom non localisé et l'enregistrement du modèle de l'article Jetez un oeil à [mon registre] (https://github.com/Draco18s/ReasonableRealism/blob/master/src/main/java/ com/draco18s/hardlib/EasyRegistry.java) [classes] (https://github.com/Draco18s/ReasonableRealism/blob/master/src/main/java/com/draco18s/hardlib/client/ClientEasyRegistry.java) (il existe sont deux liens là-bas). – Draco18s

1

Dans votre ItemGalaxySword classe que vous ne définissez l'instance variable name. Vous devez ajouter this.name = name au constructeur.

+0

C'est vrai, mais ce n'est qu'une partie du problème. – TheMCProgrammer