Giter Site home page Giter Site logo

maxlego08 / zmenu Goto Github PK

View Code? Open in Web Editor NEW
46.0 2.0 11.0 2.6 MB

A plugin that will allow the creation of menu for minecraft, has a complete API for developers

License: GNU General Public License v3.0

Java 100.00%
api gui menu minecraft spigot spigot-plugin

zmenu's Introduction

zmenu's People

Contributors

maxlego08 avatar lijinhong11 avatar enzosocks avatar mani1232 avatar noltoxgit avatar saildrag avatar adreez avatar enzoshoes avatar

Stargazers

 avatar Gregzee avatar  avatar  avatar  avatar 韩明轩 avatar huhu avatar Miquel Angel avatar PreviousW avatar Charles DeLancey avatar Fyphen avatar sync. avatar stpv22 avatar Mohammadreza Ghadami avatar Sliide_ avatar chengyuxuan avatar Tomescu Vlad-Costin avatar Pablooo avatar  avatar Entrapta Jones avatar IbanEtc avatar akit avatar  avatar Spinnin avatar Overguacho avatar FiLKoNd avatar  avatar Legoshi avatar Steve Vezina avatar NoskyD avatar SyndiShanX avatar  avatar  avatar Carlo Maria Cardí avatar Alwyn974 avatar C_Corp2002 avatar BianVigano avatar darksaid98 avatar Gauthier Corion avatar  avatar  avatar Koneiii avatar  avatar  avatar Zach_FR avatar  avatar

Watchers

James Cloos avatar  avatar

zmenu's Issues

zMenu suggestions

a suggestion for zMenu
Example: I run the command /tpa , using that command will open a menu

Now what I want to do is open another menu with the same command (but not the same), the command would simply be /tpa
the first menu needs the player's name to open, but if he doesn't put a name, a different menu would be executed
in short, it would be 1 menu for the /tpa command and another menu for the /tpa command

[Suggestion] Langage support

Ajouter une option pour la traduction des items affichés en lore/messages (pour zauction).
Pour faciliter cela, tu peux mettre utiliser le lang.json de la dernière version de minecraft, ça traduit automatiquement et voilà

Expand player data commands with add & subtract

I would like to have the player data commands expanded to include an add & subtract sub command. something like

/zm player add [amount]
/zm player subtract [amount]

the amount being optional and defaulting to 1.

This would be useful for creating limited use buttons with 4 or so clicks until disabling and allowing console to add more use's

No doubt some corner cases will exist such as a key not existing and a key containing a string rather than an integer.

Support opening an inventory with arguments.

Currently there's no way to open another inventory from an inventory with arguments besides using the admin command from console but doing that breaks the back button and much more. it would be nice if we could specify arguments as the menus being opened.

something like this Id imagine.

cobbleshop:
type: INVENTORY
slot: 19
inventory: "nas_shop"
plugin: "zMenu"
arguments:
- "block:stone"
- "someotherarg:somevalue"
item:
material: cobblestone
name: "&fOpen the CobbleStone shop"
lore:
- "&7Click here to open"

    Edit: sorry I suck at formatting here.

[BUG] Numbers saved in PlayerData are not Numbers after a restart.

The title sums it up pretty well.

to recreate:
start the server and run zm players set testing 0 10
to create a player data entry with a number stored.
confirm its a number with
zm players add testing 2
it should make testing = 12

next save and stop the server

start the server and repeat the add command, this is where the plugin will error with a NumberFormat or such.

zMenu warn skull meta

When I run the command to open my main menu I get a little warning because I'm using headers in my menu

Error :
[18:18:42 WARN]: Found inconsistent skull meta, this should normally not happen and is not a Bukkit / Spigot issue, but one from a plugin you are using.
Bukkit will attempt to fix it this time for you, but may not be able to do this every time.
If you see this message after typing a command from a plugin, please report this to the plugin developer, they should use the api instead of relying on reflection (and doing it the wrong way).

[Suggestion] Center line

Hello,
Is it possible to add a text centering option to the plugin, especially when lines vary in length? It would be great if there was also an option to add blank spaces at the beginning and end of the text, if such an option is enabled, for a better appearance.

Suggested by @allthebest on the GroupeZ Discord.

[Suggestion] Add "delay" for the buttons actions

Hello,
Would it be possible to add a new type of action to the buttons: delay please?

For example :

          success:
          - type: delay
            delay: 0.1      #Delay in seconds, so for this example is 0.1 seconds
          - type: console_command
            commands:
            - "quests:quests admin opengui category %player% codex-abeille"

[Suggestion] New features for commands.yml

I would like to completely remove all GUI/Command plugins and move everything to the zMenu
But I still use the mycommand plugin because the zMenu - commands.yml is missing some functions

1. Creating commands that execute other command to make command more simple for players:

nether:
  command: /nether
  type: RUN_COMMAND
  runcmd:
  - '/warp nether'
  register: true
  permission-required: false

2. Creating commands that send text to the player

discord:
  command: /discord
  type: TEXT
  text:
  - ""
  - "                              $hex%#00b5e8%&lD$hex%#18bbec%&lI$hex%#2fc0f0%&lS$hex%#47c6f4%&lC$hex%#5ecbf7%&lO$hex%#76d1fb%&lR$hex%#8dd6ff%&lD"
  - "     &fPotrzebujesz pomocy lub chcesz być na bieżąco?"
  - "         &fDołącz na naszego discorda! $hex%#93FEFE%dc.krystalmc.pl"
  - ''
  register: true
  permission-required: false

Armor Trims

Hey, can you add armor trims support to zShop/zMenu please.
thanks.

[Feature Request] Add support for Paper's AsyncChat

Hello,
Can you add the support for the Paper AsyncChatEvent and/or AsyncChatDecorateEvent in the configuration of your plugin please?
Because you're currently using an old listener: org.bukkit.event.player.AsyncPlayerChatEvent.

Example for a new configuration:

# Use Paper's async Chat Event
use-async-chat: true/false

Thank you so much if you add this! :)

[Feature request] Floodgate support

Adding support for creating forms for bedrock player through FloodgateAPI would be very useful
There is not many plugin that support that feature
You can have a config in the item of the menu that specify to create a button and that button will use the commands function of that item

[Suggestion] Target placeholder

Hello,
Add the posibility to get a placeholder for a specific player.
For a requirement it would be:

- type: placeholder
  placeholder: <placeholder>
  target: <player / placeholder with player name>
  value: <placeholder value>
  action: <placeholder action>

Suggested by @saildrag on the GroupeZ Discord.

Wide support for plugins / shopkeepers

We are excited about connecting the 'zmenu' plugin with the 'shopkeeper' plugin. The 'shopkeeper' plugin is a user-friendly store plugin that anyone can easily use. We anticipate positive synergies from this integration.

Action - Data placeholder

It is not possible to add the data with a placeholder
- type: data action: SET key: "%server_time_dd_MM_yyyy%" value: "true"
This add key %server_time_dd_MM_yyyy% not the value.

[Bug] Updating item with permission requirement

I have a menu with 1 button. This button has 2 states: TRUE and FALSE. TRUE state is active when player has test_perm permission, FALSE state is active when player does not have said permission (you can see it in the config attached). On click it changes clicker's permission with LuckPerms command, so I expect the button to cycle like this: TRUE -> FALSE -> TRUE -> FALSE ... But for some reason it goes from TRUE -> FALSE and just get stuck here, reopening the menu helps though. I use updateInterval: 1 to update my buttons and this update task cant see permission change for some reason.

zMenu version: 1.0.2.4
Purpur-2127

Config: https://pastebin.com/ECrkeQE3

d1b5b349-c846-4b38-8d98-15be2e61dcbf.mp4

Folia loading problem

This server is running Folia version git-Folia-"1e5e215" (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: 1e5e215

[01:16:03 INFO]: [zMenu] Enabling zMenu v1.0.2.3
[01:16:03 INFO]: [zMenu v1.0.2.3] === ENABLE START ===
[01:16:03 INFO]: [zMenu v1.0.2.3] Plugin Version V1.0.2.3
[01:16:03 INFO]: [PlaceholderAPI] Successfully registered internal expansion: zmenu [1.0.2.3]
[01:16:03 INFO]: [zMenu v1.0.2.3] plugins/zMenu/patterns/pattern_example.yml loaded successfully !
[01:16:03 INFO]: [zMenu v1.0.2.3] plugins/zMenu/inventories/basic_inventory.yml loaded successfully !
[01:16:03 INFO]: [zMenu v1.0.2.3] plugins/zMenu/inventories/advanced_inventory.yml loaded successfully !
[01:16:03 INFO]: [zMenu v1.0.2.3] plugins/zMenu/inventories/pro_inventory.yml loaded successfully !
[01:16:03 INFO]: [zMenu v1.0.2.3] plugins/zMenu/inventories/example_punish.yml loaded successfully !
[01:16:03 INFO]: [zMenu v1.0.2.3] Command /basic_command successfully register.
[01:16:03 INFO]: [zMenu v1.0.2.3] Command /advanced_command successfully register.
[01:16:03 INFO]: [zMenu v1.0.2.3] Command /pro_command successfully register.
[01:16:03 INFO]: [zMenu v1.0.2.3] Command /punish successfully register.
[01:16:03 ERROR]: Error occurred while enabling zMenu v1.0.2.3 (Is it up to date?)
java.lang.UnsupportedOperationException: null
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftScheduler.handle(CraftScheduler.java:533) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftScheduler.runTaskTimerAsynchronously(CraftScheduler.java:257) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftScheduler.runTaskTimerAsynchronously(CraftScheduler.java:244) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftScheduler.runTaskLaterAsynchronously(CraftScheduler.java:189) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftScheduler.runTaskAsynchronously(CraftScheduler.java:158) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at fr.maxlego08.menu.zcore.utils.plugins.VersionChecker.getVersion(VersionChecker.java:91) ~[zMenu.jar:?]
at fr.maxlego08.menu.zcore.utils.plugins.VersionChecker.useLastVersion(VersionChecker.java:53) ~[zMenu.jar:?]
at fr.maxlego08.menu.MenuPlugin.onEnable(MenuPlugin.java:205) ~[zMenu.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:189) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R2.CraftServer.enablePlugin(CraftServer.java:652) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at org.bukkit.craftbukkit.v1_20_R2.CraftServer.enablePlugins(CraftServer.java:563) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:670) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:452) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1173) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:343) ~[folia-1.20.2.jar:git-Folia-"1e5e215"]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
[01:16:03 INFO]: [zMenu] Disabling zMenu v1.0.2.3
[01:16:03 INFO]: [zMenu v1.0.2.3] === DISABLE START ===
[01:16:03 INFO]: [zMenu v1.0.2.3] === DISABLE DONE (24ms) ===

Paginate Button

Added Pagination type:

  • Use slots
  • Possibility to use a placeholder to define the number of starts,.
  • Possibility to use a placeholder to define the number of arrivals.
  • Ability to define a list of items to browse

[Suggestion] Anvil Gui

Add the ability to customize Anvil Gui.
Ability to capture player input and customize button properties.

Update document

The document looks like it doesn't sync with the latest version.
And there are some mistakes that need to be fixed.
Mistakes below:

{652E0B84-E502-40db-A4D2-6B31DCCFECE6}
There isn't RBG color, it is RGB colors, and you can add another example to show the ARGB (Alpha, Red, Green, Blue) colors format.

{DF41CE37-556B-42c9-8D12-1A7CC5EBCB77}
You missed the Firework, Banner and the leather color armor

{12A4EC93-8486-4859-A6D9-9BF9CD40AC70}
Change 'fakeColors' to 'fadeColors', and I have fixed in code in #9

Optimize the reading experience:
{C32992C8-9EE1-44d6-8D5D-93E69CF588EE}
Recommend using line breaks to separate all options for each feature

[feature request] autoreload

add a plugin autoreload for each time the menus are updated, as it is a bit heavy to edit and give reload and reopen the menu, it would be nice that the autoreload does not close the menu but it is updated having your inventory open.

[Suggestion] Making a /zmenu editor <UI_NAME>

It will allow us to quickly create a GUI, which will be significantly different from DeluxeMenus. This will enable us to design it instantly according to our preferences.

For example, there's a plugin called "GUIPlus" that accomplishes this. In hindsight, ZMenu is a good option, but GUIPlus, with its editor, is superior for editing and making changes on the go.

A prime example is when I need to create a GUI with DeluxeMenus or ZMenu. Both of them would require me to type out a massive lore and copy the names properly. Meanwhile, GUIPlus allows me to drag and drop items. Afterward, I can easily edit the configuration through SFTP.

dont start at the paper 1.16.5

paper 1.16.5
java 17 temurin from adoptium

[18:48:21] [Server thread/INFO]: [zMenu] Enabling zMenu v1.0.1.8
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] === ENABLE START ===
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Plugin Version V1.0.1.8
[18:48:21] [Server thread/INFO]: [PlaceholderAPI] Successfully registered internal expansion: zmenu [1.0.1.8]
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Creating default: plugins/zMenu/config.json
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Creating default: plugins/zMenu/players-inventory.json
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] plugins/zMenu/patterns/pattern_example.yml loaded successfully !
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] plugins/zMenu/inventories/advanced_inventory.yml loaded successfully !
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] plugins/zMenu/inventories/basic_inventory.yml loaded successfully !
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] plugins/zMenu/inventories/example_punish.yml loaded successfully !
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] plugins/zMenu/inventories/pro_inventory.yml loaded successfully !
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Command /punish successfully register.
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Command /basic_command successfully register.
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Command /advanced_command successfully register.
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Command /pro_command successfully register.
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Creating default: plugins/zMenu/players.json
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] Scheduler: fr.maxlego08.menu.scheduler.BukkitScheduler@2a8e6425
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] DupeManager: fr.maxlego08.menu.dupe.PDCDupeManager@7154e347
[18:48:21] [Server thread/ERROR]: Error occurred while enabling zMenu v1.0.1.8 (Is it up to date?)
java.lang.NoSuchMethodError: 'net.kyori.adventure.text.format.TextDecorationAndState net.kyori.adventure.text.format.TextDecoration.withState(boolean)'
at net.kyori.adventure.text.minimessage.tag.standard.DecorationTag.createNegated(DecorationTag.java:109) ~[?:?]
at net.kyori.adventure.text.minimessage.tag.standard.DecorationTag.lambda$resolvers$2(DecorationTag.java:79) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) ~[?:?]
at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
at net.kyori.adventure.text.minimessage.tag.standard.DecorationTag.lambda$static$3(DecorationTag.java:92) ~[?:?]
at java.util.stream.Collectors.lambda$toMap$68(Collectors.java:1674) ~[?:?]
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) ~[?:?]
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
at net.kyori.adventure.text.minimessage.tag.standard.DecorationTag.(DecorationTag.java:90) ~[?:?]
at net.kyori.adventure.text.minimessage.tag.standard.StandardTags.(StandardTags.java:48) ~[?:?]
at net.kyori.adventure.text.minimessage.tag.resolver.TagResolver.standard(TagResolver.java:74) ~[?:?]
at net.kyori.adventure.text.minimessage.MiniMessageImpl$BuilderImpl.(MiniMessageImpl.java:147) ~[?:?]
at net.kyori.adventure.text.minimessage.MiniMessage.builder(MiniMessage.java:206) ~[?:?]
at fr.maxlego08.menu.zcore.utils.meta.ComponentMeta.(ComponentMeta.java:33) ~[?:?]
at fr.maxlego08.menu.zcore.utils.meta.Meta.(Meta.java:19) ~[?:?]
at fr.maxlego08.menu.zcore.ZPlugin.postEnable(ZPlugin.java:75) ~[?:?]
at fr.maxlego08.menu.MenuPlugin.onEnable(MenuPlugin.java:218) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:599) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-794]
at java.lang.Thread.run(Thread.java:840) [?:?]
[18:48:21] [Server thread/INFO]: [zMenu] Disabling zMenu v1.0.1.8
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] === DISABLE START ===
[18:48:21] [Server thread/INFO]: [zMenu v1.0.1.8] === DISABLE DONE (1ms) ===

[Feature Request] Target Placeholder

Add the posibility to get a placeholder for a spécifique player.
For a requirement it would be:

- type: placeholder
  placeholder: <placeholder>
  target: <player / placeholder with player name>
  value: <placeholder value>
  action: <placeholder action>

More languages support

The enum message cannot be customized at all (excluding decompile jars)
And I saw some people in China who like your plugin (some people from other countries should also be), so I really hope you can rewrite a message processing structure.
The structure is as follows:

  1. Create MessageHandler
  2. Put some methods about send and get
  3. Other classes use MessageHandler to get or send messages

And there's some questions I want to ask:

  1. Why you use the useless enum Message object?
  2. Why MessageLoader needs set message in a Message object? I think create another class to store message context (not the Message object) is great.

[Suggestion] Argument support in /zmenu open command

Sending the player a store menu with defined arguments, to be able to make a single template, this would save us a lot of time and from 40 menus to just one

Example: /zmenu open %player% {arg1} {arg2} {arg2}

   show_item:
     material: itemsadder-souleaf:%zmenu_argument_name%
     ...
     click_commands:
     - '[console] iagive %player_name% souleaf:%zmenu_argument_name% 1 silent'
     - '[console] eco take %player% %zmenu_argument_price%'

Potions

When adding "potion", "level", "splash" or "extended" to potions related items like tipped arrows, splash potion and lingering potion the items are being changed to normal potion.
(also this cause the convert from SGP to zShop to broke)

Request to add a way to change to a specific page

Right now from what I have been told the only way to change pages is with next and previous and yes this is nice from other plugins like deluxemenu that dont have anything like this but it still only fixes 1 part of the problem.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.