draco18s / artifacts Goto Github PK
View Code? Open in Web Editor NEWAncient Artifacts
License: MIT License
Ancient Artifacts
License: MIT License
Possible alternative logic to support ATG, thoughts?
if(mountain||etc.|| (Loader.isModLoaded("ATG") && groundHeight > 75) ) { //spawn }
Hello! I really miss this old gem of a mod and was wondering if I could port it to newer mc versions? My Discord username is sarinsa if it would be better to chat there than here
Hello,
I opened up an issue with your mod with MCPC+, got the following answer:
He should be making sure NOT to pass a null world obj to EntityItem. TileEntity has this check but his overridden method does not. I'll add a check on my end soon but the proper fix should really be on his end. Forge doesn't crash since it does nothing with the world obj while we use it."
My original bug report below:
complete serverlog: http://pastebin.com/BtVDUH05
How to reproduce:
start mcpc+ with artifacts mod v0.12.6 ( https://github.com/Draco18s/Artifacts , http://www.minecraftforum.net/topic/1993264-152162164-unique-artifacts-powerful-randomly-generated-items-now-with-99-less-crashing/ )
acqiure a pedestal and an artifact
place pedestal, put artifact in pedestal
get chunk to unload, get chunk to load again. (stopped the server, started it up again)
Assumed behaviour: artifact in pedestal
Actual behaviour: no artifact in pedestal
Tried same steps with Forge 1.6.4-9.11.1.965, works fine there.
08:36:40 [SCHWERWIEGEND] A TileEntity artifacts.pedestal(draco18s.artifacts.entity.TileEntityDisplayPedestal) has thrown an exception during loading, its state cannot be restored. Report this to the mod author
java.lang.NullPointerException
at net.minecraft.item.Item.getEntityLifespan(Item.java:937)
at net.minecraft.entity.item.EntityItem.(EntityItem.java:75)
at draco18s.artifacts.entity.TileEntityDisplayPedestal.func_70296_d(TileEntityDisplayPedestal.java:223)
at draco18s.artifacts.entity.TileEntityDisplayPedestal.func_70307_a(TileEntityDisplayPedestal.java:191)
at net.minecraft.tileentity.TileEntity.func_70317_c(TileEntity.java:155)
at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadEntities(AnvilChunkLoader.java:556)
at org.bukkit.craftbukkit.v1_6_R3.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:39)
at org.bukkit.craftbukkit.v1_6_R3.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:15)
at org.bukkit.craftbukkit.v1_6_R3.util.AsynchronousExecutor.skipQueue(AsynchronousExecutor.java:342)
at org.bukkit.craftbukkit.v1_6_R3.util.AsynchronousExecutor.getSkipQueue(AsynchronousExecutor.java:300)
at org.bukkit.craftbukkit.v1_6_R3.chunkio.ChunkIOExecutor.syncChunkLoad(ChunkIOExecutor.java:12)
at net.minecraft.world.gen.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:189)
at net.minecraft.world.gen.ChunkProviderServer.func_73158_c(ChunkProviderServer.java:162)
at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:480)
at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:428)
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:224)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:630)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
Heyyah! This mod is pretty amazing (never saw such mods on any version of MC), though it bugs a bit with Alfheim.
>> [23:44:52] [Server thread/ERROR]: Exception caught during firing event cpw.mods.fml.common.gameevent.PlayerEvent$PlayerLoggedInEvent@5d41d099:
>> java.lang.NullPointerException
>> at net.minecraftforge.common.BiomeDictionary.isBiomeRegistered(BiomeDictionary.java:267) ~[BiomeDictionary.class:?]
>> at net.minecraftforge.common.BiomeDictionary.checkRegistration(BiomeDictionary.java:423) ~[BiomeDictionary.class:?]
>> at net.minecraftforge.common.BiomeDictionary.isBiomeOfType(BiomeDictionary.java:250) ~[BiomeDictionary.class:?]
>> at com.draco18s.artifacts.worldgen.PlaceTraps.generate(PlaceTraps.java:239) ~[PlaceTraps.class:?]
>> at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112) ~[GameRegistry.class:?]
>> at net.minecraft.world.gen.ChunkProviderServer.func_73153_a(ChunkProviderServer.java:280) ~[ms.class:?]
>> at net.minecraft.world.chunk.Chunk.func_76624_a(Chunk.java:1055) ~[apx.class:?]
>> at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:190) ~[ms.class:?]
>> at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:131) ~[ms.class:?]
>> at net.minecraft.world.gen.ChunkProviderServer.func_73158_c(ChunkProviderServer.java:101) ~[ms.class:?]
>> at net.minecraft.server.management.PlayerManager$PlayerInstance.<init>(PlayerManager.java:509) ~[mr.class:?]
>> at net.minecraft.server.management.PlayerManager.getOrCreateChunkWatcher(PlayerManager.java:204) ~[mq.class:?]
>> at net.minecraft.server.management.PlayerManager.func_72690_a(PlayerManager.java:194) ~[mq.class:?]
>> at net.minecraft.server.management.PlayerManager.func_72683_a(PlayerManager.java:241) ~[mq.class:?]
>> at net.minecraft.server.management.ServerConfigurationManager.func_72375_a(ServerConfigurationManager.java:240) ~[oi.class:?]
>> at net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension(ServerConfigurationManager.java:505) ~[oi.class:?]
>> at alexsocol.asjlib.ASJUtilities.sendToDimensionWithoutPortal(ASJUtilities.kt:111) ~[ASJUtilities.class:?]
>> at alfheim.common.core.handler.EventHandler.onPlayerLoggedIn(EventHandler.kt:82) ~[EventHandler.class:?]
>> at cpw.mods.fml.common.eventhandler.ASMEventHandler_811_EventHandler_onPlayerLoggedIn_PlayerLoggedInEvent.invoke(.dynamic) ~[?:?]
>> at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) ~[ASMEventHandler.class:?]
>> at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140) ~[EventBus.class:?]
>> at cpw.mods.fml.common.FMLCommonHandler.firePlayerLoggedIn(FMLCommonHandler.java:550) ~[FMLCommonHandler.class:?]
>> at net.minecraft.server.management.ServerConfigurationManager.initializeConnectionToPlayer(ServerConfigurationManager.java:180) ~[oi.class:?]
>> at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:190) ~[NetworkDispatcher.class:?]
>> at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:463) ~[NetworkDispatcher.class:?]
>> at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:17) ~[HandshakeCompletionHandler.class:?]
>> at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11) ~[HandshakeCompletionHandler.class:?]
>> at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
>> at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
>> at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
>> at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
>> at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
>> at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
>> at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
>> at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
>> at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
>> at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) ~[FMLProxyPacket.class:?]
>> at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212) ~[ej.class:?]
>> at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:165) ~[nc.class:?]
>> at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:659) ~[MinecraftServer.class:?]
>> at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547) ~[MinecraftServer.class:?]
>> at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:186) ~[bsx.class:?]
>> at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:396) [MinecraftServer.class:?]
>> at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685) [?:?]
>> [23:44:52] [Server thread/ERROR]: Index: 29 Listeners:
>> [23:44:52] [Server thread/ERROR]: 0: NORMAL
>> [23:44:52] [Server thread/ERROR]: 1: ASM: Forge playerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 2: ASM: baubles.common.event.EventHandlerNetwork@75950c90 playerLoggedInEvent(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 3: ASM: thaumcraft.common.lib.network.EventHandlerNetwork@6b59e401 playerLoggedInEvent(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 4: ASM: ichun.common.iChunUtil@1b0c34e5 onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 5: ASM: com.enderio.core.common.config.ConfigProcessor@78d3e54c onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 6: ASM: crazypants.enderio.config.Config@77f41d0d onPlayerLoggon(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 7: ASM: crazypants.enderio.machine.hypercube.ConnectionHandler@e7d5315 onPlayerLoggon(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 8: ASM: crazypants.enderio.machine.transceiver.ConnectionHandler@152bee6a onPlayerLoggon(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 9: ASM: com.hbm.main.ModEventHandler@1e0f3714 onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 10: ASM: assets.rivalrebels.common.round.RivalRebelsRound@53def358 onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 11: ASM: sync.common.core.EventHandler@15237784 onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 12: ASM: tconstruct.armor.player.TPlayerHandler@31fda035 PlayerLoggedInEvent(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 13: ASM: codechicken.wirelessredstone.core.WRCoreEventHandler@2a7b137d playerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 14: ASM: com.creativemd.ingameconfigmanager.api.common.event.ConfigEventHandler@7491210 onPlayerJoin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 15: ASM: codechicken.nei.ServerHandler@4b2cb16a loginEvent(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 16: ASM: alfheim.common.core.handler.ragnarok.RagnarokHandler@579f66ca informAboutRagnarok(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 17: ASM: alfheim.common.core.helper.ContributorsPrivacyHelper@21a82bdc onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 18: ASM: twilightforest.TFEventListener@4b962b36 playerLogsIn(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 19: ASM: CoroUtil.forge.EventHandlerFML@72390538 playerLoggedIn(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 20: ASM: mcp.mobius.waila.network.NetworkHandler@4b8380b0 onPlayerLoggedIn(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 21: ASM: thaumic.tinkerer.common.network.PlayerTracker@328c1871 onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 22: ASM: makeo.gadomancy.common.events.EventHandlerNetwork@7887f1a4 on(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 23: ASM: mod_Invasion PlayerLoggedInEvent(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 24: ASM: mapmakingtools.handler.PlayerTrackerHandler@2be2919d login(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 25: ASM: taintedmagic.common.handler.TaintedMagicEventHandler@3e7817ee onPlayerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 26: ASM: codechicken.wirelessredstone.addons.WRAddonEventHandler@662ae0e4 playerLogin(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 27: ASM: appeng.core.sync.network.NetworkHandler@12690676 newConnection(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
>> [23:44:52] [Server thread/ERROR]: 28: LOWEST
>> [23:44:52] [Server thread/ERROR]: 29: ASM: alfheim.common.core.handler.EventHandler@420d6985 onPlayerLoggedIn(Lcpw/mods/fml/common/gameevent/PlayerEvent$PlayerLoggedInEvent;)V
As we were told by AlexSocol (Alfheim dev), the issue here as follows:
Alfheim is generated using the World Engine library, which makes the biome in the world as if it were one biome (under one ID), but it has subtypes for landscape diversity. And this biome is not registered in the usual list of biomes. He first takes the biome by coordinates, and then tries to get the same biome, but already from the list of biomes, by its ID. Expectedly, it does not find it, and as a result, an error occurs.
If you'll ever try to make a workaround for this, it would be an amazing thing, as this mod is really great.
The recharging effect makes all kinds of flux capacitors from thermal expansion into creative mode flux capacitors :)
I'm reporting this dupe bug from a Modsauce 2 multiplayer server; modpack provided through ATLauncher. When using the Matter Transporter item from the Practicalities mod in the range of an anti-builder typically found in the ruined towers, the block picked up by the matter transporter is immediately replaced, and the transporter retains a copy of the block, which can then be placed down; effectively replicating the block.
I will also be posting this issue on Practicalities side.
You seem to be well versed in special renderers so I would like to ask a question.
What is the difference between RenderingRegistry.registerBlockHandler and ClientRegistry.bindTileEntitySpecialRenderer?
Is it just that one is used for manual rendering and the other for techne models or is there more to it than that. Your answer is appreciated. Thank you.
I think I have to disable ore berry bushes as a workaround. For now, however; my path is blocked on the ladder by one.
Please fix your mod draco, I don't like people coming to me claiming this is caused by my mod when clearly this is on your side somehow :p I have no idea why this happens, because I looked at your code and things shouldn't conflict, but they clearly seem to for some reason.
[07:50:50] [Server thread/ERROR] [FML/]: FMLIndexedMessageCodec exception caught
java.lang.NoClassDefFoundError: net/minecraft/client/Minecraft
at com.draco18s.artifacts.network.CToSMessage.(CToSMessage.java:41) ~[CToSMessage.class:?]
at com.draco18s.artifacts.network.CToSMessage.(CToSMessage.java:25) ~[CToSMessage.class:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_75]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_75]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_75]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_75]
at java.lang.Class.newInstance(Class.java:379) ~[?:1.7.0_75]
at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:75) ~[FMLIndexedMessageToMessageCodec.class:?]
at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212) [ej.class:?]
at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:165) [nc.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:659) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:334) [lt.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685) [li.class:?]
https://www.youtube.com/watch?v=evQO0eOp8nc
Mods:
Artifacts
Thermal Expansion.
Relevant code section:
https://github.com/Draco18s/Artifacts/blob/master/main/java/com/draco18s/artifacts/components/ComponentExcavation.java#L81-86
Reading a thread on the Modder Support forums made me realize that this artifact ability would bypass the anti-builder's protection zone.
Should add fire a BlockEvent.BreakEvent prior to destroying the block.
The lack of WAILA integration makes it rather easy to spot traps in modpacks with WAILA installed. It would be awesome if this pack could integrate with WAILA, so that Illusionary Blocks would be shown as the blocks they are disguised as, invisible pressure plates would be shown as the blocks under them, and so on.
When right clicking artifacts found the client will get "A fatal error has occured, this connection is terminated"
This was tested on a forge server with version 1.7.10.10.13.4.1492
Artifacts version: 1.1.2
The issue does not occur in singleplayer
There isn't much that shows in the logs for the problem.
Client log: http://paste.atlauncher.com/view/3d4529cc
Server log:
[13:59:56] [Server thread/INFO]: [devryb: Given [Fragmenting Gold Wand of Seeing] * 1 to devryb]
[13:59:57] [Server thread/INFO]: devryb lost connection: TextComponent{text='A fatal error has occured, this connection is terminated', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null}}
[13:59:57] [Server thread/INFO]: devryb left the game
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.