Bienvenue sur le PatchNote du samedi 1 mai 2021.
Ce samedi 1 mai, Paladium a effectué une mise à jour axée sur des corrections de bugs ainsi qu'une légère modification de la mise à jour Pillage.
Trade
Vous n'êtes pas sans savoir que lors de la dernière maintenance le /trade
a été ajouté aux personnes possédant un grade sur Paladium.
Cependant, certains bugs étaient encore présents :
- Lors de l'annulation d'un échange en quittant le menu ou en se déconnectant, les items n'étaient pas bien redonnés aux joueurs participant à l'échange. Ceux-ci étaient jetés au sol, cela représentait donc un réel souci pour les joueurs réalisant un trade dans le spawn. Désormais, les items seront ajoutés dans l'inventaire si le joueur possède possède suffisamment de place et sinon seront jetés au sol.
/* lors de l'annulation */
public void cancel() {
...
/* si l'on ne peut pas ajouter l'item à l'inventaire du joueur */
if (!left.inventory.addItemStackToInventory(s)) {
/* drop un item avec les paramètres : joueur, x, y, z, item */
PlayerUtils.dropItemStack(left, left.posX, left.posY, left.posZ, s);
}
}
- Le trade contient un
autocancel
, c'est-à-dire que lorsqu'un joueur modifie le contenu de l'échange que l'autre joueur a validé, cela annule la validation pour éviter les arnaques. Cependant, nous avions oublié de prendre en compte les champs d'argent et d'exp. Cela a donc laissé place à quelques arnaques mais cela est désormais réglé.
Lors de l'envoi du packet (informations) au serveur lorsque l'on modifie notre état dans le trade CSButtonStateChanged.java
une vérification de modification d'exp et de l'argent a été ajoutée.
if (tradeHasAccepted()) {
setTradeHasAccepted(false);
refresh();
}
Ce code permet, si une modification est faite alors qu’une partie du trade a validé l'échange, d’indiquer que la validation est annulée et de rafraichir le menu des deux participants.
Bug sous la bedrock
Différents bugs avaient lieu sous la bedrock. Ceux-ci permettaient notamment de rentrer dans des bases en passant par le vide (void) et d'utiliser certaines commandes pour pouvoir se retrouver dans une base. Les différentes mécaniques/bugs connus par notre équipe ont donc été corrigés. En voici la liste :
- HangGlider sous la bedrock
- Slimy Helmet sous la bedrock
- Commandes de téléportation sous la bedrock (/tpa /tpaccept /tpahere /unsafetp) [liste non exhaustive]
Pour désactiver ces différentes mécaniques, l'ajout d'une simple condition en java a été suffisant.
if(player.posY < 0) {
//annule
return;
}
En effet, la condition est de vérifier si lors de l'utilisation de la mécanique visée le joueur se trouve en position Y inférieure à la couche 0. Si c'est le cas, alors la mécanique est annulée.
Boom Obsidienne
La Boom Obsidienne faisait des dégâts même dans des endroits où le joueur ne pouvait pas prendre de dégâts (exemple zone protégées ou serveur minage).
Cela était dû à une erreur de développement, le code effectuant une modification directe de la vie du joueur.
/* Définit la vie du joueur à sa vie -4 demi-coeurs (donc 2 coeurs) */
player.setHealth(player.getHealth - 4f);
Dorénavant, le code applique une attaque au joueur, permettant ainsi au jeu de vérifier s’il doit bien prendre des dégâts ou non.
/* Attaque le joueur de 4 demi-coeurs avec un type de dégât générique */
player.attackEntityFrom(DamageSource.generic, 4f);
Cela devrait régler ces différents soucis (PS: même en /god le staff prenait des dégâts 🚨)
Table d'enchantement moddée
Lorsque vous mettiez un item dans la table d'enchantement moddée, peu importe votre item la table vous proposait tous les enchantements possibles.
Désormais celle-ci se basera sur le type de l'item déposé afin de ne vous proposer que ceux disponibles et fonctionnels sur l'item.
/* lorsque l'on récupère la liste des enchantements avec un item */
public static Map<Enchantment, String> getEnchants(Item item) {
Map<Enchantment, String> ench = new HashMap<>();
/* On parcourt la liste des enchantements qui existe */
for (Enchantment enchantment : enchants.keySet()) {
/* Si l'enchantement peut être appliqué sur l'item en question */
if (enchantment.type.canEnchantItem(item)) {
/* On accepte l'enchantement */
ench.put(enchantment, enchants.get(enchantment));
}
}
/* On renvoie la liste des enchantements acceptés */
return ench;
}
La table d'enchantement ne vous montrera donc plus que les enchantements disponibles, cela devrait vous faire gagner du temps.
Cobble Breaker
Récemment le shift click a été ajouté dans l'interface du Cobble Breaker, mais cet ajout a donné lieu à certains bugs notamment celui concernant la récupération d'expérience pour le métier de Mineur.
Dans certains cas particuliers, l'expérience donnée au joueur ne correspondait pas à la somme des particules récupérées.
Nous ne rentrerons pas dans les détails techniques de ce bug car il relève du code de Minecraft mais il est désormais résolu.
Réparation de la LuckySword
Contrairement à ce qui était prévu, il était impossible de réparer la LuckySword (palier 100 du LuckyStats) dans une enclume avec des LuckyBlock.
Il s’agissait juste d’un oubli des développeurs, le code a été ajouté et fonctionne désormais sur le serveur en espérant que certains d'entre vous la possède bientôt ! 🎉
HitBox
Il semblerait que les mobs du métier de Hunter ait une hitbox trop faible pour certains… Nous n'avons pas été radins et avons augmenté de 0,2 bloc l’intégralité des hitbox des animaux aussi bien en largeur qu’en longueur et en hauteur !
public class MyEntity {
setSize(size + 0.2, size + 0.2, size + 0.2);
}
Ce fut long et fastidieux... hum... hum...
Home Remover
Le Home Remover avait quelques soucis d'affichage, ceux-ci ont été réglés.
Le cooldown affiché au-dessus du Home Remover n'était pas toujours correct et descendait par paliers, nous en avons donc profité pour paramétrer le format du cooldown en HH:MM:SS
.
return String.format("%02d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, seconds % 60);
Pour obtenir un cooldown de ce style nous allons d'abord récupérer l'heure : nombre_de_secondes / 3600
Ensuite pour les minutes, le calcul se complexifie un peu. Il faut savoir que en java les "%" sont ce que l'on appelle des modulo
Un modulo est le reste de la division, par exemple
10 modulo 3
Cela retournera 1, je m'explique: 3 rentre 3 fois dans 10, cela fait 9. La division n'étant pas parfaite il nous reste un "reste" qui ici est 1 (10-9).
Pour le nombre de minutes, nous allons donc faire (nombre_de_secondes % 3600) / 60
Et enfin pour le nombre de secondes : nombre_de_secondes % 60
Golem sous la bedrock
Il arrivait que certains Guardian Golem traversent la dernière couche de bedrock lorsqu'ils se trouvaient dessus. Le souci étant qu’une fois dans le void, ils tombaient à l'infini et donc ne remboursait pas la Guardian Stone au joueur maitre du Golem.
Désormais, si le golem se trouve en dessous de la couche 0, il sera automatiquement kill.
/* Lorsque l'entité se met à jour */
public void onEntityUpdate() {
/* Si sa position est en-dessous de la couche 0 */
if(this.posY < 0) {
/* On tue le golem */
setDead();
}
}
Amulettes
Nous avons ajouté une petite description en-dessous des amulettes pour que vous ne soyez plus perdus (tout comme nous d'ailleurs).
Enchantement Humiliation
Nous avons pris la liberté et le plaisir de vous ajouter de nouvelles petites phrases pour accompagner votre mort avec l'enchantement Humiliation.
En voici quelques exemples :
- Adieu , mort au combat sous la main de
- n’est plus... l’a réduit en miettes
Nous vous laissons la surprise des autres 🙈
Modification Pillage
Modification de la Boom Obsidienne
Description : Génère une explosion qui affecte les joueurs et les entités
Dégâts entités : retire 10% de la vie de l’entité. Si l’entité a moins de 1% de sa vie initiale, il meurt.
Dégâts joueur passe de : 5 coeurs -> 2 coeurs
Pas de dégâts en-dessous de x coeurs passe de : 3 coeurs -> 2 coeurs
Rayon d’explosion : 1,5 bloc
Ajout d'un nouveau bloc : la Mega Boom Obsidienne
Basé sur la Boom Obsi, celle-ci fera trembler vos plus féroces ennemis
Description : Génère une explosion qui affecte les joueurs et les entités
Dégâts entités : Retire 20% de la vie de l’entité. Si l’entité a moins de 1% de sa vie initiale, il meurt.
Dégâts joueur : 4 coeurs
Pas de dégâts en dessous x coeurs : 2 coeurs
Rayon d’explosion : 2 blocs
Obsidienne directionnelle
Ancien système : Actuellement les Slime Obsi se placent vers le joueur s’il est à 3 blocs ou moins. Sinon, elles se placent toujours vers le sud.
Nouveau système : Apparition d'un symbole sur la face sud de base. Ensuite, via la pioche en obsidienne (clic droit) le symbole se déplacera de face en face.
Si l’obsidienne est placée à côté d’une autre obsidienne, le symbole prend de base la même direction.
Ajout de 3 nouvelles enclumes
Désormais, le serveur compte des enclumes en Améthyste, en Titane et en Paladium !
Les enclumes sont désormais utilisables dans les zones claims.
Aucune modifications n’a été faites sur la résistance des enclumes aux explosions et notamment à la dynamite. Cela reste comme avant, les nouvelles enclumes apportent donc seulement un plus grand nombre d’utilisation avant de se détruire.
Voici ce qui signe la fin de ce PatchNote, nous espérons que cela vous a plu et que ce nouvel aspect technique vous plaira tout autant.
Un sondage est disponible ici 🚀 ✨sondage✨
N'hésitez pas à laisser un commentaire ci-dessous, nous vous répondrons avec le plus grand plaisir.
Top comments (5)
Encore mieux que les précédents, avec cette fois plus de détails de codes, j'aime bien !
J'adore aussi ! ^^
Encore un beau patch-note bien détaillé, que demander de plus ?
Rien justement, c'est un patch-note irrréprochable ! 💎
Super Patch-Note !
Je suis vraiment content de celui-ci, surtout par rapport à la bomm obidian, la méga boom obsidian et les nouvelles enclumes modées ✨
Bonne continuation au staff de Paladium :3