[Plugin] Minecart Mania made in Rodwin.fr

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Lun 19 Mar 2012 - 19:07

Bon, je m'étais dit que je ne le ferais certainement pas, vu l'ampleur apparente, mais c'est peut-être pas si compliqué que cela.

J'y ai un peu réfléchi, j'ai regardé un peu la doc Bukkit, et y'a peut-être moyen de faire quelque chose d'épuré qui ressemble...

Je ne ferais peut-être pas ça dans l'immédiat, venant de terminer un petit marathon sur LinkedChest cette semaine. Mais j'envisage de m'y coller, à l'occasion (faire quelques tests pour voir comment ça peut être fait, etc...)

J'ai regardé sur Bukkit et j'ai vu aucun plugin qui reprend vraiment le concept. La plupart des plugins semblent s'appuyer sur le principe de SimpleCarts (je tape mon cart, ou je saisis une commande).

D'ailleurs, Warzouz, si tu retrouves ton post avec les fonctionnalités basiques qu'on utilisait, je ne le retrouve pas, ça me permettra de faire de tests sur ces points précis.

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Warzouz le Lun 19 Mar 2012 - 20:13

J'ai essayé d'avoir le code de SimpleCart, mais le gars veut rien savoir. Il est d'ailleurs passé de GPL à BSD pour ne pas avoir à les donner. :creeper:

_________________
Réfléchir, c'est déjà désobéir
avatar
Warzouz

Messages : 5857
Age : 45

Profil
Rôle: Déménageur nihiliste

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Lun 19 Mar 2012 - 20:16

Si on peut avoir le jar, je peux avoir les sources. Pas les originales, mais suffisamment proche pour comprendre comment ça marche.

Java Decompiler

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Warzouz le Lun 19 Mar 2012 - 20:47

Il m'a renvoyé vers ça, justement.

_________________
Réfléchir, c'est déjà désobéir
avatar
Warzouz

Messages : 5857
Age : 45

Profil
Rôle: Déménageur nihiliste

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Jeu 29 Mar 2012 - 23:13

Voilà, si je fais finalement un truc pour les carts, voilà comment je vois les choses:

Plugin Core: (C'est le socle que j'ai commencé avec LinkedChest que je vais mettre à jour)
- Commande config générique pour modifier toute la configuration facilement
- Messages par défaut dans l'enum Messages (utiliser "default")
- Modifier la langue ingame (check le nom du fichier, si ok, valider le changement)

Blocs prioritaires:
- EnderBlock(Up/Down): chope le bloc TP suivant vers le haut, et y tp le joueur. (boucler quand arrivé en haut ; utiliser 2 blocs Up/Down pour accélérer la recherche ?)
- LauncherBlock: stoppe le cart. Si alimenté, lance le cart dans la direction vue par le joueur. (ou forcée par un panneau sous le bloc : à config ?)
- BoosterBlock: boost le cart (vitesse configurable ? panneau sous le bloc ?)
- AnnounceBlock: affiche le message de la pancarte sous le bloc (couleurs par défaut ? à config ? dans le panneau ?)

Blocs secondaires
- SlowerBlock: ralentit le cart (idem que le booster avec vitesse via config/panneau ?)
- EjectionBlock: sort le joueur
- DestroyerBlock: pète le cart
- KeeperBlock: met le cart dans le coffre adjacent (à utiliser avec LinkedChest?)

Panneau Direction:
- Sous le LauncherBlock
- Ecrire la direction sur la première ligne (accélère le traitement)

Panneau annonce:
- Tout le texte est affiché au joueur. Couleurs définies dans le panneau.

Couleur panneau:
- Couleur 1 = $1. (sera remplacé par le code couleur correspondant -> utiliser une Enum)
- Couleur 2 = $2.
- etc...

J'oublie quelque chose ?

Comme dit chez les admins, si je suis motivé, je commence ce weekend à faire des tests.

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Warzouz le Ven 30 Mar 2012 - 9:52

Lol, Ghommer, c'est un vrai développeur. Quand il en a marre, il met en pause 2 jours et reviens encore avec plus de projets !!!

Je pense que SimpleCarts peut être une bonne base. Mais probablement préfère tu te faire ton plugin perso.

Remarque générales.
- Il faudra que chaque bloc puisse être changé dans le fichier de config, et même être désactivé complètement (un peu comme ce que tu as fait avec le TPBlock de TG).
- Un block "actif" est celui qui se trouve directement sous les rails ?
- Par ailleurs, les fonctions ne pourraient être activées que si le bloc est alimenté. Par exemple : un TP si bloc alimenté, sinon, on continue tout droit. (SimpleCarts propose cela, c'est désactivable)
- Les panneaux qui pourraient modifier le comportement d'un bloc devrait être recherché à 1 bloc dans chaque direction autour du bloc ayant une action. Je crois que dans MinecartMania ça peut aller jusqu'à 2 blocs, mais ça pose plus de problème que ça n'en résoud. Tu pourrais prendre même exactement la syntaxe de MC Mania. Les commandes sont sur la première ligne.
- Le plugin va marche indifféremment avec les carts occupés ou non ?

A propos de blocs
- TP Block. Minecart Mania utilise un panneau. C'est pas très beau (et en plus, ça ne fonctionne pas super bien). SimpleCart utilise un unique bloc unique. Ceci dit, ce n'est pas une fonction essentielle
- Launcher. Apparamment, c'est très difficile de démarrer en utilisant la vue. Le panneau à la façon MineCartMania semble le plus simple.
- BoosterBlock : Tu n'utilises donc pas le booster normaux de Minecraft ? Peut-être faudrait-il une combinaison Boosterblock sous un booster pour effectuer un boost (éventuellement modifié par un panneau en dessous) De cette manière, on pourrait avoir le fonctionnement normal en même temps que celle du plugin.
- Annouceblock : pourquoi pas un panneau simplement comme dans MC Mania.

- SlowBloc : pourrait être utilse si on utilise des booster à fond dans les lignes droite. Sorti de ça, je vois pas l'utilité.
- Ejectblock : Quelle utilité ?
- DestroyerBlock : Cela m'est utile pour le rainbow runner. A part cela, en a-t-on l'utilité ? MCMania fonctionne comme suit. Le bloc détruit le cart, sauf quand il est alimenté. L'intelligence voudrait que cela soit l'inverse.
- KeeperBlock. Cela pourrait être une fonction du DestroyerBlock (dès qu'il y a un coffre à proximité la fonction est activée)


Je propose aussi
- CreatorBlock : Création d'un cart + fonction launcher. Ne fonctionne qu'à la bascule OFF->ON. On pourrait éventuellement coupler cela à la présence d'un coffre alentour
- Intersection : Si tu veux publier ton plugin, cela va-t-être demandé. MineCartMania utilisait aussi une plaque de pression à la place d'un bloc sous le rail. cela permet de faire des intersections propres au niveau des rails. Généralement, le joueur tape dans la direction qu'il veut afin de continuer. Le top du top serait de taper AVANT l'intersection et que le plugins enregistre 1 action en avance afin que le cart puisse ne pas s'arrêter. Un panneau en dessous pourrait limiter les directions possibles (qui serait résolu à l'arrivée du cart sur le bloc/plaque de pression.


_________________
Réfléchir, c'est déjà désobéir
avatar
Warzouz

Messages : 5857
Age : 45

Profil
Rôle: Déménageur nihiliste

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Ven 30 Mar 2012 - 18:22

Warzouz a écrit:Lol, Ghommer, c'est un vrai développeur. Quand il en a marre, il met en pause 2 jours et reviens encore avec plus de projets !!!
Ghom: ouais xD Disons que ça m'éclate de bidouiller le jeu ^^

Je pense que SimpleCarts peut être une bonne base. Mais probablement préfère tu te faire ton plugin perso.
Ghom: oui, je préfère faire tout du début. Je vais réutiliser les concepts (type de blocs) mais derrière, je refais tout.
Remarque générales.
- Il faudra que chaque bloc puisse être changé dans le fichier de config, et même être désactivé complètement (un peu comme ce que tu as fait avec le TPBlock de TG). Ghom: j'y comptais. J'ai l'intention d'améliorer encore mon système de configuration générique. Ça sera encore plus simple que dans LinkedChest, le système ayant été refait par rapport à la version TravelGates.
- Un block "actif" est celui qui se trouve directement sous les rails ? Ghom: Oui, le bloc doit être sous un rail et un joueur devra passer dessus.

- Par ailleurs, les fonctions ne pourraient être activées que si le bloc est alimenté. Par exemple : un TP si bloc alimenté, sinon, on continue tout droit. (SimpleCarts propose cela, c'est désactivable) Ghom: je n'y avais pas pensé, mais c'est une bonne idée !
- Les panneaux qui pourraient modifier le comportement d'un bloc devrait être recherché à 1 bloc dans chaque direction autour du bloc ayant une action. Je crois que dans MinecartMania ça peut aller jusqu'à 2 blocs, mais ça pose plus de problème que ça n'en résoud. Tu pourrais prendre même exactement la syntaxe de MC Mania. Les commandes sont sur la première ligne. Ghom: je pensais peut-être utiliser l'algorithme de LinkedChest qui fonctionne sans panneaux. Je vais voir si le temps de traitement est meilleur avec mon système actuel ou avec des panneaux. L'avantage de ne pas utiliser de panneau, c'est que tu n'es pas limité par la taille du panneau et pas besoin de le rechercher. D'autant que tu n'a pas besoin de le cacher ou de péter les blocs alentours pour aller le placer. Suffirait de viser le bloc.
- Le plugin va marche indifféremment avec les carts occupés ou non ? Ghom: je pensais faire en sorte que le plugin ne traite que des carts occupés. A moins que tu voies des cas où le cart peut être vide ? Si oui, je pourrais traiter ces cas si nécessaire.

A propos de blocs
- TP Block. Minecart Mania utilise un panneau. C'est pas très beau (et en plus, ça ne fonctionne pas super bien). SimpleCart utilise un unique bloc unique. Ceci dit, ce n'est pas une fonction essentielle Ghom: Je pensais essayer de ne pas utiliser de panneau, comme pour LinkedChest. Le fait d'avoir 2 blocs m'évite d'aller chercher l'un ou l'autre quand on arrive dessus, ce qui rend très court (a priori) le temps de traitement, sachant sur quel bloc je dois envoyer le joueur à l'avance.
- Launcher. Apparamment, c'est très difficile de démarrer en utilisant la vue. Le panneau à la façon MineCartMania semble le plus simple. Ghom: pareil, je pourrais sans doute faire ça sans panneau. La vue me semble aussi compliqué à exploiter, finalement.
- BoosterBlock : Tu n'utilises donc pas le booster normaux de Minecraft ? Peut-être faudrait-il une combinaison Boosterblock sous un booster pour effectuer un boost (éventuellement modifié par un panneau en dessous) De cette manière, on pourrait avoir le fonctionnement normal en même temps que celle du plugin. Ghom: en fait, je pensais me baser sur le bloc, et non le rail. En clair, on aurait pas été obligé d'utiliser des boosters. Après, je pensais peut-être permettre le fait de choisir un bloc ou un rail pour certains blocs précis, comme le booster. On pourrait choisir le bloc "railbooster" comme bloc booster. A voir dans les faits.
- Annouceblock : pourquoi pas un panneau simplement comme dans MC Mania. Ghom: pour ne pas avoir à chercher un panneau sous le joueur à chaque mouvement. Le fait d'avoir un bloc précis permet, je pense, de réduire l'algorithme à "je cherche ce bloc, si je le trouve, je cherche un panneau et je le lis". D'ailleurs, encore une fois, y'a peut-être moyen de s'abstraire du panneau du coup, grâce au bloc.

- SlowBloc : pourrait être utilse si on utilise des booster à fond dans les lignes droite. Sorti de ça, je vois pas l'utilité. Ghom: pareil.
- Ejectblock : Quelle utilité ? Ghom: tu es sorti du cart à un terminus, par exemple. Associé au bloc qui récupère le cart, tu n'as pas besoin de le péter.
- DestroyerBlock : Cela m'est utile pour le rainbow runner. A part cela, en a-t-on l'utilité ? MCMania fonctionne comme suit. Le bloc détruit le cart, sauf quand il est alimenté. L'intelligence voudrait que cela soit l'inverse. Ghom: en fait, ce bloc et l'EjectBlock pourraient ne faire qu'un. On sort le joueur, on pète le cart, et éventuellement, on le range dans un coffre.
- KeeperBlock. Cela pourrait être une fonction du DestroyerBlock (dès qu'il y a un coffre à proximité la fonction est activée) Ghom: yep.


Je propose aussi
- CreatorBlock : Création d'un cart + fonction launcher. Ne fonctionne qu'à la bascule OFF->ON. On pourrait éventuellement coupler cela à la présence d'un coffre alentour. Ghom: effectivement, ça peut être intéressant. Ça pourrait être une fonctionnalité du bloc launcher s'il y a un coffre à carts à côté.
- Intersection : Si tu veux publier ton plugin, cela va-t-être demandé. MineCartMania utilisait aussi une plaque de pression à la place d'un bloc sous le rail. cela permet de faire des intersections propres au niveau des rails. Généralement, le joueur tape dans la direction qu'il veut afin de continuer. Le top du top serait de taper AVANT l'intersection et que le plugins enregistre 1 action en avance afin que le cart puisse ne pas s'arrêter. Un panneau en dessous pourrait limiter les directions possibles (qui serait résolu à l'arrivée du cart sur le bloc/plaque de pression. Ghom: ça m'a l'air un peu compliqué à réaliser. Le plus simple serait peut-être d'utiliser une commande à taper avant l'intersection, et pour ce joueur en particulier, on l'envoie dans la direction choisie. Sinon, il s'arrête sur l'intersection et il faut qu'il tape la commande pour choisir sa direction et il est envoyé comme si c'était un launcher ?
Je pensais aussi permettre d'éviter les collisions des joueurs. Ça pourrait être pratique. A voir comment... par une configuration globale ? Joueur par joueur ?

En tout cas, je pense déjà voir pour les trucs prioritaires ce qu'il en est. Ensuite, si ça roule bien (pour un cart, c'est le comble :P), je verrais la suite. L'ensemble me parait assez long à réaliser. A voir...

Je vais commencer à faire quelques tests ce soir et ce weekend.

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Mortumee le Ven 30 Mar 2012 - 18:42

Pour la collision avec les joueurs, tu fais comme Minecart Mania avec les mobs, si un cart entre en contact avec un joueur, le joueur disparait. :D
Comme ça, ça leur apprendra à trainer sur les voies de métro !
avatar
Mortumee

Messages : 2792
Age : 28

Profil
Rôle: Cartésien désabusé, Serviteur de Cthulhu

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Ven 30 Mar 2012 - 19:05

Je pensais aussi à Cart contre Cart avec des joueurs dedans.

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Warzouz le Ven 30 Mar 2012 - 19:07

Mortumee a écrit:Pour la collision avec les joueurs, tu fais comme Minecart Mania avec les mobs, si un cart entre en contact avec un joueur, le joueur disparait. :D
Comme ça, ça leur apprendra à trainer sur les voies de métro !
Oui,, effectivement, il y a la supression des mobs sur les voies en arrivant. Je crois que SimpleCarts a aussi une fonction pour kicker les joueurs sur les voies.

_________________
Réfléchir, c'est déjà désobéir
avatar
Warzouz

Messages : 5857
Age : 45

Profil
Rôle: Déménageur nihiliste

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Ven 30 Mar 2012 - 19:09

Je pensais juste annuler la collision avec les autres entités qui se trouvent sur la route, pour éviter au cart de s'arrêter quand il voyage plein.

Du coup, le kick et la suppression des monstres est inutile. Et ça me paraît beaucoup plus simple à faire. (une ligne: annuler l'évènement de collision xD)

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Warzouz le Ven 30 Mar 2012 - 19:15

Creeper boom ?

_________________
Réfléchir, c'est déjà désobéir
avatar
Warzouz

Messages : 5857
Age : 45

Profil
Rôle: Déménageur nihiliste

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Ven 30 Mar 2012 - 19:44

Warzouz a écrit:Creeper boom ?
Quoi ? :-S

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Mortumee le Ven 30 Mar 2012 - 20:02

Rho, ça aurait été plus marrant une disparition du joueur, accompagnée d'un déwhitelistage en règle :D
avatar
Mortumee

Messages : 2792
Age : 28

Profil
Rôle: Cartésien désabusé, Serviteur de Cthulhu

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Ven 30 Mar 2012 - 20:15

J'ajouterai ça juste pour toi, si tu veux, Mortu ;)

Edit: smart messages = done. La valeur par défaut de chaque message est connue en interne dans le plugin et le nombre de variables du message (pour afficher les paramètres) est connu lui aussi, et est contrôlé au chargement des messages. La valeur par défaut sera utilisé si on a pas le bon nombre de variables de message.

Je code ça sur LinkedChest pour l'instant, je répercuterai ça dans le plugin des carts si je vais jusque là.

Prochaine étape: commande générique pour la configuration !

Edit²: commande "config" générique = done. :)

Je vais publier une release de LinkedChest tout à l'heure.

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Dim 1 Avr 2012 - 18:59

Avancement des tests:
  • Launcher: OK. Il fonctionne avec un panneau qui décrit le launcher. 1er ligne: direction (à voir si on se base sur la position du soleil ou les directions Bukkit, et/ou le paramètre f du debug). 2e ligne la vélocité (je mettrais peut-être un gros nombre pour aller le plus loin possible). 3e ligne la vitesse (au-delà de 1 ça déraille, la base étant 0.4).
  • Collision avec entité: OK. L'entité et le joueur échangent leurs positions et le joueur est envoyé dans la direction de l'entité et poursuit sa route.

Pour le launcher, je n'ai pas pu faire en sorte que ce soit la redstone qui l'active. L'évènement de redstone n'est pas transmis aux blocs (du moins, pas celui que j'ai testé, à savoir l'obsidienne). Donc je ne peux pas le faire de cette manière. Pour l'instant, on déclenche le launcher en appuyant sur un bouton, et si le bloc d'obsidienne est alimenté, ça nous envoie dans la direction indiquée par le panneau sous le bloc.

A savoir que l'évènement "j'appuie sur un bouton" est évalué juste avant que le bloc reçoive le courant de redstone, et au moment où je reçois l'évènement, le bloc n'est pas alimenté, donc ça ne fonctionne pas non plus. Donc, comme je le vois, il suffira juste d'un bouton, au mur, non relié au bloc launcher. Et si le bloc launcher est déjà alimenté, par une torche de redstone par exemple, il fonctionnera, sinon, ça sera un bloc normal. S'il est alimenté, il arrêtera les joueurs qui y passent, et sinon, il fera rien.

J'ai pensé à une chose aussi. Si on arrive sur un bloc de launcher alimenté, on s'arrête. Si le joueur tient une torche dans sa main, il continue sa route.

J'ai également remarqué qu'en configurant une vélocité très élevée au moment où on lance le cart, on peut largement se passer de boosters. J'ai réussi à grimper une pente jusqu'au dessus des nuages et conserver une vitesse constante. Du coup, en mettant une vélocité élevée dès le début, on peut parcourir des distances importantes sans booster. Je ferais certainement quand même le bloc au cas où, surtout si je permets de configurer cette vélocité.

Pour info, si c'est pas clair, la vitesse, c'est la distance parcourue par un cart par seconde, et ce que j'appelle vélocité, c'est jusqu'où il peut aller avec une vitesse maximum. Ça pourrait être appelée l'énergie de départ, indépendante de la vitesse du cart. Plus ce nombre est élevé, et plus on va loin sans perdre de vitesse. Ça correspond à un nombre de blocs, d'ailleurs.

J'ai une bonne base de tests, là. J'vais essayer de faire quelques blocs dans la semaine. Pour le moment, j'ai juste le launcher. Je pense rester sur une base de panneaux, plus facile à gérer. Ça permet de configurer plus facilement les choses en jeu (moins de commandes). Si j'en fais un vrai plugin complet, j'aimerais bien essayer qu'il y ait le moins de commandes possible, et qu'il soit le plus intuitif possible.

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Ghomerr le Lun 2 Avr 2012 - 19:24

Bon, j'ai pensé à une chose. Je vais attendre un peu pour voir si je fais ce plugin. SimpleCarts, après quelques tests effectués hier, me semble plutôt bien marcher.

Je pense qu'à l'usage, on saura si c'est bien ou pas et si vraiment ça convient pas à nos besoins, j'attaquerai vraiment un plugin.

Pour le moment, il marche plutôt pas mal, donc je ne pense pas que ça vaille le coup que je me refasse un marathon plugin :P

Par contre, ça me laissera un peu de temps pour tester un truc auquel je pense depuis un moment :D (Et qui plaira à Gothz si j'arrive enfin à finir !)

_________________
avatar
Ghomerr

Messages : 3742
Age : 29

Profil
Rôle: Chronomètre rétrograde

http://www.youtube.com/user/Ghomerr6

Revenir en haut Aller en bas

Re: [Plugin] Minecart Mania made in Rodwin.fr

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum