Texture thirst mod
-
Bonjour je vien de import les code source de thirst mod dans mon mod forge je voudrait cree un bouteille d eau avec mes texture pas ce de thirst mod car ses les bouteille normal alor j ai cree un item drink mais je sais pas comment faire pour mettre un textrue
code de la classe ItemDrink
package com.thetorine.thirstmod.core.content; import java.util.List; import java.util.Random; import com.thetorine.thirstmod.core.client.player.ClientStats; import com.thetorine.thirstmod.core.main.ThirstMod; import com.thetorine.thirstmod.core.player.PlayerContainer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class ItemDrink extends Item { public int itemColour; public int itemStackSize; public boolean specialEffect; public boolean alwaysDrinkable; public Item returnItem = Items.glass_bottle; public ItemStack recipeItem; private IIcon drinkable; private IIcon overlay; public int thirstHeal; public float saturationHeal; public float poisonChance; public boolean curesPotion; public int hungerHeal; public float hungerSatHeal; public int potionID; public int duration; public ItemDrink(int thirst, float saturation, int colour, int stacksize, boolean effect, boolean drinkable, String name) { this.thirstHeal = thirst; this.saturationHeal = saturation; this.itemColour = colour; this.specialEffect = effect; this.alwaysDrinkable = drinkable; this.setUnlocalizedName(name); this.setCreativeTab(ThirstMod.thirstCreativeTab); this.setMaxStackSize(stacksize); } @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if(canDrink(player) || alwaysDrinkable || player.capabilities.isCreativeMode) { player.setItemInUse(stack, getMaxItemUseDuration(stack)); } return stack; } @Override public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) { if(!world.isRemote) { stack.stackSize–; PlayerContainer playerContainer = PlayerContainer.getPlayer(player); playerContainer.addStats(thirstHeal, saturationHeal); if (poisonChance > 0 && ThirstMod.config.POISON_ON) { Random rand = new Random(); if (rand.nextFloat() < poisonChance) { playerContainer.getStats().poisonLogic.poisonPlayer(); } } if (curesPotion) { player.curePotionEffects(new ItemStack(Items.milk_bucket)); } if (hungerHeal > 0 && hungerSatHeal > 0) { player.getFoodStats().addStats(hungerHeal, hungerSatHeal); } if (potionID > 0) { player.addPotionEffect(new PotionEffect(potionID, duration * 20, 1)); } player.inventory.addItemStackToInventory(new ItemStack(returnItem)); } return stack; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advancedItemTooltip) { super.addInformation(stack, player, list, advancedItemTooltip); float f = Float.parseFloat(Integer.toString(thirstHeal)) / 2; String s2 = Float.toString(f); list.add("Heals " + (s2.endsWith(".0") ? s2.replace(".0", "") : s2) + " Droplets"); if(recipeItem != null) { list.add("Ingredient: " + recipeItem.getDisplayName()); } } @Override public boolean hasEffect(ItemStack par1ItemStack, int pass) { if(pass == 0) return specialEffect; return false; } @Override public EnumAction getItemUseAction(ItemStack itemstack) { return EnumAction.drink; } @Override public IIcon getIconFromDamageForRenderPass(int damageValue, int currentPass) { return currentPass == 0 ? this.overlay : this.drinkable; } @Override @SideOnly(Side.CLIENT) public boolean requiresMultipleRenderPasses() { return true; } @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack stack, int currentPass) { return currentPass > 0 ? 16777215 : itemColour; } @SideOnly(Side.CLIENT) @Override public void registerIcons(IIconRegister par1IconRegister) { this.drinkable = par1IconRegister.registerIcon("potion_bottle_drinkable"); this.overlay = par1IconRegister.registerIcon("potion_overlay"); } @Override public int getMaxItemUseDuration(ItemStack stack) { return 32; } public ItemDrink setPotionEffect(int i, int j) { potionID = i; duration = j; return this; } public ItemDrink setPoisoningChance(float chance) { poisonChance = chance; return this; } public ItemDrink healFood(int level, float saturation) { hungerHeal = level; hungerSatHeal = saturation; return this; } public ItemDrink setReturn(Item item) { returnItem = item; return this; } public ItemDrink setCuresPotions(boolean b) { curesPotion = b; return this; } public ItemDrink setRecipeItem(Item i) { recipeItem = new ItemStack(i); return this; } public boolean canDrink(EntityPlayer player) { if(!player.worldObj.isRemote) { return PlayerContainer.getPlayer(player).getStats().thirstLevel < 20; } else { return ClientStats.getInstance().level < 20; } } }
code de l item
eaux = new ItemDrink(7, 2f, 0x11DEF5, Constants.DRINKS_STACKSIZE, false, false, "eaux");
-
Déja un truc : Tu peux faire une sorte de coremod pour thirst sans a import les sources tu passe ton mod dans BON je ne connais plus l’exact nom
Et tu l’ajoute path et tu a juste a faire thirstmod…. … … et voila (je pense que ça peut marcher pas sur sur mais ça marche pour Arthania j’évite de passer des sources comme ça donc je passe le jar xD)
[font=monospace eaux ][font=monospace=] [font=monospacenew] [font=monospaceItemDrink][font=monospace(][font=monospace7][font=monospace,] [font=monospace2f][font=monospace,] [font=monospace0x11DEF5][font=monospace,] [font=monospaceConstants][font=monospace.][font=monospaceDRINKS_STACKSIZE][font=monospace,] [font=monospacefalse][font=monospace,] [font=monospacefalse][font=monospace,] [font=monospace“eaux”][font=monospace).settexturename(“…”) non ?
J’ai rien dis :
]- this.drinkable = par1IconRegister.registerIcon(“potion_bottle_drinkable”);
- this.overlay = par1IconRegister.registerIcon(“potion_overlay”);
Voila la ligne je crois bien
-
oui mais meme si je rejoute .settexturename sa marche pas est avec les 2 ligne je fait quoi jer les edit en sa
[font=Ubuntu, sans-serifthis][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifdrinkable ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif“havenrp:eaux]”[font=Ubuntu, sans-serif);]
[font=Ubuntu, sans-serifthis][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifoverlay ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif“havenrp:eaux”][font=Ubuntu, sans-serif);]___up please -
Il faut 24h entre deux messages
-
ok mais il me faudrait de l aide a plus vite
-
@‘impuuu’:
oui mais meme si je rejoute .settexturename sa marche pas est avec les 2 ligne je fait quoi jer les edit en sa
[font=Ubuntu, sans-serifthis][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifdrinkable ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif“havenrp:eaux]”[font=Ubuntu, sans-serif);]
[font=Ubuntu, sans-serifthis][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifoverlay ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif“havenrp:eaux”][font=Ubuntu, sans-serif);]
up please
Et où est le problème ?
-
robin probléme je croit que que thirst mod prend le bottle de minecraft est le color est moi je veut que je puise mettre des texture
-
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int currentPass) {
return currentPass > 0 ? 16777215 : itemColour;
}Tu as juste à enlever cette fonction si tu veux retirer l’effet de couleur.
-
oui si je retire sa donc pour la texture j ai juste a mettre .settexturename puisque je veut mettre mes texture
-
alor je fait comment pour que il y a une texture est que sa garde pas celle de
minecraft -
Tu changes les valeurs dans la fonction registerIcons
-
je mes sa
[font=Ubuntu, sans-serif**this**][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifdrinkable ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif"havenrp:eaux"][font=Ubuntu, sans-serif);] [font=Ubuntu, sans-serif**this**][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifoverlay ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif"havenrp:eaux"][font=Ubuntu, sans-serif);]
-
exemple:
1. @SideOnly(Side.CLIENT) 2. @Override 3. **public** **void** registerIcons(IIconRegister par1IconRegister) { 4. **this**.drinkable = par1IconRegister.registerIcon(HavenRP.MODID+""+unlocalizedname); 5. **this**.overlay = par1IconRegister.registerIcon([color=#666600HavenRP.MODID+][font=monospace""+unlocalizedname]); 6. }
-
@‘impuuu’:
je mes sa
[font=Ubuntu, sans-serif**this**][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifdrinkable ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif"havenrp:eaux"][font=Ubuntu, sans-serif);] [font=Ubuntu, sans-serif**this**][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifoverlay ][font=Ubuntu, sans-serif=][font=Ubuntu, sans-serif par1IconRegister][font=Ubuntu, sans-serif.][font=Ubuntu, sans-serifregisterIcon][font=Ubuntu, sans-serif(][font=Ubuntu, sans-serif"havenrp:eaux"][font=Ubuntu, sans-serif);]
Oui.
ça ne fonctionne pas ? -
Oui mais je vais mettre le unlocalized name en gros je supprime l event que tu a donné avant puis changer les 2 this
-
oui mais je veut plusieur item pas que 1seul
-
en gros j ai pas que 1 seul bouteille j en ai une dizaine a fait donc si je mais comme tu fait voir sa me mettrait une texture pour tous
-
Dans ce cas retires :
private IIcon drinkable;
private IIcon overlay;
et
@Override
public IIcon getIconFromDamageForRenderPass(int damageValue, int currentPass) {
return currentPass == 0 ? this.overlay : this.drinkable;
}
et@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister par1IconRegister) {
this.drinkable = par1IconRegister.registerIcon(“potion_bottle_drinkable”);
this.overlay = par1IconRegister.registerIcon(“potion_overlay”);
} -
sa donne sa
package com.thetorine.thirstmod.core.content; import java.util.List; import java.util.Random; import com.thetorine.thirstmod.core.client.player.ClientStats; import com.thetorine.thirstmod.core.main.ThirstMod; import com.thetorine.thirstmod.core.player.PlayerContainer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class ItemDrink extends Item { public int itemColour; public int itemStackSize; public boolean specialEffect; public boolean alwaysDrinkable; public Item returnItem = Items.glass_bottle; public ItemStack recipeItem; public int thirstHeal; public float saturationHeal; public float poisonChance; public boolean curesPotion; public int hungerHeal; public float hungerSatHeal; public int potionID; public int duration; public ItemDrink(int thirst, float saturation, int stacksize, boolean effect, boolean drinkable, String name) { this.thirstHeal = thirst; this.saturationHeal = saturation; this.specialEffect = effect; this.alwaysDrinkable = drinkable; this.setUnlocalizedName(name); this.setCreativeTab(ThirstMod.thirstCreativeTab); this.setMaxStackSize(stacksize); } @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if(canDrink(player) || alwaysDrinkable || player.capabilities.isCreativeMode) { player.setItemInUse(stack, getMaxItemUseDuration(stack)); } return stack; } @Override public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) { if(!world.isRemote) { stack.stackSize–; PlayerContainer playerContainer = PlayerContainer.getPlayer(player); playerContainer.addStats(thirstHeal, saturationHeal); if (poisonChance > 0 && ThirstMod.config.POISON_ON) { Random rand = new Random(); if (rand.nextFloat() < poisonChance) { playerContainer.getStats().poisonLogic.poisonPlayer(); } } if (curesPotion) { player.curePotionEffects(new ItemStack(Items.milk_bucket)); } if (hungerHeal > 0 && hungerSatHeal > 0) { player.getFoodStats().addStats(hungerHeal, hungerSatHeal); } if (potionID > 0) { player.addPotionEffect(new PotionEffect(potionID, duration * 20, 1)); } player.inventory.addItemStackToInventory(new ItemStack(returnItem)); } return stack; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advancedItemTooltip) { super.addInformation(stack, player, list, advancedItemTooltip); float f = Float.parseFloat(Integer.toString(thirstHeal)) / 2; String s2 = Float.toString(f); list.add("Heals " + (s2.endsWith(".0") ? s2.replace(".0", "") : s2) + " Droplets"); if(recipeItem != null) { list.add("Ingredient: " + recipeItem.getDisplayName()); } } @Override public boolean hasEffect(ItemStack par1ItemStack, int pass) { if(pass == 0) return specialEffect; return false; } @Override public EnumAction getItemUseAction(ItemStack itemstack) { return EnumAction.drink; } @Override @SideOnly(Side.CLIENT) public boolean requiresMultipleRenderPasses() { return true; } @Override public int getMaxItemUseDuration(ItemStack stack) { return 32; } public ItemDrink setPotionEffect(int i, int j) { potionID = i; duration = j; return this; } public ItemDrink setPoisoningChance(float chance) { poisonChance = chance; return this; } public ItemDrink healFood(int level, float saturation) { hungerHeal = level; hungerSatHeal = saturation; return this; } public ItemDrink setReturn(Item item) { returnItem = item; return this; } public ItemDrink setCuresPotions(boolean b) { curesPotion = b; return this; } public ItemDrink setRecipeItem(Item i) { recipeItem = new ItemStack(i); return this; } public boolean canDrink(EntityPlayer player) { if(!player.worldObj.isRemote) { return PlayerContainer.getPlayer(player).getStats().thirstLevel < 20; } else { return ClientStats.getInstance().level < 20; } } }
-
Oui et donc tu as juste à mettre le .setTextureName dans la déclaration de l’item.