Les choses étranges du code de Minecraft
-
Euh j’étais pas au courant
Envoyé de mon SM-G920F en utilisant Tapatalk
-
Je crois que cette fonctionnalité a un soucis x)
-
protected ModelResourceLocation(int p_i46078_1_, String … p_i46078_2_) { super(0, new String[] {p_i46078_2_[0], p_i46078_2_[1]}); this.variant = StringUtils.isEmpty(p_i46078_2_[2]) ? "normal" : p_i46078_2_[2].toLowerCase(); }Un argument inutile dans le constructeur
-
Regarde que ce soit pas une correction forge
-
C’est à dire ? Comment faire ?
-
Je pensais que c’était un patch forge, mais en fait non, donc c’est Mojang
-
Ma nouvelle découverte concerne le code de forge cette fois-ci, je vous laisse découvrir le code afin de ne pas spoiler :
private static Map<pair<item, integer="">, Class> tileItemMap = Maps.newHashMap(); public static void renderTileItem(Item item, int metadata) { Class tileClass = tileItemMap.get(Pair.of(item, metadata)); if (tileClass != null) { TileEntitySpecialRenderer r = TileEntityRendererDispatcher.instance.getSpecialRendererByClass(tileClass); if (r != null) { r.renderTileEntityAt(null, 0, 0, 0, 0, -1); } } } /** * @deprecated Will be removed as soon as possible, hopefully 1.9. */ @Deprecated public static void registerTESRItemStack(Item item, int metadata, Class TileClass) { tileItemMap.put(Pair.of(item, metadata), TileClass); }Ceci est du code de minecraft 1.10.2, ici nous pouvons voir qu’il faut enregistrer un TESR avec une TileEntity afin de faire le rendu spécial d’un item. Donc si vous voulez faire un rendu spécial, vous devez créer une TileEntity avec rien dedans (de plus vous ne pouvez pas créer une TileEntity pour plusieurs items à rendre car vous n’avez pas l’instance de l’item en paramètre, donc 1 rendu spécial = une tile entity).</pair<item,>
-
Car cette fonction n’est prévu que pour les TESR normalement et non pour les autres items.
-
Oui mais pourquoi ne pas avoir fait un système de rendu spécialement pour les items plutôt que d’utiliser le système pour les blocks ?
-
Pour les items tu es sensé utiliser les jsons.
-
Le problème c’est que je veux créer un bouclier et pour ça minecraft n’utilise pas les jsons, donc je vais utiliser cette méthode à la place
-
Dans net/minecraft/entity/monster, une classe (non de Mojang) quelque peu inutile. Jugez par vous-même :
// Auto generated package-info by MCP @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault package net.minecraft.entity.monster; import mcp.MethodsReturnNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;EDIT : j’ai oublier, il n’est pas avant la 1.10
-
@‘Axaurus’:
Dans net/minecraft/entity/monster, une classe (non de Mojang) quelque peu inutile. Jugez par vous-même :
// Auto generated package-info by MCP @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault package net.minecraft.entity.monster; import mcp.MethodsReturnNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;EDIT : j’ai oublier, il n’est pas avant la 1.10
C’est marqué en commentaire en haut du fichier, ça donne des infos sur les méthodes présentes dans les classes du package ‘net.minecraft.entity.monster’
-
Effectivement ces annotations sont générées automatiquement, en revanche je vois pas l’utilité de les mettre dans la classe vu qu’elles sont déjà dans le package-info
-
Peut-être, mais alors juste peut-être, que ce sont des annotations plutôt destinées à des analyseurs statiques, qui peuvent lever des warnings avant même la compilation si l’analyse montre qu’il y a des null potentiels dans les paramètres ou les valeurs de retours.
-
Non, ce sont des annotations qui indiquent que les paramètres de fonctions ne doivent pas êtres nuls (par défaut). Donc si tu essaies de mettre null dans une fonction ton IDE te dira que c’est pas possible (il me semble que c’est le but)
-
Donc de l’analyse statique

C’est le nom générique des analyseurs qui tentent de faire des vérifications sur un programme au niveau du code source (ça peut aller bien plus loin que ça).
-
@‘Mokona78’:
Peut-être, mais alors juste peut-être, que ce sont des annotations plutôt destinées à des analyseurs statiques, qui peuvent lever des warnings avant même la compilation si l’analyse montre qu’il y a des null potentiels dans les paramètres ou les valeurs de retours.
J’en suis sûr, c’est exactement ça.
-
Dans Particle.java:
public void moveEntity(double x, double y, double z) { double d0 = y; if (this.field_190017_n) { List <axisalignedbb>list = this.worldObj.getCollisionBoxes((Entity)null, this.getEntityBoundingBox().addCoord(x, y, z)); for (AxisAlignedBB axisalignedbb : list) { y = axisalignedbb.calculateYOffset(this.getEntityBoundingBox(), y); } this.setEntityBoundingBox(this.getEntityBoundingBox().offset(0.0D, y, 0.0D)); for (AxisAlignedBB axisalignedbb1 : list) { x = axisalignedbb1.calculateXOffset(this.getEntityBoundingBox(), x); } this.setEntityBoundingBox(this.getEntityBoundingBox().offset(x, 0.0D, 0.0D)); for (AxisAlignedBB axisalignedbb2 : list) { z = axisalignedbb2.calculateZOffset(this.getEntityBoundingBox(), z); } this.setEntityBoundingBox(this.getEntityBoundingBox().offset(0.0D, 0.0D, z)); } else { this.setEntityBoundingBox(this.getEntityBoundingBox().offset(x, y, z)); } this.resetPositionToBB(); this.isCollided = y != y && d0 < 0.0D; if (x != x) { this.motionX = 0.0D; } if (z != z) { this.motionZ = 0.0D; } }this.isCollided = y != y && d0 < 0.0D; if (x != x) { this.motionX = 0.0D; } if (z != z) { this.motionZ = 0.0D; }Celle-là, je l’avais jamais vu!</axisalignedbb>
-
Assez étrange en effet.