Flexible "does anything" Plugin to encourage MC development using standard NBT commands.

Discussion in 'Plugin Requests' started by Jabberwockie, Aug 23, 2017.

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

    Jabberwockie

    Thank you for mentioning Skript or the new MC Functions anywaaayyyy.

    This plugin is just an idea or poke at the dev community, not request, is
    basically a set of action listeners paired with a command runner, for a
    perfect win it would include all MC player events, 1 or two permissions for admin
    manually running/check commands and that is all. You can find tiny listeners
    in loads of open source plugins that do all of the below only individually.
    You build the listeners library and command runner, the plugin user builds a
    library of commands as reactions to events using the triggers you would provide.
    It does make things considerably easy for others in the future. Your plugin.

    I already have a plugin that handles most that list below but it does many other
    things and makes all other plugins look quite simple in comparison, however it
    is now devless and probably will remain so because it's a behemoth with
    many class files and a busted 1.9 protocolib utilising "do anything" magic
    that was last dev version updated for 1.9 >.> It has a dev on a fork that uses
    effectslib but he mashed up the original code so it's considerably glitchy for
    my configs and partially blind to configs from the protocollib 1.9 version.
    It's very cool he kept it alive though for new users in 1.10+
    It really does anything in 1.9.
    Example. There are many disguise plugins. The plugin I have is not a disguise
    plugin specifically at all yet can do more disguises than all the other disguise
    plugins put together. Items, mobs, players, with particles, all. Other disguise
    plugins only do mobs and players or have limits. The plugin does 100s of other
    unique things also when combined with events and mixed with other unique
    things makes for ... endless options.

    How much power is "endless options" ?

    Your plugin would provide endless options without disguises and 100s of
    other unique things in the plugin I already have. JUST a set of
    listeners and a temp op/perms command runner. The plugin I have has a really reliable
    command runner already that runs 18000+ char long summon custom
    villager's ect in a second np. It also has all the listeners in it and event catching
    handlers. It's dieing.. each new MC version something other thing gets
    chipped away.

    This plugin is called MagicSpells.
    http://nisovin.com/magicspells/start
    If you have time, please have a look at the modifiers, variables, spell types, triggers for spells.
    Also have a look at the external command spell, passive spell. The function "incantation"
    means anything they say can do anything MC or plugins can do when the chat runs a
    command instead? It does a mind bending amount of stuff!
    MagicSpells. If you are looking to help resurrect a plugin (1.9 ProtocolLib issue)

    The source for the semi-abandoned plugin is open for years.
    It has an active Fork for 1.10 + however it's dramatically different and usues
    effectslib not protocollib. How does this plugin do all that and then some
    with just those class files? Because magic? No because very good dev.
    I dont think you would have to be a very good dev to build what this plugin idea is?

    There is a chance you could even knock off many hours of dev work
    building with the old magicspells jar/source as a library for your plugin? Just kind of erm.. stripping out the command runner, events handlers, triggers?
    Sorry for my apparent ignorance, as I see it, I'm not asking that much really.
    Yes I know it smells like Skript >.> It's not ...quit dodging!


    THE PLUGIN...

    A plugin that looks at a list of player variables such as
    current light level,
    current biome,
    current eye level,
    currently on block,
    currently in block,
    currently in xyz to xyz region,
    and watches for events like (more below)
    just picked up item,
    damage type just taken,
    just placed block id,
    just broke block id,
    has just typed,
    Just killed/hit entity type,
    Is mounted,

    Then with some trigger such as say, break block, place block or the above events run a
    number that represents a command in a long list of predefined standard NTB syntax
    MC commands with a config setting % chance to happen or be prevented.

    Plugin users will write all the commands and assemble the triggers themselves using the framework your plugin will provide, with a few template examples in the default config showing what each function does.

    The OP only ability to /pluginname commandnumber run any command from the list by index number manually without the trigger event would also be extremely handy.
    Written for 1.12+ would also be very handy but not essential.

    The triggers would have individual config entries and the commands would
    all have a unique number that can be called up by the triggers any time they happen.
    The command executor and listeners for player events would have to have a high thread priority or be lightling fast. Maybe even it's own seperate thread. /gasp!

    Each command should have an option to temp OP the player running the command
    or apply temporary permissions from other plugins, bukkit, MC etc instead. The plugin
    would probably need a player name placeholder also. It may be a good idea to also add an
    option to commands to replace the normal MC/plugin command chat output with other
    text or just block it.

    The command lines that will be written/shared by users of the plugin should have no
    length limits. Spawning a custom mob on a horse both with armor, custom skull on the mob and lore items potion effects etc for example can be many 1000s chars long, or they can just write a 100 char command to spawn an unarmored zombie with a gold sword.. Whatever they want or are comfortable of coding themself. Users can make commands that repeat if you add a function to repeat a single command several times or they simply add several numbered commands the same then get the trigger to run all those numbers. This would have massive potential lag or skipped function facepalm issues where commands try to execute at the same time, conflict or plugins the commands point to are too slow to respond to many commands at same time. Add a delay function option with a minimum default 1 tick between commands to prevent this? Admins would simply list the commands for that event in the order they want them to run.

    The plugin installers and server admins will make their own commands from MC and existing plugins using events, chances, cooldowns, temporary op, temporary plugin permissions, variables and triggers to cause the magic. This plugin if accepted by some bold dev/team would just be a framework and template that can be changed and used in many many ways with said listeners, variables, event responses. As the commands used would be other plugins and MC commands it should be extremely robust versus future changes. It's reliable, even if Mojang's recent "Hey! Servers... Lets Play Minceraft!" API is not. Easy to translate the bugs away.

    EXAMPLE PLAYER EVENTS.
    1. While in block 9 (water) and breaking block 13 (gravel) run
    command 6 with a 15% chance if biome is deep_ocean to run command 7 instead, unless holding item certain named shovel then run command 10 50% chance regardless of biome when break id 13.

    2. When taking void damage such as frequently found in the end,
    immediately do /top even if they dont have the permissions, or other safety command.

    3. When picking up a block that also has a meta data name and lore,
    run command 54.

    4. While in cuboid area xyz to xyz block command 7 with a 0% chance unless
    it's a desert biome type.

    5. When a player kills a zombie and it is very dark have a 5% chance to spawn
    a custom "much" harder mob in thier face using any MC summon command the config admin can think of.

    6. When a player runs any stated command (chat listener/or just said)
    also run command/s from list, preferably immediately before their command is run.
    command such as... commands that dont even exist! But this plugin would recognise
    any command if it can watch and run commands when it sees recognised chat.
    "/buy food" = run command 56 '/give %p cooked_beef 64 command cost 128 currency.'
    "Any staff *" = run command 88 + 89
    88='/msg %p &4Hello &f%p, &4Staff may be vanished. &f/stafflist&4 or check Dynmap. If you wait a moment more a staff member will be with you."
    89= '/helpop Hoi Oi! %p is looking for help.'
    If you can squeeze in a chat listener that handles * for text wildcards :O awesome.
    Else many triggers required for just one question. "Any staff online?", "Any staff available?", "Any staff here?". An intelligent chat listener is a must for maximum gold medal world record smash win and add loads of power to the plugin.

    7. If a player picks up an item with a specific name (and preferably it detects lore too) run command #77.

    8. If player attempts to break or place any block or a block id in that trigger's list in xyz to xyz region run command 100 which is a blank [] and simply cancels the event before they can complete it or even any other plugins be notified of the event.

    9. When a player successfully fishes in a RIVER biome run command 42.
    What is command 42, you decide. :D 42 is the answer to everything and
    that is what this plugin will do if you add all the MC events and possible triggers.
    Your plugin would be able to use the power of other plugins and all MC commands?
    YES. I tell you no lies. Everything. ... on break block.. do world edit nearby. Anything.


    INSPIRATION. SOME TRIGGERS AND PLAYER VARIABLES...
    Elevation Above Y Number
    Inblock Type
    Pick Up Item
    Elevation Below Y Number
    Sneak
    Teleport
    Onfire
    Player EXP Level Above/Below
    Holding Item
    Roof (Underground)
    Health Above
    Wearing Item/Items
    Blocking
    Join Server
    Riding
    Food Below
    Sprinting
    Has Item In Inventory
    Last Damage Type Taken
    Stopsneak
    Potion Effect
    Moonphase
    Facing Pitch Below
    Dropitem
    Respawn
    Night
    Health Below
    Blockbreak
    Take Damage
    Sprint
    Facing Pitch Above
    Food Above
    Kill
    Sneaking
    Right Click Block Type
    Fish
    Right Click *
    Day
    Server Time
    Stopsprint
    Give Damage
    Light Level Below
    Biome Name
    Quit Server
    Right Click Block Coordinates
    Right Click Entity Type
    Blockplace
    Death
    Outside (No Cover)
    Light Level Above
    Storm/Sun
    In Region/Cuboid/Zone/Area XYZ To XYZ
    Stopfly
    Fly
    Onblock Type
    Shoot


    EXAMPLE EVENTS. CONFIG ENTRIES ADDED BY USER.
    GravelSea:
    trigger-chance: 15
    trigger-cooldown: 20
    trigger-biome: OCEAN
    trigger-event: blockbreak
    trigger-blockbreak: 13
    trigger-inblock: 9
    trigger-commands: 7

    SandySea:
    trigger-biome: DEEP_OCEAN
    trigger-inblock: 9
    trigger-cooldown: 1
    trigger-eye-level-more-than: 40
    trigger-chance: 50
    trigger-event: blockbreak
    trigger-blockbreak: 12
    trigger-commands: 10

    KillZambie:
    trigger-kill: [ZOMBIE,HUSK]
    trigger-cooldown: 60
    trigger-chance: 15
    trigger-light-level: 6
    trigger-biome: ALL
    trigger-commands: 46
    trigger2-holding: '276|&4Red_Crystal_Sword'
    trigger2-commands: 17

    NoSwearing:
    chance: 100
    trigger-cooldown: 1
    chat-trigger : true
    chat:
    - 'Toast'
    - 'Marmite'
    commands: 13

    VoidDodger:
    trigger-chance: 100
    trigger-cooldown: 10
    trigger-biome: ALL
    trigger-event: takedamage
    trigger-damage: [VOID]
    trigger-world-required: mainworld_the_end
    trigger-message-wrong-world: "Too bad.. You should have went to the end for void diving!"
    trigger-commands: 11

    SuperDeepGravel:
    trigger-cooldown: 180
    trigger-chance: 2
    trigger-biome: [DEEP_OCEAN]
    trigger-event: blockbreak
    trigger-block: 13
    trigger-elevation-below: 16
    trigger-commands: 7

    RankUpLevel1:
    trigger-cooldown: -1# -1? This one is used one time and has infinite cooldown.
    trigger-chance: 100
    trigger-event: pickupitem
    trigger-item: '339|name:&4Veteran_Pass lore:&4You?!_But..._How?!|&4Okay_you_may_rank_up.'
    trigger-commands: 77

    JobsWarpProtection:
    trigger-cooldown: 0
    trigger-chance: 100
    trigger-delay: -1# -1 or 0? Instantly, absolute highest priority to prevent the action.

    trigger-event: blockbreak
    trigger-event: blockplace
    trigger-blockplace: []#Empty value means all block place attempts.
    trigger-blockbreak: []#Empty value means all block break attempts.
    trigger-location: 'mainworld,1000,0,1000;-1000,256,-1000'
    trigger-commands: [] No command simply causes the trigger event to be canceled.

    trigger-message: "&8Protected."

    EXAMPLE COMMANDS. CONFIG ENTRIES ADDED BY THE USER.
    (Please assume the player name placeholder would be %p)

    commands:
    '13':
    command-to-run: '/mute %p 5m do not promote Marmite Toast here! You minger!'
    temporary-perms: 'essentials.mute'
    temp-op: false

    '7':
    command-to-run: '/give %p 13 2 name:&bOceanic_Gravel lore:||&bVery_Coarse.|&bVery_wet...'
    temporary-perms: []
    temp-op: true

    '10':
    command-to-run: '/give %p 11 2 name:&bOceanic_Sand lore:||&bVery_Sandy.|&bVery_wet...'
    temporary-perms:
    - 'essentials.give'
    - 'essentials.item'
    - 'essentials.itemspawn.*'
    - 'essentials.itemspawn.item-all'
    temp-op: false

    '11':
    command-to-run: '/top'
    command-delay: 5#ticks
    command-to-run-after-delay: '/heal'
    temp-op: false
    temporary-perms:
    - 'essentials.top'
    - 'essentials.heal'

    '41':
    temporary-perms: []
    temp-op: true
    command-to-run: 'give %p skull 1 3 {display:{Name:"§6Oceanic Gas Can",Lore:["§bSometimes found","§bwhile mining coal","§bin deep oceans.","","§6Value §bG7500.0"]},SkullOwner:{Name:"0",Id:"34d579c2-8441-4634-b491-457db65606f0",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWE1YmFlODU2ZWFkZmI1YmE3ZTllMjE5ZDgyMGQ5YjY1ZTg5YTM0Y2U1NTQxNDJmNTZlYmRlM2ZmNzU2NSJ9fX0="}]}}}'
    block-command-text: true
    blocked-text-replace: '&bYou harvested some Oceanic Gas!'

    '76':
    temp-op: true
    command-to-run: 'playsound entity.enderdragon_fireball.explode master %p ~ ~ ~ 1.1 0.7 0.7'
    block-command-text: true
    blocked-text-replace: |
    &bYour Iron Pickaxe sparked off some very hard coal ore&r
    &band triggered a &cCarbon Dust&b explosion! What did we say?!&r
    &bPlease be careful mining iron with iron picks in deep terrain.&r
    command-cost: '20 exp'/1 gold ingot/1 coal/256 iron ore, 1 or a list of items?

    '77':
    temp-op: true
    command-to-run: 'manuadd %p Veteran'
    block-command-text: true
    blocked-text-replace: |
    &bYou ranked up to Veteran. Hmm... Did you cheat?!


    The plugin would react to certain events as defined by the user in the config,
    handling all or most MC events with the millions of different command
    variations and plugin commands available to them in MC.
    Essentially..doing "anything and everything" if they get that wild
    with the confing it will cover the whole game with new mechanics.
    I would be willing to do all artwork, tutorials and reference,
    examples for any plugin page if you build the plugin.
    I hope this is enough information to inspire in your mind what the plugin idea's aim is.

    "To do anything that MC or your current plugins can do for any
    player based on their actions with only one's imagination as a limit."

    In a jar... :D

    Thank you very much for your time reading and for considering the idea if you do.
    If you make this plugin you have my full agreement that you can claim it as your own.
    I'm sure this plugin would explode with popularity because essentially it would
    do anything the user tells it to whenever they want it to. Even if there is a plugin
    that already does this, which I have not found >.<, is it 1.12 compat?
    Plugins break often because Mojang (since 1.8 and after 1.10 especially) keep
    shifting NBT and API around in an unhelpful way. 100s of devs have vanished
    thanks to THAT corporate trollface. If servers had a plugin like this that
    could adapt with changes to NBT with simple translations each time at their end?
    It would never need updated, nothing would break that could not be fixed, they
    can adapt new MC commands, mobs and block names, NBT or plugins as new
    changes happen in MC.

    This plugin would essentially be a flexible events and commands sandbox.

    To clarify, this plugin would give any 1.12+ server a bunch of player
    events and variables or even all MC player actions to respond to with
    whatever commands the server admins want, with cooldowns and
    temporary other plugin permissions or temporary op if required.
    Any plugin command, any MC command.

    It would be able to adapt to new plugins as servers change and MC NBT
    syntax changes with admins spending few min translating commands
    on servers that wants to update MC version with different NBT.
    They
    can fix any changes at their end NP. Forever.

    Even without any plugins, MC does LOADs of stuff as temporary op.

    https://minecraft.gamepedia.com/Commands
    https://www.spigotmc.org/resources/
    https://mods.curse.com/bukkit-plugins/minecraft
    https://mcstacker.net/ ... 100s of others.

    It probably is asking alot but the real work would be in
    the user's config. You would be providing the framework for
    that config.
    This one is probably for god devs only? I dont know.
    The reactions I see below smell like fear and terror lol :p


    DOES ANYTHING WHENEVER YOU TELL IT TO!?


    version git-Paper-1166 (MC: 1.12) (Implementing API version 1.12-R0.1-SNAPSHOT)

    Plugins (57): GroupManager, FastCraftPlus, GhostBuster, CoreProtect, dynmap, WorldEdit, CaneBully, ClearLag, ExtremeTerrain, WorldBorder, Votifier, EnchantedFurnace, Multiverse-Core, ProtocolLib, VotingPlugin, Zenchantments, mcMMO, CS-CoreLib, Vault, MassiveCore, GiantTrees, PerWorldInventory, HolographicDisplays, LWC, WorldGuard, SignLogger, Slimefun, Barrels, HorseTpWithMe, RandomTeleport, PlayerVaults, MagicSpells, MagicSpellsShop, SlimeXpansion, Essentials, PreciousStones, EssentialsChat, SlimefunLuckyBlocks, ExoticGarden, RecipeManager, SoulJars, MyPreciousStone, ChestShop, Dynmap-Essentials, SlimefunOres, SlimeCalculator, SlimeScrap, Factions, EssentialsProtect, EssentialsAntiBuild, LandValue, EssentialsSpawn, MyPet, Autorank, Jobs, SilkSpawners, RailMiner

    Hosted with Bisect.
    Current TPS = 20
    Maximum memory: 21,504 MB.
    Allocated memory: 21,504 MB.
    Free memory: 8,448 MB.
    World "piper": 361 chunks, 66 entities, 1,708 tiles.
    Nether "piper_nether": 144 chunks, 1 entities, 86 tiles.
    The End "piper_the_end": 144 chunks, 19 entities, 0 tiles.
    World "Creative": 144 chunks, 3 entities, 8 tiles.

    Thank you VERY MUCH for reading
    this behemoth long plugin idea/request.

     
    Last edited: Aug 24, 2017
  2. Offline

    timtower Administrator Administrator Moderator

  3. @Jabberwockie
    If you're looking to using commands, why not use the advancement triggers and custom functions added in 1.12? They seem to have the basic essence of what you're trying to create. Honestly, this plugin would be so large that I would have a hard time seeing anyone take it up as a request.
     
  4. Offline

    Tabuu_

    The request is nicely formated but I still the plugin is way to big. You are essentially asking for a scripting language that can be used by ingame players.
     
  5. Offline

    Reflxction

    I'm pretty sure Skript can handle all of that, and since Skript can be customized with plain English, I think using Skript to make things should not be hard
     
  6. Offline

    Jabberwockie

    Well thank you for the format compliment. As for scripting language
    I'm not sure if you got the plugin's idea right. It would be a bare bones
    highly useable library of event listeners paired with a command
    runner. If you have used such a thing for any time you will note it becomes
    almost essential to providing loads of extra stuff for gameplay. You can mimic
    whole plugins in many instances with this. The triggers prevent anything
    being used by players that admins would not want to happen and I bet
    some servers would just use it for additional server security to fill gaps
    other plugins left or prevent bugs some plugins put out when certain events
    happen. Just a set of MC player event triggers and a command runner.
    I updated the plugin request page with mention of a plugin that does
    this and 100s of other wild things. This idea teases me with the fact I
    cant just code it myself. I know some folks reading this could, without the
    percieved sweat and toil by others. :D Ty again for the response.


    Hey! I know this name. TimTower. It rings many nice sounding bells.
    Thanks for the reply and yes it does smell like Skript I guess. Even if someone
    mad enough does take on this idea it would result in a fallback for Skript fans and
    an easy sandbox for servers that dont even know about Skript. People are running
    in mad fear of this... what have I done... /facepalm Maybe you should put the
    flames out before someone gets burned. You can delete the epic post if like.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Aug 24, 2017
  7. Offline

    timtower Administrator Administrator Moderator

    That could be an understatement.
    The amount of triggers that you want and the amount of checks that need to be done on that is huge.
    This can really mess up your entire week if done incorrectly.

    How would that first example even look like in the config?
    And I got to agree on the others, you are really asking for a skripting plugin but based on keywords.
     
    UnseenMC likes this.
  8. @Jabberwockie
    Well, what you have to understand is how much effort people are willing to put in to plugin requests. A plugin request is basically the least amount of reward for writing a plugin you can get. It's pretty much only going to be available to the person who writes up the plugin request, so very few devs are willing to take on enormous requests.

    Then there are a notes about the request itself. What you're wanting is basically a plugin which lets you create other plugins. Why not at this point just learn to write your own plugins in Java? It'll give you much more flexibility than you can ever get using a framework plugin. And if you don't want to do that, why not use Skript or the Custom functions in 1.12? I honestly don't see why those don't fit your needs.
     
    UnseenMC and Reflxction like this.
Thread Status:
Not open for further replies.

Share This Page