|
You last visited: Today at 01:32
Advertisement
Brauche Dringend Hilfe beim Programmieren
Discussion on Brauche Dringend Hilfe beim Programmieren within the Minecraft forum part of the Other Online Games category.
05/27/2015, 18:56
|
#1
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Brauche Dringend Hilfe beim Programmieren
Hallo Leute ich prgorammiere zurzeit dieses Plugin: 
Ich habe niemals geglaubt das es so viele Leute benutzen und genau dort fangen die Probleme an meine Möbel/Furniture bestehen ja aus ArmorStands da das den Server nur sinnlos belastet möchte ich nun auf ProtocolLib umsteigen.
Damit die Auslastung des Server nicht ganz so hoch ist. Ich hab es auch schon geschaft die ArmorStands zu spawnen.
Hier wäre mal der Quellcode der ArmorStand class: 
Nun fange ich die Entity Interact Pakete ab und ändere die einstellungen des ArmorStands z.B ändere ich den namen.
Wenn ich nun allerdings das Paket erneut den spieler übergebe verschwindet der ArmorStand einfach.
Ich hab hier mal ein kleines Video hochgeladen: Wie man am ende des Videos sieht regiert der ArmorStand auf den rechtklick dabei möchte ich den ArmorStand den namen CLICK UPDATE geben. Sobald das Packet gesendet bzw empfangen wurde despawnt der ArmorStand.
Ich hoffe mir kann da jemand helfen ich rätsel nun schon seit mehreren Tagen rum.
Mfg.: The_cake / Ste3et_C0st
|
|
|
05/27/2015, 19:27
|
#2
|
Moderator
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
|
Das wird dir zwar nicht sonderlich helfen, aber ich denke ich muss es erwähnen.
Howaner hat viel an einem Server rumgeschrieben und für seine Plugins auch die ProtocolLib verwendet. Dabei ist ihm aufgefallen, dass ausgerechnet die ProtocolLib bei einigen Aktionen extrem viel Zeit und Leistung verschlingt. Aus dem Grund hat er sie dann wieder entfernt und eine eigene Lösung gebastelt.
Edit:
Alles soweit ich das damals von ihm verstanden und mich jetzt daran erinnert habe, könnte also sein das ein Fehler in dem Text steckt.
Ich habe ihn jetzt einfach mal auf das Thema hingewiesen, vielleicht sagt er noch etwas dazu oder kennt die Lösung für dein Problem.
|
|
|
05/27/2015, 19:52
|
#3
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Dankeschön ComputerBear.
Das mit der Leistung kann man wahrscheinlich nie perfekt machen aber es wird hoffentlich weniger Leistung saugen als die ArmorStands als richtige Entitys zu spawnen.
|
|
|
05/28/2015, 01:09
|
#4
|
elite*gold: 132
Join Date: Apr 2010
Posts: 2,864
Received Thanks: 2,008
|
Ja, ProtocolLib zieht schon ordentlich Performance weg, wenn extrem viele Pakete versendet werden.
(Mit extrem viele Pakete meine ich, das jede Sekunde 2 Spieler joinen und 100 oder mehr Spieler auf dem Server sind)
Sollte bei dir wahrscheinlich kein Problem sein, aber ich will 500 - 600 Spieler in einen Server bringen.
Das mit dem verschwinden ist ein ganz einfacher Minecraft 1.8 Bug, der wahrscheinlich auch alle weiteren Versionen betreffen wird.
Mojang hat einfach das Löschen eines Entities verkackt.
Du musst folgendes machen, damit das Entity nicht unsichtbar wird:
- Entity Despawn verschicken
- 2 Ticks warten
- Entity wieder schicken
|
|
|
05/28/2015, 12:49
|
#5
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Ok danke wie soll ich es den noch Performance schonender machen ?
Ok ich habs nun geschafft nun hätte ich noch ne frage wie speichere ich nun das ganze.
Soll ich ne Datenbank nehmen oder eher eine flatfile.
Soll ich alle einzelnen ArmorStand Einstellungen separat speicher oder gleich das ganze object ?
|
|
|
05/29/2015, 12:22
|
#6
|
elite*gold: 132
Join Date: Apr 2010
Posts: 2,864
Received Thanks: 2,008
|
Ich würds in einer SQLite Datenbank speichern.
|
|
|
05/29/2015, 19:57
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Ok ich hab nun noch zwei fragen:
1. Wie setze ich yaw/pitch ich hab mir mal die source von deinem Plugin auf github angeschaut und hab festgestellt das ich es eigentlich auch schon so hatte:
Code:
private byte getCompressedAngle(float value) {return (byte)(int)(value * 256.0F / 360.0F);}
public void setYaw(Player player, double yaw) {
PacketContainer packet = this.manager.createPacket(PacketType.Play.Server.ENTITY_HEAD_ROTATION);
packet.getIntegers().write(0, this.getEntityId());
packet.getBytes().write(0, (byte)(int)(yaw * 256.0F / 360.0F));
player.sendMessage(getCompressedAngle(getLocation().getYaw()) + "");
try {
this.manager.sendServerPacket(player, packet);
} catch (Exception e) {
e.printStackTrace();
}
}
Das hier wäre der Code es kommt leider kein error dennoch funktioniert er nicht. Ich hab es auch schon zeitversetzt geschickt geht leider auch nicht.
(Das war überings ein guter Tipp den hatte ich schonmal bei meinem EasterEgg plugin benutzt das hatte ich ganz vergessen.).
Edit://Ok ich bekome doch nen error und zwar NoSuchMethodError
2. Wegen der Datenbank soll ich da für alles eine eigene Tabelle anlegen oder soll ich das object Serializen und dann zurückkasten ?
|
|
|
05/29/2015, 21:10
|
#8
|
Moderator
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
|
Quote:
Originally Posted by the_cake
Edit://Ok ich bekome doch nen error und zwar NoSuchMethodError
|
Da wäre jetzt vermutlich interessant welche Methode denn gemeint ist.
Unabhängig davon würde ich einfach mal einen Unterscheid bei der Bukkit Version mit der du entwickelst und der Version mit der du testest vermuten.
|
|
|
05/29/2015, 21:44
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Quote:
Originally Posted by ComputerBaer
Da wäre jetzt vermutlich interessant welche Methode denn gemeint ist.
Unabhängig davon würde ich einfach mal einen Unterscheid bei der Bukkit Version mit der du entwickelst und der Version mit der du testest vermuten.
|
Ok der Error ist nun weg war ein Fehler von mir allerdings aus irgendeinen Grund funktioniert mein Code nicht das versteh ich nicht.
Code:
private byte getCompressedAngle(float value) {return (byte)(int)(value * 256.0F / 360.0F);}
public void setYaw(Player player, double yaw) {
PacketContainer packet = this.manager.createPacket(PacketType.Play.Server.ENTITY_HEAD_ROTATION);
packet.getIntegers().write(0, this.getEntityId());
packet.getBytes().write(0, (byte)(int)(yaw * 256.0F / 360.0F));
player.sendMessage(getCompressedAngle(getLocation().getYaw()) + "");
try {
this.manager.sendServerPacket(player, packet);
} catch (Exception e) {
e.printStackTrace();
}
}
Also über die debug nachricht bekomme ich den richtigen wert zurückgegeben allerdings verändert sich an der ausrichtung des ArmorStands nichts hier wäre mal der komplette code:
|
|
|
05/30/2015, 22:10
|
#10
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Ok nun geht alles und ich wäre soweit mit den ArmorStands durch.
Nun meine frage wie speichere ich das am besten in eine SqlLite Datenbank ich verstehe schon wie das grundsätzliche Speichern von z.b Strings etc geht allerdings wäre das glaub ich eine Jahrhundert Aufgabe alles in einen String zu packen gibt es da eine einfachere Möglichkeit ?
|
|
|
05/31/2015, 00:54
|
#11
|
Moderator
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
|
Mit relationalen Datenbanken kenne ich mich, aber mit deinen Daten nicht.
Wenn ich wüsste welche Informationen du da ablegen willst und was die Kriterien sind nach denen du sie abrufst, dann kann ich dir da sicherlich helfen. Aktell weiß ich nur, dass du irgendwelche Informationen hast und die in der Datenbank speichern willst.
|
|
|
05/31/2015, 10:35
|
#12
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Das möchte ich speichern:
- Location des armorstands
- Rotation des Kopfs,Körper,.... (EularAngle)
- Itemstack des Helms,Brustplatte,....
- Verschiedene Booleans
Ich hab mich mal hingesetzt und erzeuge nun für jeden einzelnen Punkt eine neue Tabelle mein Problem Sind die Itemstack ich muss diese 1zu1 speichern Da darf nichts verloren gehen.
|
|
|
05/31/2015, 11:42
|
#13
|
Moderator
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
|
Du hast keinen Grund nur ArmorStands zu laden, die einen Eisenhelm haben, oder?
Von daher würde nichts dagegen sprechen, wenn du die ItemStacks serialisierst und dann in der Datenbank ablegst.
Die Position solltest du komplett aufteilen, 4 Spalten - Welt, X, Y, Z - dann kannst du ganz gezielt alle ArmorStands abrufen, die sich in einem bestimmten Bereich einer Welt befinden.
Bei Rotation und den Booleans liegt es bei dir. Du kannst alle einzeln ablegen oder wenn es für dich einfacher ist sie auch in irgendeiner Form serialisieren und speichern. Ich gehe davon aus das du über keinen von denen versuchen wirst einen ArmorStand zu laden.
Die Aufteilung auf mehrere Tabellen ist vermutlich nicht notwendig und bringt dir keinen Vorteil., aber vielleicht kenne ich auch ein Detail nicht das zu einem Vorteil führen würde.
|
|
|
05/31/2015, 16:05
|
#14
|
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
|
Gibts da ihrgendeine BukkitApi o.ä den ItemStack komplett zu serialisieren ohne verluste egal was für meta data eingestellt sind ?
Ich weiß das mann bei getConfig itemstacks laden und speichern kann ich schau mir mal den code an.
|
|
|
 |
Similar Threads
|
Brauche hilfe beim Programmieren eines Bukkit-Plugins
09/22/2013 - Private Server - 1 Replies
Hallo!
Ich bin lerne seit ner Woche, das Programmieren in Java. Genauer gesagt: Bukkit-Server Plugins programmieren.
Und habe mir überlegt ich könnte ein MiniGame programmieren. Wenn hier Jmd. ist, der mir ein wenig helfen könnte (Als Belohnung könnte ich einen Rang auf meinem Server "Developer" erstellen und geben) bitte einfach in diesem Thread oder per PN melden. Brauche auch nur eine Starthilfe. ^^
Dann noch eine 2. kleine Frage die mir Probleme macht:
Ich habe ein Plugin...
|
Brauche dringend hilfe beim Client ...
05/29/2013 - Metin2 Private Server - 5 Replies
Hallo
Ich habe ein Problem mit dem einfügen von einem mob
und brauche hilfe weil ich die ganze zeit einen fehler bekomme ...
Ich habe alles eingefügt und auch in die NPCList eingetragen und
es kommt immer ein Fehler das mit der NPClist etwas nicht stimmt ..
http://i.epvpimg.com/AZfBb.png
Im Anhang sind die NPC list
Ich würde mich sehr über eure hilfe freuen :)
|
Brauche hilfe beim programmieren von updater
04/17/2013 - .NET Languages - 8 Replies
Hey com
ich brauche dringend hilfe bei meinem updater für ein spiel.
ich will so ein updater machen wie bei z.b. World of Tanks.
das der nach updates sucht dann wen welche da sind runterläd und gleich da hin installiert wo es hin soll also in das game verzeichnis.
ich möchte eine progressbar haben und ein feld wo dann steht was bei dem update neu ist.
ich habe einen schon gemacht aber irgend wie geht das alles nicht ich hinterlege mal ein bild
und den code auch.
|
brauche hilfe beim programmieren
04/07/2008 - Ragnarok Online - 8 Replies
Ich brauche hilfe beim Programmieren eines Bots (Openkore) wäre nett wenn mich jemand der sich dmit aus kennt in icq adden würde (205-327-167)
mfg RedDragoon
|
All times are GMT +1. The time now is 01:32.
|
|