Carpet

Carpet

2M Downloads

[suggestions] just a few

jusTinMan opened this issue · 2 comments

commented

[suggestions]

  1. Control a mob… attack target, move to location, jump, fly, swim, follow target... it would be cool to spawn a dummy mob to control. Cinematics, trolling players, creating ‘pets’ in game…

  2. inventory can be “stored” in a file and retrieved in a command. I know I can create a script to store the data in a file. if possible, to bring up a chess UI like you are looking into a chest.

  3. block commands from non-OP players or non-creative players and not just a toggle on and off for everyone.

  4. If it is not possible already, allow scarpet to execute carpet commands even though the carpet command is disabled.

  5. the ability to create an alias for a command or script. Maybe I could create a short command for /afkFish and have the command make the player use item continually and then shadow but I don’t want them to access all the player commands (suggestion 3 and 4 would be useful in combination)

  6. cooldown control for items, commands (not as important to me), and scripts. I am sure I can just do a workaround and write and read a file with a timestamp for a script. Let’s say I allow the Holy Hand Grenade script but I don’t want them to spam that thing.

  7. the ability to set combining/stack limit of dropped items and/or adjusting the area to which the items will combine/stack. If possible, it would keep its momentum or a split of between the two (Rays Works video ‘Perfect Lossless Item Elevator! | Minecraft 1.14-1.15.1+’ explains the issue with items losing momentum) This would obviously help with lag on a server

commented

All of those are pretty much covered. Feel free to explain more wdym by these.

  1. its already there / sort of, Entity has modify(e,'home'... ) which sets the 'home' position. It does work until the entity is unloaded. experimental since vanilla doesn't handle well types of AI tasks that don't belong to a specific mob type. Along the same lines, there is modify(e, 'target', ... but is commented in code since it was really buggy. Mobs that normally don't attack kept attacking the target even if its dead. Probably at some point will work on custom AI tasks, but that's some future
  1. You can serialize inventory to a tag and store with store_app_data with custom identifier (i.e. not using default app stored data location). Like camera app stores and retrieves saved paths.

  2. That can be something that goes to __config() for sure. Idea is that commands is 'public' functionality. OPs can invoke arbitrary code and 'private' methods via run, so technically it is currently possible

app.sc
__command() -> '';
fun() -> print('public function');
_hidden() -> print('hidden');
__private() -> print('private');

>/app fun  # works for everybody
>/script in app invoke _hidden  # work for everybody
>/script in app run __private()  # only OP have `run` priviledges
  1. It is possible and its designed this way:
    locked disables everything even carpet command only allowing what specified in carpet.conf
    carpet.conf:
!locked
scriptsAutoload true

then add scripts to the /scripts folder with __config() -> m(l('stay_loaded', true));
But you won't be able to disable the app from the game nor stop the engine in case something bad starts to happen with /script stop, because /carpet scriptCommand is disabled.

  1. Currently, just name your script afkFish.sc and it __command() -> will be called when someone types /afkFish. Doesn't it work that way?

  2. Just add a variable global_player_cooldown and ignore events within the cooldown time.

  3. I think too much specific case. I bet you can do that right now (monitoring age 'age' and 'despawn_timer' and 'pickup_delay' - all available in the entity API). Personally never had issues with item elevators and item momentum. If a particular design for an elevator you found somewhere online doesn't work for you, use a different design.

commented

So that helped a lot. I do have an issue with 3,4,5 in combination. Let me explain.
I have a script so that players can run /afkFish and it will run "run('player '+player()+' use interval 10');" then "run('player '+player()+' shadow');". The problem is that I would have to allow commandplayer for everyone to use. This will allow any player to use the command to TP a player (by having them log out then spawn the player then have them log in), pull pranks (by controlling an "afk" player to do whatever), or grief players (by spawning any player that is logged out into a area/situation to where they will be killed when they login). I found out I can set commandplayer to ops only but then /afkFish does not work. Is there a work around to run the player command in the script with higher permissions or "hide" the commandplayer but allow it to be used in a script?
Thanks
ps. this is the best mode and I wish I had more time to mess with it.