Beiträge von zM4xi

    Ach jetzt verstehe ich was dein Ziel ist!

    Du willst ein Item mit Inventar Inhalt!


    Dazu müsstest du wohl NBT nutzen jedoch habe ich damit noch nie gearbeitet. Als "Work-Around" würde mir jetzt einfallen das Inventar zu setzten wenn man die Box platziert. Und ab da ist es ja dann im Item gespeichert!

    Also wenn der Fehler in Zeile 40 ist wie du oben geschreiben hast können nur 2 Sachen NULL sein entweder deine config ist nicht initialisiert ODER der Spieler der Spieler ist wohl sehr unwahrscheinlich daher initialisiere einfach mal direkt in der Zeile darüber die Config Instanz. Sollte es dann immer noch nicht gehen!

    Um die gestellen Fragen zu beantworten!


    YouTuber bei dennen man sich was abschauen kann gibt es einige das Problem ist das die meisten Tutorials sehr veraltet sind da Minecraft ja erst seit kurzem wieder einen Aufschwung hat.

    jedoch würde ich sagen grundsätzlich kannst du dir einfach den anschauen bei dem DU am besten verstehst was du gerade da machst! Denn einfach nur stumpf abschreiben hat nur einen minimalen Lernwert.


    BTW solltest du vorhaben den Client zu veröffentlichen wirst du dir nochmals einige Rechtliche Dokumente durchlesen müssen uin Bezug auf Copyright etc. Denn grundsätzlich ist es nicht gestattet Code von Mojang zum Download in irgendeiner Form anzubieten. Besonders der Client is da ein heikeles Thema auch verändern darfst du den Code des Clients nicht. zumindest könnte Mojang diese Regelungen in Kraft setzten wenn du es veröffentlichst nur Privat dürfte das wohl kein Problem sein bzw nicht von Mojang nachvollziehbar! Verboten bleibt es trotzdem!


    Zu den Mods:

    Ich habe noch nirgends gehört das jemand einen "Mod" in einen Client eingefügt hat, ich vermute wenn die Mods nicht irgendwo Open Source sind und du das abschreiben kannst wirst du das alles wohl nach/selbst programmieren müssen.


    Admiral_Zott Ich bin auch der Meinung das wenn er noch so wenig Kenntnisse bzw Übung hat, noch etwas mehr mit dem Thema experimentieren sollte. Aber zumindest ein wenig auf die Frage eingehen wäre doch schon eine gute Idee man könnte deine "Antwort" fast als Off-Topic makieren.


    BTW:

    Wenn das so ist, die ich das jetzt verstehe, kann ich dir schon mal im Voraus sagen, dass das so nichts wird.

    Geht das vielleicht auch etwas netter. Klar wird es schwer mit so wenig Kenntnissen, aber direkt allen Wind aus den Segeln nehmen muss nicht sein!

    An sich ein hervorragender Ansatz von David_369 jedoch würde ich es etwas einfacher machen um zu prüfen ob er gerade von einem Knockbackstick getroffen wurde. Prüfe bei der Abfrage ob die Bounding boxen sich überschneiden, ob die Velocity höher als X ist so kannst du steuern wie schnell ein Spieler "weg geschossen" werden muss um Wände zu steuern und es ist zuverlässiger als die letzten 5 Sekunden zu prüfen da hier Fehler auftreten können.

    Also ich verstehe gerade das Problem nicht?


    Okay also es läuft bissher so:

    Habe eine AD Struktur aufgebaut und habe die Clienten und Benutzer angelegt, Netzlaufwerke funktionieren auch eigentlich schon unter dem Pfad: Ungefähr so: \\SERVER\Speicher\Klasse\KLASSE\Benutzer\%username%.


    Da ist doch dein Pfad? Einfach im Explorer eingeben und Enter drücken und als Administrator solltest du dann dort Sachen speichern/ändern können!

    Ich denke mal ich gehe richtig davon aus das es sich hierbei um ein AD gesteuertes Netz handelt.


    Nun sollte das der Fall sein kannst du ganz einfach in der Benutzersteuerung eines Nutzers einen Ordner (Basisordner) festlegen welcher beim Login des Clients verfügbar gemacht wird.


    Es gäbe hierbei aber auch die Möglichkeit ein Skript nach dem Login am Client auszuführen, um zum Beispiel Netzwerklaufwerke einzubinden.

    In dem du widerum solches Dokument ablegen könntest. Jedoch ist für ein einfaches Dokument erstere Variante wohl die vernünftigere :D Zumahl du dir dann die Rechteverwaltung des Netzwerklaufwerkes ersparst!


    Wobei wenn ich so überlege wenn es NUR ein Dokument ist ... könnte man das ja auch einfach z.B. in des Nutzers Dokumente Ordner kopieren!


    Musst du entscheiden wie du es machen willst!

    Zunächst bin ich der Meinung diese Diskussion gehört nicht in dieses Unterforum aber gut verschieben bringt jetzt auch nichts mehr :D


    Helping Ich kann dir zum Großteil zustimmen jedoch darfst du nicht einfach alle Entwickler hier über einen Kamm scheren. JA in diesem Forum sind ein paar Individuen unterwegs die einfach nicht wissen wie man anderen hilft und sich einfach nur "überlegen" fühlen wollen wenn sie einen 15 jährigen Neuling in Java zurechtweisen können! Dennoch gibt es hier auch einige Leute die wirklich korrekt sind, freundlich, hilfsbereit und ihre eigene Meinung auch mit Kritik vereinbaren können!


    Zum Wissen ich kann nicht für alle sprechen, in meinem fall ist es so. Ja ich habe mit Minecraft Plugins programmieren begonnen und bin jetzt beruflich Entwickler :D Nur weil man 1 - 2 Jahre braucht um sich selbst eine Programmiersprache beizubringen, heißt das nicht das sie schlechter sind als andere. Sie haben nur einen anderen Weg gewählt.


    ... einfach nicht zufrieden stellen - wie Elektriker. Egal wie gut du das alles machst, es gibt immer wieder Leute, die dich kritisieren. ...


    Das ist aber doch ganz normal ?

    Wenn in der Geschichte der Menscheit NIE jemand irgendetwas schlecht oder anders besser gefunden hätte würde ich heute diesen Beitrag vermutlich mit einem Stein in eine Felswand ritzen :D

    Kritik ist wichtig und etwas an dem man wachsen kann ... solange diese konstruktiv bleibt natürlich.


    Die Leute erwarten von anderen (sei es Stellenausschreibung oder Vorstellung) die höchste Professionalität, was einfach absurd ist. Mancher dieser Leute, die diese Vorstellungen auch machen sind sowieso unter 18 und machen einen Server zum Spaß auf und nicht wirklich,...

    Ja manchmal wird das Spiel Minecraft von einigen etwas zu ernst genommen. Das liegt aber daran das manche Leute keine Lust darauf haben immer wieder von vorne anzufangen!

    Beispiel:


    Sell dir vor an deinem 21. Geburtstag wirst du zu einem Säugling "zurückgesetzt" und verbringst dein ganzes Leben in einer nicht endenen Schleife von Lernen, Arbeiten und den Schritt zum Erwachsensein zu machen. Irgendwann willst du doch auch mal einfach mit 70 im Bett liegen und an all die Dinge die du erlebt oder geleistet hast zurück denken!


    Selbes Prinzip für Minecraft Entwickler, wenn du einfach wieder und wieder und wieder von vorne beginnst dich in einer neuen Umgebung einzufinden, mit extrem hohen Erwartungen emfangen zu werden und dabei nie ein Ergebnis zu sehen mit dem du zufrieden sein kannst ... dann suckt das ganz schon :D


    Zudem hilft dieses "professionelle Setting" ein wenig dabei die Leute fernzuhalten die auch den Spaß verderben würden indem sie das Vertrauen mit Ihren Rechten missbrauchen und Stunden / Tage lange Arbeit zerstören.


    Ach, das beste kommt zum Schluss: Viele erwarten auch direkt "Was ist die Gegenleistung?", "Wie viel Geld bekommt man?" uvm.

    Leute.. es gibt auch das Wort "Spaß".

    Natürlich gerade die jenigen die hier Volljährig sind. Es gibt ... neben Spaß ... auch noch etwas das sich Real Life nennt (ziehmlich krasse Grafik, nur das mit der Economy Balance klappt ned so ganz :D)

    Und ob du es glaubst oder nicht einige von uns hier haben ein Leben außerhalb des PC (ich nicht bin schon immer ein Shut-In)


    ich gebe dir einen Rat: Mache deine Vorstellung nicht hier im Forum.

    Dieser Beitrag wird wie immer sehr viele Dislikes haben, aber das was ich nun sage, ist die pure Wahrheit.

    Es bringt dir quasi 0, dass du hier eine Vorstellung/Suche machst, da hier die Developer sind, die sowieso nichts anderes kennen als andere zu "kritisieren", sich gut zu fühlen.


    BTW. du machst hier einfach genau das was du anprangerst.Einen auf schlau machen andere heruntersetzten und wozu? Genau einfach um dir im Kopf zu denken

    "HAHAHAHA, denen im Dev-Tek Forum hab ichs aber gezeigt"


    Dein Statement du hast hier die letzten Jahre unregistriert hin und wieder reingeguckt .. naja könnt ich auch schreiben ich war schon seit der Eröffnung von Dev-Tek dabei war aber zu schuchtern mir nen Account zu machen :D

    Du siehst was ich versuche zu sagen, wir müssen dir das halt jetzt mal so glauben. Dennoch scheinst du nicht gerade viel über diese Community zu wissen.

    Und selbst wenn diese Behauptung stimmt hin und wieder mal reingucken bedeutet nicht das man alle Leute hier kennt. Selbst Ich der jetzt schon etwas dabei ist sieht hin und wieder jemand der einfach länger im Forum is als er und auch ein ganz korrekter Typ is :D


    Für andere mehr Punkte bei denen du falsch liegst einfach hierüber Luca Feger 's Beitrag angucken!


    Fazit:


    JA wir sind eine Community aus den verschiedensten Persöhnlichkeiten, der eine etwas frech oder die andere etwas lustiger, aher dennoch sollte niemand hergehen und einfach alle über einen Kamm scheren und uns als Kollektiv degradieren auf arogante Besserwisser!


    BTW. so wenn du ein Problem mit dieser Community hast oder wie manche hier mit andern umgehen dann schreib doch einfach mal DevTek soweit ich das mitbekommen habe ist der ein korrekter Typ mit dem man reden kann :D

    Anstatt hier im SUCHE Unterforum eine Szene zu schmeißen

    Ich vermute mal mit einer anderen Klasse meinst du einen EventHandler der das Item anklicken regelt.


    Also zunächst musst du eine neue Klasse anlegen und dann folgendes hineinschreiben:

    Code
    1. public class InventoryClickListener implements Listener {
    2.     
    3. @EventHandler
    4. public void handleEvent(InventoryClickEvent event) {
    5. //TODO codey stuff
    6. }
    7. }


    Jetzt empfehle ich dir dir mal die Javadoc anzuschauen.

    https://hub.spigotmc.org/javad…/InventoryClickEvent.html

    Damit du weißt was du so machen kannst!


    Alles was du jetzt noch machen musst ist prüfen ob Rechts oder Links Klick und dann ob das Item das richtige ist. Und dann kannst du deinen Teleport ausführen!

    Also zur ersten Frage:


    An sich kann man das so machen. Einzige andere Option die mir jetzt noch einfallen würde wäre das Dokument zu BASE64 umzuwandeln und dann das einfach in die Datenbank schreiben jedoch kann ich mir vorstellen das es dabei zu Problemen kommen kann mit Bildern etc.


    Nun zur zweiten Frage:


    Grundsätzlich würde ich wenn du vorhast eine Detailierte Suche zu unterstützen eine Art Tag System empfhelen oder noch weiter gehen und jedes Stück mit einem Filter Dokument versehen.

    Hier mal wie ich mir das vorstelle:


    Ich habe habe ein Dokument zu Beethoven's 5 Symphonie im Ordner /Documents/Beethoven/

    Jetzt lege ich in ein zentrales Verzeichnis /Searches eine Json in welcher folgendes steht


    Wenn du jetzt nicht den Titel des Stückes weißt, kannst du einfach nach den Instrumenten oder nach den Jahren in denen es entstanden ist.

    Um die Suche performant zu machen empfehle ich jedoch nicht jedes mal alle .JSON zu laden und wieder zu entladen sondern dabei geht es eher darum das einfach nur zu speichern. Beim Start des Programmes speicherst du dir die Informationen einfach zwischen.


    Natürlich kannst du all die Informationen auch in ner relationellen Datenbank speichern. Persöhnlich tendiere ich aber eher zu JSON.

    Genau was du willst sind Packets die nur ein Spieler sieht! Das ist um einiges mehr Aufwand als ein einfacher NPC, weil du jede Bewegung "manuell" als Packet an den Client senden musst.


    Aus Gründen des Aufwandes rate ich hiervon ab. Es ist doch kein Armbruch wenn der NPC nur den Spieler anschaut der sich in der Nähe bewegt :D

    Aber solltest du darauf bestehen wollen. Solltest du dir mal das Grundkonzept von Packets anschauen, wie diese aufgebaut sind und welche es gibt. Mit etwas Recherche sollte das relativ gut machbar sein.


    ProtocolLib ist ein guter Anfang, damit hast du das Grundgerüst bereits gegeben. Jetzt müsstest du "nur noch" die Bewegungen selbst programmieren.

    Zu Beginn was hast du den schon, wie sieht dein Code bisher aus?

    Auch nützlich wären ein paar Informationen zum GUI was soll es können/anzeigen?

    Und wenn du deine "Bungeebridge" schon erwähnst sag doch ein paar Worte dazu, was genau die kann?


    Zum Konzept:

    Ich nehme jetzt einfach mal an du möchtest eine Art Auflistung/Darstellung aller Reports bzw der noch unbearbeiteten Reports und gehe davon aus du kannst OOP und verstehst den Grundaufbau eines solchen Konzeptes.


    Vermutlich der beste Weg wäre ein Inventar zu erstellen in dem die unterste Reihe reserviert ist für Navigation. (Erste Seite/Seite zurück/Seite vorwärts/Letzte Seite) um das zu realisieren brauchst du am besten einen Algorithmus der dir eine HashMap mit Seiten und einer Liste der enthaltenen Elemente zurückgibt.


    HashMap<Integer, List<Report>>


    Die Items solltest du am besten nicht jedesmal in ein neues Inventar legen, sondern ersetzte einfach die bereits vorhandenen.

    Alles weitere ist dann nur noch das Darstellen eines Reports bzw. das Ausführen der möglichen Aktionen (Teleport to Suspect/Message Suspect/etc)

    Ist das wirklich relevant? was soll überhaupt "Tube" sein? YouTube oder ist das irgendeine "Adult Site"?


    Überhaupt ich bin mir sicher dass das rechtlich schwer wird! Denn wie willst du die Webseite testen/prüfen/in Stand halten wenn du die Inhalte rechtlich gesehen nicht mal anschauen dürftest :D


    Naja was er will ist eine Video Streaming Platform mit erweiterbarem/bezahltem Zugang! In etwa wie Amazon Video, Netflix, maxdome. Warum er ein solch bizzares Beispiel dafür nutzt ist mir jedoch auch nicht klar :D

    Also ich würde dir gerne helfen jedoch müssen wir zuerst klären was genau du hier machst den, mir scheint so als hättest du noch nie mit einem Villager gehandelt!


    Aber um auf die Frage einzugehen.

    Um zu prüfen ob er die "Ware" im Inventar hat das hier: 'Inventory.contains()'

    Um die Items dann zu entfernen, gibt es leider seit Anbeginn der Zeit keine vernünftige remove() Methode, weswegen man das kompliziert per Hand machen muss :D

    Deswegen verwenden wir das hier: 'Inventory.all()'

    Ich kann dir aber nicht versichern das das 100 % so klappt hab es nicht getestet.

    Das weiß ich eben nicht an sich speichert das ItemStack[] ja nicht das Objekt selbst sondern die Referenz zu dem Objekt deswegen dachte ich mir das es vielleicht funktioniert :D Aber wie bereits gesagt keine Garantie :(

    So zunächst die Klasse ItemStackWithSlot:


    Damit kannst du einfach deine gewöhnlichen ItemStacks übernehmen bzw. direkt neue anlegen.

    Damit die auch ein Anwedungsbeispiel hast.


    Ich kann dir aber nicht versichern das das 100 % so klappt hab es nicht getestet.

    Wenn es den Slot nicht mit überträgt ins ItemStack Array des Inventares dann müsstet du das ganze einfach manuel per HashMap speichern;

    Ein "Mapping" bedeutet das du gewissermaßen einen Gegenstand virtualisierst . Oder anders gesagt du baust dir eine "Anleitung" wie etwas aussieht/zusammengebaut ist/welche Eigenschaften es hat/etc. Gerade bei ItemStack relativ schreibaufwändig wenn man es richtig machen will aber der wohl einfachste weg wäre folgender:


    WARNUNG: je nachdem wie du das speicherst sieht es nicht wirklich leserlich aus. bzw ist bei der Bukkit YAMLConfiguration nicht mal vollständig :(


    Wenn du jetzt anstatt reinen ItemStacks dieses Objekt speichert kannst du ganz einfach speichern auf welchem Slot das Item war/ist.


    Sollte dir OOP noch fremd sein oder du bist darin nicht sehr geübt rate ich einfach eine HashMap<Integer, ItemStack> ist schnell einfach und kann in einer Config gespeichert werden!