Aller au contenu
  • 0

Erreur à la fermeture du serveur


Question

Posté(e)

Bonjour alors voila, je faisais des test sur mon serveur

Et je me suis aperçu que quand je le fermais il y avait une erreur,

Alors je voulais vous demandez si vous savez d'où elle pourrait arriver

 

Voici l'erreur et merci d'avance ;) :

[08:26:25] [server thread/ERROR]: Could not pass event PlayerTeleportEvent to Skript v2.2-SNAPSHOT
java.lang.NullPointerException
   at ch.njol.skript.hooks.regions.WorldGuardHook.getRegionsAt_i(WorldGuardHook.java:243) ~[?:?]
   at ch.njol.skript.hooks.regions.RegionsPlugin.getRegionsAt(RegionsPlugin.java:94) ~[?:?]
   at ch.njol.skript.hooks.regions.events.EvtRegionBorder$3.execute(EvtRegionBorder.java:159) ~[?:?]
   at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) ~[paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.teleport(CraftPlayer.java:541) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity.teleport(CraftEntity.java:236) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.mcsg.survivalgames.Game.removePlayer(Game.java:505) [survivalGames.jar:?]
   at org.mcsg.survivalgames.Game.disable(Game.java:701) [survivalGames.jar:?]
   at org.mcsg.survivalgames.SurvivalGames.onDisable(SurvivalGames.java:49) [survivalGames.jar:?]
   at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:323) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:360) [paperspigot.jar:git-PaperSpigot-8b18730]
   at us.Myles.PWP.TransparentListeners.PerWorldPluginLoader.disablePlugin(PerWorldPluginLoader.java:140) [PerWorldPlugins.jar:?]
   at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:423) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:416) [paperspigot.jar:git-PaperSpigot-8b18730]
   at org.bukkit.craftbukkit.v1_8_R3.CraftServer.disablePlugins(CraftServer.java:338) [paperspigot.jar:git-PaperSpigot-8b18730]
   at net.minecraft.server.v1_8_R3.MinecraftServer.stop(MinecraftServer.java:456) [paperspigot.jar:git-PaperSpigot-8b18730]
   at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:652) [paperspigot.jar:git-PaperSpigot-8b18730]
   at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]

24 réponses à cette question

Messages recommandés

  • 0
Posté(e)

D'abord je te conseille d'aller lire ceci : https://www.mcdev.fr/threads/lire-une-erreur.455/

Et c'est arriver quand tu as mit un nouveau skript ? Si oui c'est l'avent de téléportation qui bug.

Il a une variables null NullPointerException. Si c'est pas un skript qui te fait sa c'est le plugin en lui même et je te conseille alors d'aller poster une demande spécial erreur Java skript.

 

Papierspigot peux aussi causer peut être des problèmes comme il est marquer dans l'erreur ou worldguard.

  • J'aime 1
  • 0
Posté(e)
D'abord je te conseille d'aller lire ceci : https://www.mcdev.fr/threads/lire-une-erreur.455/

Et c'est arriver quand tu as mit un nouveau skript ? Si oui c'est l'avent de téléportation qui bug.

Il a une variables null NullPointerException. Si c'est pas un skript qui te fait sa c'est le plugin en lui même et je te conseille alors d'aller poster une demande spécial erreur Java skript.

 

Papierspigot peux aussi causer peut être des problèmes comme il est marquer dans l'erreur ou worldguard.

 

Tu penses que c'est possible si c'est à cause d'une variable que je delete quand le joueur se déco et que justement c'est la variable qui me permet de savoir où est le joueur et si le joueur est dans la région voulue et bien ça le tp pas au spawn à sa mort mais plutôt à des coordonnées que j'ai fixé (c'est pour l'optimisation de la BDD des Variables)

 

 

Code en question:

 

# =================================== Kill Rewards =================================== #
on death of player:
   if "%region at victim%" contains "pvpbox":
       if victim is a player:
           clear drops
       else:
           stop trigger
   else:
       stop trigger
   if attacker is in world "PvP-Box":
       if attacker is a player:
           if "%region at attacker%" contains "pvpbox":
               if victim is in world "PvP-Box":
                   if victim is a player:
                       clear drops
                       set {pvpboxtp.%player%} to "%region at victim%"
                       give a golden apple to attacker
                       send "[&ePvP-Box&r] &2Vous avez reçu une pomme d'or pour avoir tué %victim%" to attacker
                       if "%helmet of attacker%" contains "&2Casque du Switcher":
                           give a snowball named "&2Switch Ball" to attacker
                           send "[&eSwitch Bonus&r] &2Vous avez reçu une Switch Ball pour avoir tué %victim% en étant un Switcher !" to attacker
                   else:
                       stop trigger
               else:
                   stop trigger
           else:
               stop trigger
       else:
           stop trigger
   else:
       stop trigger
# =================================== Kill Rewards =================================== #

# =================================== Variable Eraser =================================== #
on quit:
   delete {pvpboxtp.%player%}
# =================================== Variable Eraser =================================== #

# =================================== Death Teleport =================================== #
on respawn:
   if "%{pvpboxtp.%player%}%" contains "pvpbox":
       teleport the player to {lobby.pvpbox}
   else:
       stop trigger
# =================================== Death Teleport =================================== #

  • 0
Posté(e)

Voila la cause. Mais tu regroupe tout dans un monde ? Si tu fais des mondes différents tu peux faire if player is in world '"pvpbox":.

Si tes en bungee bah tu peux laisser le on death sans verif puisque c'est pour un serveur. Mais si tu regroupe tout dans un monde je ne sais pas :/ Le WorldGuard et skript je ne maitrise pas du tout.

  • 0
Posté(e)

En fait, le truc c'est que quand le gars il meurt, il se tp au spawn normal, ensuite il faut qu'il vérifie où es-ce qu'il est mort et c'est la que mon code entre en jeu, ça vérifie le monde de sa mort et encore mieux la région de sa mort, car si je devrais mettre plusieurs arènes dans le même monde (ce qui va bientôt être le cas) il faudrait plusieurs endroit de spawn spéciaux pour chaque arène

  • 0
Posté(e)
Pourquoi tu veux récupérer la region du joueur mort ?

Pour que si la région est la région du pvpbox alors il se tp au spawn spécial du pvpbox à sa mort

 

EDIT: Pour la lecture des erreurs, comment je fais pour savoir exactement de où ça vient, je veux dire, si c'est moi qui fait le plugin je peux comprendre d'où vient le problème, mais la, cela vient de mon skript alors comment savoir quel est le skript qui pose problème ? (si c'est possible de le savoir bien évidemment)

  • 0
Posté(e)

Dans ton cas tu as fais un skript de region. Tu regarde les erreurs et tu vois :

 at ch.njol.skript.hooks.regions.WorldGuardHook.getRegionsAt_i(WorldGuardHook.java:243) ~[?:?]
   at ch.njol.skript.hooks.regions.RegionsPlugin.getRegionsAt(RegionsPlugin.java:94) ~[?:?]
   at ch.njol.skript.hooks.regions.events.EvtRegionBorder$3.execute(EvtRegionBorder.java:159) ~[?:?]

Tu vois que WorldGuard est le problème.

Imaginons que tu fais des particules et que maintenant il a une erreur qui met Particule.java bah tu sais sa correspond a quoi :)

Et les at ch.njol.skript. c'est au niveau de skript et les org.bukkit au niveau de bukkit.

  • J'aime 1
  • 0
Posté(e)
Dans ton cas tu as fais un skript de region. Tu regarde les erreurs et tu vois :

 at ch.njol.skript.hooks.regions.WorldGuardHook.getRegionsAt_i(WorldGuardHook.java:243) ~[?:?]
   at ch.njol.skript.hooks.regions.RegionsPlugin.getRegionsAt(RegionsPlugin.java:94) ~[?:?]
   at ch.njol.skript.hooks.regions.events.EvtRegionBorder$3.execute(EvtRegionBorder.java:159) ~[?:?]

Tu vois que WorldGuard est le problème.

Imaginons que tu fais des particules et que maintenant il a une erreur qui met Particule.java bah tu sais sa correspond a quoi :)

Et les at ch.njol.skript. c'est au niveau de skript et les org.bukkit au niveau de bukkit.

Donc la mon erreur est lié a une région donc pas à une variable null ? Pourtant on a un NullPointerException, ou ça veut dire, que la variable d'une vérification de région est vide ? c'est ça ?

(car on a le getRegionAt)

  • 0
Posté(e)

Oui j'ai pas dit aussi le NullPointerException veux dire une variable null c'est surement ta variable de region. Comme je fais du java au début j'ai souvent eu ce problème.

  • 0
Posté(e)
Oui j'ai pas dit aussi le NullPointerException veux dire une variable null c'est surement ta variable de region.

Mmmh je me demande comment une variable de région peut être nulle car une région est toujours présente (le __gloabal__)

  • 0
Posté(e)
Derien :) Désolé si je n'ai pas pu vraiment t'aider mais du coter WorldGuard nul quoi. Mais au moins tu seras lire des erreurs :D

Oui en effet cela me sera très utile pour la suite ;)

 

Dernière petite question, est-ce que si je clear une variable elle se supprime au même titre qu'un delete au redémarrage du serveur ?

  • 0
Posté(e)

Quand tu clear ta variable je PENSE que elle est déclarer en null par skript (normal pose pas de probleme) et apres tout les 5 minutes sa supprime les variables null. Tu peux toujours faire le test sur un serveur privé avec une seul variable :). Tu peux aussi la delete au deco et la re-set au join. Ou si tu fais un truc du swtich par exemple qui utilise des variable tu peux utiliser les variable {_variable} temporaire qui se supprime a la fin de l'event.

  • 0
Posté(e)
Quand tu clear ta variable je PENSE que elle est déclarer en null par skript (normal pose pas de probleme) et apres tout les 5 minutes sa supprime les variables null. Tu peux toujours faire le test sur un serveur privé avec une seul variable :). Tu peux aussi la delete au deco et la re-set au join. Ou si tu fais un truc du swtich par exemple qui utilise des variable tu peux utiliser les variable {_variable} temporaire qui se supprime a la fin de l'event.

 

Le problème avec {_variable} c'est qu'elle se supprime à la fin de l'event du coup tu peux pas la récup dans l'autre event et pour mon cas c'est mort ^^ Mais sinon oui j'essaye toujours d'utiliser des variables temporaire quand je peux ^^

 

Et je vais donc test ça de suite car cela pourrait fortement m'aider :p

  • 0
Posté(e)

Oui c'est l'inconvénient mais si tu veux faire un serveur il faut utiliser le plus souvent les variable temporaire. Tu peux faire set {tempo} to {_temp1} et après dans l'autre event tu fais ton action et a la fin delete {tempo} :)

  • 0
Posté(e)
Oui c'est l'inconvénient mais si tu veux faire un serveur il faut utiliser le plus souvent les variable temporaire. Tu peux faire set {tempo} to {_temp1} et après dans l'autre event tu fais ton action et a la fin delete {tempo} :)

 

Cela me semble assez inutile sachant qu'à la fin elle se fait quand même supprimer, ça ferait créer une variable (même si temporaire) en plus ^^

  • 0
Posté(e)

Non tu peux pas le faire pour tout mais je part du principe que tu set ta variable temporaire a une variable normal tu change d'event tu l'execute et apres tu supprime ta variable normal. Et tout revient normal tes 2 variables seront supprimé a vie.

  • 0
Posté(e)
Non tu peux pas le faire pour tout mais je part du principe que tu set ta variable temporaire a une variable normal tu change d'event tu l'execute et apres tu supprime ta variable normal. Et tout revient normal tes 2 variables seront supprimé a vie.

 

En gros quand la variable temporaire se supprime celle normale se supprime automatiquement aussi ?

 

EDIT: Je pense que j'ai compris par exemple, si j'utilise la variable temporaire dans un event et puis je veux la récup autre part cela me retire juste un delete à la fin du premier event au final

  • 0
Posté(e)

Non faut juste que tu mette delete {variable normal} à la fin de ton DERNIER évent. Mais tu peux pas utiliser par exemple cette technique pour des kill sou coins par contre pour un kit ou un truc de message au tp ect.. La tu peux.

  • 0
Posté(e)
Non faut juste que tu mette delete {variable normal} à la fin de ton DERNIER évent. Mais tu peux pas utiliser par exemple cette technique pour des kill sou coins par contre pour un kit ou un truc de message au tp ect.. La tu peux.

 

ça,

on death:
   set {_temptest} to "%region at player%"
   set {_temptest} to {tempotest}
   if {_temptest} is "test" or "test1" or "test2":
       broadcast "%{_temptest}%"
on respawn:
   if "%{tempotest}%" contains "test" or "test1" or "test2":
       broadcast "%{tempotest}%"
       clear {tempotest}

 

C'est pas le même que ça ?

on death:
   set {tempotest} to "%region at player%"
   if {tempotest} is "test" or "test1" or "test2":
       broadcast "%{tempotest}%"
on respawn:
   if "%{tempotest}%" contains "test" or "test1" or "test2":
       broadcast "%{tempotest}%"
       clear {tempotest}

 

En fait je pense que si une variable est réutilisée c'est que en soit les events sont reliés donc au final pourquoi faire une variable temporaire si c'est sûr qu'on va la réutiliser et donc qu'on peut la supp à la fin de cette réutilisation ?

  • 0
Posté(e)

Oui mais comment tu re-set ta variable de tempotest ? Sur tout n'oublie pas de mettre une variable comme sa tempo.%player%. Car la tu la clear dans le respawn faudrais plus que tu la delete que la clear. Le clear est plus utilisé pour les variables liste.

  • 0
Posté(e)
Oui mais comment tu re-set ta variable de tempotest ? Sur tout n'oublie pas de mettre une variable comme sa tempo.%player%. Car la tu la clear dans le respawn faudrais plus que tu la delete que la clear. Le clear est plus utilisé pour les variables liste.

oui tkt ct pour l'example ^^

 

Pour le re-set il suffit que le gars meurt à nouveau et elle sera set à nouveau ^^

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.