Bukkit, CraftBukkit, Spigot & BungeeCord 1.13 Development Builds

Discussion in 'News and Announcements' started by md_5, Jul 15, 2018.

Thread Status:
Not open for further replies.
  1. "
    Notes for Developers
    The 1.13 API is largely not backwards compatible with older versions. This means that if your plugin targets native 1.13 support it will NOT be able to run on < 1.13. Whilst forwards compatibility has always been a design goal of Bukkit, backwards compatibility has not been. If you wish to maintain support for older versions (e.g. 1.8) then you will need to concurrently develop two versions of your plugin. It is our hope however that going forwards only recent Bukkit versions will be supported by developers as this is the best way for the community as a whole to keep evolving. Once you have made the necessary changes to your plugin to enable successful compilation against the 1.13 API, you must add the following to your plugin.yml:
    Code (Text):
    api-version: 1.13
    This will signal to the server that your plugin has been coded with 1.13 in mind, and that it should not apply any sort of backwards compatibility measures. As a result you will also need to make sure that you have programmed your code to account for reading of older configurations, data, etc. More on this later."
  2. Looks like I'm gonna have to drop all support for non 1.13 things or make two branches
  3. Just drop support for everything less than 1.13, it's easier, requires less work and you have less to worry about
    • Like Like x 3
    • Agree Agree x 1
    • Winner Winner x 1
  4. See the second I do that I'll have a lot of server owners complaining that my plugin no longer works for them
  5. At some point it will become impossible to support every version anyways, might as well drop support now
    • Agree Agree x 4
  6. From what I can tell, unless you happen to use some of the specific features that have changed, there should not be much that will break. And even for features that would require some rewriting, a little bit of reflection should be all that is needed.
  7. Just so I understand correctly, does this mean maps rendered using OpenTerrainGenerator will not work on 1.13? Or am I reading it wrong as it's 6am xD
  8. For me the big thing right now is material so Im cheating with valueOf in some places and gonna make a hashmap or enum for a larger list of enums
  9. md_5

    Administrator Developer

    Unlikely, unless you don't use Materials at all (amongst other things)
  10. md_5

    Administrator Developer

    I don't know what that plugin/mod/program does - you'd have to confirm with the author.
    If the map is entirely pre generated then it should be ok.
    If it uses the inbuilt Vanilla customisation then it will not be.
    • Informative Informative x 3
  11. That's going to probably be one large enum/hashmap
    Edit: depending on what you plan on doing anyways
  12. It's not for all the enums just the dozen of two I use in WildernessTp
  13. Similar to this i assume

    Code (Text):

    import java.util.HashMap;
    import java.util.Map;

    import me.Qball.Wild.Wild;

    import org.bukkit.Bukkit;
    import org.bukkit.Sound;
    import org.bukkit.plugin.Plugin;

    public class Sounds {
    public static Sound sound;
    public static Plugin wild = Wild.getInstance();
    static Map<String, String> soundMap = new HashMap<String, String>();

    public static void init() {
    String[] tmp = Bukkit.getVersion().split("MC: ");
    String version = tmp[tmp.length - 1].substring(0, 3);
    if (version.equals("1.9") || version.equals("1.1")) {
    soundMap.put("Enderman_Teleport", "ENTITY_ENDERMEN_TELEPORT");
    soundMap.put("Egg_Pop", "ENTITY_CHICKEN_EGG");
    soundMap.put("Enderdragon_Growl", "ENITY_ENDERDRAGON_GROWL");
    soundMap.put("Enderman_Scream", "ENTITY_ENDERMEN_SCREAM");
    soundMap.put("Portal_Travel", "BLOCK_PORTAL_TRAVEL");
    soundMap.put("Ghast_Moan", "ENTITY_GHAST_WARN");
    soundMap.put("Ghast_Scream", "ENTITY_GHAST_SCREAM");
    soundMap.put("Explode", "ENTITY_GENERIC_EXPLODE");
    soundMap.put("No-Match", "AMBIENT_CAVE");
    soundMap.put("Arrow Hit", "ENTITY_ARROW_HIT");
    } else {
    soundMap.put("Enderman_Teleport", "ENDERMAN_TELEPORT");
    soundMap.put("Egg_Pop", "CHICKEN_EGG_POP");
    soundMap.put("Enderdragon_Growl", "ENDERDRAGON_GROWL");
    soundMap.put("Enderman_Scream", "ENDERMAN_SCREAM");
    soundMap.put("Portal_Travel", "PORTAL_TRAVEL");
    soundMap.put("Ghast_Moan", "GHAST_MOAN");
    soundMap.put("Ghast_Scream", "GHAST_SCREAM2");
    soundMap.put("Explode", "EXPLODE");
    soundMap.put("No-Match", "AMBIENCE_CAVE");
    soundMap.put("Arrow Hit", "ARROW_HIT");

    // Big thanks to Taliun of spigot for the idea on how to do sounds
    public static Sound getSound() {
    String sounds = wild.getConfig().getString("Sound");
    sounds = sounds.toLowerCase();
    try {
    switch (sounds) {
    case "enderman teleport":
    sound = Sound.valueOf(soundMap.get("Enderman_Teleport"));
    case "egg pop":
    sound = Sound.valueOf(soundMap.get("Egg_Pop"));
    case "dragon growl":
    sound = Sound.valueOf(soundMap.get("Enderdragon_Growl"));
    case "enderman scream":
    sound = Sound.valueOf(soundMap.get("Enderman_Scream"));
    case "portal travel":
    sound = Sound.valueOf(soundMap.get("Portal_Travel"));
    case "ghast moan":
    sound = Sound.valueOf(soundMap.get("Ghast_Moan"));
    case "ghast scream":
    sound = Sound.valueOf(soundMap.get("Ghast_Screan"));
    case "explosion":
    sound = Sound.valueOf(soundMap.get("Explode"));
    case "arrow hit":
    sound = Sound.valueOf(soundMap.get("Arrow Hit"));
    sounds = sounds.toUpperCase();
    try {
    sound = Sound.valueOf(sounds);
    }catch (IllegalArgumentException e){
    sound = Sound.valueOf(soundMap.get("Enderman_Teleport"));

    } catch (NullPointerException e) {
    Bukkit.getLogger().info("Please report this");
    return sound;


    public static boolean match() {
    String Sounds = wild.getConfig().getString("Sound");
    String[] SoundDur = Sounds.split(":");
    String sounds = SoundDur[0];
    boolean Match = true;
    if (sounds.equalsIgnoreCase("enderman teleport") ||
    sounds.equalsIgnoreCase("egg pop") ||
    sounds.equalsIgnoreCase("dragon growl") ||
    sounds.equalsIgnoreCase("enderman scream") ||
    sounds.equalsIgnoreCase("portal travel") ||
    sounds.equalsIgnoreCase("ghast moan") ||
    sounds.equalsIgnoreCase("ghast scream") ||
    sounds.equalsIgnoreCase("explosion") ||
    sounds.equalsIgnoreCase("arrow hit")) {
    Match = true;
    } else {
    Match = false;

    return Match;

    package me.Qball.Wild.Utils;

  14. Very much so hell may copy paste it lol jk I'm gonna need to sersiously thing this out
  15. Hi @md_5 , I had a question about new events as from checking the code updates I haven't seen any nor were they prefaced in your message. Will we be receiving events such as SwimToggleEvent or TridentReadyEvent? Those two instances would both be quite helpful for future plugins but just in general what events can we forsee being added?
  16. md_5

    Administrator Developer

    You're welcome to contribute them: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse
    • Like Like x 1
  17. Depends on how you plan on dealing with the 1.13 update really
  18. Finding a lot of weird bugs with world generation in this pre-release... my server crashed and suddenly it decided to generate a new world(?) in which half of the world seemingly switched to a new seed in the middle of generating, or something... Oh, also, trees are generating really weird... I can confirm that those weird trees don't happen in vanilla, gonna see about filing a bug report

    EDIT: having trouble replicating the issue now :/ all I can say is, sometimes spigot tries to place trees where it shouldn't. Also, if your server crashes quickly after generating a new world, and you haven't specified a seed for the world to generate using, spigot will choose another random seed over the random seed you had before, causing weird chunk boundaries where new terrain was generated with the new random seed. Haven't tested on craftbukkit yet.
    #80 ceruleanReverie, Jul 15, 2018
    Last edited: Jul 15, 2018
Thread Status:
Not open for further replies.