mcmonkeyprojects / sentinel Goto Github PK
View Code? Open in Web Editor NEWCombat NPCs for Spigot!
License: MIT License
Combat NPCs for Spigot!
License: MIT License
Hey, is it possible that you add a /sentinel surrender command? So if the player executes that command, every NPC that is attacking him, will stop hitting the player?
Hey, can you add a /sentinel kill command?
(sorry for so many bug reports/feature requests)
When you set SKILLapi up on your server, it affects NPCs automatically. For instance, I have a default, group of classes for new players, and Sentinels on that same server are all level 1 wizards, but no tags confirm this that are related to skillapi. The name tag gives it away (npc named &4Orc Warrior is now &f&lWizard &4Orc Warrior). So it may just be affected by the plugin in a way that causes the npcs to have the name card given to players.
You can forgive all you want, but they keep on killing even after they've killed the player.
Need statistics support!
If i use the /npc path command when the npc is a sentinel the server stops i tried everything
Hey, can you make it so if the NPC falls into the void, it will die and teleport back to it's spawn?
Hello,
I'm running CraftBukkit version git-Spigot-4af49dc-23da8b0 (MC: 1.9.4) (Implementing API version 1.9.4-R0.1-SNAPSHOT)
alongside with citizens and sentinel.
I get the following error literally spammed in console:
Any thoughts on this?
Thanks!
When I copy npcs (command: /npc copy), the sentinel spawnpoint is not updated.
Seems to me this shouldnt be a thing, so it may be a bug, but all sentinels attempt to track me in GM1 even with other players in the area in survival. They deviate from paths set with citizens/script to do so as long as players are a target.
accuracy,
evasion,
Yo! Since replacing Sentry with Sentinel there's been one Sentry option that I've been missing, namely the ability to control whether or not NPC-killed mobs have drops (exp, rotten flesh etc). I would love to see this in Sentinel.
Bunny dont move around as sentinel. Even with path set.
Ranged Combat in chase when out of range of melee
switch to ranged weapon if in the inventory or whatever and engage the targets until out of chase range or back in melee range. then switch to best weapon.
basically always use the most intelligent weapon for the current moment in the battle.
Can you add a spawnpoint for the NPCs, so if they get killed, they respawn at the location I want them to respawn. (configurable for every single NPC)
Thank you
So we can get the NPC's to target players in perm groups.
All mobs seem to teleport to the target they are attacking if they hop slightly off the ground. They walk as long as both feet are touching a block, the moment they are lifted by a player attack they teleport back to the player, rather than landing and then walking back.
I have a Sentinel in my spawn that is going nuts because there is a zombie below him that they can't actually get to. Is there anyway to have the Sentinel ignore unreachable targets?
Sentry added 2 extra NPC triggers to denizen:
This allowed you to easily create more interactive combat NPC's. For example, they'd say 'You'll regret that!' and play a sound when attacked, or they'd grunt, explode or spawn more mobs when they died.
Sentinel is currently lacking this feature and it would be great if this could be added once again.
Thanks for the hard work!
ALSO - tipped arrows placed in a sentinels inventory using /npc inventory are ignored when a sentinel is equipped with a bow. I will be troubleshooting this a bit today but I'm not surprised about the splash potions not working since spigot has problems with the new data values that potions use- actually I dont know where the problem is
The NPC's can't damage eachother, mobs and players.
How can I fix that?
I have a suggestion,
Would it be possible to make these sentinels use particle effects to attack? Perhaps a config option where you can choose the particle name
the amount, the range, the dmg, etc! It would a really amazing dynamic to your plugin!
I compeletly understand if you think it's a bad idea or
you don't have much time for it!
I had an issue with assigning the sentinel trait to one of my NPCs to where whenever I attacked him, the whole server crashed. Luckily I know how to read and found the issue, but thought it would help for you to fix. Turns out you cannot assign the trait to an NPC with the type, "Zombie" Here are the logs in case you need it:
[23:30:25 ERROR]: Encountered an unexpected exception
net.minecraft.server.v1_9_R2.ReportedException: Ticking entity
at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:808) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.DedicatedServer.D(DedicatedServer.java:399) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.C(MinecraftServer.java:665) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.run(MinecraftServer.java:564) [spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: java.lang.NoClassDefFoundError: org/bukkit/craftbukkit/v1_9_R1/CraftWorld
at org.mcmonkey.sentinel.SentinelTrait.getEntityForID(SentinelTrait.java:958) ~[?:?]
at org.mcmonkey.sentinel.SentinelTrait.runUpdate(SentinelTrait.java:979) ~[?:?]
at org.mcmonkey.sentinel.SentinelTrait.run(SentinelTrait.java:1067) ~[?:?]
at net.citizensnpcs.api.npc.AbstractNPC.update(AbstractNPC.java:430) ~[?:?]
at net.citizensnpcs.npc.CitizensNPC.update(CitizensNPC.java:271) ~[?:?]
at net.citizensnpcs.npc.entity.ZombieController$EntityZombieNPC.M(ZombieController.java:178) ~[?:?]
at net.minecraft.server.v1_9_R2.EntityInsentient.doTick(EntityInsentient.java:650) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityLiving.n(EntityLiving.java:1928) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityInsentient.n(EntityInsentient.java:489) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityMonster.n(EntityMonster.java:24) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityZombie.n(EntityZombie.java:176) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityLiving.m(EntityLiving.java:1784) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityInsentient.m(EntityInsentient.java:249) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityMonster.m(EntityMonster.java:28) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityZombie.m(EntityZombie.java:233) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.entityJoinedWorld(World.java:1617) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.g(World.java:1592) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.tickEntities(World.java:1426) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.WorldServer.tickEntities(WorldServer.java:632) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:797) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
... 4 more
Caused by: java.lang.ClassNotFoundException: org.bukkit.craftbukkit.v1_9_R1.CraftWorld
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_91]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_91]
at org.mcmonkey.sentinel.SentinelTrait.getEntityForID(SentinelTrait.java:958) ~[?:?]
at org.mcmonkey.sentinel.SentinelTrait.runUpdate(SentinelTrait.java:979) ~[?:?]
at org.mcmonkey.sentinel.SentinelTrait.run(SentinelTrait.java:1067) ~[?:?]
at net.citizensnpcs.api.npc.AbstractNPC.update(AbstractNPC.java:430) ~[?:?]
at net.citizensnpcs.npc.CitizensNPC.update(CitizensNPC.java:271) ~[?:?]
at net.citizensnpcs.npc.entity.ZombieController$EntityZombieNPC.M(ZombieController.java:178) ~[?:?]
at net.minecraft.server.v1_9_R2.EntityInsentient.doTick(EntityInsentient.java:650) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityLiving.n(EntityLiving.java:1928) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityInsentient.n(EntityInsentient.java:489) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityMonster.n(EntityMonster.java:24) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityZombie.n(EntityZombie.java:176) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityLiving.m(EntityLiving.java:1784) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityInsentient.m(EntityInsentient.java:249) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityMonster.m(EntityMonster.java:28) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityZombie.m(EntityZombie.java:233) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.entityJoinedWorld(World.java:1617) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.g(World.java:1592) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.tickEntities(World.java:1426) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.WorldServer.tickEntities(WorldServer.java:632) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:797) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
... 4 more
[23:30:25 ERROR]: Cause of unexpected exception was
java.lang.NoClassDefFoundError: org/bukkit/craftbukkit/v1_9_R1/CraftWorld
at org.mcmonkey.sentinel.SentinelTrait.getEntityForID(SentinelTrait.java:958) ~[?:?]
at org.mcmonkey.sentinel.SentinelTrait.runUpdate(SentinelTrait.java:979) ~[?:?]
at org.mcmonkey.sentinel.SentinelTrait.run(SentinelTrait.java:1067) ~[?:?]
at net.citizensnpcs.api.npc.AbstractNPC.update(AbstractNPC.java:430) ~[?:?]
at net.citizensnpcs.npc.CitizensNPC.update(CitizensNPC.java:271) ~[?:?]
at net.citizensnpcs.npc.entity.ZombieController$EntityZombieNPC.M(ZombieController.java:178) ~[?:?]
at net.minecraft.server.v1_9_R2.EntityInsentient.doTick(EntityInsentient.java:650) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityLiving.n(EntityLiving.java:1928) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityInsentient.n(EntityInsentient.java:489) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityMonster.n(EntityMonster.java:24) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityZombie.n(EntityZombie.java:176) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityLiving.m(EntityLiving.java:1784) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityInsentient.m(EntityInsentient.java:249) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityMonster.m(EntityMonster.java:28) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.EntityZombie.m(EntityZombie.java:233) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.entityJoinedWorld(World.java:1617) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.g(World.java:1592) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.World.tickEntities(World.java:1426) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.WorldServer.tickEntities(WorldServer.java:632) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:797) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.DedicatedServer.D(DedicatedServer.java:399) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.C(MinecraftServer.java:665) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at net.minecraft.server.v1_9_R2.MinecraftServer.run(MinecraftServer.java:564) [spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: java.lang.ClassNotFoundException: org.bukkit.craftbukkit.v1_9_R1.CraftWorld
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot-1.9.4.jar:git-Spigot-8a048fe-d8637df]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_91]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_91]
... 24 more
Warning range and warning / greeting text depending on friend or foe - as in sentry
When I try to use the /sentinel addignore player:[name] command, it only says "Already ignoring that target." The problem is, I'm not already ignoring that target. This wouldn't be a problem if we weren't trying to have teams where the sentinels would need to ignore specific players. This command isn't working with any players that I try to ignore.
Love Sentinal by the way!
Alright, so I select my npc, then type /trait sentinal, like it says on the website, then it says "couldn't change sentinal: trait not found" any reason why this is?
I've been having some trouble setting up Sentinels as I'm trying to give some of them respawn times of half an hour (for which I'm entering 36000 ticks), but when killed the npcs simply respawn in roughly 10-12 seconds and when the server restarts and I do /sentinel info their respawn time seems to have reset back to the 100 ticks default.
Targeting of specific town or nation residents
HI there I get this spamming the console, not all the time, im trying to see what starts it off will report back if I find out
error ๐
[18:10:27 ERROR]: Could not pass event PlayerMoveEvent to Citizens v2.0.19-SNAPS
HOT (build 1374)
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:310) ~[spigot.jar:git-Spigot-6016ac7-10c10b3]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
a:62) ~[spigot.jar:git-Spigot-6016ac7-10c10b3]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
ava:502) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
ava:487) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.jav
a:607) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.PacketPlayInFlying.a(SourceFile:126) [s
pigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.PacketPlayInFlying$PacketPlayInPosition
Look.a(SourceFile:18) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:
13) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [
?:1.8.0_20]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_20]
at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot.ja
r:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:
733) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:
399) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:
672) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.jav
a:571) [spigot.jar:git-Spigot-6016ac7-10c10b3]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_20]
Caused by: java.lang.IllegalArgumentException: Cannot measure distance between w
orld_nether and world
at org.bukkit.Location.distanceSquared(Location.java:456) ~[spigot.jar:g
it-Spigot-6016ac7-10c10b3]
at org.mcmonkey.sentinel.SentinelTrait.onPlayerMovesInRange(SentinelTrai
t.java:1170) ~[?:?]
at sun.reflect.GeneratedMethodAccessor186.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
.8.0_20]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_20]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:306) ~[spigot.jar:git-Spigot-6016ac7-10c10b3]
... 15 more
Hello,
All is in the title :) For example:
MySwordWithFlags:
type: item
material: i@diamond_sword
display name: "<&b>A nice sword with item flags"
flags: HIDE_ATTRIBUTES,HIDE_ENCHANTS
enchantments:
- DAMAGE_ALL:1
I know that it's possible to do this with some world scripts stuff, but it would be a nice thing to set flags directly in the container in some cases :)
Thank you !
All is in the title ;)
Sentinel 0.6
Spigot 1.10.2
"If this is False any mobs the Sentry kills will not drop items or EXP." - Basically making it so, you can't stand next to an NPC sentry and reap the reward for doing nothing.
Set drops to npc with sentinel trait.
Verify the drops are there after closing inventory graphical user interface.
Kill sentinel.
No drops.
Ok i ran into an issue on my server
1 Sentinel Respawning
Basically i would create a npc give it the trait sentinel and i would set the respawntime to say 400 ticks or 20seconds but the issue i have is after i kill the sentinel he respawns where he dies at i would like for it to be automatic for the npc to respawn where you first created instead of trying to create multiple Sentinel guards and having to npc copy then type the command /sentinel spawnpoint over and over please fix this add some workaround instead of me creating 20npcs and having to type /sentinel spawnpoint 20 times ~Thanks
Wither flies around and never comes down to do anything.
Hello ! c:
Can you add compatibility with 1.8 ? (Spigot)
Thanks.
I previously had an issue where I thought sentinels equipped with splash potions threw them but no effect was had on their target. The sentinel was standing in a world guard region. By doing /rg flag pvp allow (in world guard) I was able to get the potions to work on their targets. However, and this I think has more to do with spigot or citizens2 than sentinel - upon server restart the sentinel I had equipped with a splash potion of poison is now holding a splash potion of water. The F is up with these new potion data values or lack thereof not saving whe using spigot. Its not the only place theres a problem - sometimes regenchests (another plugin) I fill with specific splash potions turn into water on server restart. Any ideas for a workaround?
Like sentry, make Sentinel throw snowball if equiped.
Thanks
Sentinel attackrate should also be the time it takes for them to search for their old path.
For instance. If the sentinels attack rate is set to 110. It should only continue to target/chase its targets for that 110 ticks. If no targets are found by the end of the 110 ticks it should return to its path, if it does find possible targets it continues its chase to engage. This should end the circling motion.
The fightback seems to keep attacking if you attack the NPC (True or False).
Also would it be possible to set a limit on how long the NPC will continue to target the user? Say 10 seconds and it will no longer target them after being attacked? Something we could set would be cool.
Could u change the handle with itemdrops. I wanna use sentinel on a world, they people don't loose his inventory, so i use gamerule keepInventory. Npc's aren't drops with keepInventory. Could u please bypass itemdrops on NPC's?
for example. A quest with the plugin quests requiere an Item from merlin. Merlin have this Item and the players have to kill him, to get the item.
Hope you can change it :D Thanks u for develope this plugin
Hello!
I get death mesages for every sentinel that dies.
Is there a way to remove them completely?
Thanks!
Speed option for define moving speed when sentinel have target. For example set path points /npc path set patrol speed /npc speed 0.7 and set /sentinel speed 1 for speed when sentinel attack target. After target killed npc back to patrol speed 0.7
Color codes, spaces, and cool stuff for names like special characters supported for name targets
also targeting groups of people would be nice if there is not support for that already.
Ghasts and blazes should shoot fireballs!
Pastebin of the server log: http://pastebin.com/qk9auuPH
Need a way to import old Sentry saves
I've found another bug. If I delete the config, the plugin will keep saying the config is outdated on every restart.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.