Git Product home page Git Product logo

easiercrafting's Introduction

EasierCrafting

This makes crafting easier by displaying a list of items you can craft using your current inventory. Clicking one of these items will craft this item once, while Shift-Clicking an item will fill the crafting grid once and shift-click the output field to craft as many items as possible.

Also, if you're not sure about a specific recipe, you can enter the (partial) name of the output item in a text box above the recipe list; getting a list of all craftable items that match that name, no matter if you have the ingredients. Moving your mouse to one of these items will show you the recipe.

This mod will not fill the crafting grid more than once per click, so you can't craft your whole inventory at once. This is for the benefit of servers that allow mods, but don't want mods to be able to do "more" than vanilla minecraft - if you want to convert your whole inventory of sugar cane to paper, you'll have to keep shift-clicking the paper icon, converting one crafting grid (3 stacks) at a time.

Version 1.6.7 has a new feature that requests an inventory resync after each craft. It seems like this is a problem when you're playing on servers that are not Spigot/Paper servers. There's a new config option that you can turn on. It's not turned on by default as what it's doing is a bit hacky, and I don't know if there are server plugins (like NoCheatPlus) that don't like it and kick you, or get you banned. So please only turn it on if you have problems.

To make sure the mod doesn't slow down your minecraft, it has been optimized using JProfiler Logo.

easiercrafting's People

Contributors

gbl avatar samekichi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

easiercrafting's Issues

Crash on right clicking brewing stand [21w11a]

It seems like right clicking brewing stands, furnace, smoker, blast furnace is crashing the game. I pasted a log below for when I clicked the brewing stand.

---- Minecraft Crash Report ----
// Ooh. Shiny.

Time: 20/03/21 19:20
Description: Rendering screen

java.lang.NullPointerException: Rendering screen
	at net.minecraft.class_465.handler$zfe000$patchTitleWithBurntime(class_465.java:766)
	at net.minecraft.class_465.method_2388(class_465.java)
	at de.guntram.mcmod.easiercrafting.ExtendedGuiBrewingStand.method_2388(ExtendedGuiBrewingStand.java:56)
	at net.minecraft.class_465.method_25394(class_465.java:135)
	at net.minecraft.class_472.method_25394(class_472.java:32)
	at net.minecraft.class_757.method_3192(class_757.java:836)
	at net.minecraft.class_310.method_1523(class_310.java:1073)
	at net.minecraft.class_310.method_1514(class_310.java:700)
	at net.minecraft.client.main.Main.main(Main.java:216)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:226)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:146)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head --
Thread: Render thread
Stacktrace:
	at net.minecraft.class_465.handler$zfe000$patchTitleWithBurntime(class_465.java:766)
	at net.minecraft.class_465.method_2388(class_465.java)
	at de.guntram.mcmod.easiercrafting.ExtendedGuiBrewingStand.method_2388(ExtendedGuiBrewingStand.java:56)
	at net.minecraft.class_465.method_25394(class_465.java:135)
	at net.minecraft.class_472.method_25394(class_472.java:32)

-- Screen render details --
Details:
	Screen name: de.guntram.mcmod.easiercrafting.ExtendedGuiBrewingStand
	Mouse location: Scaled: (480, 256). Absolute: (960.000000, 513.000000)
	Screen size: Scaled: (960, 514). Absolute: (1920, 1027). Scale factor of 2.000000

-- Affected level --
Details:
	All players: 1 total; [class_746['128_GB'/2115, l='ClientLevel', x=3295.38, y=64.00, z=2244.60]]
	Chunk stats: 729, 483
	Level dimension: minecraft:overworld
	Level spawn location: World: (-208,63,-239), Section: (at 0,15,1 in -13,3,-15; chunk contains blocks -208,-64,-240 to -193,319,-225), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,-64,-512 to -1,319,-1)
	Level time: 10160864 game time, 10353849 day time
	Server brand: fabric
	Server type: Non-integrated multiplayer server
Stacktrace:
	at net.minecraft.class_638.method_8538(class_638.java:364)
	at net.minecraft.class_310.method_1587(class_310.java:2259)
	at net.minecraft.class_310.method_1514(class_310.java:719)
	at net.minecraft.client.main.Main.main(Main.java:216)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:226)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:146)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)

-- System Details --
Details:
	Minecraft Version: 21w11a
	Minecraft Version ID: 21w11a
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_51, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 5610997048 bytes (5351 MB) / 6979321856 bytes (6656 MB) up to 8589934592 bytes (8192 MB)
	CPUs: 12
	JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx8G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
	Fabric Mods: 
		crowdin-translate: CrowdinTranslate 1.3+1.17-alpha20w49a
		easierchests: EasierChests 21w11a-fabric0.32.4-1.6.3
		easiercrafting: EasierCrafting 21w11a-fabric0.32.4-1.6.7
		fabric: Fabric API 0.32.4+1.17
		fabric-api-base: Fabric API Base 0.2.1+524a2e85bd
		fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.0.0+b5106233bd
		fabric-biome-api-v1: Fabric Biome API (v1) 3.1.6+03bff30fbd
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.5+92519afabd
		fabric-command-api-v1: Fabric Command API (v1) 1.1.0+f9d6353abd
		fabric-commands-v0: Fabric Commands (v0) 0.2.2+92519afabd
		fabric-containers-v0: Fabric Containers (v0) 0.1.12+41a68552bd
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.2.1+92519afabd
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.3+92519afabd
		fabric-dimensions-v1: fabric-dimensions-v1 2.0.7+03bff30fbd
		fabric-entity-events-v1: Fabric Entity Events (v1) 1.0.3+92519afabd
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.8+d748de6cbd
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+92519afabd
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.6+92519afabd
		fabric-item-api-v1: Fabric Item API (v1) 1.2.3+36b77c3ebd
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.4+41a68552bd
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.4+524a2e85bd
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.2+36b77c3ebd
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.4.3+40e100ebbd
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.4+92519afabd
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+92519afabd
		fabric-models-v0: Fabric Models (v0) 0.2.1+92519afabd
		fabric-networking-api-v1: Fabric Networking API (v1) 1.0.5+7268309ebd
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.9+40e100ebbd
		fabric-networking-v0: Fabric Networking (v0) 0.3.2+92519afabd
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.10.5+40e100ebbd
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.3+92519afabd
		fabric-particles-v1: Fabric Particles (v1) 0.2.4+92519afabd
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.6+03bff30fbd
		fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.1+92519afabd
		fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.6+92519afabd
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.1.0+2a1dabb6bd
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+92519afabd
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.13+92519afabd
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.2+92519afabd
		fabric-rendering-v1: Fabric Rendering (v1) 1.5.2+41a68552bd
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.4+1eb2670ebd
		fabric-screen-api-v1: Fabric Screen API (v1) 1.0.1+41a68552bd
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.7+41a68552bd
		fabric-structure-api-v1: Fabric Structure API (v1) 1.1.7+03bff30fbd
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.1.3+41a68552bd
		fabric-textures-v0: Fabric Textures (v0) 1.0.6+92519afabd
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.9+36b77c3ebd
		fabricloader: Fabric Loader 0.11.3
		gbfabrictools: GBfabrictools 1.3.4+21w10a
		java: Java HotSpot(TM) 64-Bit Server VM 8
		minecraft: Minecraft 1.17-alpha.21.11.a
		wi_zoom: WI Zoom 1.3-MC21w11a
	Launched Version: fabric-loader-0.11.3-21w11a
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: GeForce RTX 2060/PCIe/SSE2 GL version 3.2.0 NVIDIA 461.92, NVIDIA Corporation
	GL Caps: Using framebuffer using OpenGL 3.2
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	Graphics mode: fancy
	Resource Packs: vanilla, Fabric Mods, file/EasierChestIcons.zip (incompatible)
	Current Language: English (US)
	CPU: 12x Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz

Inventory and crafting interface not updating properly

I noticed that after crafting something ex: planks, that any recipes that used planks would not show up until i closed reopened my inventory. I turned on the "request inventory refresh" settting and things seemed to be fine. However after a relog it continued despite the setting being turned on.

Not functional in Fabric 1.14.4

On world load:

---- Minecraft Crash Report ----
// This is a token for 1 free hug. Redeem at your nearest Mojangsta: [HUG]

Time: 7/27/19 1:22 PM
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
at de.guntram.mcmod.fabrictools.KeyBindingManager.processKeyBinds(KeyBindingManager.java:27)
at net.minecraft.class_310.handler$onProcessKeybinds$zcf000(class_310.java:3972)
at net.minecraft.class_310.method_1508(class_310.java)
at net.minecraft.class_310.method_1574(class_310.java:1411)
at net.minecraft.class_310.method_1523(class_310.java:925)
at net.minecraft.class_310.method_1514(class_310.java:410)
at net.minecraft.client.main.Main.main(Main.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129)
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head --
Thread: Client thread
Stacktrace:
at de.guntram.mcmod.fabrictools.KeyBindingManager.processKeyBinds(KeyBindingManager.java:27)
at net.minecraft.class_310.handler$onProcessKeybinds$zcf000(class_310.java:3972)
at net.minecraft.class_310.method_1508(class_310.java)

-- Affected level --
Details:
All players: 1 total; [class_746['Jivvyn'/124963, l='MpServer', x=-236.82, y=14.00, z=-2135.06]]
Chunk stats: Client Chunk Cache: 625, 361
Level dimension: minecraft:overworld
Level name: MpServer
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options: {}
Level spawn location: World: (-224,70,-239), Chunk: (at 0,4,1 in -14,-15; contains blocks -224,0,-240 to -209,255,-225), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1)
Level time: 99985 game time, 26232990 day time
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Server brand: Paper
Server type: Non-integrated multiplayer server
Stacktrace:
at net.minecraft.class_638.method_8538(class_638.java:421)
at net.minecraft.class_310.method_1587(class_310.java:1923)
at net.minecraft.class_310.method_1514(class_310.java:430)
at net.minecraft.client.main.Main.main(Main.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129)
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)

-- System Details --
Details:
Minecraft Version: 1.14.4
Minecraft Version ID: 1.14.4
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 1499182296 bytes (1429 MB) / 2080374784 bytes (1984 MB) up to 2147483648 bytes (2048 MB)
CPUs: 8
JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
Fabric Mods:
easiercrafting: EasierCrafting 1.14-fabric0.2.7-1.3.0
fabric: Fabric API 0.3.0+build.200
fabric-api-base: fabric-api-base 0.1.0+5914746342
fabric-biomes-v1: fabric-biomes-v1 0.1.0+896c7fbb42
fabric-commands-v0: fabric-commands-v0 0.1.1+25fd0c5242
fabric-containers-v0: fabric-containers-v0 0.1.2+25fd0c5242
fabric-content-registries-v0: fabric-content-registries-v0 0.1.1+05f11b7542
fabric-crash-report-info-v1: fabric-crash-report-info-v1 0.1.0+5914746342
fabric-events-interaction-v0: fabric-events-interaction-v0 0.1.0+ea100f6142
fabric-events-lifecycle-v0: fabric-events-lifecycle-v0 0.1.0+5914746342
fabric-item-groups-v0: fabric-item-groups-v0 0.1.0+1e69a0a542
fabric-keybindings-v0: fabric-keybindings-v0 0.1.1+7dfef87c42
fabric-loot-tables-v1: fabric-loot-tables-v1 0.1.0+43028fa642
fabric-mining-levels-v0: fabric-mining-levels-v0 0.1.0+ab421b9c42
fabric-models-v0: fabric-models-v0 0.1.0+5914746342
fabric-networking-blockentity-v0: fabric-networking-blockentity-v0 0.1.1+25fd0c5242
fabric-networking-v0: fabric-networking-v0 0.1.2+ea100f6142
fabric-object-builders-v0: fabric-object-builders-v0 0.1.1+592d1d2242
fabric-registry-sync-v0: fabric-registry-sync-v0 0.2.2+ea100f6142
fabric-renderer-api-v1: fabric-renderer-api-v1 0.1.1+9486cfbf42
fabric-renderer-indigo: fabric-renderer-indigo 0.1.9+9486cfbf42
fabric-rendering-data-attachment-v1: fabric-rendering-data-attachment-v1 0.1.0+02a46d5b42
fabric-rendering-fluids-v1: fabric-rendering-fluids-v1 0.1.0+dc4c57c242
fabric-rendering-v0: fabric-rendering-v0 0.1.1+6dad974e42
fabric-resource-loader-v0: fabric-resource-loader-v0 0.1.1+7495ea2842
fabric-tag-extensions-v0: fabric-tag-extensions-v0 0.1.1+c189dc5c42
fabric-textures-v0: fabric-textures-v0 0.1.4+792c1c3542
fabricloader: Fabric Loader 0.4.8+build.158
gbfabrictools: GBfabrictools 1.0.0
malilib: MaLiLib 0.10.0-dev.20
Launched Version: fabric-loader-0.4.8+build.158-1.14.4
LWJGL: 3.2.2 build 10
OpenGL: GeForce GTX 1050 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 399.24, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

Using VBOs: Yes
Is Modded: Definitely; Client brand changed to 'fabric'
Type: Client (map_client.txt)
Resource Packs: vanilla, file/1.14.3 Vanilla Tweaks.zip
Current Language: English (US)
CPU: 8x AMD Ryzen 5 1500X Quad-Core Processor 

[Suggestions]Allow Mass Crafting

I didn't like repeatedly clicking, can you add a functionality that allows you to craft until the items are fully exhausted? Not just craft up to 64 items in the grid

Loom Recipes

Recently I was dealing with banners in the game. The mod you made was very useful for me and I was wondering how to use it better.

The letter banners that came with the mod attracted my attention and I did some research on the internet to find better ones.

However, I wanted to delete your mod's own banners from (config -> loomrecipes) and use the different letter banners I found on the internet. When I tried to delete the original banners of the mod, I saw that it was recreated while the game was starting.

Is there any way I can disable this feature?

Crash on opening brewing stand [21w11a]

The game still crashes on right click on furnaces and brewing stands. Log below. Related to #37

---- Minecraft Crash Report ----
// There are four lights!

Time: 20/03/21 22:13
Description: Rendering screen

java.lang.NullPointerException: Rendering screen
	at net.minecraft.class_465.handler$zfe000$patchTitleWithBurntime(class_465.java:766)
	at net.minecraft.class_465.method_2388(class_465.java)
	at de.guntram.mcmod.easiercrafting.ExtendedGuiBrewingStand.method_2388(ExtendedGuiBrewingStand.java:56)
	at net.minecraft.class_465.method_25394(class_465.java:135)
	at net.minecraft.class_472.method_25394(class_472.java:32)
	at net.minecraft.class_757.method_3192(class_757.java:836)
	at net.minecraft.class_310.method_1523(class_310.java:1073)
	at net.minecraft.class_310.method_1514(class_310.java:700)
	at net.minecraft.client.main.Main.main(Main.java:216)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:226)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:146)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head --
Thread: Render thread
Stacktrace:
	at net.minecraft.class_465.handler$zfe000$patchTitleWithBurntime(class_465.java:766)
	at net.minecraft.class_465.method_2388(class_465.java)
	at de.guntram.mcmod.easiercrafting.ExtendedGuiBrewingStand.method_2388(ExtendedGuiBrewingStand.java:56)
	at net.minecraft.class_465.method_25394(class_465.java:135)
	at net.minecraft.class_472.method_25394(class_472.java:32)

-- Screen render details --
Details:
	Screen name: de.guntram.mcmod.easiercrafting.ExtendedGuiBrewingStand
	Mouse location: Scaled: (213, 120). Absolute: (427.000000, 240.000000)
	Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2.000000

-- Affected level --
Details:
	All players: 1 total; [class_746['128_GB'/22628, l='ClientLevel', x=3296.17, y=64.00, z=2245.49]]
	Chunk stats: 729, 441
	Level dimension: minecraft:overworld
	Level spawn location: World: (-208,63,-239), Section: (at 0,15,1 in -13,3,-15; chunk contains blocks -208,-64,-240 to -193,319,-225), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,-64,-512 to -1,319,-1)
	Level time: 10366903 game time, 10571581 day time
	Server brand: fabric
	Server type: Non-integrated multiplayer server
Stacktrace:
	at net.minecraft.class_638.method_8538(class_638.java:364)
	at net.minecraft.class_310.method_1587(class_310.java:2259)
	at net.minecraft.class_310.method_1514(class_310.java:719)
	at net.minecraft.client.main.Main.main(Main.java:216)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:226)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:146)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)

-- System Details --
Details:
	Minecraft Version: 21w11a
	Minecraft Version ID: 21w11a
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_51, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 6487040880 bytes (6186 MB) / 7952400384 bytes (7584 MB) up to 8589934592 bytes (8192 MB)
	CPUs: 12
	JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx8G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
	Fabric Mods: 
		crowdin-translate: CrowdinTranslate 1.3+1.17-alpha20w49a
		easierchests: EasierChests 21w11a-fabric0.32.4-1.6.3
		easiercrafting: EasierCrafting 21w11a-fabric0.32.4-1.6.7
		fabric: Fabric API 0.32.4+1.17
		fabric-api-base: Fabric API Base 0.2.1+524a2e85bd
		fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.0.0+b5106233bd
		fabric-biome-api-v1: Fabric Biome API (v1) 3.1.6+03bff30fbd
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.5+92519afabd
		fabric-command-api-v1: Fabric Command API (v1) 1.1.0+f9d6353abd
		fabric-commands-v0: Fabric Commands (v0) 0.2.2+92519afabd
		fabric-containers-v0: Fabric Containers (v0) 0.1.12+41a68552bd
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.2.1+92519afabd
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.3+92519afabd
		fabric-dimensions-v1: fabric-dimensions-v1 2.0.7+03bff30fbd
		fabric-entity-events-v1: Fabric Entity Events (v1) 1.0.3+92519afabd
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.8+d748de6cbd
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+92519afabd
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.6+92519afabd
		fabric-item-api-v1: Fabric Item API (v1) 1.2.3+36b77c3ebd
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.4+41a68552bd
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.4+524a2e85bd
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.2+36b77c3ebd
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.4.3+40e100ebbd
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.4+92519afabd
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+92519afabd
		fabric-models-v0: Fabric Models (v0) 0.2.1+92519afabd
		fabric-networking-api-v1: Fabric Networking API (v1) 1.0.5+7268309ebd
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.9+40e100ebbd
		fabric-networking-v0: Fabric Networking (v0) 0.3.2+92519afabd
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.10.5+40e100ebbd
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.3+92519afabd
		fabric-particles-v1: Fabric Particles (v1) 0.2.4+92519afabd
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.6+03bff30fbd
		fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.1+92519afabd
		fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.6+92519afabd
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.1.0+2a1dabb6bd
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+92519afabd
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.13+92519afabd
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.2+92519afabd
		fabric-rendering-v1: Fabric Rendering (v1) 1.5.2+41a68552bd
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.4+1eb2670ebd
		fabric-screen-api-v1: Fabric Screen API (v1) 1.0.1+41a68552bd
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.7+41a68552bd
		fabric-structure-api-v1: Fabric Structure API (v1) 1.1.7+03bff30fbd
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.1.3+41a68552bd
		fabric-textures-v0: Fabric Textures (v0) 1.0.6+92519afabd
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.9+36b77c3ebd
		fabricloader: Fabric Loader 0.11.3
		gbfabrictools: GBfabrictools 1.3.4+21w10a
		java: Java HotSpot(TM) 64-Bit Server VM 8
		minecraft: Minecraft 1.17-alpha.21.11.a
		wi_zoom: WI Zoom 1.3-MC21w11a
	Launched Version: fabric-loader-0.11.3-21w11a
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: GeForce RTX 2060/PCIe/SSE2 GL version 3.2.0 NVIDIA 461.92, NVIDIA Corporation
	GL Caps: Using framebuffer using OpenGL 3.2
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	Graphics mode: fancy
	Resource Packs: vanilla, Fabric Mods, file/EasierChestIcons.zip (incompatible)
	Current Language: English (US)
	CPU: 12x Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz

Disable categories

Could you please add an option to disable the category titles and show all items next to each other?

Crafting Table doesn't update on client

When something is normally clicked (not shift-clicked), the items go into the crafting table, but don't display an output. Packets are sent, confirming that crafting is completed, and quitting the crafting GUI will update your inventory.

Edit: Error occurs when crafting only one item, and occurs on every crafting screen.

EC 1.6.7 with refresh=false broken

I just installed the all fresh new release, but it doesn't work properly with requestInventoryRefresh=false (the default).

In this mode, left clicking an item fills the crafting table with the recipe and leaves the table in a glitched state. The item has been produced (if you close inventory, reopen inventory both recipients and results are updated), but the produced item doesn't appear in the inventory yet, and the recipe remains in the table, as-if it had not done the crafting. Removing the recipients causes an update and make the produced item appear.

With the option set to 'on' it appears to behave exactly as before, not sure what the new option do.

This is a singleplayer world. Didn't test on servers.

Crafting grid only fills haf / cant make ingot if gold block in inventory

Q: having a problem here, as im standing in my gold farm and is producing gold block out of tons of gold nugget by breaking down chest and then craft nuggets into ingot and then into gold block

as im crafting ingots my crafting grid suddenly only get half full so i have to stop making and then close my inventory from the crafting bench and then open up again and start over, not the worst problem but then the mod have started to take the gold blocks i have made and want to turn them into 9 ingot and i cant make anymore ingot from nuggets as long i have the gold blocks in my inventory

is there a way to fix these issues ?

Clicking to craft leaves the crafting recipe in the crafting area until one of the ingredients is clicked

Hello. I am experiencing the same issue as this person: https://www.curseforge.com/minecraft/mc-mods/easiercrafting?comment=127 and this: https://www.curseforge.com/minecraft/mc-mods/easiercrafting?comment=100

This happens both on my fabric server, and in single player. I just tried it in single player, with nothing but this mod and fabric api installed, and this issue still persists. Please tell me if I can provide any additional information to help.

Fabric loader version: fabric-loader-0.11.3-1.16.5
Fabri api version: fabric-api-0.34.1+1.16 (also tested with version fabric-api-0.31.0+1.16)
Game version: 1.16.5
OS: Windows 10

Force read datapack to allow recipes for servers that don't export recipes to clients

From CF:

Hi, loving your mods, especially this one! I'm currently playing on a server that has custom recipes, and you mentioned in the past that you'll be looking into adding this into the mod. Is there any progress on that end? Would love to be able to craft these custom recipes.

I played around on using datapacks as this website lets you create your own custom recipes. And lo-and-behold! Your mod was able to detect the datapack and craft the custom recipe, which I believe should be expected since you mentioned the recipes are coming from the game itself.

Unfortunately, it only works on SP and despite me installing Cotton to use global datapacks, joining any MP server causes the datapack is disabled, and thus your mod unable to detect the recipe. If it isn't possible to get the server to tell the mod all custom recipes, is it possible to use unloaded datapacks instead?

Might make a config entry "force_datapack=a,b" to read those datapacks additionally, with proper warning that enabling these won't magically make the server recognize the data pack.

Bundle RecipeUnlocker

Once upon a time you made a mod called RecipeUnlocker, by my request on Fabric Discord.

Considering that it still works on 1.16.2 without changes and the fact that the idea is very similar to this mod, have you considered bundling it? Then users could easily craft with or without a recipe book ๐Ÿ™‚

Will not launch - 1.18.2

Please update EasierCrafting to 1.18.2 - the previous mod version is incompatible.
MC version: 1.18.2
Fabric version: 0.13.3
Fabric API version: fabric-api-0.47.10+1.18.2.jar
Mod version: easiercrafting-1.18.1-fabric0.45.0-1.7.jar
crash log
dxdiag

Thanks <3

one click

Hi, I'd like to use this mod on a private mod pack with my friends and me. If you could, can you make a private version of this mod for when CTRL-clicking on a recipe in the GUI, it will craft everything it can in the inventory?
So instead of holding SHIFT and clicking multiple times, you hold CTRL and press once.

Thanks.

Incorrect scale when not maximized

When using this mod while Minecraft is not maximized, the scale of the mod display is too large. Also, it seems that this mod is incompatible with therecipe book.
I'm not sure if this is caused by setting the "GUI Scale" in "Video Settings" option to a exact value(I set it to 2) instead of keeping it "Auto".
I'm not sure if it is related to #2 which too much craftable goes out of the game window.

Screenshot1
Screenshot2

Suggestion: mouse wheel support

It appears that the only way to scroll up-down in the list of possible recipes is by using the two ugly red arrows at the top of the list area.

Mouse wheel support would be more natural, imo, and greatly improve the mod.

Thanks for a great mod.

Suggestion: immutable list

TL:DR

  • Goal: Recipes should not move all around the screen without first closing-reopening the inventory. Even when crafting recipes exhaust or add ingredients to the inventory.

  • Proposition: when the inventory is opened, the list of 'active' recipes is immutable (a recipe that exhaust its ingredients just become gray/crossed and clicking it has no effect), and recipes that become active get appended at the end of the list.

Details of the problem

Recipes can move up and down in the list when the content of the inventory change due to crafting some item. The required components may become unavailable (clicking the recipe (or another recipe) consumed the ingredients), or new recipes may become active (clicking a recipe produced an ingredient to a new recipe). This will reshuffle the list of recipes and cause clicking on the wrong recipe and craft the wrong item.

Shortcomings of how the problem is currently addressed

I understand that you are aware of this problem, given that you have various workaround strategies in the mod.

  • The shift-click strategy (produce everything that is possible) removes most of the pain for this problem, and it is great when it is what is needed. It does not help when say I have enough to produce 14 hoppers, but what I actually want is 7 chests and 7 hoppers. I have to click 7 times, and at every click, the recipe list may change under my cursor, and I might end-up crafting something useless.
  • The 5s cooldown (default) helps, but I may still need to click for more than 5s on a given recipe, if I need to produce say 40 or more (but not 64, see above), in which case the recipe will still change while I am clicking.
  • The 5s cooldown is actually annoying when chaining recipes (say, craft a bunch of chests, then craft a bunch of hoppers). But reducing it to a non-annoying value is dangerous.
  • One may still use the vanilla craftbook to tackle these cases, but having to do two different ways of crafting is not ideal, and any miscalculation can cause crafting wrong items.

Details of the proposition for solving the problem

  1. When the inventory is opened, the list of recipe is produced the same it is currently.
  2. If crafting causes an ingredient to a recipe to become depleted, the recipe remains in the list, but is gray/crossed to indicate that it cannot be further crafted with the current inventory. Clicking the recipe has no effect.
  3. If crafting causes new recipes to become active (due to new ingredients appearing), they are appended (instantaneously) to the list. Appended, so that the existing portion of the list is not mutated.

Limitations of the proposed approach

  1. User may have to close-reopen the inventory to purge "inactive" recipes for which ingredients are no more present. This is IMO a desired behavior.
  2. The 'append' behavior for newly active recipe may cause the list to not abide by the normal sort order (categories, alphabetic, or whatever). This is displeasing, but this is less displeasing than the recipes moving around, and again, the user may close-reopen the inventory to restore sorting order.

Again, very good mod, thanks for reading me.

Crash with FAPI 0.46.0

When loading a fresh 1.18.1 instance with:

  • FML 0.12.12
  • FAPI 0.46.0+1.18
  • EC 1.18-fabric0.43.1-1.7

the game crashes with the following log: crash log

The game launches normally in the same instance, with the older FAPI 0.45.2+1.18. normal log

listed effects overlay recipes

When the player has effects applied, it's using the same real-estate as the recipes. Don't have a good solution to this; perhaps move it below the inventory screen?
image

the loom banner letters

for some reason the letter B in the loom does not work properly

and is there any way to add numbers to the loom ty

exclude recipes?

How hard would it be to explicitly exclude recipes? I imagine there would need to be some type of config that was read in, and if a recipe matched it wouldn't be displayed as an option.

GUI Compatibility with Roughly Enough Items

When running REI with this mod, REI items overlap EasierCrafting's GUI. A quick fix is setting the config where the mod appears on the left side of the inventory. Problem is when you favorite a lot of items to the left, they start to overlap EasierCrafting's GUI again.

Bug: 1.17.1 (Fabric) netherrite recipe shows as shapeless recipe

Minecraft version: 1.17.1
Fabric API version: 0.37.1+1.17
Fabric loader version: 0.11.6
Easier crafting mod version: 1.17.1-fabric0.36.1-1.6.7

I noticed then doing some crafting of Netherrite ingots would show up are craft-able in the players inventory, 2 by 2 even then it can't craft it, as a shapeless recipe. This was tried then playing on a vanilla / paper server w/ plugins, though the server doesn't have any plugins that extend the size of the crafting table, & i was not using the /workbench command that would give you a gui version of a 3 x 3.
2021-08-03_03 50 24
2021-08-03_03 54 28

Chest crash

easiercrafting-1.16-fabric0.13.1-1.6.1.beta4.jar will crash client when clicking on chest or shulker box.

Crash: firework rockets on server

I have found the following scenario that crashes the client in a client-server game:

  1. MC 1.16.1 fabric.
  2. Addon is not installed on the server
  3. Option 'additional recipes' is active on the client side addon
  4. Open the 4x4 crafting interface with paper and gunpowder in inventory
  5. Client crash
  6. Server sees client disconnect, no error server side.
[10:56:59] [main/FATAL]: Error executing task on Client
java.lang.UnsupportedOperationException: Not supported yet.
	at de.guntram.mcmod.easiercrafting.InventoryGeneratedRecipe.method_8114(InventoryGeneratedRecipe.java:63) ~[easiercrafting-1.16-fabric0.13.1-1.6.3.jar:?]
	at de.guntram.mcmod.easiercrafting.RecipeTreeSet$1.compare(RecipeTreeSet.java:46) ~[easiercrafting-1.16-fabric0.13.1-1.6.3.jar:?]
	at de.guntram.mcmod.easiercrafting.RecipeTreeSet$1.compare(RecipeTreeSet.java:12) ~[easiercrafting-1.16-fabric0.13.1-1.6.3.jar:?]
	at java.util.TreeMap.compare(TreeMap.java:1564) ~[?:?]
	at java.util.TreeMap.addEntryToEmptyMap(TreeMap.java:768) ~[?:?]
	at java.util.TreeMap.put(TreeMap.java:777) ~[?:?]
	at java.util.TreeMap.put(TreeMap.java:534) ~[?:?]
	at java.util.TreeSet.add(TreeSet.java:255) ~[?:?]
	at de.guntram.mcmod.easiercrafting.RecipeBook.updateRecipes(RecipeBook.java:407) ~[easiercrafting-1.16-fabric0.13.1-1.6.3.jar:?]
	at de.guntram.mcmod.easiercrafting.RecipeBook.afterInitGui(RecipeBook.java:146) ~[easiercrafting-1.16-fabric0.13.1-1.6.3.jar:?]
	at de.guntram.mcmod.easiercrafting.ExtendedGuiCrafting.method_25426(ExtendedGuiCrafting.java:25) ~[easiercrafting-1.16-fabric0.13.1-1.6.3.jar:?]
	at net.minecraft.class_437.method_25423(class_437.java:321) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_310.method_1507(class_310.java:895) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_3929.handler$bgh000$checkCraftScreen(class_3929.java:1053) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_3929.method_17541(class_3929.java) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_634.method_17587(class_634.java:1143) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_3944.method_17591(class_3944.java:42) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_3944.method_11054(class_3944.java:12) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_2600.method_11072(class_2600.java:21) ~[intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_1255.method_18859(class_1255.java:144) [intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_4093.method_18859(class_4093.java:23) [intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_1255.method_16075(class_1255.java:118) [intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_1255.method_5383(class_1255.java:103) [intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_310.method_1523(class_310.java:988) [intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.class_310.method_1514(class_310.java:654) [intermediary-minecraft-1.16.1-client.jar:?]
	at net.minecraft.client.main.Main.main(Main.java:215) [intermediary-minecraft-1.16.1-client.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:192) [fabric-loader-0.9.1+build.205.jar:?]
	at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:140) [fabric-loader-0.9.1+build.205.jar:?]
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26) [fabric-loader-0.9.1+build.205.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
[10:57:06] [main/FATAL]: Error executing task on Client

Interestingly, the same error is not present with the 6x6 crafting table:

  1. open the 6x6 crafting table
    5 Rockets are not listed as a possible produce
    6 Search for rockets (enter)
    7 Rocket recipe appears, it has no ingredients listed in the area where ingredients are listed (bottom of craft interface)
    8 Clicking this recipe has no effect (no crash)

To other players: if you get stuck with opening the inventory loop-crashing, you can open a chest and remove the gunpowder or paper from your inventory, that will stop the crash loop.

Dispenser crafting glitchy

Dispensor generally disappeared from the recipe
I have confirmed that all the ingredients are complete
The bow is also just crafted and in good condition without enchantment
I'm not sure if this is a bug or if I'm using it in the wrong way

issue with shulker boxes

when you open your inventory with a shulker box and a dye of any colour in it, it will crash your client. 1.16.2

Dont fill the table

if i chose a item what Need more than 3 blocks than tha table dont get filled and the craft dont work.

i use 1.12.2 and online .

Maybe a Server protection but i cant config a slower fill in table.

sorr for my bad english :P

Can't Open Crafting Table With Mod Active.

I recently installed your mod and used it on a 1.11.2 world. I've since deleted that world and started a new one but now I can't open my crafting table. No new mods have been installed.

[Request] A way to scroll through the list of available recipes

Currently when you have the inventory items to make a ton of recipes, a bunch of the recipe groups end up off your screen. A way to scroll through would solve this issue.

My thought. Click a group name, that group opens to show the items in the group. This would keep things cleaner and more ordered. Expand/Collapse all groups, button toggle.

Allow searching by group name.

I really like this mod. It's helpful and a nice alternative for people. I look forward to seeing what advancements it makes in the near future

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.