[PRERELEASE] Pogic: A client/server plugin system - Add new creatures to your SMP server & soon more

Discussion in 'WIP and Development Status' started by Myers Carpenter, Mar 19, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    Myers Carpenter

    Pogic

    This is a Minecraft client/server mod that will allow SMP servers tell clients to download and run mods. Using this you can add new creatures to your SMP server, and that's just the tip of the iceberg.

    The client side mods are run in a Java sandbox keeping your computer safe from evil servers out there. There is a limited API that the client mods can make use of, but that API will grow.

    Prerelease Demo Video: A Baby Creeper



    Sorry about the sound.

    Release Status

    THIS MOD IS NOT READY FOR GENERAL USE


    That said, if you are a developer, and know how to use git, eclipse, mvn, ant, patch, and the Minecraft Coder Pack you can try this out on your own computer.

    There are hard coded assumptions that you the server is on "localhost" and that port 8081 is safe to use for the mini http server.

    More at the Pogic Github site

    Also see my TODO

    How to Help

    I'm going to be less available the next few days. Please be patient.
    • If you are a developer, you might want to take a swing at some of the TODO items.
    • If you are a modeler you might want to take a swing at creating a new mob that would show this off a lot better than my Baby Creeper.
    • If you are a Java security guru, you might want to audit my code and let me know what the risks are with the current sandbox.
    Bukkit Team: I had to make some modifications to CraftBukkit to get this to work. I'd love to see this merged back in. What can we do?

    Minecraft Single Player Modders: I'd love to help you turn your mod into a SMP Pogic mod.
     
  2. Offline

    MadMonkeyCo

    Awesome, I was just viewing your original thread about this a minute ago.
     
  3. Offline

    Malkierian

    AWESOME! Wonderful news (Bukkit team: PLEASE look into this!).

    One question I thought of that I don't think was asked before: would this enable Mac players to run mods?
     
  4. Offline

    AgentKid

    So I'm assuming that any content mods would have to be modified to work with this?
     
  5. Offline

    SH4D0WS1N

    OMG BABY CREEPER WANT.
    This looks very promising and is the furthest along of the one's I have seen so far. I'm not a fan of git, so could you maybe have another way to upload this? I'd like to see how you can make a mod.
     
  6. Offline

    Myers Carpenter

    I'm confused. I have a mac and I run all the different mods. Why do you think you can't?
     
  7. Offline

    Malkierian

    It's not that I think I can't, I know I can't, because I can't run the minecraft.jar without the META-INF in it. If you have a special way of getting it to work (especially ModLoader), then please, do share.
     
  8. Offline

    Myers Carpenter

    Don't delete the whole META-INF, only META-INF/MOJANG_C.SF and META-INF/MOJANG_C.DSA
     
  9. Offline

    SkyeNet

    Question, how do you install this in windows? I'm a newbie.

    Thanks!
     
  10. Offline

    Drakia

    You don't ;)
     
  11. Offline

    SkyeNet

    how can i use this? do i need something?
     
  12. Offline

    Drakia

    Unless you are a developer (Which obviously you're not) then you don't use it. It is meant for people who develop server/client plugins.
     
  13. Offline

    SkyeNet

    ok. I need to learn more before moving to this thread.

    Thanks!
     
  14. Offline

    Myers Carpenter

    Fixed :)
     
  15. Offline

    yottabyte

    Can't wait! :) Great job so far
     
  16. Offline

    RazorFlint

    Awwww The Little Creeper. Well we now know that baby creepers can only destroy 1 block of your house.
    ----------------------
    Seriously ? This would be so cool dude i mean imagine plane mods, Mo creatures, More tools. That Would Be amazing!
     
  17. Offline

    Myers Carpenter

    Replying to a PM so that I can answer these questions for everyone

    Yes, the folks connecting to your server will have to install a client mod. But it would hopefully be one client mod for any server they want to connect to.


    Maybe. I might use modloader so that Pogic doesn't conflict with other ModLoader SSP mods.

    The server admin would pick mods to add to his server. The players would connect and download those mods automaticly.

    I'll put Plane Mod on a list of things to play with.
     
  18. Offline

    Quenaros

    Agreed.
    Plane mod and Mo 's Creature mod would be the two I really want on my server too. I hope the developers of those mods will work with you together.

    Edit: Wild Grass would be cool too. See Vegetation
    Even Worldedit could use this with its new client addon feature. Worldedit
     
  19. Offline

    lahwran

    the worldedit client addon will be very unlikely to use this. it will be a separate mod as it is now.
     
  20. Offline

    niccholaspage

    Went through all the instructions and set it up and it's pretty amazing :) I'll checkout the baby creeper code to see what I could possibly make!
     
  21. Offline

    CuZnDragon

  22. Offline

    Jebuss

    =) Can't wait till you got it. Too bad That other guy doesn't want to work together on it. Alot of people like Bukkit.
     
  23. Offline

    Raphfrk

    You could submit a pull request. What changes did you make? It can take a while for them to incorporate changes, esp if they are new features, rather than bug fixes.

    I wonder if you could implement the changes as plugin hooks rather than explicitly make it a server mod.

    From what I can see, you just want to intercept "illegal" protocol versions during login.

    You could have that as an event and then have a plugin listen for it.

    This means that your pull request would just have to have a few lines to add the appropriate event call.

    Also, shouldn't the code be

    if (packet1login.a != modProtocolVersion) {
    if (packet1login.a > protocolVersion) {
    this.a("Outdated server!");
    } else {
    this.a("You need to install Pogic: https://github.com/myers/Pogic");
    }
    }

    instead of

    if (packet1login.a != modProtocolVersion) {
    if (packet1login.a > modProtocolVersion) {
    this.a("Outdated server!");
    } else {
    this.a("You need to install Pogic: https://github.com/myers/Pogic");
    }
    }

    Not that it is a big deal.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 12, 2016
  24. Offline

    Myers Carpenter

    This would take care of one point, the protocol stuff. What I'm wondering about is adding to the list of items/entities, being able to code those w/o having to use the semi obfuscated names, etc.

    I started doing this as a Plugin, but realized that trying to make it a plugin was eating too much time.

    [EDIT]

    For example:

    https://github.com/Bukkit/CraftBukkit/commit/e3850a1bd26d23e10a367964594432568604b3ae

    That giant if block doesn't make sense when you flexible list of creatures.
     
  25. Offline

    Raphfrk

    The point is that they are much more likely to accept a pull request that is only a few lines long than one that is much more extensive. This makes it much easier for them to support.

    If you want the spawn event to be supported, you could also add CreatureType.Custom to the creature type enum and add that as the final else in the if-else chain.

    To check which custom creature it was, a plugin c0uld use event.getEntity instanceof <custom entity>.

    Trying to keep a custom version of the server aligned with the main server takes work too, so depends which is more work for you.
     
  26. Offline

    Myers Carpenter

    my thought is that one day, hopefully soon, notch is going to have a mod api that will allow us to add creatures/items/etc, and these enums Bukkit has would be better being a bit more dynamic.
     
  27. Offline

    Raphfrk

    Enums are inherently not dynamic. Anyway, I think you would be waiting a while before official client mods are supported.

    Anyway, from what I can see, what you need as new hooks are for registering new packets and new entities.

    Ideally, they should take the Bukkit versions of those entities. For example, you could have a Bukkit version of the Packet class with method names like getSize() and so on.

    You could then have an internal CraftBukkit class that extends the minecraft Packet class and has a reference to the Bukkit Packet and links all the internals methods to the un-obfuscated methods.

    This means that plugins which use your system wouldn't have to update when minecraft updates.
     
  28. Offline

    G!zmo-rus

    bukkit planes? that would be great!
    i'll put this page into my favourits...
     
  29. Offline

    SycoPrime

    This is excellent.
     
  30. Offline

    Myers Carpenter

    Progress Report:
    • Figured out how to get the sample client mod to have a obfuscation step in it's build process so that it's useful for a non-mcp build of the game.
    • On the client itself, if the server doesn't support Pogic, disable it and reconnect.
     
Thread Status:
Not open for further replies.

Share This Page