Minecraft Frame Undecorated
-
la commande ne s’execute pas et aucun message d’erreur
-
Débug
System.out.println(player.worldObj.isRemote);Si la console te renvoie que des false, c’est que l’event n’est appelé que côté Server, et ça ne m’étonnerait pas. La déconnexion et connexion d’un joueur m’aurait étonné si le Client avait à voir là-dedans. Dans ce cas tu vas devoir envoyer des packets

-
Les packet c’est ma hantise et apparemment va falloir que j’utilise des packet……
-
C’est ce que je pensais un début et maintenant je trouve ça vraiment simple. Va voir le tuto de Blackout sur le sujet.
-
Perso j ai une préférence pour celui de robin sur Youtube =p
-
j’ai déjà lu les 2 tuto et ça me refile toujours des boutons je vais essayer mais je doit avouer que je m’arrange a chaque fois pour contourner l’utilisation de packet mais la même en réfléchissant je vais être obliger de galérer comme quand j’ai créé mon extendPlayerProperties souhaitez moi bonne chance vais en avoir besoins
-
Celui de robin est bien mais j’ai mieux compris avec celui de Blackout mais bon chacun apprend à sa manière.
-
@‘robin4002’:
Il faut enregistrer l’event avec fml. De plus PlayerLoggedOutEvent est un event serveur seulement.
Heureusement que je l’ai dit …
De plus ce que tu fais n’est pas du tout bon. Comme tu es déjà côté serveur pas besoin de commande ou de paquet, tu peux directement faire d’action … Et même comme ça ce n’est toujours pas bon, PlayerLoggedOutEvent est déclenché lorsque le joueur déconnecte. Par contre lorsqu’on coupe de force ou perd la connexion il me semble qu’il n’est pas déclenché. Donc là tu vas bannir ceux qui coupent le jeu normalement x).
Il faudrait plutôt avoir une liste de joueur et vérifier à chaque tick le nombre de joueur co en prenant en compte PlayerLoggedOutEvent et PlayerLoggedInEvent (pas mal de chose à prendre en compte du-coup, il faudrait un event de tick + PlayerLoggedOutEvent + PlayerLoggedInEvent).
Et puis même avec ça tu vas bannir les joueurs qui ont perdu la connexion. Le pauvre, sanctionné car sa box internet a planté ou que le wifi a rencontré un petit problème … (ou même une coupure de courant).Il faudrait donc imaginer un autre moyen pour éviter que les joueurs déco en pleins pvp.
Quelque chose de complexe à mettre en place mais qui pourrait fonctionner : lorsqu’un joueur prend des dégâts tu l’ajoutes à une liste. Au bout de 5 secondes tu le retires de cette liste. Si avant ces 5 secondes le joueur n’est plus sur le serveur, (il faudrait vérifier toutes les secondes pour que cela soit efficace sans être trop lourd), tu l’ajoutes dans une liste. À sa reconnexion (PlayerLoggedInEvent) si le joueur est dans cette liste tu le kill directement.
Ça reste un peu injuste pour un joueur qui perd la connexion, mais moins qu’un bann ^^ -
je fait déjà la vérification pour le joueur je passe une boolean a true dans les tag du joueur lorsque il prend des dégâts contre un entités ou un joueur ensuite je comptait utiliser le logout évent pour vérifier que il n’utilise pas de client modifier pour passer en dehors de mes menus
ensuite je voulait comme tu le montre au dessus créé un évent qui vérifie la présence du joueur dans un ontick et vérifier le temps que il a mis a déconnecter en récupérant l’horloge systeme pendant le dernier tick et en la comparant a celle au moment ou le joueur n’est plus connecté sachant que le ontick seras mis en pause au moment ou le menu de déconnexion seras afficher
celui-ci demande au joueur 20 seconde avant de lancer le paquet de déconnexion donc si il ya une différence trop faible je ban mais pas definitivement la j’utilise le /ban pour les test mais comme mon serveur possède essentials d’installé je pourrait donc le bannir pour une durée de quelques heures
pour la remise a zéro du mode combat ça se passe si le joueur meurt ou au bout de 2minutes dans le livingEvent
dit moi si j’oublie quelques choses ^^
donc pour en revenir a ce que je voulait faire je voulait envoyer une commande de a la déconnexion du joueur si la boolean est sur true,
de plus dans le mod que je développe la mort est très pénalisante car il y a un systeme de leveling qui est remis a zéros lors de la mort du joueur je pense que entre perdre l’ entierté de l’expérience et un ban de 1H le choix des joueur seras vite fait et pour les perte de connexion je compte faire en sortes de kicker les personne avec un ping trop élevé donc si le mec a une perte de connexion je suppose que le ping doit monter d’un coup il seras donc kicker avant d’être ban -
D’accord c’est plus claire comme ça ^^
Le problème c’est que la commande du ban devra être exécuté en tant qu’admin.
Donc ce n’est pas trop possible. Il faudrait plutôt un paquet envoyé du client vers le serveur et faire directement l’action du ban temporaire (donc le mieux serait de recoder un système de ban temporaire, sauf si tu trouves un moyen de communiquer avec essential). -
C est ce que j avais dt
Créer ta methode ban
Regarde tu as plein de classes si tu cherches bien -
justement on peut pas faire en sorte de l’exécuter comme si on utilisait la console du serveur elle même?
car quant tu envoie un commande au serveur directement tu est admin de base -
T’aurais quand même pu chercher un minimum…
MinecraftServer.getServer().getCommandManager().executeCommand(null, "/ban Player10");Trouvé en 20 secondes…
Le premier argument c’est censé être le joueur qui exécute la commande, je pense qu’en mettant null ça sera l’équivalent du serveur. Je sais pas à tester

-
le null ne fonctionne pas j’ai regarder sur le net je trouve rien
je continue mes rechercheEdit: Minecraft.getServer(); a la place du null ça fonctionne
-
Qu est ce qui ne fonctionne pas précisément ?
J ai oublié de le dire mais essaie de cast le null sa changera peut être quelque chose -
le fait d’utilisé un null faisait planter le serveur j’ai remplacer par MinecraftServer.getserver() bon maintenant j’attaque le reste je reviens vers vous si j’ai un probleme

-
Tu peux essayer de cast MinecraftServer à null, mais si ça fonctionne c’est parfait.
-
je rencontre un probleme un peu bizard en rapport je pense avec mon hit handler
:::
–-- Minecraft Crash Report ----
// Who set us up the TNT?Time: 22/09/15 09:39
Description: Ticking entityjava.lang.ClassCastException: virusz.mob.passive.EntityBoar cannot be cast to net.minecraft.entity.player.EntityPlayer
at virusz.event.HitHandler.onHit(HitHandler.java:28)
at cpw.mods.fml.common.eventhandler.ASMEventHandler_35_HitHandler_onHit_LivingHurtEvent.invoke(.dynamic)
at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138)
at net.minecraftforge.common.ForgeHooks.onLivingHurt(ForgeHooks.java:300)
at net.minecraft.entity.EntityLivingBase.damageEntity(EntityLivingBase.java:1261)
at net.minecraft.entity.EntityLivingBase.attackEntityFrom(EntityLivingBase.java:870)
at net.minecraft.entity.passive.EntityAnimal.attackEntityFrom(EntityAnimal.java:224)
at net.minecraft.entity.monster.EntityMob.attackEntityAsMob(EntityMob.java:140)
at net.minecraft.entity.ai.EntityAIAttackOnCollide.updateTask(EntityAIAttackOnCollide.java:167)
at net.minecraft.entity.ai.EntityAITasks.onUpdateTasks(EntityAITasks.java:125)
at net.minecraft.entity.EntityLiving.updateAITasks(EntityLiving.java:613)
at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:1983)
at net.minecraft.entity.EntityLiving.onLivingUpdate(EntityLiving.java:431)
at net.minecraft.entity.monster.EntityMob.onLivingUpdate(EntityMob.java:39)
at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:1816)
at net.minecraft.entity.EntityLiving.onUpdate(EntityLiving.java:250)
at net.minecraft.entity.monster.EntityMob.onUpdate(EntityMob.java:47)
at virusz.mob.zombie.EntityTermite.onUpdate(EntityTermite.java:113)
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2298)
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:684)
at net.minecraft.world.World.updateEntity(World.java:2258)
at net.minecraft.world.World.updateEntities(World.java:2108)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)A detailed walkthrough of the error, its code path and all known details is as follows:
– Head –
Stacktrace:
at virusz.event.HitHandler.onHit(HitHandler.java:28)
at cpw.mods.fml.common.eventhandler.ASMEventHandler_35_HitHandler_onHit_LivingHurtEvent.invoke(.dynamic)
at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138)
at net.minecraftforge.common.ForgeHooks.onLivingHurt(ForgeHooks.java:300)
at net.minecraft.entity.EntityLivingBase.damageEntity(EntityLivingBase.java:1261)
at net.minecraft.entity.EntityLivingBase.attackEntityFrom(EntityLivingBase.java:870)
at net.minecraft.entity.passive.EntityAnimal.attackEntityFrom(EntityAnimal.java:224)
at net.minecraft.entity.monster.EntityMob.attackEntityAsMob(EntityMob.java:140)
at net.minecraft.entity.ai.EntityAIAttackOnCollide.updateTask(EntityAIAttackOnCollide.java:167)
at net.minecraft.entity.ai.EntityAITasks.onUpdateTasks(EntityAITasks.java:125)
at net.minecraft.entity.EntityLiving.updateAITasks(EntityLiving.java:613)
at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:1983)
at net.minecraft.entity.EntityLiving.onLivingUpdate(EntityLiving.java:431)
at net.minecraft.entity.monster.EntityMob.onLivingUpdate(EntityMob.java:39)
at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:1816)
at net.minecraft.entity.EntityLiving.onUpdate(EntityLiving.java:250)
at net.minecraft.entity.monster.EntityMob.onUpdate(EntityMob.java:47)
at virusz.mob.zombie.EntityTermite.onUpdate(EntityTermite.java:113)
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2298)
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:684)
at net.minecraft.world.World.updateEntity(World.java:2258)– Entity being ticked –
Details:
Entity Type: EntityTermite (virusz.mob.zombie.EntityTermite)
Entity ID: 219
Entity Name: entity.EntityTermite.name
Entity’s Exact location: -117,29, 66,75, 162,14
Entity’s Block location: World: (-118,66,162), Chunk: (at 10,4,2 in -8,10; contains blocks -128,0,160 to -113,255,175), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Entity’s Momentum: -0,03, 0,25, -0,08
Stacktrace:
at net.minecraft.world.World.updateEntities(World.java:2108)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)– Affected level –
Details:
Level name: world
All players: 0 total; []
Chunk stats: ServerChunkCache: 429 Drop: 0
Level seed: 5605351470870339068
Level generator: ID 00 - default, ver 1. Features enabled: true
Level generator options:
Level spawn location: World: (-28,64,236), Chunk: (at 4,4,12 in -2,14; contains blocks -32,0,224 to -17,255,239), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Level time: 25505 game time, 585 day time
Level dimension: 0
Level storage version: 0x04ABD - Anvil
Level weather: Rain time: 48799 (now: false), thunder time: 85593 (now: false)
Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Stacktrace:
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)– System Details –
Details:
Minecraft Version: 1.7.10
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.8.0_45, Oracle Corporation
Java VM Version: Java HotSpot
64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 958588896 bytes (914 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 1, tcache: 0, allocated: 13, tallocated: 95
FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 7 mods loaded, 7 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
flansmod{@VERSION@} [Flan’s Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
MapWriter{2.1.1} [MapWriter] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
craftguide{@MOD_VERSION@} [CraftGuide] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
VirusZ{beta-0.1} [VirusZ] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Player Count: 0 / 20; []
Is Modded: Definitely; Server brand changed to ‘fml,forge’
Type: Dedicated Server (map_server.txt):::
:::
package virusz.event; import virusz.core.ExtendedPlayer; import virusz.core.VirusZCore; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.IProjectile; import net.minecraft.entity.boss.EntityDragon; import net.minecraft.entity.boss.EntityWither; import net.minecraft.entity.monster.EntityMagmaCube; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.monster.EntitySlime; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.passive.EntityWaterMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraftforge.event.entity.living.LivingHurtEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class HitHandler { @SubscribeEvent public void onHit(LivingHurtEvent e) { if(e.entity instanceof EntityPlayer || e.source.getEntity() instanceof EntityMob){ EntityPlayer player =(EntityPlayer)e.entity; ExtendedPlayer.get(player).consumeCombat(1); System.out.println("hit"); System.out.println(ExtendedPlayer.get(player).getCurrentCombat()); } if(e.entity instanceof EntityPlayer && e.source.getEntity() instanceof EntityPlayer){ EntityPlayer player =(EntityPlayer)e.entity; ExtendedPlayer.get(player).consumeCombat(1); System.out.println("hitplayer"); System.out.println(ExtendedPlayer.get(player).getCurrentCombat()); } if(e.entity instanceof EntityPlayer)return; if(e.source.isProjectile()) { Entity en = e.source.getSourceOfDamage(); if (e.entity instanceof EntityLiving&&en instanceof IProjectile||VirusZCore.EntityBullet.isInstance(en)) { if(e.entity.posY+e.entity.getEyeHeight()-0.4F <en.posy &&="" en.posy<e.entity.posy+e.entity.geteyeheight()+0.4f&&!isbadentity(e.entity))<br="">{ System.out.println("DEBUG "+e.entity.toString()); e.ammount=e.ammount*10; ((EntityLiving) e.entityLiving).setCustomNameTag("HEADSHOT!"); ((EntityLiving) e.entityLiving).setAlwaysRenderNameTag(true); } } } } private boolean isBadEntity(Entity e) { if(e instanceof EntityVillager)return false; if(e instanceof EntityAnimal)return true; if(e instanceof EntityWaterMob)return true; if(e instanceof EntitySlime || e instanceof EntityMagmaCube)return true; if(e instanceof EntityDragon|| e instanceof EntityWither)return true; return false; } }:::</en.posy>
-
e.entity instanceof EntityLivingBase
-
Le || n’est pas bon.