mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2025-11-18 06:24:17 +01:00
Added 'scroll-key' to the 'skill scroller' skill casting mode
This commit is contained in:
parent
7eca71063b
commit
affaca202f
@ -94,7 +94,7 @@ public class ConfigMessage {
|
||||
for (String line : lines) send(player, line);
|
||||
}
|
||||
|
||||
public void send(Collection<CommandSender> players) {
|
||||
public void send(Collection<? extends CommandSender> players) {
|
||||
for (CommandSender player : players) for (String line : lines) send(player, line);
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public abstract class SkillCastingInstance extends BukkitRunnable implements Listener {
|
||||
private final PlayerData caster;
|
||||
protected final PlayerData caster;
|
||||
private final SkillCastingHandler handler;
|
||||
|
||||
private static final int RUNNABLE_PERIOD = 10;
|
||||
|
||||
@ -29,7 +29,7 @@ public class SkillScroller extends SkillCastingHandler {
|
||||
/**
|
||||
* Key players need to press to start casting
|
||||
*/
|
||||
private final PlayerKey enterKey, castKey;
|
||||
private final PlayerKey enterKey, castKey, scrollKey;
|
||||
|
||||
@Nullable
|
||||
private final SoundObject enterSound, changeSound, leaveSound;
|
||||
@ -49,6 +49,7 @@ public class SkillScroller extends SkillCastingHandler {
|
||||
// Find keybinds
|
||||
enterKey = PlayerKey.valueOf(UtilityMethods.enumName(Objects.requireNonNull(config.getString("enter-key"), "Could not find enter key")));
|
||||
castKey = PlayerKey.valueOf(UtilityMethods.enumName(Objects.requireNonNull(config.getString("cast-key"), "Could not find cast key")));
|
||||
scrollKey = config.contains("scroll-key") ? PlayerKey.valueOf(UtilityMethods.enumName(config.getString("scroll-key"))) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -123,13 +124,22 @@ public class SkillScroller extends SkillCastingHandler {
|
||||
return getActiveSkills().get(index).getClassSkill();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKeyPress(PlayerKeyPressEvent event) {
|
||||
if (scrollKey == null || event.getPressed() != scrollKey) return;
|
||||
if (!event.getData().equals(getCaster())) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
scrollOf(1);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onScroll(PlayerItemHeldEvent event) {
|
||||
if (scrollKey != null) return;
|
||||
if (!event.getPlayer().equals(getCaster().getPlayer())) return;
|
||||
|
||||
PlayerData playerData = PlayerData.get(event.getPlayer());
|
||||
if (!playerData.hasActiveSkillBound()) {
|
||||
playerData.leaveSkillCasting(true);
|
||||
if (!caster.hasActiveSkillBound()) {
|
||||
caster.leaveSkillCasting(true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -138,14 +148,15 @@ public class SkillScroller extends SkillCastingHandler {
|
||||
final int previous = event.getPreviousSlot(), current = event.getNewSlot();
|
||||
final int dist1 = 9 + current - previous, dist2 = current - previous, dist3 = current - previous - 9;
|
||||
final int change = Math.abs(dist1) < Math.abs(dist2) ? (Math.abs(dist1) < Math.abs(dist3) ? dist1 : dist3) : (Math.abs(dist3) < Math.abs(dist2) ? dist3 : dist2);
|
||||
scrollOf(change); // Scroll
|
||||
}
|
||||
|
||||
// Scroll through items
|
||||
final CustomSkillCastingInstance casting = (CustomSkillCastingInstance) playerData.getSkillCasting();
|
||||
casting.index = mod(casting.index + change, getActiveSkills().size());
|
||||
casting.onTick();
|
||||
casting.refreshTimeOut();
|
||||
private void scrollOf(int delta) {
|
||||
this.index = mod(this.index + delta, getActiveSkills().size());
|
||||
this.onTick();
|
||||
this.refreshTimeOut();
|
||||
|
||||
if (changeSound != null) changeSound.playTo(event.getPlayer());
|
||||
if (changeSound != null) changeSound.playTo(caster.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user