|
26 | 26 | import net.glowstone.net.message.login.LoginSuccessMessage;
|
27 | 27 | import net.glowstone.net.message.play.entity.*;
|
28 | 28 | import net.glowstone.net.message.play.game.*;
|
| 29 | +import net.glowstone.net.message.play.game.TitleMessage.Action; |
29 | 30 | import net.glowstone.net.message.play.inv.*;
|
30 | 31 | import net.glowstone.net.message.play.player.PlayerAbilitiesMessage;
|
31 | 32 | import net.glowstone.net.message.play.player.ResourcePackSendMessage;
|
|
37 | 38 | import net.glowstone.util.TextMessage;
|
38 | 39 | import net.glowstone.util.nbt.CompoundTag;
|
39 | 40 | import net.md_5.bungee.api.chat.BaseComponent;
|
40 |
| -import org.apache.commons.lang3.StringUtils; |
41 | 41 | import org.apache.commons.lang3.Validate;
|
42 | 42 | import org.bukkit.*;
|
43 | 43 | import org.bukkit.World.Environment;
|
|
62 | 62 | import org.bukkit.plugin.Plugin;
|
63 | 63 | import org.bukkit.plugin.messaging.StandardMessenger;
|
64 | 64 | import org.bukkit.scoreboard.Scoreboard;
|
65 |
| -import org.bukkit.title.Title; |
66 |
| -import org.bukkit.title.TitleOptions; |
67 | 65 | import org.bukkit.util.BlockVector;
|
68 | 66 | import org.bukkit.util.Vector;
|
| 67 | +import org.github.paperspigot.Title; |
69 | 68 | import org.json.simple.JSONObject;
|
70 | 69 |
|
71 | 70 | import java.net.InetSocketAddress;
|
@@ -269,11 +268,7 @@ public void playEffect(Location location, Effect effect, int id, int data, float
|
269 | 268 | /**
|
270 | 269 | * The player's current title, if any
|
271 | 270 | */
|
272 |
| - private Title currentTitle = new Title(); |
273 |
| - /** |
274 |
| - * The player's current title options |
275 |
| - */ |
276 |
| - private TitleOptions titleOptions = new TitleOptions(); |
| 271 | + private Title currentTitle = new Title(""); |
277 | 272 | /**
|
278 | 273 | * The one block the player is currently digging.
|
279 | 274 | */
|
@@ -1734,7 +1729,7 @@ public void playNote(Location loc, byte instrument, byte note) {
|
1734 | 1729 | @Override
|
1735 | 1730 | public void playEffect(Location loc, Effect effect, int data) {
|
1736 | 1731 | int id = effect.getId();
|
1737 |
| - boolean ignoreDistance = effect.isDistanceIgnored(); |
| 1732 | + boolean ignoreDistance = effect == Effect.WITHER_SPAWN || effect == Effect.ENDERDRAGON_DIE; |
1738 | 1733 | session.send(new PlayEffectMessage(id, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), data, ignoreDistance));
|
1739 | 1734 | }
|
1740 | 1735 |
|
@@ -1852,62 +1847,73 @@ public void sendMap(MapView map) {
|
1852 | 1847 |
|
1853 | 1848 | @Override
|
1854 | 1849 | public void sendMessage(BaseComponent component) {
|
1855 |
| - |
| 1850 | + throw new UnsupportedOperationException("Not supported yet."); |
1856 | 1851 | }
|
1857 | 1852 |
|
1858 | 1853 | @Override
|
1859 | 1854 | public void sendMessage(BaseComponent... components) {
|
1860 |
| - |
| 1855 | + throw new UnsupportedOperationException("Not supported yet."); |
1861 | 1856 | }
|
1862 | 1857 |
|
1863 | 1858 | @Override
|
1864 | 1859 | public void setPlayerListHeaderFooter(BaseComponent[] header, BaseComponent[] footer) {
|
1865 |
| - |
| 1860 | + throw new UnsupportedOperationException("Not supported yet."); |
1866 | 1861 | }
|
1867 | 1862 |
|
1868 | 1863 | @Override
|
1869 | 1864 | public void setPlayerListHeaderFooter(BaseComponent header, BaseComponent footer) {
|
1870 |
| - |
| 1865 | + throw new UnsupportedOperationException("Not supported yet."); |
1871 | 1866 | }
|
1872 | 1867 |
|
1873 | 1868 | @Override
|
1874 | 1869 | public void setTitleTimes(int fadeInTicks, int stayTicks, int fadeOutTicks) {
|
1875 |
| - |
| 1870 | + currentTitle = new Title(currentTitle.getTitle(), currentTitle.getSubtitle(), fadeInTicks, stayTicks, fadeOutTicks); |
1876 | 1871 | }
|
1877 | 1872 |
|
1878 | 1873 | @Override
|
1879 | 1874 | public void setSubtitle(BaseComponent[] subtitle) {
|
1880 |
| - |
| 1875 | + currentTitle = new Title(currentTitle.getTitle(), subtitle, currentTitle.getFadeIn(), currentTitle.getStay(), currentTitle.getFadeOut()); |
1881 | 1876 | }
|
1882 | 1877 |
|
1883 | 1878 | @Override
|
1884 | 1879 | public void setSubtitle(BaseComponent subtitle) {
|
1885 |
| - |
| 1880 | + currentTitle = new Title(currentTitle.getTitle(), new BaseComponent[]{subtitle}, currentTitle.getFadeIn(), currentTitle.getStay(), currentTitle.getFadeOut()); |
1886 | 1881 | }
|
1887 | 1882 |
|
1888 | 1883 | @Override
|
1889 | 1884 | public void showTitle(BaseComponent[] title) {
|
1890 |
| - |
| 1885 | + sendTitle(new Title(title)); |
1891 | 1886 | }
|
1892 | 1887 |
|
1893 | 1888 | @Override
|
1894 | 1889 | public void showTitle(BaseComponent title) {
|
1895 |
| - |
| 1890 | + sendTitle(new Title(title)); |
1896 | 1891 | }
|
1897 | 1892 |
|
1898 | 1893 | @Override
|
1899 | 1894 | public void showTitle(BaseComponent[] title, BaseComponent[] subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks) {
|
1900 |
| - |
| 1895 | + sendTitle(new Title(title, subtitle, fadeInTicks, stayTicks, fadeOutTicks)); |
1901 | 1896 | }
|
1902 | 1897 |
|
1903 | 1898 | @Override
|
1904 | 1899 | public void showTitle(BaseComponent title, BaseComponent subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks) {
|
| 1900 | + sendTitle(new Title(title, subtitle, fadeInTicks, stayTicks, fadeOutTicks)); |
| 1901 | + } |
1905 | 1902 |
|
| 1903 | + @Override |
| 1904 | + public void sendTitle(Title title) { |
| 1905 | + session.sendAll(TitleMessage.fromTitle(title)); |
1906 | 1906 | }
|
1907 | 1907 |
|
1908 | 1908 | @Override
|
1909 |
| - public void hideTitle() { |
| 1909 | + public void updateTitle(Title title) { |
| 1910 | + sendTitle(title); // TODO: update existing title instead of sending a new title |
| 1911 | + } |
1910 | 1912 |
|
| 1913 | + @Override |
| 1914 | + public void hideTitle() { |
| 1915 | + currentTitle = new Title(""); |
| 1916 | + session.send(new TitleMessage(TitleMessage.Action.CLEAR)); |
1911 | 1917 | }
|
1912 | 1918 |
|
1913 | 1919 | ////////////////////////////////////////////////////////////////////////////
|
@@ -2371,48 +2377,15 @@ public Title getTitle() {
|
2371 | 2377 | return currentTitle.clone();
|
2372 | 2378 | }
|
2373 | 2379 |
|
2374 |
| - @Override |
2375 |
| - public void setTitle(Title title) { |
2376 |
| - setTitle(title, false); |
2377 |
| - } |
2378 |
| - |
2379 |
| - @Override |
2380 |
| - public TitleOptions getTitleOptions() { |
2381 |
| - return titleOptions.clone(); |
2382 |
| - } |
2383 |
| - |
2384 |
| - @Override |
2385 |
| - public void setTitleOptions(TitleOptions options) { |
2386 |
| - if (options == null) { |
2387 |
| - options = new TitleOptions(); |
2388 |
| - } |
2389 |
| - titleOptions = options; |
2390 |
| - session.send(TitleMessage.fromOptions(titleOptions)); |
2391 |
| - } |
2392 |
| - |
2393 |
| - @Override |
2394 |
| - public void setTitle(Title title, boolean forceUpdate) { |
2395 |
| - Validate.notNull(title, "Title cannot be null"); |
2396 |
| - |
2397 |
| - String oldHeading = currentTitle.getHeading(); |
2398 |
| - currentTitle = title; |
2399 |
| - |
2400 |
| - if (forceUpdate || !StringUtils.equals(oldHeading, currentTitle.getHeading())) { |
2401 |
| - session.sendAll(TitleMessage.fromTitle(currentTitle)); |
2402 |
| - } |
2403 |
| - } |
2404 |
| - |
2405 | 2380 | @Override
|
2406 | 2381 | public void clearTitle() {
|
2407 |
| - currentTitle = new Title(); |
2408 |
| - session.send(new TitleMessage(TitleMessage.Action.CLEAR)); |
| 2382 | + session.send(new TitleMessage(Action.CLEAR)); |
2409 | 2383 | }
|
2410 | 2384 |
|
2411 | 2385 | @Override
|
2412 | 2386 | public void resetTitle() {
|
2413 |
| - currentTitle = new Title(currentTitle.getHeading()); |
2414 |
| - titleOptions = new TitleOptions(); |
2415 |
| - session.send(new TitleMessage(TitleMessage.Action.RESET)); |
| 2387 | + currentTitle = new Title(""); |
| 2388 | + session.send(new TitleMessage(Action.RESET)); |
2416 | 2389 | }
|
2417 | 2390 |
|
2418 | 2391 | public GlowBlock getDigging() {
|
|
0 commit comments