Spigot ProtocolSupport 4.28

Adds 1.12-1.4.7 clients support to your spigot 1.12.2 server

  1. This is an issue with 1.6.X clients. @Shevchik is trying to fix this issue (as seen on GitHub, he made a change which (should) fix the bug, however it isn't 100% fixed (yet)). Here is the issue on GitHub: https://github.com/Shevchik/ProtocolSupport/issues/67

    ProtocolSupport is sending a invalid ID for the player entity, you can connect with a 1.6.X, however it will kick you if you see a player entity (or a Citizens NPC).

    Before the lastest change, 1.6.X were kicked because of a large string sent to the client.

    This (for some reason) doesn't happen with 1.5.2 clients :eek:
     
    • Like Like x 1
  2. @Shevchik I already asked this before, however, even with your answer, I can't find a way to do this.

    I want to display a separate MOTD for 1.5.2 and 1.6.X clients, and another to 1.7.X and 1.8.X clients, the first idea that came in my mind was "just get the player address and get it with ProtocolSupportAPI.getProtocolVersion(s)!", however, the ServerListPingEvent doesn't return any sockets, only a InetAddress.

    Another idea was adding the player's IP and the client version to a HashMap, but then the MOTD would only be changed if the player joined the server at least one time.

    Anyway, there is a way to get the client version on a ping event? Thanks!

    EDIT: Maybe it may be possible by editing the packet event to store the player's IP to get with the API...
     
    #146 MrPowerGamerBR, Oct 20, 2015
    Last edited: Oct 20, 2015
  3. You can use ProtocolLib and intercept status serverinfo packets.
     
    • Useful Useful x 1
  4. Thanks!

    For someone who is interested on this, you need to intercept the "PacketType.Status.Server.OUT_SERVER_INFO" packet, then you can use "event.getPlayer().getAddress()" to get the InetSocketAddress, finally, just pass the InetSocketAddress to the ProtocolSupportAPI.

    Like this:
    Code (Text):
    public void onPacketSending(final PacketEvent event) {
         System.out.println(ProtocolSupportAPI.getProtocolVersion(event.getPlayer().getAddress()));
    }
    To edit the MOTD, you need to change the JSON message included in the packet (Create a WrapperStatusServerOutServerInfo to do this)

    EDIT: Also, if someone is going to try this... No, you can't add the IP and the ProtocolVersion to a HashMap and then change it with the ServerListPingEvent, the ServerListPingEvent is called before the StatusServerOutServerInfo packet.

    EDIT 2: No need to mess with JSONs! Just use wrapperstatusserveroutserverinfo.getJsonResponse().setMotD("MOTD");
     
    #148 MrPowerGamerBR, Oct 21, 2015
    Last edited: Oct 21, 2015
  5. Holograms dont work on my server for 1.5.2 users any fix?
     
  6. Holograms are impossible to do in 1.5.2 because it doesn't have horses, and horses are needed to create holograms.

    It is possible to do in 1.6.X/1.7.X, but it would need a plugin to intercept HolographicDisplays to spawn a Horse mounted on a Wither Skull (which I'm trying to do)
     
  7. client 1.5.2 crashed
    -- Head --
    Stacktrace:
    at bhb.a(SourceFile:22)
    at bhb.a(SourceFile:12)

    -- Entity being rendered --
    Details:
    Entity Type: FallingSand (rg)
    Entity ID: 5637285
    Entity Name: Падающий блок
    Entity's Exact location: -796,50, 70,00, -197,50
    Entity's Block location: World: (-797,70,-198), Chunk: (at 3,4,10 in -50,-13; contains blocks -800,0,-208 to -785,255,-193), Region: (-2,-1; contains chunks -64,-32 to -33,-1, blocks -1024,0,-512 to -513,255,-1)
    Entity's Momentum: 0,00, 0,00, 0,00
    Immitating block ID: 16419
    Immitating block data: 4

    -- Renderer details --
    Details:
    Assigned renderer: [email protected]
    Location: -0,37,-0,62,-0,27 - World: (-1,-1,-1), Chunk: (at 15,-1,15 in -1,-1; contains blocks -16,0,-16 to -1,255,-1), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1)
    Rotation: 0.0
    Delta: 0.20699513
    Stacktrace:
    at bgy.a(SourceFile:201)
    at bgy.a(SourceFile:181)
    at bfy.a(RenderGlobal.java:495)
    at bfq.a(EntityRenderer.java:1595)
     
  8. I would recomend you to post your issue here: https://github.com/Shevchik/ProtocolSupport/issues

    @Shevchik always reads the issues on GitHub (and it is more convenient for him) and always provides a fix quickly :)

    Also, are you running the latest ProtocolSupport dev build? The latest dev build is more stable and has less bug than the current version on Spigot.

    Another thing, I'm not an expert in reading error logs, but, as I'm seeing, it crashed because it was a falling sand with block ID "16419", and, as you may know, Minecraft doesn't have a block with ID 16419, this maybe be the cause of the crash.
     
  9. when using this in a 1.8 world would it crash other users cause of the new blocks plus can i configure to only allow 1.7 and 1.8? or any version?
     
  10. No, blocks from 1.8 are shown as other blocks in 1.7/1.6/1.5 (Example: Granite is shown as stone, Sea Lantern is shown as Glowstone, a Guardian is a Squid, etc)

    Also, no, you can't configure the allowed clients versions, however, there is some plugins that you can use to change the allowed versions (Example: https://github.com/BeYkeRYkt/ProtocolSupportVersionControl)
     
  11. Thanks you i appreciated it
     
  12. Is there a download it or i download it on github?
     
  13. You need to compile it with Eclipse (or whatever your preferred IDE is)

    Also, I didn't test it, but maybe it does work (also, doing a plugin to do this is easy)
     
  14. Does this still work. Work with 1.8.8? I've had trouble with it.

    Anyone?