Skip to content

Commit 208ab76

Browse files
committed
Merge pull request #378 from PseudoKnight/master
Add note_play event
2 parents 56bbbe5 + 896957e commit 208ab76

File tree

11 files changed

+217
-50
lines changed

11 files changed

+217
-50
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11

22
package com.laytonsmith.abstraction;
33

4+
import com.laytonsmith.abstraction.enums.MCTone;
5+
46
/**
57
*
68
*
79
*/
810
public interface MCNote extends AbstractionObject {
911

12+
public MCTone getTone();
13+
14+
public int getOctave();
15+
16+
public boolean isSharped();
17+
1018
}

src/main/java/com/laytonsmith/abstraction/bukkit/BukkitMCNote.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,25 @@ public BukkitMCNote(int octave, MCTone tone, boolean sharp) throws IllegalArgume
1616
n = new Note(octave, Note.Tone.valueOf(tone.name()), sharp);
1717
}
1818

19+
public BukkitMCNote(Note n) {
20+
this.n = n;
21+
}
22+
23+
@Override
24+
public MCTone getTone() {
25+
return MCTone.valueOf(n.getTone().toString());
26+
}
27+
28+
@Override
29+
public int getOctave() {
30+
return n.getOctave();
31+
}
32+
33+
@Override
34+
public boolean isSharped() {
35+
return n.isSharped();
36+
}
37+
1938
@Override
2039
public Object getHandle() {
2140
return n;

src/main/java/com/laytonsmith/abstraction/bukkit/BukkitMCObjective.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.laytonsmith.abstraction.MCScore;
66
import com.laytonsmith.abstraction.MCScoreboard;
77
import com.laytonsmith.abstraction.enums.MCDisplaySlot;
8+
import com.laytonsmith.abstraction.enums.MCVersion;
89
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCDisplaySlot;
10+
import com.laytonsmith.core.Static;
911
import org.bukkit.Bukkit;
1012
import org.bukkit.OfflinePlayer;
1113
import org.bukkit.scoreboard.DisplaySlot;
@@ -45,10 +47,9 @@ public String getName() {
4547

4648
@Override
4749
public MCScore getScore(String entry) {
48-
if(ReflectionUtils.hasMethod(o.getClass(), "getScore", null, String.class)){
50+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_7_10)){
4951
return new BukkitMCScore(o.getScore(entry));
5052
} else {
51-
// Old style
5253
OfflinePlayer player = Bukkit.getOfflinePlayer(entry);
5354
return new BukkitMCScore((Score) ReflectionUtils.invokeMethod(o, "getScore", player));
5455
}

src/main/java/com/laytonsmith/abstraction/bukkit/BukkitMCScoreboard.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import com.laytonsmith.abstraction.MCScoreboard;
88
import com.laytonsmith.abstraction.MCTeam;
99
import com.laytonsmith.abstraction.enums.MCDisplaySlot;
10+
import com.laytonsmith.abstraction.enums.MCVersion;
1011
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCDisplaySlot;
12+
import com.laytonsmith.core.Static;
1113
import org.bukkit.Bukkit;
1214
import org.bukkit.OfflinePlayer;
1315
import org.bukkit.scoreboard.Objective;
@@ -72,7 +74,7 @@ public Set<MCObjective> getObjectivesByCriteria(String criteria) {
7274

7375
@Override
7476
public Set<String> getEntries() {
75-
if(ReflectionUtils.hasMethod(s.getClass(), "getEntries", null)){
77+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_7_10)){
7678
return s.getEntries();
7779
} else {
7880
// Old style, where we have to build it from the list of players
@@ -96,12 +98,11 @@ public MCTeam getPlayerTeam(MCOfflinePlayer player) {
9698
@Override
9799
public Set<MCScore> getScores(String entry) {
98100
Set<MCScore> ret = new HashSet<>();
99-
if(ReflectionUtils.hasMethod(s.getClass(), "getScores", null, String.class)){
101+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_7_10)){
100102
for (Score o : s.getScores(entry)) {
101103
ret.add(new BukkitMCScore(o));
102104
}
103105
} else {
104-
// Old style, we have to build the list of offline players ourselves
105106
OfflinePlayer player = Bukkit.getOfflinePlayer(entry);
106107
for (Score o : (Set<Score>) ReflectionUtils.invokeMethod(s, "getScores", player)) {
107108
ret.add(new BukkitMCScore(o));
@@ -140,7 +141,7 @@ public MCTeam registerNewTeam(String name) {
140141

141142
@Override
142143
public void resetScores(String entry) {
143-
if(ReflectionUtils.hasMethod(s.getClass(), "resetScores", null, String.class)){
144+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_7_10)){
144145
s.resetScores(entry);
145146
} else {
146147
OfflinePlayer player = Bukkit.getOfflinePlayer(entry);

src/main/java/com/laytonsmith/abstraction/bukkit/BukkitMCTeam.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import java.util.Set;
88

99
import com.laytonsmith.abstraction.enums.MCNameTagVisibility;
10+
import com.laytonsmith.abstraction.enums.MCVersion;
1011
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCNameTagVisibility;
12+
import com.laytonsmith.core.Static;
1113
import org.bukkit.Bukkit;
1214
import org.bukkit.OfflinePlayer;
1315
import org.bukkit.scoreboard.NameTagVisibility;
@@ -22,11 +24,9 @@ public BukkitMCTeam(Team team) {
2224

2325
@Override
2426
public void addEntry(String entry) {
25-
if(ReflectionUtils.hasMethod(t.getClass(), "addEntry", null, String.class)){
26-
// Spigot method
27+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_8_7)){
2728
t.addEntry(entry);
2829
} else {
29-
// Bukkit method
3030
OfflinePlayer player = Bukkit.getOfflinePlayer(entry);
3131
ReflectionUtils.invokeMethod(t, "addPlayer", player);
3232
}
@@ -61,13 +61,11 @@ public MCNameTagVisibility getNameTagVisibility() {
6161
@Override
6262
public Set<String> getEntries() {
6363
Set<String> ret = new HashSet<String>();
64-
if(ReflectionUtils.hasMethod(t.getClass(), "getEntries", null)) {
65-
// Spigot method
64+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_8_7)){
6665
for (String e : t.getEntries()) {
6766
ret.add(e);
6867
}
6968
} else {
70-
// Bukkit method
7169
for (OfflinePlayer o : (Set<OfflinePlayer>) ReflectionUtils.invokeMethod(t, "getPlayers")) {
7270
ret.add(o.getName());
7371
}
@@ -97,23 +95,19 @@ public String getSuffix() {
9795

9896
@Override
9997
public boolean hasEntry(String entry) {
100-
if(ReflectionUtils.hasMethod(t.getClass(), "hasEntry", null, String.class)){
101-
// Spigot method
98+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_8_7)){
10299
return t.hasEntry(entry);
103100
} else {
104-
// Bukkit method
105101
OfflinePlayer player = Bukkit.getOfflinePlayer(entry);
106102
return (boolean) ReflectionUtils.invokeMethod(t, "hasPlayer", player);
107103
}
108104
}
109105

110106
@Override
111107
public boolean removeEntry(String entry) {
112-
if(ReflectionUtils.hasMethod(t.getClass(), "removeEntry", null, String.class)){
113-
// Spigot method
108+
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_8_7)){
114109
return t.removeEntry(entry);
115110
} else {
116-
// Bukkit method
117111
OfflinePlayer player = Bukkit.getOfflinePlayer(entry);
118112
return (boolean) ReflectionUtils.invokeMethod(t, "removePlayer", player);
119113
}

src/main/java/com/laytonsmith/abstraction/bukkit/events/BukkitBlockEvents.java

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,23 @@
77
import com.laytonsmith.abstraction.MCEntity;
88
import com.laytonsmith.abstraction.MCItemStack;
99
import com.laytonsmith.abstraction.MCLocation;
10+
import com.laytonsmith.abstraction.MCNote;
1011
import com.laytonsmith.abstraction.MCPlayer;
1112
import com.laytonsmith.abstraction.blocks.MCBlock;
1213
import com.laytonsmith.abstraction.blocks.MCBlockFace;
1314
import com.laytonsmith.abstraction.blocks.MCBlockState;
1415
import com.laytonsmith.abstraction.bukkit.BukkitMCItemStack;
1516
import com.laytonsmith.abstraction.bukkit.BukkitMCLocation;
17+
import com.laytonsmith.abstraction.bukkit.BukkitMCNote;
1618
import com.laytonsmith.abstraction.bukkit.blocks.BukkitMCBlock;
1719
import com.laytonsmith.abstraction.bukkit.blocks.BukkitMCBlockState;
1820
import com.laytonsmith.abstraction.bukkit.entities.BukkitMCEntity;
1921
import com.laytonsmith.abstraction.bukkit.entities.BukkitMCPlayer;
2022
import com.laytonsmith.abstraction.enums.MCIgniteCause;
23+
import com.laytonsmith.abstraction.enums.MCInstrument;
2124
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCBlockFace;
2225
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCIgniteCause;
26+
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCInstrument;
2327
import com.laytonsmith.abstraction.events.MCBlockBreakEvent;
2428
import com.laytonsmith.abstraction.events.MCBlockBurnEvent;
2529
import com.laytonsmith.abstraction.events.MCBlockDispenseEvent;
@@ -30,25 +34,17 @@
3034
import com.laytonsmith.abstraction.events.MCBlockPistonExtendEvent;
3135
import com.laytonsmith.abstraction.events.MCBlockPistonRetractEvent;
3236
import com.laytonsmith.abstraction.events.MCBlockPlaceEvent;
37+
import com.laytonsmith.abstraction.events.MCNotePlayEvent;
3338
import com.laytonsmith.abstraction.events.MCSignChangeEvent;
3439
import com.laytonsmith.annotations.abstraction;
3540
import com.laytonsmith.core.constructs.CArray;
3641
import com.laytonsmith.core.constructs.CString;
3742
import com.laytonsmith.core.constructs.Target;
3843
import com.laytonsmith.core.exceptions.ConfigRuntimeException;
3944
import com.laytonsmith.core.functions.Exceptions.ExceptionType;
45+
import org.bukkit.Note;
4046
import org.bukkit.block.Block;
41-
import org.bukkit.event.block.BlockBreakEvent;
42-
import org.bukkit.event.block.BlockBurnEvent;
43-
import org.bukkit.event.block.BlockDispenseEvent;
44-
import org.bukkit.event.block.BlockEvent;
45-
import org.bukkit.event.block.BlockGrowEvent;
46-
import org.bukkit.event.block.BlockIgniteEvent;
47-
import org.bukkit.event.block.BlockPistonEvent;
48-
import org.bukkit.event.block.BlockPistonExtendEvent;
49-
import org.bukkit.event.block.BlockPistonRetractEvent;
50-
import org.bukkit.event.block.BlockPlaceEvent;
51-
import org.bukkit.event.block.SignChangeEvent;
47+
import org.bukkit.event.block.*;
5248
import org.bukkit.util.Vector;
5349

5450
import java.util.ArrayList;
@@ -435,4 +431,44 @@ public MCBlockState getNewState() {
435431
return new BukkitMCBlockState(bge.getNewState());
436432
}
437433
}
434+
435+
@abstraction(type = Implementation.Type.BUKKIT)
436+
public static class BukkitMCNotePlayEvent implements MCNotePlayEvent {
437+
438+
NotePlayEvent npe;
439+
440+
public BukkitMCNotePlayEvent(NotePlayEvent event) {
441+
npe = event;
442+
}
443+
444+
@Override
445+
public Object _GetObject() {
446+
return npe;
447+
}
448+
449+
@Override
450+
public MCBlock getBlock() {
451+
return new BukkitMCBlock(npe.getBlock());
452+
}
453+
454+
@Override
455+
public MCNote getNote() {
456+
return new BukkitMCNote(npe.getNote());
457+
}
458+
459+
@Override
460+
public void setNote(MCNote note) {
461+
npe.setNote((Note) note.getHandle());
462+
}
463+
464+
@Override
465+
public MCInstrument getInstrument() {
466+
return BukkitMCInstrument.getConvertor().getAbstractedEnum(npe.getInstrument());
467+
}
468+
469+
@Override
470+
public void setInstrument(MCInstrument i) {
471+
npe.setInstrument(BukkitMCInstrument.getConvertor().getConcreteEnum(i));
472+
}
473+
}
438474
}

src/main/java/com/laytonsmith/abstraction/bukkit/events/drivers/BukkitBlockListener.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,7 @@
1111
import org.bukkit.event.EventHandler;
1212
import org.bukkit.event.EventPriority;
1313
import org.bukkit.event.Listener;
14-
import org.bukkit.event.block.BlockBreakEvent;
15-
import org.bukkit.event.block.BlockBurnEvent;
16-
import org.bukkit.event.block.BlockDispenseEvent;
17-
import org.bukkit.event.block.BlockGrowEvent;
18-
import org.bukkit.event.block.BlockIgniteEvent;
19-
import org.bukkit.event.block.BlockPistonExtendEvent;
20-
import org.bukkit.event.block.BlockPistonRetractEvent;
21-
import org.bukkit.event.block.BlockPlaceEvent;
22-
import org.bukkit.event.block.SignChangeEvent;
14+
import org.bukkit.event.block.*;
2315

2416
/**
2517
*
@@ -112,4 +104,10 @@ public void onBlockGrow(BlockGrowEvent e) {
112104
BukkitBlockEvents.BukkitMCBlockGrowEvent bge = new BukkitBlockEvents.BukkitMCBlockGrowEvent(e);
113105
EventUtils.TriggerListener(Driver.BLOCK_GROW, "block_grow", bge);
114106
}
107+
108+
@EventHandler(priority = EventPriority.LOWEST)
109+
public void onNotePlay(NotePlayEvent e) {
110+
BukkitBlockEvents.BukkitMCNotePlayEvent npe = new BukkitBlockEvents.BukkitMCNotePlayEvent(e);
111+
EventUtils.TriggerListener(Driver.NOTE_PLAY, "note_play", npe);
112+
}
115113
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.laytonsmith.abstraction.events;
2+
3+
import com.laytonsmith.abstraction.MCNote;
4+
import com.laytonsmith.abstraction.enums.MCInstrument;
5+
6+
public interface MCNotePlayEvent extends MCBlockEvent {
7+
8+
public MCNote getNote();
9+
10+
public void setNote(MCNote note);
11+
12+
public MCInstrument getInstrument();
13+
14+
public void setInstrument(MCInstrument i);
15+
}

src/main/java/com/laytonsmith/core/events/Driver.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public enum Driver {
2323
BLOCK_PLACE,
2424
SIGN_CHANGED,
2525
REDSTONE_CHANGED,
26+
NOTE_PLAY,
2627

2728
/**
2829
* Entity events

0 commit comments

Comments
 (0)