Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Minecraft
You last visited: Today at 01:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Brauche Dringend Hilfe beim Programmieren

Discussion on Brauche Dringend Hilfe beim Programmieren within the Minecraft forum part of the Other Online Games category.

Reply
 
Old   #1
 
the_cake's Avatar
 
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
the_cake is offline  
Old 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.
ComputerBaer is offline  
Old 05/27/2015, 19:52   #3
 
the_cake's Avatar
 
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.
the_cake is offline  
Old 05/28/2015, 01:09   #4
 
Howaner's Avatar
 
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
Howaner is offline  
Old 05/28/2015, 12:49   #5
 
the_cake's Avatar
 
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 ?
the_cake is offline  
Old 05/29/2015, 12:22   #6
 
Howaner's Avatar
 
elite*gold: 132
Join Date: Apr 2010
Posts: 2,864
Received Thanks: 2,008
Ich würds in einer SQLite Datenbank speichern.
Howaner is offline  
Old 05/29/2015, 19:57   #7
 
the_cake's Avatar
 
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 ?
the_cake is offline  
Old 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 View Post
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.
ComputerBaer is offline  
Old 05/29/2015, 21:44   #9
 
the_cake's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 454
Received Thanks: 345
Quote:
Originally Posted by ComputerBaer View Post
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:
the_cake is offline  
Old 05/30/2015, 22:10   #10
 
the_cake's Avatar
 
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 ?
the_cake is offline  
Old 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.
ComputerBaer is offline  
Old 05/31/2015, 10:35   #12
 
the_cake's Avatar
 
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.
the_cake is offline  
Old 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.
ComputerBaer is offline  
Old 05/31/2015, 16:05   #14
 
the_cake's Avatar
 
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.
the_cake is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.