Demande sur le serveur.dat
-
@Robin4002 : Rien n’est compliqué en prog, quand tu connais les class x) Mais les class tel que ServerData ou CompressedStreamTools sont si peu utilisés que peu de monde peut y arrivé. Moi même je ne connaissais pas ces classes qui simplifie grandement la tâche ^^’
-
@‘robin4002’:
File serverDatFile = new File(Minecraft.getMinecraft().mcDataDir, "servers.dat"); boolean found = false; NBTTagCompound serverNbt = CompressedStreamTools.read(serverDatFile); NBTTagList serverList = nbttagcompound.getTagList("servers", 10); for (int i = 0; i < serverList.tagCount(); ++i) { ServerData data = ServerData.getServerDataFromNBTCompound(nbttaglist.getCompoundTagAt(i))); if(data.serverName.equals("nom de ton serveur")) { found = true; } } if(!found) { ServerData data = new ServerData("nom de ton serveur", "ip: port"); serverList.appendTag(serverdata.getNBTCompound()); serverNbt.setTag("servers", nbttaglist); CompressedStreamTools.safeWrite(serverNbt, serverDatFile); }Non, rien de compliqué.
Oh merci je vais essayé cela tout de suite ^^
-
@Jodge il suffit de regarder comment fait mc dans ces cas là, c’est plus simple que de faire quelque chose à partir de 0 ^^
-
@‘robin4002’:
File serverDatFile = new File(Minecraft.getMinecraft().mcDataDir, "servers.dat"); boolean found = false; NBTTagCompound serverNbt = CompressedStreamTools.read(serverDatFile); NBTTagList serverList = nbttagcompound.getTagList("servers", 10); for (int i = 0; i < serverList.tagCount(); ++i) { ServerData data = ServerData.getServerDataFromNBTCompound(nbttaglist.getCompoundTagAt(i))); if(data.serverName.equals("nom de ton serveur")) { found = true; } } if(!found) { ServerData data = new ServerData("nom de ton serveur", "ip: port"); serverList.appendTag(serverdata.getNBTCompound()); serverNbt.setTag("servers", nbttaglist); CompressedStreamTools.safeWrite(serverNbt, serverDatFile); }Non, rien de compliqué.
Pourrais tu m’expliquer s’il te plait la ligne :
[font=monospaceNBTTagList][font=monospace serverList ][font=monospace=][font=monospace nbttagcompound][font=monospace.][font=monospacegetTagList][font=monospace(][font=monospace“servers”][font=monospace,] [font=monospace10][font=monospace);]
[font=monospacecar je ne la comprend pas et j’ais toujours une erreur dessus.]
-
Cela sert à obtenir la tag list nommé servers.
Quelle est l’erreur ?
-
@‘robin4002’:
Cela sert à obtenir la tag list nommé servers.
Quelle est l’erreur ?
L’erreur est nbttagcompound cannot be resolved et il me propose de le changer en NBTTagCompound et alors l’erreur devient : Cannot make a static reference to the non-static method getTagList(String, int) from the type NBTTagCompound
-
remplaces par serverNbt
-
@‘robin4002’:
remplaces par serverNbt
Ah oui merci et j’ais une derniére erreur à ```java
serverNbt.setTag(“servers”, nbttaglist); -
serverList devrait passer.
-
@‘robin4002’:
serverList devrait passer.
non cela donne comme erreur : Default constructor cannot handle exception type IOException thrown by implicit super constructor. Must define an explicit constructor
à CompressedStreamTools.read(serverDatFile);
et à CompressedStreamTools.safeWrite(serverNbt, serverDatFile); -
il faut mettre tout le code dans un bloc try catch.
-
@‘robin4002’:
il faut mettre tout le code dans un bloc try catch.
package fr.extazilia.extaziliamod.common; import java.io.File; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; public class test { File serverDatFile = new File(Minecraft.getMinecraft().mcDataDir, "servers.dat"); boolean found = false; NBTTagCompound serverNbt = CompressedStreamTools.read(serverDatFile); NBTTagList serverList = serverNbt.getTagList("servers", 10);{ for (int i = 0; i < serverList.tagCount(); ++i) { ServerData data = ServerData.getServerDataFromNBTCompound(serverList.getCompoundTagAt(i)); if(data.serverName.equals("Extazilia serveur principal")) { found = true; } } if(!found) { ServerData data1 = new ServerData("Extazilia serveur principal", "ip: port"); serverList.appendTag(data1.getNBTCompound()); serverNbt.setTag("servers", serverList); CompressedStreamTools.safeWrite(serverNbt, serverDatFile); } }} -
….
…
…
Comment veux-tu que ce code fonctionne s’il n’est même pas à l’intérieur d’une fonction ?
-
@‘robin4002’:
….
…
…
Comment veux-tu que ce code fonctionne s’il n’est même pas à l’intérieur d’une fonction ?
Je pensais que sa suffierait de le mettre dans une classe. Je suis un débutant. je doit la mettre ou dans la classe principal ?
-
à l’intérieur de la fonction init ou de la fonction preinit.
-
@‘robin4002’:
à l’intérieur de la fonction init ou de la fonction preinit.
Cela marche merci ^^
-
NBTTagCompound serverNbt = CompressedStreamTools.read(serverDatFile);
NBTTagList serverList =NBTTagCompoundserverNbt.getTagList(“servers”, 10);C’est pourquoi il ne faut JAMAIS faire un copier collé tout bête…