mc-shell 0.7.0__tar.gz → 0.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mc_shell-0.7.0 → mc_shell-0.7.1}/PKG-INFO +2 -3
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/__init__.py +175 -66
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/constants.py +2 -5
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/index.html +2 -2
- mc_shell-0.7.1/mcshell/data/app/mced.3f8a9cca.css +2 -0
- mc_shell-0.7.1/mcshell/data/app/mced.3f8a9cca.css.map +1 -0
- mc_shell-0.7.0/mcshell/data/app/mced.484d99b8.js → mc_shell-0.7.1/mcshell/data/app/mced.de838669.js +109 -86
- mc_shell-0.7.0/mcshell/data/app/mced.484d99b8.js.map → mc_shell-0.7.1/mcshell/data/app/mced.de838669.js.map +1 -1
- mc_shell-0.7.1/mcshell/data/app/toolbox.63a7b2d6.xml +482 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/materials/colourables.json +154 -154
- mc_shell-0.7.1/mcshell/data/materials/entity_overrides.json +4 -0
- mc_shell-0.7.1/mcshell/data/materials/materials.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/materials/pickers.json +184 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/materials/singles.json +2 -171
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/powers/stdlib.json +2669 -1
- mc_shell-0.7.1/mcshell/digitalgeometryactions.py +60 -0
- mc_shell-0.7.0/mcshell/mceventactions.py → mc_shell-0.7.1/mcshell/eventactions.py +0 -7
- mc_shell-0.7.1/mcshell/mcactions.py +115 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcactions_base.py +26 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcblockly.py +140 -123
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcclient.py +46 -26
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcplayer.py +23 -13
- mc_shell-0.7.1/mcshell/mcscraper.py +240 -0
- mc_shell-0.7.1/mcshell/playeractions.py +75 -0
- mc_shell-0.7.1/mcshell/pyncraftcactions.py +136 -0
- mc_shell-0.7.1/mcshell/qturtleactions.py +122 -0
- mc_shell-0.7.1/mcshell/registry_builder.py +594 -0
- mc_shell-0.7.1/mcshell/serveractions.py +183 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/pyproject.toml +2 -3
- mc_shell-0.7.0/mcshell/data/app/mced.55f94dd4.css +0 -2
- mc_shell-0.7.0/mcshell/data/app/mced.55f94dd4.css.map +0 -1
- mc_shell-0.7.0/mcshell/data/app/toolbox.48fd1f79.xml +0 -758
- mc_shell-0.7.0/mcshell/data/materials/entity_overrides.json +0 -4
- mc_shell-0.7.0/mcshell/data/materials/materials.pkl +0 -0
- mc_shell-0.7.0/mcshell/mcactions.py +0 -454
- mc_shell-0.7.0/mcshell/mcscraper.py +0 -238
- mc_shell-0.7.0/mcshell/pyncactions.py +0 -262
- mc_shell-0.7.0/mcshell/serveractions.py +0 -204
- {mc_shell-0.7.0 → mc_shell-0.7.1}/LICENSE +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/README.md +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/Matrix3.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/Vec3.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/blueprints/control_api.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/blueprints/ipython_api.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/blueprints/powers_api.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/FruitJuice-0.3.0.jar +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/FruitJuice-0.4.0.jar +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/FruitJuice-0.4.1.jar +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/control.a8439284.css +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/control.a8439284.css.map +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/control.b03e9afc.js +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/control.b03e9afc.js.map +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/control.html +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/mced.a4de160c.js +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/mced.a4de160c.js.map +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/mced.efd4d8e7.css +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/app/mced.efd4d8e7.css.map +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/control_layout.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/flat_world/data/minecraft/dimension/overworld.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/flat_world/data/minecraft/worldgen/biome/the_void.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/flat_world/pack.mcmeta +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/void_world/data/minecraft/dimension/overworld.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/void_world/data/minecraft/functions/init.mcfunction +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/void_world/data/minecraft/tags/functions/load.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/void_world/data/minecraft/worldgen/biome/the_void.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/datapacks/void_world/pack.mcmeta +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/doc/command_docs.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/entities/entity_id_map.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/entities/generate_entity_blocks.mjs +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/entities/pickers.json +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/materials/generate_material_blocks.mjs +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/materials/mcblocks.csv +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/paper-global-template.yaml +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/toolbox_template.xml +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/%3F.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/Commands.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/EntityType.java.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/Material.html.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/ability.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/advancement.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/alwaysday.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/attribute.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/ban-ip.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/ban.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/banlist.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/bossbar.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/camera.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/camerashake.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/changesetting.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/clear.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/clearspawnpoint.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/clone.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/connect.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/damage.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/data.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/datapack.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/daylock.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/debug.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/dedicatedwsserver.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/defaultgamemode.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/deop.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/dialogue.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/difficulty.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/effect.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/enchant.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/event.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/execute.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/experience.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/fill.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/fillbiome.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/fog.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/forceload.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/function.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/gamemode.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/gamerule.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/gametest.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/give.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/help.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/immutableworld.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/item.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/jfr.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/kick.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/kill.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/list.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/locate.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/loot.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/me.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/mobevent.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/msg.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/music.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/op.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/ops.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/pardon-ip.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/pardon.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/particle.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/perf.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/permission.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/place_(Java_Edition).pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/playanimation.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/playsound.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/publish.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/random.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/recipe.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/reload.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/remove.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/replaceitem.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/return.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/ride.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/save-all.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/save-off.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/save-on.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/save.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/say.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/schedule.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/scoreboard.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/script.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/scriptevent.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/seed.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/setblock.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/setidletimeout.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/setmaxplayers.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/setworldspawn.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/spawnpoint.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/spectate.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/spreadplayers.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/stop.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/stopsound.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/structure.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/summon.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/tag.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/team.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/teammsg.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/teleport.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/tell.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/tellraw.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/testfor.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/testforblock.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/testforblocks.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/tickingarea.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/time.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/title.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/titleraw.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/tm.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/toggledownfall.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/tp.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/transferserver.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/trigger.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/volumearea.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/w.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/wb.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/weather.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/whitelist.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/worldborder.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/worldbuilder.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/wsserver.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/data/webpage-cache/xp.pkl +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcexperience_base.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mclsystem.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcrepo.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcserver.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcshell.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcturtle.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcvoxel.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/mcvoxel_original.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/ppdownloader.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/ppmanager.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/__init__.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/block.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/connection.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/entity.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/event.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/logger.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/minecraft.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/util.py +0 -0
- {mc_shell-0.7.0 → mc_shell-0.7.1}/mcshell/vendored/pyncraft/vec3.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mc-shell
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.1
|
|
4
4
|
Summary: An interactive shell and editor for controlling Minecraft servers and creating powers.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: Jeff
|
|
@@ -12,7 +12,6 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
-
Requires-Dist: aio-mc-rcon
|
|
16
15
|
Requires-Dist: beautifulsoup4
|
|
17
16
|
Requires-Dist: blockapily
|
|
18
17
|
Requires-Dist: click
|
|
@@ -21,13 +20,13 @@ Requires-Dist: flask
|
|
|
21
20
|
Requires-Dist: flask-cors
|
|
22
21
|
Requires-Dist: flask-socketio
|
|
23
22
|
Requires-Dist: ipython
|
|
23
|
+
Requires-Dist: mctools (>=1.4.1,<2.0.0)
|
|
24
24
|
Requires-Dist: numpy
|
|
25
25
|
Requires-Dist: pexpect
|
|
26
26
|
Requires-Dist: pickleshare
|
|
27
27
|
Requires-Dist: pytest (>=9.0.2,<10.0.0)
|
|
28
28
|
Requires-Dist: python-socketio[client]
|
|
29
29
|
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
|
30
|
-
Requires-Dist: rcon
|
|
31
30
|
Requires-Dist: requests
|
|
32
31
|
Requires-Dist: rich
|
|
33
32
|
Requires-Dist: voxelmap (>=5.1.1,<6.0.0)
|
|
@@ -52,6 +52,7 @@ class MCShell(Magics):
|
|
|
52
52
|
|
|
53
53
|
self.active_paper_server: Optional[PaperServerManager ,None ] = None
|
|
54
54
|
|
|
55
|
+
|
|
55
56
|
def _complete_world_command(self, ipyshell, event):
|
|
56
57
|
ipyshell.user_ns.update(dict(rcon_event=event))
|
|
57
58
|
text = event.symbol
|
|
@@ -494,7 +495,7 @@ class MCShell(Magics):
|
|
|
494
495
|
except ConnectionRefusedError as e:
|
|
495
496
|
print("[red bold]Unable to send command. Is the server running?[/]")
|
|
496
497
|
pprint(self.server_data)
|
|
497
|
-
except
|
|
498
|
+
except RCONAuthenticationError as e:
|
|
498
499
|
print("[red bold]The password is wrong. Use %mc_login reset[/]")
|
|
499
500
|
|
|
500
501
|
def _get_client(self):
|
|
@@ -506,41 +507,105 @@ class MCShell(Magics):
|
|
|
506
507
|
def _help(self, *args):
|
|
507
508
|
return self._send('help', *args)
|
|
508
509
|
def _run(self, *args):
|
|
509
|
-
return
|
|
510
|
+
return self._send('run',*args)
|
|
510
511
|
def _data(self, *args):
|
|
511
512
|
return self._send('data',*args)
|
|
512
513
|
|
|
514
|
+
# @property
|
|
515
|
+
# def commands(self):
|
|
516
|
+
# _rcon_commands = {}
|
|
517
|
+
# if not self.rcon_commands:
|
|
518
|
+
# try:
|
|
519
|
+
# _help_text = self._help()
|
|
520
|
+
# except:
|
|
521
|
+
# return _rcon_commands
|
|
522
|
+
#
|
|
523
|
+
# _help_data = list(filter(lambda x: x != '', map(lambda x: x.split(' '), _help_text.split('/'))))[1:]
|
|
524
|
+
# for _help_datum in _help_data:
|
|
525
|
+
# _cmd = _help_datum[0]
|
|
526
|
+
# if 'minecraft:' in _cmd:
|
|
527
|
+
# _cmd = _cmd.split(':')[1]
|
|
528
|
+
# try:
|
|
529
|
+
# _cmd_data = self._help(_cmd)
|
|
530
|
+
# except:
|
|
531
|
+
# return
|
|
532
|
+
# if not _cmd_data:
|
|
533
|
+
# # found a shortcut command like xp -> experience
|
|
534
|
+
# continue
|
|
535
|
+
# _cmd_data = list(map(lambda x:x.split()[1:],_cmd_data.split('/')))
|
|
536
|
+
# _sub_cmd_data = {}
|
|
537
|
+
# for _sub_cmd_datum in _cmd_data[1:]:
|
|
538
|
+
# if not _sub_cmd_datum[0][0] in ('<','[','('):
|
|
539
|
+
# _sub_cmd_data.update({_sub_cmd_datum[0]: _sub_cmd_datum[1:]})
|
|
540
|
+
# else:
|
|
541
|
+
# # TODO what about commands without sub-commands?
|
|
542
|
+
# _sub_cmd_data.update({' ': _sub_cmd_datum})
|
|
543
|
+
# _rcon_commands.update({_cmd.replace('-','_'): _sub_cmd_data})
|
|
544
|
+
# self.rcon_commands = _rcon_commands
|
|
545
|
+
# return self.rcon_commands
|
|
546
|
+
|
|
513
547
|
@property
|
|
514
548
|
def commands(self):
|
|
515
|
-
|
|
549
|
+
"""
|
|
550
|
+
Builds a unique, deduplicated command and subcommand registry.
|
|
551
|
+
Deduplicates sub-items like gamerules (e.g., 'spawn_mobs' vs 'minecraft:spawn_mobs').
|
|
552
|
+
"""
|
|
516
553
|
if not self.rcon_commands:
|
|
554
|
+
_rcon_commands = {}
|
|
517
555
|
try:
|
|
518
|
-
_help_text = self._help()
|
|
556
|
+
_help_text = self._help() # Stripped by MCClient
|
|
519
557
|
except:
|
|
520
|
-
return
|
|
558
|
+
return {}
|
|
559
|
+
|
|
560
|
+
if not _help_text:
|
|
561
|
+
return {}
|
|
562
|
+
|
|
563
|
+
seen_base_cmds = set()
|
|
564
|
+
_help_data = list(filter(None, _help_text.split('/')))
|
|
565
|
+
|
|
566
|
+
for entry in _help_data:
|
|
567
|
+
parts = entry.split()
|
|
568
|
+
if not parts or parts[0] in ('?', 'bukkit:?'):
|
|
569
|
+
continue
|
|
570
|
+
|
|
571
|
+
raw_cmd = parts[0]
|
|
572
|
+
base_cmd = raw_cmd.split(':')[-1]
|
|
573
|
+
|
|
574
|
+
if base_cmd in seen_base_cmds:
|
|
575
|
+
continue
|
|
576
|
+
|
|
577
|
+
seen_base_cmds.add(base_cmd)
|
|
578
|
+
clean_key = raw_cmd.replace('-', '_')
|
|
521
579
|
|
|
522
|
-
_help_data = list(filter(lambda x: x != '', map(lambda x: x.split(' '), _help_text.split('/'))))[1:]
|
|
523
|
-
for _help_datum in _help_data:
|
|
524
|
-
_cmd = _help_datum[0]
|
|
525
|
-
if 'minecraft:' in _cmd:
|
|
526
|
-
_cmd = _cmd.split(':')[1]
|
|
527
580
|
try:
|
|
528
|
-
|
|
581
|
+
_cmd_help = self._help(raw_cmd) # Stripped by MCClient
|
|
582
|
+
_help_lines = list(map(lambda x: x.split()[1:], _cmd_help.split('/')))
|
|
583
|
+
|
|
584
|
+
_sub_cmd_data = {}
|
|
585
|
+
seen_sub_items = set() # Track subcommands/gamerules specifically
|
|
586
|
+
|
|
587
|
+
for line_args in _help_lines:
|
|
588
|
+
if not line_args:
|
|
589
|
+
continue
|
|
590
|
+
|
|
591
|
+
arg0 = line_args[0]
|
|
592
|
+
# If it's a literal (not a placeholder like <target>)
|
|
593
|
+
if not arg0.startswith(('<', '[', '(')):
|
|
594
|
+
# Deduplicate sub-item (e.g., minecraft:spawn_mobs -> spawn_mobs)
|
|
595
|
+
clean_sub = arg0.split(':')[-1]
|
|
596
|
+
if clean_sub not in seen_sub_items:
|
|
597
|
+
_sub_cmd_data.update({clean_sub: line_args[1:]})
|
|
598
|
+
seen_sub_items.add(clean_sub)
|
|
599
|
+
else:
|
|
600
|
+
# Catch-all for commands that take direct syntax arguments
|
|
601
|
+
_sub_cmd_data.update({' ': line_args})
|
|
602
|
+
|
|
603
|
+
_rcon_commands.update({clean_key: _sub_cmd_data})
|
|
529
604
|
except:
|
|
530
|
-
return
|
|
531
|
-
if not _cmd_data:
|
|
532
|
-
# found a shortcut command like xp -> experience
|
|
533
605
|
continue
|
|
534
|
-
|
|
535
|
-
_sub_cmd_data = {}
|
|
536
|
-
for _sub_cmd_datum in _cmd_data[1:]:
|
|
537
|
-
if not _sub_cmd_datum[0][0] in ('<','[','('):
|
|
538
|
-
_sub_cmd_data.update({_sub_cmd_datum[0]: _sub_cmd_datum[1:]})
|
|
539
|
-
else:
|
|
540
|
-
# TODO what about commands without sub-commands?
|
|
541
|
-
_sub_cmd_data.update({' ': _sub_cmd_datum})
|
|
542
|
-
_rcon_commands.update({_cmd.replace('-','_'): _sub_cmd_data})
|
|
606
|
+
|
|
543
607
|
self.rcon_commands = _rcon_commands
|
|
608
|
+
|
|
544
609
|
return self.rcon_commands
|
|
545
610
|
|
|
546
611
|
@line_magic
|
|
@@ -567,56 +632,91 @@ class MCShell(Magics):
|
|
|
567
632
|
_mcc = self._get_client()
|
|
568
633
|
pprint(self.server_data)
|
|
569
634
|
|
|
570
|
-
@line_magic
|
|
571
|
-
def mc_help(self,line):
|
|
572
|
-
'''
|
|
573
|
-
%mc_help [COMMAND]
|
|
574
|
-
'''
|
|
575
635
|
|
|
636
|
+
@line_magic
|
|
637
|
+
def mc_help(self, line):
|
|
638
|
+
"""
|
|
639
|
+
Sorted, deduplicated help menu.
|
|
640
|
+
Prevents 'minecraft:' clutter and gamerule text-walls.
|
|
641
|
+
"""
|
|
576
642
|
_cmd = []
|
|
577
|
-
_doc_line = ''
|
|
578
|
-
_doc_url = ''
|
|
579
|
-
_doc_code_lines = ''
|
|
580
643
|
if line:
|
|
581
644
|
_line_parts = line.split()
|
|
582
|
-
if 'minecraft:'
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
_line_parts[0] = _line_parts[0].replace('_', '-')
|
|
586
|
-
_cmd += [' '.join(_line_parts)]
|
|
645
|
+
# Lookup docs by clean name (e.g., 'enchant' even if user types 'minecraft:enchant')
|
|
646
|
+
clean_name = _line_parts[0].split(':')[-1]
|
|
647
|
+
_doc_data = self.mc_cmd_docs.get(clean_name, (None, None, None))
|
|
587
648
|
|
|
588
|
-
if
|
|
589
|
-
print(
|
|
590
|
-
print(_doc_url)
|
|
591
|
-
print()
|
|
649
|
+
if _doc_data[0]:
|
|
650
|
+
print(f"{_doc_data[0]}\n{_doc_data[1]}\n")
|
|
592
651
|
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
print(_doc_code_line)
|
|
596
|
-
else:
|
|
597
|
-
_help_text = self._help(*_cmd)
|
|
598
|
-
if not _help_text:
|
|
599
|
-
print("No help available!")
|
|
652
|
+
if _doc_data[2]:
|
|
653
|
+
for d_line in _doc_data[2]: print(d_line)
|
|
600
654
|
return
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
655
|
+
|
|
656
|
+
_cmd += [' '.join(_line_parts)]
|
|
657
|
+
|
|
658
|
+
_raw_help = self._help(*_cmd)
|
|
659
|
+
if not _raw_help:
|
|
660
|
+
print("No help available!")
|
|
661
|
+
return
|
|
662
|
+
|
|
663
|
+
_help_text = _raw_help
|
|
664
|
+
|
|
665
|
+
seen_base = set()
|
|
666
|
+
output = []
|
|
667
|
+
|
|
668
|
+
for entry in filter(None, _help_text.split('/')):
|
|
669
|
+
parts = entry.split()
|
|
670
|
+
if not parts or parts[0] in ('?', 'bukkit:?'): continue
|
|
671
|
+
|
|
672
|
+
raw_cmd = parts[0]
|
|
673
|
+
base_name = raw_cmd.split(':')[-1]
|
|
674
|
+
|
|
675
|
+
if base_name in seen_base: continue
|
|
676
|
+
seen_base.add(base_name)
|
|
677
|
+
|
|
678
|
+
# Truncate the massive gamerule ruleset for the general list
|
|
679
|
+
if base_name == "gamerule" and len(entry) > 200:
|
|
680
|
+
entry = f"{raw_cmd} <rule> [<value>]"
|
|
681
|
+
|
|
682
|
+
output.append(entry.replace('-', '_'))
|
|
683
|
+
|
|
684
|
+
# Sort alphabetically for easy scanning
|
|
685
|
+
for line in sorted(output):
|
|
686
|
+
print(line)
|
|
605
687
|
|
|
606
688
|
def _complete_mc_help(self, ipyshell, event):
|
|
607
|
-
|
|
608
|
-
|
|
689
|
+
"""
|
|
690
|
+
Provides deep, deduplicated completion for %mc_help.
|
|
691
|
+
Supports: %mc_help gamerule <TAB> -> clean list of rules.
|
|
692
|
+
"""
|
|
693
|
+
text_to_complete = event.symbol
|
|
609
694
|
parts = event.line.split()
|
|
610
|
-
ipyshell.user_ns.update(dict(rcon_event=event))
|
|
611
695
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
696
|
+
# Extract and normalize the command name
|
|
697
|
+
command = None
|
|
698
|
+
if len(parts) >= 2:
|
|
699
|
+
command = parts[1].replace('-', '_')
|
|
700
|
+
if ':' in command:
|
|
701
|
+
command = command.split(':')[-1]
|
|
702
|
+
|
|
703
|
+
arg_matches = []
|
|
704
|
+
|
|
705
|
+
# Case 1: Completing the base command
|
|
706
|
+
if len(parts) == 1 or (len(parts) == 2 and text_to_complete != ''):
|
|
707
|
+
arg_matches = [c for c in self.commands.keys() if c.startswith(text_to_complete)]
|
|
708
|
+
|
|
709
|
+
# Case 2: Showing/Completing sub-items (like gamerules)
|
|
710
|
+
elif len(parts) >= 2 and command in self.commands:
|
|
711
|
+
sub_map = self.commands[command]
|
|
712
|
+
sub_keys = [k for k in sub_map.keys() if k != ' ']
|
|
619
713
|
|
|
714
|
+
if len(parts) == 2 and text_to_complete == '':
|
|
715
|
+
arg_matches = sub_keys
|
|
716
|
+
elif len(parts) == 3 and text_to_complete != '':
|
|
717
|
+
arg_matches = [k for k in sub_keys if k.startswith(text_to_complete)]
|
|
718
|
+
|
|
719
|
+
ipyshell.user_ns.update({'rcon_matches': arg_matches})
|
|
620
720
|
return arg_matches
|
|
621
721
|
|
|
622
722
|
@line_magic
|
|
@@ -641,8 +741,14 @@ class MCShell(Magics):
|
|
|
641
741
|
print('-' * 100)
|
|
642
742
|
if _arg_list[0] == 'help':
|
|
643
743
|
_responses = response.split('/')
|
|
644
|
-
for
|
|
645
|
-
|
|
744
|
+
for _resp in _responses:
|
|
745
|
+
if _resp.strip():
|
|
746
|
+
# Keep namespaces, just fix hyphens
|
|
747
|
+
_parts = _resp.split()
|
|
748
|
+
_parts[0] = _parts[0].replace('-', '_')
|
|
749
|
+
print('\t' + ' '.join(_parts))
|
|
750
|
+
# for _response in _responses:
|
|
751
|
+
# print('\t' + _response)
|
|
646
752
|
elif response.split()[0] == 'Unknown':
|
|
647
753
|
print("[red]Error in usage:[/]")
|
|
648
754
|
self.mc_help(line)
|
|
@@ -849,10 +955,13 @@ class MCShell(Magics):
|
|
|
849
955
|
print("Currently running powers:", list(RUNNING_POWERS.keys()))
|
|
850
956
|
return
|
|
851
957
|
|
|
852
|
-
|
|
853
|
-
|
|
958
|
+
# Lookup the execution metadata in the global registry
|
|
959
|
+
power_metadata = RUNNING_POWERS.get(execution_id)
|
|
960
|
+
|
|
961
|
+
if power_metadata:
|
|
854
962
|
print(f"Sending cancellation signal to power: {execution_id}")
|
|
855
|
-
|
|
963
|
+
# Corrected Key: Simply 'cancel_event'
|
|
964
|
+
power_metadata['cancel_event'].set()
|
|
856
965
|
else:
|
|
857
966
|
print(f"Error: No running power found with ID: {execution_id}")
|
|
858
967
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import eventlet
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
|
|
5
|
-
from rcon.errorhandler import WrongPassword
|
|
6
|
-
from aiomcrcon.errors import IncorrectPasswordError
|
|
2
|
+
from mctools import RCONClient, AsyncRCONClient
|
|
3
|
+
from mctools.errors import RCONAuthenticationError
|
|
7
4
|
|
|
8
5
|
import os
|
|
9
6
|
import re
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang=en><script type=importmap>{"imports":{"2N3MJ":"/toolbox.
|
|
1
|
+
<!DOCTYPE html><html lang=en><script type=importmap>{"imports":{"2N3MJ":"/toolbox.63a7b2d6.xml"}}</script><script type=module src=/mced.a4de160c.js></script><link rel=stylesheet href=/mced.efd4d8e7.css><meta charset=utf-8><title>MC-ED Editor</title><link rel=stylesheet href=/mced.3f8a9cca.css><body x-data="{ isLibraryCollapsed: true, isCodeCollapsed: true, keyboardVisible: false }">
|
|
2
2
|
|
|
3
3
|
<div class="code-collapsed editor-layout library-collapsed" :class="{ 'library-collapsed': isLibraryCollapsed, 'code-collapsed': isCodeCollapsed }">
|
|
4
4
|
<aside id=power-library-panel>
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
|
|
129
129
|
</div>
|
|
130
130
|
|
|
131
|
-
<script type=module src=/mced.
|
|
131
|
+
<script type=module src=/mced.de838669.js></script>
|
|
132
132
|
<div class=simple-keyboard x-show=keyboardVisible style=z-index:20000;background:#fff;width:100%;position:fixed;bottom:0;left:0>
|
|
133
133
|
</div>
|
|
134
134
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
html,body{color:#333;background-color:#f0f0f0;height:100vh;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}[x-cloak]{display:none!important}.editor-layout{box-sizing:border-box;gap:8px;width:100vw;height:100vh;padding:8px;display:flex;overflow:hidden}#power-library-panel,#code-preview-panel{background-color:#fff;border-radius:8px;flex-direction:column;transition:width .3s,padding .3s,opacity .3s;display:flex;overflow:hidden;box-shadow:0 2px 4px #0000001a}#power-library-panel{width:300px}#code-preview-panel{width:35%;min-width:300px}#main-content-panel{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.library-collapsed #power-library-panel{opacity:0;pointer-events:none;width:0;padding:0}.code-collapsed #code-preview-panel{opacity:0;pointer-events:none;width:0;min-width:0;padding:0}.panel-header{border-bottom:1px solid #e0e0e0;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.panel-header h2{margin:0;font-size:16px}#power-list{flex-grow:1;padding:8px;overflow-y:auto}#blocklyDiv{border:1px solid #ddd;border-radius:8px;flex-grow:1;overflow:hidden;position:relative!important}#controls{background:#fff;border-radius:8px;flex-wrap:wrap;flex-shrink:0;gap:8px;padding:8px;display:flex;box-shadow:0 2px 4px #0000001a}#controls button,.modal-buttons button{cursor:pointer;background-color:#f7f7f7;border:1px solid #ccc;border-radius:4px;padding:6px 12px;transition:background .2s}#controls button:hover{background-color:#e9e9e9}.btn-danger{color:#fff!important;background-color:#dc3545!important;border-color:#bd2130!important}.toggle-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:16px}.toggle-btn:hover{background-color:#eee}#code-container{color:#f8f8f2;box-sizing:border-box;white-space:pre-wrap;word-break:break-all;background-color:#272822;flex-grow:1;margin:0;padding:1em;font-family:Fira Code,monospace;font-size:14px;line-height:1.5;overflow:auto}.modal-overlay{z-index:40000;background-color:#0009;width:100%;height:100%;position:fixed;top:0;left:0}.modal-content{z-index:40001;background-color:#fff;border-radius:12px;width:90%;max-width:500px;padding:25px;position:fixed;top:30%;left:50%;transform:translate(-50%,-30%);box-shadow:0 5px 15px #0000004d}.modal-content input,.modal-content textarea{box-sizing:border-box;border:1px solid #ccc;border-radius:4px;width:100%;margin:10px 0;padding:10px}.modal-buttons{justify-content:flex-end;gap:10px;margin-top:15px;display:flex}.simple-keyboard{background-color:#fff;width:100%;position:fixed;bottom:0;left:0;box-shadow:0 -5px 20px #0000004d;z-index:50000!important}.hg-button{height:50px!important;font-size:18px!important}.simple-keyboard.hg-layout-numpad{max-width:300px;margin:0 auto}
|
|
2
|
+
/*# sourceMappingURL=mced.3f8a9cca.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"ACGA,4KASA,iCAOA,+GAWA,gNAYA,iCAIA,8CAMA,kFAWA,wFAOA,gGAWA,4IASA,yCAKA,oDAMA,4GAWA,yIAWA,kKASA,gDAIA,mGAMA,uGASA,wCAOA,qOAkBA,uGAUA,4MAcA,iJAUA,8EAUA,0IAUA,0DAKA","sources":["mced.3f8a9cca.css","src/editor.css"],"sourcesContent":["html, body {\n color: #333;\n background-color: #f0f0f0;\n height: 100vh;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;\n overflow: hidden;\n}\n\n[x-cloak] {\n display: none !important;\n}\n\n.editor-layout {\n box-sizing: border-box;\n gap: 8px;\n width: 100vw;\n height: 100vh;\n padding: 8px;\n display: flex;\n overflow: hidden;\n}\n\n#power-library-panel, #code-preview-panel {\n background-color: #fff;\n border-radius: 8px;\n flex-direction: column;\n transition: width .3s, padding .3s, opacity .3s;\n display: flex;\n overflow: hidden;\n box-shadow: 0 2px 4px #0000001a;\n}\n\n#power-library-panel {\n width: 300px;\n}\n\n#code-preview-panel {\n width: 35%;\n min-width: 300px;\n}\n\n#main-content-panel {\n flex-direction: column;\n flex: 1;\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.library-collapsed #power-library-panel {\n opacity: 0;\n pointer-events: none;\n width: 0;\n padding: 0;\n}\n\n.code-collapsed #code-preview-panel {\n opacity: 0;\n pointer-events: none;\n width: 0;\n min-width: 0;\n padding: 0;\n}\n\n.panel-header {\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n display: flex;\n}\n\n.panel-header h2 {\n margin: 0;\n font-size: 16px;\n}\n\n#power-list {\n flex-grow: 1;\n padding: 8px;\n overflow-y: auto;\n}\n\n#blocklyDiv {\n border: 1px solid #ddd;\n border-radius: 8px;\n flex-grow: 1;\n overflow: hidden;\n position: relative !important;\n}\n\n#controls {\n background: #fff;\n border-radius: 8px;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n padding: 8px;\n display: flex;\n box-shadow: 0 2px 4px #0000001a;\n}\n\n#controls button, .modal-buttons button {\n cursor: pointer;\n background-color: #f7f7f7;\n border: 1px solid #ccc;\n border-radius: 4px;\n padding: 6px 12px;\n transition: background .2s;\n}\n\n#controls button:hover {\n background-color: #e9e9e9;\n}\n\n.btn-danger {\n color: #fff !important;\n background-color: #dc3545 !important;\n border-color: #bd2130 !important;\n}\n\n.toggle-btn {\n cursor: pointer;\n background: none;\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 16px;\n}\n\n.toggle-btn:hover {\n background-color: #eee;\n}\n\n#code-container {\n color: #f8f8f2;\n box-sizing: border-box;\n white-space: pre-wrap;\n word-break: break-all;\n background-color: #272822;\n flex-grow: 1;\n margin: 0;\n padding: 1em;\n font-family: Fira Code, monospace;\n font-size: 14px;\n line-height: 1.5;\n overflow: auto;\n}\n\n.modal-overlay {\n z-index: 40000;\n background-color: #0009;\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.modal-content {\n z-index: 40001;\n background-color: #fff;\n border-radius: 12px;\n width: 90%;\n max-width: 500px;\n padding: 25px;\n position: fixed;\n top: 30%;\n left: 50%;\n transform: translate(-50%, -30%);\n box-shadow: 0 5px 15px #0000004d;\n}\n\n.modal-content input, .modal-content textarea {\n box-sizing: border-box;\n border: 1px solid #ccc;\n border-radius: 4px;\n width: 100%;\n margin: 10px 0;\n padding: 10px;\n}\n\n.modal-buttons {\n justify-content: flex-end;\n gap: 10px;\n margin-top: 15px;\n display: flex;\n}\n\n.simple-keyboard {\n background-color: #fff;\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n box-shadow: 0 -5px 20px #0000004d;\n z-index: 50000 !important;\n}\n\n.hg-button {\n height: 50px !important;\n font-size: 18px !important;\n}\n\n.simple-keyboard.hg-layout-numpad {\n max-width: 300px;\n margin: 0 auto;\n}\n/*# sourceMappingURL=mced.3f8a9cca.css.map */\n","/* ==========================================================================\n 1. GLOBAL STYLES & RESET\n ========================================================================== */\nhtml, body {\n height: 100vh;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n background-color: #f0f0f0;\n color: #333;\n overflow: hidden; /* Prevent body scroll; panels handle their own overflow */\n}\n\n[x-cloak] {\n display: none !important;\n}\n\n/* ==========================================================================\n 2. MAIN LAYOUT (Flexbox-based for smooth sidebar transitions)\n ========================================================================== */\n.editor-layout {\n display: flex;\n width: 100vw;\n height: 100vh;\n padding: 8px;\n gap: 8px;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n/* Base Panel Styles */\n#power-library-panel,\n#code-preview-panel {\n background-color: #ffffff;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n display: flex;\n flex-direction: column;\n transition: width 0.3s ease, padding 0.3s ease, opacity 0.3s ease;\n overflow: hidden; /* Critical for hiding content during collapse */\n}\n\n/* Sidebar Widths */\n#power-library-panel {\n width: 300px;\n}\n\n#code-preview-panel {\n width: 35%; /* Replaced 100ch to prevent workspace crushing */\n min-width: 300px;\n}\n\n/* Central Workspace - Grows to fill remaining space */\n#main-content-panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n}\n\n/* ==========================================================================\n 3. COLLAPSED STATES\n ========================================================================== */\n.library-collapsed #power-library-panel {\n width: 0;\n padding: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.code-collapsed #code-preview-panel {\n width: 0;\n min-width: 0;\n padding: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n/* ==========================================================================\n 4. PANEL COMPONENTS (Headers, Lists, Containers)\n ========================================================================== */\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n}\n\n.panel-header h2 {\n margin: 0;\n font-size: 16px;\n}\n\n#power-list {\n padding: 8px;\n flex-grow: 1;\n overflow-y: auto;\n}\n\n#blocklyDiv {\n flex-grow: 1;\n position: relative !important;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid #ddd;\n}\n\n/* ==========================================================================\n 5. UI CONTROLS & BUTTONS\n ========================================================================== */\n#controls {\n flex-shrink: 0;\n background: #ffffff;\n padding: 8px;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n#controls button, .modal-buttons button {\n padding: 6px 12px;\n border: 1px solid #ccc;\n background-color: #f7f7f7;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n#controls button:hover {\n background-color: #e9e9e9;\n}\n\n.btn-danger {\n background-color: #dc3545 !important;\n color: white !important;\n border-color: #bd2130 !important;\n}\n\n.toggle-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 16px;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.toggle-btn:hover {\n background-color: #eee;\n}\n\n/* ==========================================================================\n 6. PYTHON CODE DISPLAY (Prism Integration)\n ========================================================================== */\n#code-container {\n flex-grow: 1;\n margin: 0;\n overflow: auto;\n background-color: #272822;\n color: #f8f8f2;\n font-family: 'Fira Code', monospace;\n font-size: 14px;\n line-height: 1.5;\n padding: 1em;\n box-sizing: border-box;\n white-space: pre-wrap;\n word-break: break-all;\n}\n\n/* ==========================================================================\n 7. MODALS & OVERLAYS\n ========================================================================== */\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 40000;\n}\n\n.modal-content {\n position: fixed;\n left: 50%;\n top: 30%; /* Higher placement to avoid touchscreen keyboard */\n transform: translate(-50%, -30%);\n background-color: white;\n padding: 25px;\n border-radius: 12px;\n box-shadow: 0 5px 15px rgba(0,0,0,0.3);\n width: 90%;\n max-width: 500px;\n z-index: 40001;\n}\n\n.modal-content input,\n.modal-content textarea {\n width: 100%;\n margin: 10px 0;\n padding: 10px;\n box-sizing: border-box;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n\n.modal-buttons {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n margin-top: 15px;\n}\n\n/* ==========================================================================\n 8. ON-SCREEN KEYBOARD (simple-keyboard)\n ========================================================================== */\n.simple-keyboard {\n z-index: 50000 !important;\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n background-color: white;\n box-shadow: 0 -5px 20px rgba(0,0,0,0.3);\n}\n\n.hg-button {\n height: 50px !important;\n font-size: 18px !important;\n}\n\n.simple-keyboard.hg-layout-numpad {\n max-width: 300px;\n margin: 0 auto;\n}"],"names":[],"version":3,"file":"mced.3f8a9cca.css.map"}
|