Some java 8 code

This commit is contained in:
Shaun Bennett 2015-12-08 08:42:45 -05:00
parent addb2c8c0e
commit a1915e324c
2 changed files with 45 additions and 56 deletions

View File

@ -1,10 +1,12 @@
package mineplex.core.common.util; package mineplex.core.common.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Stream;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Server; import org.bukkit.Server;
@ -18,6 +20,11 @@ public class UtilServer
return getServer().getOnlinePlayers().toArray(new Player[0]); return getServer().getOnlinePlayers().toArray(new Player[0]);
} }
public static Collection<? extends Player> getPlayersCollection()
{
return getServer().getOnlinePlayers();
}
public static List<Player> getSortedPlayers() public static List<Player> getSortedPlayers()
{ {
return getSortedPlayers(new Comparator<Player>() return getSortedPlayers(new Comparator<Player>()

View File

@ -1,7 +1,10 @@
package mineplex.core.noteblock; package mineplex.core.noteblock;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@ -40,78 +43,57 @@ public class NotePlayer
private void startThread() private void startThread()
{ {
Thread thread = new Thread(new Runnable() Thread thread = new Thread(() -> {
{ while (!_finished)
@Override
public void run()
{ {
long startTime = System.currentTimeMillis(); _tick++;
while (!_finished) if (_tick > _song.getLength())
{ {
_tick++; if (_loop)
if (_tick > _song.getLength())
{ {
if (_loop) _tick = 1;
{
_tick = 1;
}
else
{
_finished = true;
_plugin.getServer().getScheduler().runTask(_plugin, new Runnable()
{
@Override
public void run()
{
SongFinishEvent event = new SongFinishEvent(_song);
_plugin.getServer().getPluginManager().callEvent(event);
}
});
return;
}
} }
else
playTick(_tick);
try
{ {
Thread.sleep(_sleepMs); _finished = true;
}
catch (InterruptedException e) _plugin.getServer().getScheduler().runTask(_plugin, () -> {
{ SongFinishEvent event = new SongFinishEvent(_song);
e.printStackTrace(); _plugin.getServer().getPluginManager().callEvent(event);
});
return;
} }
} }
playTick(_tick);
try
{
Thread.sleep(_sleepMs);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
} }
}); });
thread.start(); thread.start();
} }
private void playNote(Note note, float volume, Collection<? extends Player> players)
{
players.stream().filter(_verifier::shouldPlay).forEach((player) ->
player.playSound(player.getEyeLocation(), UtilNote.getInstrumentSound(note.getInstrument()), volume, (float) UtilNote.getPitch(note.getNote() - 33)));
}
private void playTick(int tick) private void playTick(int tick)
{ {
Player[] playerArray = UtilServer.getPlayers(); Collection<? extends Player> players = UtilServer.getPlayersCollection();
List<Player> players = new ArrayList<>(playerArray.length);
for (Player player : playerArray)
{
if (_verifier.shouldPlay(player))
players.add(player);
}
for (NoteLayer layer : _song.getLayers()) float volume = _volumeMult * 1F;
{ _song.getLayers().stream().map(layer -> layer.getNote(tick)).filter(Objects::nonNull).forEach((note) -> playNote(note, volume, players));
Note note = layer.getNote(tick);
if (note != null)
{
float volume = _volumeMult * (layer.getVolume() / 100F);
for (Player player : players)
{
player.playSound(player.getEyeLocation(), UtilNote.getInstrumentSound(note.getInstrument()), volume, (float) UtilNote.getPitch(note.getNote() - 33));
}
}
}
} }
public void cancel() public void cancel()