- ๐ I'm interested in Game Dev, VR, Modding, & Machine Learning
- ๐ซ To Reach Me Open an Issue OR find me on Discord: StellarWind#6713
To see where I got these cool stats panels go: https://github.com/anuraghazra/github-readme-stats
Library for easily adding new shields, shield enchantments, and enabling you to enchant shields in general without worry of conflictions.
Home Page: https://www.curseforge.com/minecraft/mc-mods/fabric-shield-lib
License: GNU Lesser General Public License v2.1
To see where I got these cool stats panels go: https://github.com/anuraghazra/github-readme-stats
Everything works in singleplayer but somehow the server is not properly handling/sending the status of the shield back to the client.
The enchantments that are supposed to only show up on shields can show up on any item in the enchantment table(including the reflection enchantment from the dev environment)
Currently a shield enchantment can only be added to an item by using an anvil. This will be fixed soon!
As the title says. This is the case with the example shield that comes with the library, too! Extra Shield for Fabric's shields have the same issue as well. My custom shield as well (I did everything correctly, the shield blocking logic is fine, but durability/cooldown mechanics are bust, like with any other shield made with this library). Note that this issue occurs in the version 1.16.3, I'm uncertain if it occurs in the previous one too, haven't tested. Latest fabric loader/API as of today.
There should be 3 variants so the user can decide what types of shields the enchantment can go on.
Can simply be done by copying the current enchantment class twice and changing isAcceptableItem
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: net/minecraft/class_638 at me.crimsondawn45.fabricshieldlib.object.AbstractShield.<init>(AbstractShield.java:85) ~[FabricShieldLib-v1.2.1-1.16.2.jar:?] at rionlion100.extrashields.CustomShield.<init>(CustomShield.java:9) ~[extrashields-0.3.1+1.16.2.jar:?] at rionlion100.extrashields.ExtraShields.registerShield(ExtraShields.java:34) ~[extrashields-0.3.1+1.16.2.jar:?] at rionlion100.extrashields.ExtraShields.onInitialize(ExtraShields.java:61) ~[extrashields-0.3.1+1.16.2.jar:?] at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50) ~[fabric-server-launch.jar:?] ... 17 more Caused by: java.lang.NoClassDefFoundError: net/minecraft/class_638 at me.crimsondawn45.fabricshieldlib.object.AbstractShield.<init>(AbstractShield.java:85) ~[FabricShieldLib-v1.2.1-1.16.2.jar:?] at rionlion100.extrashields.CustomShield.<init>(CustomShield.java:9) ~[extrashields-0.3.1+1.16.2.jar:?] at rionlion100.extrashields.ExtraShields.registerShield(ExtraShields.java:34) ~[extrashields-0.3.1+1.16.2.jar:?] at rionlion100.extrashields.ExtraShields.onInitialize(ExtraShields.java:61) ~[extrashields-0.3.1+1.16.2.jar:?] at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50) ~[fabric-server-launch.jar:?] ... 17 more Caused by: java.lang.ClassNotFoundException: net.minecraft.class_638 at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[?:1.8.0_275] at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_275] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) ~[?:1.8.0_275] at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275] at net.fabricmc.loader.launch.server.InjectingURLClassLoader.loadClass(InjectingURLClassLoader.java:56) ~[fabric-server-launch.jar:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275] at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:168) ~[fabric-server-launch.jar:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275] at me.crimsondawn45.fabricshieldlib.object.AbstractShield.<init>(AbstractShield.java:85) ~[FabricShieldLib-v1.2.1-1.16.2.jar:?] at rionlion100.extrashields.CustomShield.<init>(CustomShield.java:9) ~[extrashields-0.3.1+1.16.2.jar:?] at rionlion100.extrashields.ExtraShields.registerShield(ExtraShields.java:34) ~[extrashields-0.3.1+1.16.2.jar:?] at rionlion100.extrashields.ExtraShields.onInitialize(ExtraShields.java:61) ~[extrashields-0.3.1+1.16.2.jar:?] at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50) ~[fabric-server-launch.jar:?] ... 17 more
This will be added for the cooldown tooltips in #74
https://github.com/gbl/CrowdinTranslate
Shield's should have a tool tip like:
When disabled:
0.8s Cooldown
Make sure mod works on 1.16-1.16.5
These subversions contain changes to registering item model predicates. So there might be some difficulties to make sure everything works properly.
When testing custom shield enchantments being added to the shield via enchanting table strange issue arises where enchantments appear without any description and don't respond to being clicked? Custom enchantments will still appear and work but randomly a broken enchantment will appear.
Split FabricShieldItem class into two classes.
doesSupportBanners
method to FabricShield
interface.Like 1.15 this will probably work out of the box, but testing should be done to ensure that all behavior is consistent.
I recently tested FabricShieldLib along with another mod that depends on it in my modded minecraft play. I condensed a crash to an incompatibility between Requiem and FabricShieldLib. The Crash report states an MixinError "Encountered undecorated Accessor [somethingsomething]".
I looked through the source code of both mods and I found a possible source of the problem: both mods are using an LivingEntityAccessor with partially the same invoker methods. This collides with the mixin system.
I recommend managing all Accessors and Invokers with Prefixes like
@Mixin(LivingEntity.class)
public interface LivingEntityAccessor {
@Accessor("activeItemStack")
void fabricshieldlib$setActiveItemStack(ItemStack stack);
@Invoker("blockedByShield")
boolean fabricshieldlib$invokeBlockedByShield(DamageSource source);
@Invoker("damageShield")
void fabricshieldlib$invokeDamageShield(float amount);
@Invoker("takeShieldHit")
void fabricshieldlib$invokeTakeShieldHit(LivingEntity attacker);
}
You have a series of debugMsg
calls that check for if you're in a dev environment, which is good. Except, in using Boolean.toString(test_shield.hasEvent())
as an expression in the parameters on call, you are still attempting to build a string using the test_shield
even in production code. And in production, test_shield
is uninitialized so it NPEs, crashing the game on startup. Please consider null checks, or doing the entire test system within one large if (FabricLoader.getInstance().isDevelopmentEnvironment())
block.
Caused by FabricShield class calling client-side only code while running on a server.
It is currently not possible to get the 1.4.5-1.18
artifact from JitPack.
As a temporary solution, I've built the mod and hosted it on my Maven. direct link.
I hope this issue gets resolved as soon as possible.
Attempting to build my mod with the latest version hits me with "Could not GET 'https://jitpack.io/com/github/CrimsonDawn45/Fabric-Shield-Lib/1.4.5+1.17/Fabric-Shield-Lib-1.4.5+1.17.pom'. Received status code 400 from server: Bad Request
Disable Gradle 'offline mode' and sync project"
Gradle is not in offline mode, and it was working fine with version 1.4.3.
attached is my build.gradle and gradle.properties:
build.zip
FabricBannerShieldItem should have constructor for people using an array of tags.
Crashes with 1.18.2 new update for some reason, Yes on 1.18.2 and this comes up for the crash reason.
.
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:252)
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150)
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at net.minecraft.class_310.(class_310.java:504)
Title. This seems to not affect custom shields, only the vanilla one.
Im assuming this is already fixed with the 1.3.6 update a few days ago but that hasnt been released on github yet dispite the ReadMe stating it has. If possible please release the update! In the off chance the server crash is a seperate issue here is my crash log.
Shield enchantments cause crashes outside the development environment in 1.5.3-1.18. in 1.18.2
[12:24:41] [Server thread/ERROR] (Minecraft) Encountered an unexpected exception
java.lang.AbstractMethodError: Receiver class net.minecraft.enchantment.EnchantmentTarget$15 does not define or inherit an implementation of the resolved method 'abstract boolean isAcceptableItem(net.minecraft.item.Item)' of abstract class net.minecraft.enchantment.EnchantmentTarget.
at net.minecraft.enchantment.Enchantment.isAcceptableItem(Enchantment.java:121) ~[[email protected]:?]
at net.minecraft.server.command.EnchantCommand.execute(EnchantCommand.java:48) ~[[email protected]:?]
at net.minecraft.server.command.EnchantCommand.method_13240(EnchantCommand.java:35) ~[[email protected]:?]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:263) ~[brigadier-1.0.18.jar:?]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:177) ~[brigadier-1.0.18.jar:?]
at net.minecraft.server.command.CommandManager.execute(CommandManager.java:222) ~[[email protected]:?]
at net.minecraft.server.network.ServerPlayNetworkHandler.executeCommand(ServerPlayNetworkHandler.java:1134) ~[[email protected]:?]
at net.minecraft.server.network.ServerPlayNetworkHandler.handleMessage(ServerPlayNetworkHandler.java:1120) ~[[email protected]:?]
at net.minecraft.server.network.ServerPlayNetworkHandler.onChatMessage(ServerPlayNetworkHandler.java:1106) ~[[email protected]:?]
at net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket.apply(ChatMessageC2SPacket.java:48) ~[[email protected]:?]
at net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket.apply(ChatMessageC2SPacket.java:31) ~[[email protected]:?]
at net.minecraft.network.NetworkThreadUtils.method_11072(NetworkThreadUtils.java:26) ~[[email protected]:?]
at net.minecraft.server.ServerTask.run(ServerTask.java:22) ~[[email protected]:?]
at net.minecraft.util.thread.ThreadExecutor.executeTask(ThreadExecutor.java:150) ~[[email protected]:?]
at net.minecraft.util.thread.ReentrantThreadExecutor.executeTask(ReentrantThreadExecutor.java:29) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:787) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:1751) ~[[email protected]:?]
at net.minecraft.util.thread.ThreadExecutor.runTask(ThreadExecutor.java:126) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.runOneTask(MinecraftServer.java:772) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.runTask(MinecraftServer.java:768) ~[[email protected]:?]
at net.minecraft.util.thread.ThreadExecutor.runTasks(ThreadExecutor.java:134) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.runTasksTillTickEnd(MinecraftServer.java:751) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:687) ~[[email protected]:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:293) ~[[email protected]:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
Unless I'm missing something or looking at the wrong branch, Fabric Shield Lib is shipping a test shield, test enchantment, and test event in and outside development environments. These calls should be wrapped in a FabricLoader.getInstance().isDevelopmentEnvironment()
call so they are not registered in production (= outside an IDE, when users play the game).
I have attempted to port FSL to 1.16.5 myself. I don't really know anything about rendering or even where to look for the vanilla code that makes rendering banners work. I "fixed" most errors I can't actually get the mod to start in this state so even though I made the compiler happy those "fixes" are probably still broken.
When using this mod and medieval weapons, every shield stop working and you take all the damage
This could be done by having a FabricBannerShield class that uses a java model just like the vanilla one but allows you to use your own textures. Then just add in all the code for handling banners on shields to the new shield class and java model.
this event hook will run whenever a shield gets disabled with an axe.
Get banner support working in a 1.14 release
I am aware of this problem there is not much I can do this is an issue with 1.16 Fabric. The Fabric development team is working on a new module that should fix this issue that will be coming out pretty soon. Please don't bother the fabric development team about this issue either.
I am having trouble compiling my mod with this shield library. I get the error during the :compileJava phase:
~/sf/src/main/java/me/soulfruit/RegisterItems.java:74: error: cannot access class_6862 public static final Item MULTI_GEM_SHIELD = new FabricShieldItem(new FabricItemSettings().maxDamage(2500).group(SoulFruit.SOULFRUIT).rarity(Rarity.EPIC), 7, 25, SoulFruit.MULTI_GEM); ^ class file for net.minecraft.class_6862 not found 1 error
basically, i have to add these features via mixin because i am writing a forge and fabric mod and don't want to use ASM to have things extend classes, but implement interfaces.
TBH once i get around to adding shields to FAPI, this wont be an issue anymore
This could probably be done by just checking if the shield or enchantment on the shield has an event and then add a method that returns a boolean on whether or not the damage should be blocked inside the ShiedEvent class.
It starts, no compiler errors it builds with GitHub workflows. But the shields are completely broken there is a random chest stuck to the shield model why?????? This is what happened when I tried to add banners to the shields in the first place. I am so confused
Caused by: java.lang.RuntimeException: Cannot load class net.minecraft.client.world.ClientWorld in environment type SERVER
at net.fabricmc.loader.transformer.FabricTransformer.transform(FabricTransformer.java:75) ~[fabric-loader-0.11.1.jar:?]
at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPreMixinClassByteArray(KnotClassDelegate.java:185) ~[fabric-loader-0.11.1.jar:?]
at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:152) ~[fabric-loader-0.11.1.jar:?]
at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:150) ~[fabric-loader-0.11.1.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_282]
at me.crimsondawn45.fabricshieldlib.lib.object.FabricShield.<init>(FabricShield.java:72) ~[Fabric-Shield-Lib-1.3.5-1.16.5.jar:?]
Cannot load class net.minecraft.client.world.ClientWorld in environment type SERVER
at me.crimsondawn45.fabricshieldlib.lib.object.FabricShield.(FabricShield.java:72) ~[Fabric-Shield-Lib-1.3.5-1.16.5.jar:?]
My fabric mod json
{
"schemaVersion": 1,
"id": "moreshields",
"version": "${version}",
"name": "MoreShields",
"description": "A mod that utilizes fabric shield lib to add diamond, netherite and other shields!",
"authors": [
"px01tv"
],
"contact": {
"website": "https://github.com/px01tv/MoreShields",
"repo": "https://github.com/px01tv/MoreShields"
},
"license": "MPL-2.0",
"icon": "assets/moreshields/logo.png",
"environment": "*",
"entrypoints": {
"main": [
"io.px.moreshields.MoreShields"
]
},
"mixins": [
"MoreShields.mixins.json"
],
"depends": {
"fabricloader": "\u003e\u003d0.11.1",
"fabric": "*",
"minecraft": "1.16.x"
},
"custom": {
"modmenu": {
"badges": [],
"links": {
"modmenu.discord": "https://discord.gg/n6XszBTAqv"
}
}
}
}
My mod init and items class:
@Override
public void onInitialize() {
ShieldItems.init();
}
...
public static final Item PLATED_SHIELD = register( "plated_shield", new FabricShield(new Item.Settings().group( ItemGroups.SHIELD_GROUP ), 5, 420, 9, ItemTags.PLANKS ));
This will probably work out of the box, but all 1.15 subversion should be tested to ensure they work, and that there is no strange behavior.
Without the missing constructors, there isn't a way to add custom effects to a shield without manually registering it via the ShieldRegistry.
latest.log
1.18.1 fabric latest
Currently, if you try to cancel an event it doesn't work.
seams to when put in mods servers folder not load fine, LAN server.
Getting errors while trying to build on 1.18, unsure if the issue is on my end.
Would be happy to provide any additional info needed.
> Could not resolve all dependencies for configuration ':modImplementation'.
> Could not find com.github.CrimsonDawn45:Fabric-Shield-Lib:1.4.5-1.18.
Searched in the following locations:
- file:/E:/ModDev/Minecraft/Mods/WarhammerFantasyWeaponsGit/.gradle/loom-cache/remapped_mods/com/github/CrimsonDawn45/Fabric-Shield-Lib/1.4.5-1.18/Fabric-Shield-Lib-1.4.5-1.18.pom
- https://maven.fabricmc.net/com/github/CrimsonDawn45/Fabric-Shield-Lib/1.4.5-1.18/Fabric-Shield-Lib-1.4.5-1.18.pom
- https://libraries.minecraft.net/com/github/CrimsonDawn45/Fabric-Shield-Lib/1.4.5-1.18/Fabric-Shield-Lib-1.4.5-1.18.pom
- https://repo.maven.apache.org/maven2/com/github/CrimsonDawn45/Fabric-Shield-Lib/1.4.5-1.18/Fabric-Shield-Lib-1.4.5-1.18.pom
- file:/C:/Users/username/.gradle/caches/fabric-loom/1.4.5-1.18/Fabric-Shield-Lib.jar
- file:/E:/ModDev/Minecraft/Mods/WarhammerFantasyWeaponsGit/.gradle/loom-cache/1.4.5-1.18/Fabric-Shield-Lib.jar
- https://jitpack.io/com/github/CrimsonDawn45/Fabric-Shield-Lib/1.4.5-1.18/Fabric-Shield-Lib-1.4.5-1.18.pom
When custom shields are hit with axe it does cooldown for vanilla shield. This does not affect things the other way around so vanilla shields don't activate cooldown for custom shields?
When I import the library using gradle and reload the project this error appears and gradle does not recognize the library
A problem occurred configuring root project 'ShieldTest'.
> Could not resolve all dependencies for configuration ':modImplementation'.
> Could not find me.shedaniel.cloth:cloth-config-fabric:6.2.57.
Searched in the following locations:
- file:/C:/Users/user/OneDrive/Documentos/Code/FabricMods/ShieldTest/.gradle/loom-cache/remapped_mods/me/shedaniel/cloth/cloth-config-fabric/6.2.57/cloth-config-fabric-6.2.57.pom
- https://maven.fabricmc.net/me/shedaniel/cloth/cloth-config-fabric/6.2.57/cloth-config-fabric-6.2.57.pom
- https://libraries.minecraft.net/me/shedaniel/cloth/cloth-config-fabric/6.2.57/cloth-config-fabric-6.2.57.pom
- https://libraries.minecraft.net/me/shedaniel/cloth/cloth-config-fabric/6.2.57/cloth-config-fabric-6.2.57.jar
- https://repo.maven.apache.org/maven2/me/shedaniel/cloth/cloth-config-fabric/6.2.57/cloth-config-fabric-6.2.57.pom
- file:/C:/Users/user/.gradle/caches/fabric-loom/6.2.57/cloth-config-fabric.jar
- file:/C:/Users/user/OneDrive/Documentos/Code/FabricMods/ShieldTest/.gradle/loom-cache/6.2.57/cloth-config-fabric.jar
- https://jitpack.io/me/shedaniel/cloth/cloth-config-fabric/6.2.57/cloth-config-fabric-6.2.57.pom
Required by:
project : > com.github.CrimsonDawn45:Fabric-Shield-Lib:v1.5.3-1.18
> Could not find com.terraformersmc:modmenu:3.0.1.
Searched in the following locations:
- file:/C:/Users/user/OneDrive/Documentos/Code/FabricMods/ShieldTest/.gradle/loom-cache/remapped_mods/com/terraformersmc/modmenu/3.0.1/modmenu-3.0.1.pom
- https://maven.fabricmc.net/com/terraformersmc/modmenu/3.0.1/modmenu-3.0.1.pom
- https://libraries.minecraft.net/com/terraformersmc/modmenu/3.0.1/modmenu-3.0.1.pom
- https://libraries.minecraft.net/com/terraformersmc/modmenu/3.0.1/modmenu-3.0.1.jar
- https://repo.maven.apache.org/maven2/com/terraformersmc/modmenu/3.0.1/modmenu-3.0.1.pom
- file:/C:/Users/user/.gradle/caches/fabric-loom/3.0.1/modmenu.jar
- file:/C:/Users/user/OneDrive/Documentos/Code/FabricMods/ShieldTest/.gradle/loom-cache/3.0.1/modmenu.jar
- https://jitpack.io/com/terraformersmc/modmenu/3.0.1/modmenu-3.0.1.pom
Required by:
project : > com.github.CrimsonDawn45:Fabric-Shield-Lib:v1.5.3-1.18
Working on porting my mod to 1.18, got fabric shield lib(seemingly) working and it's now giving me these errors when I try to build. Every other FabricShieldItem also appears to be giving me the same errors.
E:\ModDev\Minecraft\Mods\WarhammerFantasyWeaponsGit\src\main\java\com\inpaladin\warhammerfantasyweapons\registry\ModItems.java:19: error: cannot access class_1792
public static final Item SWORD_BREAKER_WOOD = new FabricShieldItem(new Item.Settings().maxDamage(36).group(ItemGroup.COMBAT), 10, 0, ItemTags.PLANKS);
^
class file for net.minecraft.class_1792 not found
The Fabric API has its own event system I haven't really looked into it all that much, but it's probably better than this spaghetti code I am using.
Hi!
I couldn't find another really great avenue to ask this, so apologies if this isn't the place. I'm very new to modding in general and was wondering, does repairItem support tags? I saw in the example mod "Oak Planks" were used as opposed to the "Planks" tag, and am not sure how I would set it as a tag if I could. Help appreciated!
Like one of the previous issues that I've posted, I'm not really sure if it's an issue with the mod or something on my end but am on 1.4.5 and setting my FabricShieldItem's parameters to "(new FabricItemSettings().maxDamage(36).group(ItemGroup.COMBAT), 10, 0, ItemTags.PLANKS)" still tells me that the required type is "item".
see title
I can use gradle in my workspace so I cant add it.
this is my crash report ,I would appreciate it if it is useful!
crash.txt
I haven't released the 1.17 port yet, but there is some strange behavior going on in 1.17 with enchantments.
Issues in latst update of library
java.lang.RuntimeException: Failed to read accessWidener file from mod fabricshieldlib
at net.fabricmc.loader.impl.FabricLoaderImpl.loadAccessWideners(FabricLoaderImpl.java:480)
at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:145)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:71)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
Caused by: net.fabricmc.accesswidener.AccessWidenerFormatException: line 1: Namespace (named) does not match current runtime namespace (intermediary)
at net.fabricmc.accesswidener.AccessWidenerReader.error(AccessWidenerReader.java:281)
at net.fabricmc.accesswidener.AccessWidenerReader.read(AccessWidenerReader.java:90)
at net.fabricmc.loader.impl.FabricLoaderImpl.loadAccessWideners(FabricLoaderImpl.java:478)
... 3 more
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.