Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 03/17/19 in all areas

  1. 1 point
    Also ich habe keinen YouTube Kanal, ich mache das nur so zum Spaß nebenher ist meine erste Timelapse (noch nicht fertig). Habe allerdings auch nicht so viel zeit dafür mache ich nur so nebenher. :-) Gruß agentx77
  2. 1 point
    Hi Leute! Ich baue nun schon seit circa 1,5 Wochen an dieser Burg auf dem Gipfel eines Berges, weil ich das einfach einmal ausprobieren wollte. Ich denke das ganze ist für einen ersten Versuch ganz ok geworden wobei sicherlich noch Luft nach oben ist. Falls ihr Verbesserungsvorschläge habt oder generelle Ideen nur her damit ich bin für alles offen hier einmal ein Video von dem ganzen auf meinem Youtube Kanal (wer will kann gerne vorbeischauen, was ich sonst noch so alles mache auf dem Kanal, vl gefällts euch ja) https://www.youtube.com/watch?v=gXRtxJFZ26I&t=17s und wer das ganze selbst erkunden möchte, der kann sich das ganze natürlich herunterladen http://www.mediafire.com/file/36cte9ljb6oll8d/Welt+1.rar
  3. 1 point
    Ganz toll, sehr leicht zu verstehen... !
  4. 1 point
    Guten Abend, im Prinzip musst du dann ja speichern, wer als letztes den Spieler geschlagen hat und beim Spielertod durch Void diese Information mitverarbeiten. Wichtig ist hierfür, dass man den Zeitstempel mitspeichert und eben eine bestimmte Zeit festlegt, die zwischen Hit und Tod sein darf. Dies könnte man mit einer HashMap lösen: In der Event-Listener Klasse @EventHandler public void onPvP(EntityDamageByEntityEvent event) { if (event.isCancelled()) return; // Abbruch, wenn Event gecancelled ist. if (!(event.getDamager() instanceof Player && event.getEntity() instanceof Player)) return; // Abbruch, wenn Angreifer oder Verteidiger kein Spieler ist // Speichert in der Verwaltungsklasse für Hits den Angreifer eines Spielers mit der derzeitigen // Zeit in Millisekunden ab. VerwaltungsklasseHits.setLastDamagerOfPlayer((Player) event.getEntity(), System.currentTimeMillis(), (Player) event.getDamager()); } /* * Gekürzte Variante. Wollte ursprünglich deinen Listener benutzen, aber mit so einem * unaufgeräumten Code wie deinem macht das keinen Spaß */ @EventHandler public void onDeath(PlayerDeathEvent e) { Player player = e.getEntity(); Player player2 = e.getEntity().getKiller(); if (player2 == null) { if (VerwaltungsklasseHits.getLastDamagerOfPlayer(player) == null) { // SPIELER IST NICHT DURCH ANDEREN SPIELER GESTORBEN // Hier kommt die Abhandlung für einen dummen Spieler hin: Todesnachricht setzen, etc. return; // Beenden des Unterprogramms } player2 = VerwaltungsklasseHits.getLastDamagerOfPlayer(player); } // Hier kommt die Abhandlung hin, wenn ein Spieler durch einen anderen Spieler getötet, // geschubbst, oder was auch immer wurde. } VerwaltungsklasseHits public class VerwaltungsklasseHits { private static HashMap<UUID, PlayerHit> playerhits = new HashMap<>(); public static void setLastDamagerOfPlayer(Player damagedPlayer, long timestamp, Player attackingPlayer) { PlayerHit ph = new PlayerHit(attackingPlayer.getUniqueId(), timestamp); playerhits.put(damagedPlayer.getUniqueId(), ph); } /* * Gibt die UUID des letzten Angreifers zurück, sofern der letzte Angriff nicht abgelaufen ist Ist * der letzte Angriff zu lange her, so wird null zurückgegeben */ public static UUID getLastDamagerUUIDOfPlayer(Player damagedPlayer) { PlayerHit ph = playerhits.get(damagedPlayer.getUniqueId()); if (ph == null) // Es gibt keinen letzten Angriff return null; if (ph.isOutdated()) {// Letzter Angriff ist zu lange her. playerhits.remove(damagedPlayer.getUniqueId()); // Lösche den abgelaufenen Hit return null; } return ph.getAttackerUUID(); } /* * Gibt den letzten Angreifer zurück, sofern der letzte Angriff nicht abgelaufen ist und der * Angreifer online ist. Ist der letzte Angriff zu lange her oder der Angreifer ist offline, so * wird null zurückgegeben */ public static Player getLastDamagerOfPlayer(Player damagedPlayer) { PlayerHit ph = playerhits.get(damagedPlayer.getUniqueId()); if (ph == null) // Es gibt keinen letzten Angriff return null; if (ph.isOutdated()) {// Letzter Angriff ist zu lange her. playerhits.remove(damagedPlayer.getUniqueId()); // Lösche den abgelaufenen Hit return null; } if (ph.getAttacker() == null) return null; return ph.getAttacker(); } /* * Löscht den PlayerHit-Eintrag eines bestimmten Spielers */ public static void removeLastPlayerHitOfPlayer(Player damagedPlayer) { playerhits.remove(damagedPlayer.getUniqueId()); } } PlayerHit public class PlayerHit { private UUID uuid; private long timestamp; public PlayerHit(UUID uuid, long timestamp) { this.uuid = uuid; this.timestamp = timestamp; } /* * Gibt die Minecraft-UUID des Angreifers zurück. */ public UUID getAttackerUUID() { return uuid; } /* * Wandelt die Minecraft-UUID des Angreifers in einen Spieler um und gibt diesen zurück. Ist der * Spieler der zugehörigen UUID offline, so wird null zurückgegebben. */ public Player getAttacker() { return Bukkit.getServer().getPlayer(uuid); } /* * Gibt zurück, ob der Hit noch aktuell ist, also ob er noch nicht zu lange her ist. */ public boolean isOutdated() { long differenceInMilliseconds = System.currentTimeMillis() - timestamp; //Zeitdifferenz zwischen jetzt und dem Angriff in ms double differenceInSeconds = differenceInMilliseconds / 1000; //Zeitdifferenz zwischen jetzt und dem Angriff in Sekunden if (differenceInSeconds > 10) { //Wenn Angriff länger als 10 Sekunden her then return true, else return false return true; } return false; } } Ich hoffe das ist ausreichend und funktioniert für dich. Habe dein Programm ja nicht und konnte deshalb nicht testen. Freundliche Grüße BloodSKreaper
  5. 1 point
    Hi, Ich muss mich ganz der Meinung von @agentx77 anschließen (Bilderwechsel, Schriften und Outro). Sonst finde ich es schon gut gelungen Lg Stern
  6. 1 point
    Erstmal vielen lieben dank, das du dir die Zeit genommen hast! Ich verstehe was du meinst aber ich würde es gerne kurz begründen. Ich hab den Schnitt/Szenen wechsel tatsächlich nur an den Beat/"Drops" angepasst. Es ist nicht so gängig auf Youtube. Wird eher bei Leauge of Legends "Dope/Drop was auch immer" Montagen verwendet. Da dachte ich mir, versuche ich es mal bei etwas anderem ^^. Die IP und Version stehen in der Beschreibung. Es soll auch keine "Werbung" sein. Der Server hat mir nur die Möglichkeit gegeben, das ich die Aufnahmen machen kann. Ja beim Outro hab ich echt verkackt... Ich hatte mein Altes genommen und etwas bearbeitet aber irgendwie vergessen, es zu kürzen. Wie gesagt, vielen lieben dank für dein Feedback und das weiß ich wirklich zu schätzen. LG Hy-ViveTV
  7. 1 point
    Hallo, ich finde die Bilder wechseln ein bisschen zu schnell und die dazwischen eingeblendeten Schriften sind teilweise gar nicht zu lesen. Meiner Meinung nach, könnte man das ein bisschen langsamer machen. Außerdem finde ich es komisch, dass du einen Server vorstellst und die IP und die Version nicht nennst. Das könnte man dann ja noch einblenden. Das lange Outro finde ich überflüssig, da würden ein paar Sekunden reichen. Liebe Grüße, agentx77 PS: Das soll keineswegs Beleidigend herüberkommen, es ist nur das, was ich nicht so gut finde. Finde es toll, dass du so etwas überhaupt machst.
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×