Zoom arc
-
Après quelques recherches, j’ai trouvé l’endroit qui pose problème : EntityPlayerSP:329 (si le numéro de ligne est le même sur ta version). Afin de modifier ça, créer un event handler pour intercepter l’event FOVUpdateEvent pour modifier la valeur en fonction du temps d’utilisation de ton item
-
Heu …. Quoi ? ^^ Je ne suis qu’un débutant tu peux développer s’il te plaît ?
Créer un event jusque là ça va mais après j’ai pas compris ^^ -
Pour savoir comment utiliser les events : https://www.minecraftforgefrance.fr/showthread.php?tid=716
Tu dois utiliser l’event FOVUpdateEvent afin de modifier le FOV du joueur.
-
@‘ErkoZ’:
Je ne veux pas passer en 1.7.10 car les skins cauldron 1.7.10 sont bugués
Les skins fonctionnent en 1.7.10.
Si ce n’est pas le cas c’est parce que ton serveur est en mode offline. Ce qui n’est pas bien du tout. -
@SubscribeEvent public void onTooltip(FOVUpdateEvent event) { float f = 1.0F; if(event.entity.isUsingItem() && event.entity.getItemInUse().getItem() == mod.emerald_bow) { int i = event.entity.getItemInUseDuration(); float f1 = (float)i / 20.0F; if (f1 > 1.0F) { f1 = 1.0F; } else { f1 *= f1; } f *= 1.0F - f1 * 0.15F; } } }J’ai fait un truc comme ça mais ça ne marche pas… Comprend pas

-
As-tu enregistré l’event ?
Pourquoi avoir appelé ta fonction onTooltip ?
Ici tu ne fais que des calculs sans jamais spécifié la valeur retournée, regarde les fonctions disponibles -
onToolTIp car à la base c’est un copié collé du tuto de Robin mais je vais changer et oui j’ai enregistré l’event.
J’ai fait un truc qui ressemble à ça, j’ai copié du code du fov de l’arc de Minecraft mais il crash:
@SubscribeEvent public float onUseBow(FOVUpdateEvent event) { float f = 1.0F; if (event.entity.capabilities.isFlying) { f *= 1.1F; } IAttributeInstance iattributeinstance = event.entity.getEntityAttribute(SharedMonsterAttributes.movementSpeed); f = (float)((double)f * ((iattributeinstance.getAttributeValue() / (double)event.entity.capabilities.getWalkSpeed() + 1.0D) / 2.0D)); if (event.entity.capabilities.getWalkSpeed() == 0.0F || Float.isNaN(f) || Float.isInfinite(f)) { f = 1.0F; } if (event.entity.isUsingItem() && event.entity.getItemInUse().getItem() == Items.bow) { int i = event.entity.getItemInUseDuration(); float f1 = (float)i / 20.0F; if (f1 > 1.0F) { f1 = 1.0F; } else { f1 *= f1; } f *= 1.0F - f1 * 0.15F; } return ForgeHooksClient.getOffsetFOV(event.entity, f); } -
Les fonctions d’event doit être des void.
-
Mais si je met void le return ne fonctionne pas alors comment je pourrais faire ?
-
Remplaces
return ForgeHooksClient.getOffsetFOV(event.entity, f);
par
event.newfov = f; -
@‘robin4002’:
Remplaces
return ForgeHooksClient.getOffsetFOV(event.entity, f);
par
event.newfov = f;Merci ça marche !