Git Product home page Git Product logo

cloth-config's Introduction

cloth-config's People

Contributors

bernasss12 avatar draylar avatar haven-king avatar juuxel avatar kir-antipov avatar leo40git avatar madis0 avatar magneticflux- avatar mattsturgeon avatar maxneedssnacks avatar natanfudge avatar nnym avatar peppercode1 avatar shedaniel avatar shnupbups avatar solidblock-cn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cloth-config's Issues

ModifierKeyCode only recognizes 3 mouse key codes

I'm managing keybinds with ClothConfig for a couple of reasons (no clashes with vanilla keybinds and modifiers are required), and it seems that ModifierKeyCode::matchesCurrentMouse will only return true if the mouse key pressed was left, right or middle click on the mouse. Because of this, I wouldn't have the option of assigning a keybind to my mouse's button 4 or button 5 if I tried. GLFW has mouse keys going from 1-8, and they work in vanilla Minecraft as normal keybinds so this should be possible.

This is where said code is defined :^)

Note: I'm obviously not setting buttons 4 and 5 as defaults for anything, but they should be options for players to set for themselves nonetheless.

Multiline @Comment annotation should be reflected in Tooltip

image

This annotation correctly generates a multiline comment when used with Jankson, as you can see here:
image

The ingame tooltip however does not reflect this correctly:
image

Possible solutions to this problem would be to either add your own @Comment annotation using Components that gets transformed to the Jankson one when serialising (with the component being transformed using getString), or to respect "\n" and/or "\r\n" when transforming @Comment annotations into tooltips and add new lines accordingly

[docs] incorrect code on autoconfig + modmenu snippet

On Generating a Cloth Config Screen, the following snippet is present:

@Environment(EnvType.CLIENT)
class ModMenuIntegration implements ModMenuApi {

    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory() {
        return parent -> AutoConfig.getConfigScreen(ModConfig.class, parent);
    }
}

However, this produces the error Bad return type in lambda expression: Supplier<Screen> cannot be converted to Screen. Adding a .get() at the end fixes it. Here is the complete snippet with the added fix:

@Environment(EnvType.CLIENT)
class ModMenuIntegration implements ModMenuApi {

    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory() {
-        return parent -> AutoConfig.getConfigScreen(ModConfig.class, parent);
+        return parent -> AutoConfig.getConfigScreen(ModConfig.class, parent).get();
    }
}

PS: not sure if this is the correct place to open an issue; also would've liked to send a PR, but couldn't find the repo for the docs. sorry

Show alpha colors with a checkerboard

What if you added a checkerboard background to all color elements and then changed the overlaying color box opacity by the value in the textbox? That would make it obvious that the color is using alpha values and easier to test various values too.

Originally suggested on Discord by max.

Suggestion: Text input improvements

Quite a few mods use specialized strings (like identifiers) in some way in their configuration, but the current string text fields are a bit lacking for that use. A few improvements could be made to make that easier for both the developer and the user.

  • String validation: being able to supply a regular expression or a set of valid strings could help a lot with preventing invalid input.
  • Suggestions: if a set of valid strings is supplied, the text field could list suggestions based on what the user started typing.
  • String sets: when building a string list, Cloth should offer the option of using a Set instead to prevent duplicate values.

Helper methods could also be offered for the special case of Identifier configs. A method could take a Registry and configure all the above based on the registered values.

configuration GUI partial buttons

I have a 2560x1440 pixel display. When Minecraft is in fullscreen, every configuration menu button looks like 2 separate buttons. Shrinking to a width of c. 2500 pixels connects the "buttons".

Missing "Yes" and "No"

The language files are missing "Yes" and "No", so they can't be translated to other languages.

List inserting

Only I think the Insert button, which by default adds a new value before the first element, is a strange decision? Usually people add their values after the last element.
Maybe it's better to make insertInFront is false by default, and even better to add a new parameter so that the value is added before/after the selected element.

ClothConfig demo on Forge uses Fabric Loader

new TranslatableComponent("text.cloth-config.testing.3").withStyle(s -> s.withColor(ChatFormatting.GREEN).withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, FabricLoader.getInstance().getConfigDir().resolve("modmenu.json").toString())))

This seems to have been caused by your manual implementation of #72 in 8ba610c.

You probably want to use the platform call from me.shedaniel.autoconfig.util.Utils (which should probably be moved to me.shedaniel.cloth.clothconfig(2).impl then) and maybe even change this to a file that's present on both loaders (options.txt?)

Provide onUpdate hooks for config entries

Currently working on a config menu for a visual mod, and I want to have changes in the config live update the world to make finding good settings not a total PITA. Unfortunately, at the moment, to get that live update, I'm forced to update the settings in the textGetter function.

Please update ModMenu

Could you please update mod menu? The version that comes bundled with Cloth is outdated. Prospector recently changed the group id of ModMenu and having the same mod (comes bundled with another mod I depend on) with different group ids has caused quite a few strange problems with my local dev environment. I managed to work around it by manually editing the gradle cache and removing one of them, but that's not really a permanent solution.

Setting name provider for enum types in autoconfig

I was looking for a way to hook in my own nameProvider function for an Enum that I'm exposing to Cloth via the bundled autoconfig functionality. It seems that I could do this by registering my own provider using one of the registry.register*Provider methods, but I was hoping to use a GuiTransformer method instead.

It seems that in general the *Entry classes do not have setters and are expecting all the setting to happen in the corresponding *Builder classes, but I did see that IntegerListListEntry exposes setMinimum and setMaximum, presumably to let the GuiTransformer that handles BoundedDiscrete to work.

Would it be reasonable to submit a patch like the following? I believe this would let me easily write a GuiTransformer that can set a nameProvider. Alternatively, maybe @ConfigEntry.Gui.EnumHandler could take a nameProvider as an optional argument? That would allow users to wire in the name provider more directly without adding a GuiTransformer, but there is less precedent that I can see for that since no annotations currently accept a function or functional interface argument.

If you'd like to discuss more, I'm happy to discuss here or hop on Discord if that works better.

diff --git a/common/src/main/java/me/shedaniel/clothconfig2/gui/entries/SelectionListEntry.java b/common/src/main/java/me/shedaniel/clothconfig2/gui/entries/SelectionListEntry.java
index fdec40f..78ad4bc 100644
--- a/common/src/main/java/me/shedaniel/clothconfig2/gui/entries/SelectionListEntry.java
+++ b/common/src/main/java/me/shedaniel/clothconfig2/gui/entries/SelectionListEntry.java
@@ -53,7 +53,7 @@ public class SelectionListEntry<T> extends TooltipListEntry<T> {
     private final Consumer<T> saveConsumer;
     private final Supplier<T> defaultValue;
     private final List<GuiEventListener> widgets;
-    private final Function<T, Component> nameProvider;
+    private Function<T, Component> nameProvider;
     
     @ApiStatus.Internal
     @Deprecated
@@ -96,6 +96,11 @@ public class SelectionListEntry<T> extends TooltipListEntry<T> {
         this.widgets = Lists.newArrayList(buttonWidget, resetButton);
         this.nameProvider = nameProvider == null ? (t -> new TranslatableComponent(t instanceof Translatable ? ((Translatable) t).getKey() : t.toString())) : nameProvider;
     }
+
+    public SelectionListEntry setNameProvider(Function<T, Component> nameProvider) {
+        this.nameProvider = nameProvider;
+        return this;
+    }
     
     @Override
     public void save() {

Misaligned strings for List<String> option

image
As shown in the screenshot strings are displayed incorrectly. They are present entirelly and are correct, if put the cursor on it and move to left the string pop out. but show misaligned

Add a list of mods using it to config

Cloth Config has a configuration menu that shows various buttons available to use with it.

Would it be possible to add a tab that shows which mods are currently appling the API? That would make it easy to see what mods are bundling an old version of Cloth Config.

something broke (1.16.3)

Game crash upon clicking "settings" button on mod manager, as well as trying to open REI's hud by ctrl+o.

---- Minecraft Crash Report ----
// Who set us up the TNT?

Time: 2020-11-05 18:53:43 YEKT
Description: Rendering screen

org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
at Not Enough Crashes deobfuscated stack trace.(1.16.3+build.47)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:157)
at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:150)
at java.lang.ClassLoader.loadClass(Unknown Source)
at me.shedaniel.clothconfig2.api.ScissorsHandler.(ScissorsHandler.java:12)
at me.shedaniel.clothconfig2.gui.widget.DynamicEntryListWidget.render(DynamicEntryListWidget.java:199)
at me.shedaniel.clothconfig2.gui.widget.DynamicNewSmoothScrollingEntryListWidget.render(DynamicNewSmoothScrollingEntryListWidget.java:136)
at me.shedaniel.clothconfig2.gui.ClothConfigScreen.render(ClothConfigScreen.java:237)
at net.minecraft.client.render.GameRenderer.render(GameRenderer:616)
at net.minecraft.client.MinecraftClient.render(MinecraftClient:1023)
at net.minecraft.client.MinecraftClient.run(MinecraftClient:656)
at net.minecraft.client.main.Main.main(Main:215)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:224)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:141)
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
at org.multimc.EntryPoint.listen(EntryPoint.java:143)
at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: LVT in me/shedaniel/clothconfig2/impl/ScissorsHandlerImpl::applyScissors()V has incompatible changes at opcode 112 in callback me/shedaniel/clothconfig2/impl/ScissorsHandlerImpl::applyScissorsOffset.
Expected: [Lme/shedaniel/math/Rectangle;]
Found: []
at org.spongepowered.asm.mixin.injection.callback.CallbackInjector.inject(CallbackInjector.java:497)
at org.spongepowered.asm.mixin.injection.callback.CallbackInjector.inject(CallbackInjector.java:447)
at org.spongepowered.asm.mixin.injection.code.Injector.inject(Injector.java:264)
at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.inject(InjectionInfo.java:385)
at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1284)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1042)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:395)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:320)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:345)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:569)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:351)
... 29 more

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

-- Screen render details --
Screen name: me.shedaniel.clothconfig2.gui.ClothConfigScreen
Mouse location: Scaled: (626, 57). Absolute: (1879.000000, 172.000000)
Screen size: Scaled: (640, 360). Absolute: (1920, 1080). Scale factor of 3.000000

-- System Details --
Minecraft Version: 1.16.3
Minecraft Version ID: 1.16.3
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_271, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 9169390840 bytes (8744 MB) / 9643753472 bytes (9197 MB) up to 13362528256 bytes (12743 MB)
CPUs: 16
JVM Flags: 3 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xms4096m -Xmx14336m
Suspected Mods: Fabric Loader (fabricloader), Cloth Config v4 (cloth-config2)
Fabric Mods: artifice: Artifice 0.13.1+1.16.2-rc1
autoconfig1u: Auto Config v1 Updated 3.3.1
better_mod_button: Better Mod Button 1.1.4
cloth-api: Cloth API 1.4.9
cloth-armor-api-v1: Cloth Armor API v1 1.4.9
cloth-basic-math: Cloth Basic Math 0.5.1
cloth-client-events-v0: Cloth Client Events v0 1.4.9
cloth-common-events-v1: Cloth Common Events v1 1.4.9
cloth-config2: Cloth Config v4 4.8.3
cloth-datagen-api-v1: Cloth Datagen v1 1.4.9
cloth-durability-bar-api-v1: Cloth Durability Bar API v1 1.4.9
cloth-dynamic-registry-api-v1: Cloth Dynamic Registry API v1 1.4.9
cloth-scissors-api-v1: Cloth Scissors API v1 1.4.9
cloth-utils-v1: Cloth Utils v1 1.4.9
colormatic: Colormatic 2.2.7+mc.1.16.3
durabilityviewer: Giselbaers Durability Viewer 1.16.2-fabric0.17.2-1.8.7
dynamicfps: Dynamic FPS 1.2.1
fabric: Fabric API 0.25.0+build.415-1.16
fabric-api-base: Fabric API Base 0.2.0+9f0fb4b895
fabric-biome-api-v1: Fabric Biome API (v1) 3.0.0+8367596d95
fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.4+c6a8ea8995
fabric-command-api-v1: Fabric Command API (v1) 1.0.9+a4467d2a95
fabric-commands-v0: Fabric Commands (v0) 0.2.0+52d3083695
fabric-containers-v0: Fabric Containers (v0) 0.1.8+045df74f95
fabric-content-registries-v0: Fabric Content Registries (v0) 0.1.9+059ea86695
fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.2+b7f9825d95
fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.1+f8ac1db295
fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.0+16acbe5b95
fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.3+a4467d2a95
fabric-item-api-v1: Fabric Item API (v1) 1.2.0+f8ac1db295
fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.1+a4467d2a95
fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.1+730711c695
fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.0+3fa9f7c595
fabric-language-kotlin: Fabric Language Kotlin 1.4.0+build.1
fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.0+74cc3b2095
fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.1+432ea18895
fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.2+b764ce9995
fabric-models-v0: Fabric Models (v0) 0.1.1+f8ac1db295
fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.5+b50ffc7b95
fabric-networking-v0: Fabric Networking (v0) 0.1.10+e00ecb5f95
fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.9.2+a89534ab95
fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.1+a4467d2a95
fabric-particles-v1: fabric-particles-v1 0.2.2+fb0d9b0e95
fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.6.1+a4467d2a95
fabric-renderer-api-v1: Fabric Renderer API (v1) 0.3.3+a4467d2a95
fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.3+a4467d2a95
fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 2.2.0+f8ac1db295
fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.4+f8ac1db295
fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.12+f8ac1db295
fabric-rendering-v0: Fabric Rendering (v0) 1.1.1+f8ac1db295
fabric-rendering-v1: Fabric Rendering (v1) 1.3.1+f8ac1db295
fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.3.1+facf3bbf95
fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.0+8724984195
fabric-structure-api-v1: Fabric Structure API (v1) 1.1.0+f8ac1db295
fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.0.3+ac8e8c5995
fabric-textures-v0: Fabric Textures (v0) 1.0.5+a4467d2a95
fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.4+2b46237995
fabricloader: Fabric Loader 0.10.6+build.214
fabrishot: Fabrishot 1.2.1
fiber: fiber 0.23.0-2
gbfabrictools: GBfabrictools 1.2.3+1.16.2
harvest: Harvest 1.2.12
lambdynlights: LambDynamicLights 1.3.1+1.16.3
lithium: Lithium 0.5.6
loadcatcher: Entrypoint Catcher 2.0.0
minecraft: Minecraft 1.16.3
mm: Manningham Mills 2.1
modmenu: Mod Menu 1.14.6+build.31
notenoughcrashes: Not Enough Crashes 2.1.4+1.16.1
okzoomer: Ok Zoomer 4.0.1+1.16.2
org_codehaus_groovy_groovy: groovy 3.0.3
org_codehaus_groovy_groovy-jsr223: groovy-jsr223 3.0.3
org_jetbrains_annotations: annotations 20.0.0
org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 1.4.0
org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 1.4.0
org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 1.4.0
org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 1.4.0
org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.3.9
phosphor: Phosphor 0.6.0+build.7
raisedclouds: Raised Clouds 1.0.0
roughlyenoughitems: Roughly Enough Items 5.8.1
roughlyenoughitems-api: REI (API) 5.8.1
roughlyenoughitems-default-plugin: REI (Default Plugin) 5.8.1
roughlyenoughitems-runtime: REI (Runtime) 5.8.1
roughlyenoughresources: Roughly Enough Resources 2.1.2
slight-gui-modifications: 'Slight' GUI Modifications 1.5.0
smoothscrollingeverywhere: Smooth Scrolling Everywhere 3.0.3-unstable
sodium: Sodium 0.1.0
spruceui: SpruceUI 1.6.4
torohealth: ToroHealth Damage Indicators 1.16.3-fabric-1
xaeroworldmap: Xaero's World Map 1.11.0
Launched Version: MultiMC5
Backend library: LWJGL version 3.2.2 build 10
Backend API: GeForce GTX 950/PCIe/SSE2 GL version 4.6.0 NVIDIA 457.09, NVIDIA Corporation
GL Caps: Using framebuffer using OpenGL 3.0
Using VBOs: Yes
Is Modded: Definitely; Client brand changed to 'fabric'
Type: Client (map_client.txt)
Graphics mode: fancy
Resource Packs: vanilla, slightguimodifications:cts_textures, fabric/fabric-renderer-api-v1, fabric/fabric-keybindings-v0, fabric/notenoughcrashes, fabric/fabricloader, fabric/artifice, fabric/lithium, fabric/fabric-containers-v0, fabric/fabric-object-builder-api-v1, fabric/fabric-game-rule-api-v1, fabric/fabric-api-base, fabric/mm, fabric/fabric-rendering-data-attachment-v1, fabric/lambdynlights, fabric/fabric-textures-v0, fabric/fabric-rendering-fluids-v1, fabric/raisedclouds, fabric/fabric-blockrenderlayer-v1, fabric/fabric-lifecycle-events-v1, fabric/sodium, fabric/fabric-renderer-registries-v1, fabric/fabric-loot-tables-v1, fabric/fabric, fabric/dynamicfps, fabric/fabric-networking-v0, fabric/okzoomer, fabric/fabric-networking-blockentity-v0, fabric/fabric-screen-handler-api-v1, fabric/modmenu, fabric/fabrishot, fabric/phosphor, fabric/fabric-tool-attribute-api-v1, fabric/fabric-renderer-indigo, fabric/fabric-crash-report-info-v1, fabric/fabric-events-interaction-v0, fabric/fabric-item-api-v1, fabric/fabric-language-kotlin, fabric/slight-gui-modifications, fabric/fabric-rendering-v0, fabric/fabric-key-binding-api-v1, fabric/fabric-rendering-v1, fabric/cloth-config2, fabric/better_mod_button, fabric/spruceui, fabric/smoothscrollingeverywhere, fabric/autoconfig1u, fabric/fabric-resource-loader-v0, fabric/fabric-content-registries-v0, fabric/fabric-tag-extensions-v0, fabric/fabric-biome-api-v1, fabric/colormatic, fabric/fabric-registry-sync-v0, fabric/fabric-mining-levels-v0, fabric/fabric-events-lifecycle-v0, fabric/fabric-item-groups-v0, fabric/fabric-models-v0, fabric/fabric-object-builders-v0, fabric/harvest, fabric/torohealth, fabric/roughlyenoughitems, fabric/roughlyenoughitems-runtime, fabric/xaeroworldmap, file/Soartex_Fanver_(8.0.2).zip, fabric/durabilityviewer, fabric/fabric-command-api-v1, fabric/gbfabrictools, fabric/roughlyenoughresources, file/Leviosa.zip (incompatible)
Current Language: Русский (Россия)
CPU: 16x Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz
Client Crashes Since Restart: 1
Integrated Server Crashes Since Restart: 0

Dropdown menus crash when setting an error supplier

Calling DropdownMenuBuilder#setErrorSupplier will cause the resulting DropdownMenu to StackOverflow :

java.lang.StackOverflowError: Rendering screen
	at me.shedaniel.clothconfig2.impl.builders.DropdownMenuBuilder.lambda$build$6(DropdownMenuBuilder.java:97)
	at me.shedaniel.clothconfig2.api.AbstractConfigEntry.getConfigError(AbstractConfigEntry.java:25)
	at me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry$SelectionTopCellElement.getConfigError(DropdownBoxEntry.java:632)
	at me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry$SelectionTopCellElement.hasConfigError(DropdownBoxEntry.java:640)
	at me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry$DefaultSelectionTopCellElement.getValue(DropdownBoxEntry.java:708)
	at me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry$SelectionElement.getValue(DropdownBoxEntry.java:192)
	at me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry.getValue(DropdownBoxEntry.java:96)
	at me.shedaniel.clothconfig2.impl.builders.DropdownMenuBuilder.lambda$build$6(DropdownMenuBuilder.java:97)
	at me.shedaniel.clothconfig2.api.AbstractConfigEntry.getConfigError(AbstractConfigEntry.java:25)

Bedrockify causes crash when opening mod settings in modmenu

---- Minecraft Crash Report ----
// I feel sad now :(

Time: 2020-11-22 20:09:19 PST
Description: Rendering screen

org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
at Not Enough Crashes deobfuscated stack trace.(1.15.1+build.36)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:157)
at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:150)
at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at me.shedaniel.clothconfig2.api.ScissorsHandler.(ScissorsHandler.java:12)
at me.shedaniel.clothconfig2.gui.widget.DynamicEntryListWidget.method_25394(DynamicEntryListWidget.java:199)
at me.shedaniel.clothconfig2.gui.widget.DynamicNewSmoothScrollingEntryListWidget.method_25394(DynamicNewSmoothScrollingEntryListWidget.java:136)
at me.shedaniel.clothconfig2.gui.ClothConfigScreen.method_25394(ClothConfigScreen.java:237)
at net.minecraft.client.render.GameRenderer.render(GameRenderer:616)
at net.minecraft.client.MinecraftClient.render(MinecraftClient:1048)
at net.minecraft.client.MinecraftClient.run(MinecraftClient:681)
at net.minecraft.client.main.Main.main(Main:215)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:567)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:224)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:141)
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:27)
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: LVT in me/shedaniel/clothconfig2/impl/ScissorsHandlerImpl::applyScissors()V has incompatible changes at opcode 112 in callback me/shedaniel/clothconfig2/impl/ScissorsHandlerImpl::applyScissorsOffset.
Expected: [Lme/shedaniel/math/Rectangle;]
Found: []
at org.spongepowered.asm.mixin.injection.callback.CallbackInjector.inject(CallbackInjector.java:497)
at org.spongepowered.asm.mixin.injection.callback.CallbackInjector.inject(CallbackInjector.java:447)
at org.spongepowered.asm.mixin.injection.code.Injector.inject(Injector.java:264)
at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.inject(InjectionInfo.java:385)
at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1284)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1042)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:395)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:320)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:345)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:569)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:351)
... 21 more

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

-- Screen render details --
Screen name: me.shedaniel.clothconfig2.gui.ClothConfigScreen
Mouse location: Scaled: (944, 57). Absolute: (1888.000000, 114.000000)
Screen size: Scaled: (960, 500). Absolute: (1920, 1000). Scale factor of 2.000000

-- System Details --
Minecraft Version: 1.16.4
Minecraft Version ID: 1.16.4
Operating System: Linux (amd64) version 5.9.0-050900-generic
Java Version: 13.0.2, AdoptOpenJDK
Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), AdoptOpenJDK
Memory: 948588368 bytes (904 MB) / 2717908992 bytes (2592 MB) up to 4294967296 bytes (4096 MB)
CPUs: 4
JVM Flags: 8 total; -Xss1M -Xmx4G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
Suspected Mods: Cloth Config v4 (cloth-config2), Fabric Loader (fabricloader)
Fabric Mods: anycapes: AnyCapes 1.0.0
artifice: Artifice 0.13.1+1.16.2-rc1
authme: Auth Me 1.4.0
autoconfig1u: Auto Config v1 Updated 3.2.2
bedrockify: BedrockIfy 0.2.0
better_mod_button: Better Mod Button 1.1.4
carpet: Carpet Mod in Fabric 1.4.12
chat_heads: Chat Heads 0.1.2+1.16.2
clientcommands: Client Commands 2.4.7
cloth-basic-math: Cloth Basic Math 0.5.1
cloth-client-events-v0: Cloth Client Events v0 1.4.5
cloth-config2: Cloth Config v4 4.8.3
colormatic: Colormatic 2.2.7+mc.1.16.3
colorunchained: Color Unchained 1.1.1-1.16.4
cotton-config: Cotton Config 1.0.0-rc.7
cotton-logging: Cotton Logging 1.0.0-rc.4
crawl: Crawl 0.8.0
cullparticles: Cull Particles 1.0
dynamicfps: Dynamic FPS 1.2.1
eggtab: Egg Tab 1.1.2+1.15-1.16
everythingisahat: Everything is a Hat 1.0.3
fabric: Fabric API 0.26.0+1.16
fabric-api-base: Fabric API Base 0.2.0+ba858fb83a
fabric-biome-api-v1: Fabric Biome API (v1) 3.1.0+2e23b97c3a
fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.4+c6a8ea8995
fabric-command-api-v1: Fabric Command API (v1) 1.0.9+6a2618f53a
fabric-commands-v0: Fabric Commands (v0) 0.2.0+6a2618f53a
fabric-containers-v0: Fabric Containers (v0) 0.1.8+045df74f95
fabric-content-registries-v0: Fabric Content Registries (v0) 0.1.9+6a2618f53a
fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.2+b7f9825d3a
fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.1+6a2618f53a
fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.0+16acbe5b95
fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.3+a4467d2a3a
fabric-item-api-v1: Fabric Item API (v1) 1.2.0+6a2618f53a
fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.1+6a2618f53a
fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.1+730711c63a
fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.0+3fa9f7c595
fabric-language-kotlin: Fabric Language Kotlin 1.4.0+build.1
fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.0+6a2618f53a
fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.1+6a2618f53a
fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.2+b764ce9995
fabric-models-v0: Fabric Models (v0) 0.1.1+6a2618f53a
fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.5+b50ffc7b95
fabric-networking-v0: Fabric Networking (v0) 0.1.10+6a2618f53a
fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.9.2+6a2618f53a
fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.1+6a2618f53a
fabric-particles-v1: fabric-particles-v1 0.2.2+fb0d9b0e95
fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.6.1+6a2618f53a
fabric-renderer-api-v1: Fabric Renderer API (v1) 0.3.3+6a2618f53a
fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.3+6a2618f53a
fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 2.2.0+6a2618f53a
fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.4+6a2618f53a
fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.12+6a2618f53a
fabric-rendering-v0: Fabric Rendering (v0) 1.1.1+6a2618f53a
fabric-rendering-v1: Fabric Rendering (v1) 1.4.0+6a2618f53a
fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.3.2+1944f3e03a
fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.0+6a2618f53a
fabric-structure-api-v1: Fabric Structure API (v1) 1.1.0+f8ac1db23a
fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.0.3+6a2618f53a
fabric-textures-v0: Fabric Textures (v0) 1.0.5+6a2618f53a
fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.5+6a2618f53a
fabricloader: Fabric Loader 0.10.8
fabrishot: Fabrishot 1.1.0
fastbench: FastBench 2.3
fastfurnace: FastFurnace 2.3
fiber: fiber 0.23.0-2
jankson: Jankson 3.0.1+j1.2.0
jumpoverfences: JumpOverFences 1.16-0.0.3
kirin: Kirin UI 1.7-1.16.2
lambdacontrols: LambdaControls 1.5.0+1.16.2
lambdynlights: LambDynamicLights 1.3.2+1.16.4
libgui: LibGui 3.0.0+1.16.3
litematica: Litematica 0.0.0-dev.20200913.215807
lithium: Lithium 0.6.0
lithium-api: Lithium API 0.6.0
loadcatcher: Entrypoint Catcher 2.0.0
malilib: MaLiLib 0.10.0-dev.21+arne.1
me_shedaniel_cloth_basic-math: basic-math 0.3.0
minecraft: Minecraft 1.16.4
minecraftcapes: MinecraftCapes Mod 10
mm: Manningham Mills 2.1
modid: Damage Tilt 1.16-fabric-0.1.0
modmenu: Mod Menu 1.14.6+build.31
multiconnect: MultiConnect 1.3.34
multiconnect-api: MultiConnect API 1.3.34
nbtviewer: NBT Viewer 1.0.0
notenoughcrashes: Not Enough Crashes 2.1.4+1.16.1
okzoomer: Ok Zoomer 4.0.1+1.16.2
org_codehaus_groovy_groovy: groovy 3.0.3
org_codehaus_groovy_groovy-jsr223: groovy-jsr223 3.0.3
org_jetbrains_annotations: annotations 20.0.0
org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 1.4.0
org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 1.4.0
org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 1.4.0
org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 1.4.0
org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.3.9
phosphor: Phosphor 0.6.0+build.7
raisedclouds: Raised Clouds 1.0.0
slight-gui-modifications: 'Slight' GUI Modifications 1.4.0
smoothscrollingeverywhere: Smooth Scrolling Everywhere 3.0.3-unstable
sodium: Sodium 0.1.0
spruceui: SpruceUI 1.6.4
textbook: Textbook 1.0.0
voidfog: Void Fog 2.4+1.16.2
window_title_changer: Window Title Changer 2.1.0-1.16.2
worldedit: WorldEdit 7.2.0-SNAPSHOT+5436-2226980
xlpackets: XLPackets 1.1
Launched Version: fabric-loader-0.10.8-1.16.4
Backend library: LWJGL version 3.2.2 build 10
Backend API: Radeon RX 580 Series (POLARIS10, DRM 3.39.0, 5.9.0-050900-generic, LLVM 11.0.0) GL version 4.6 (Compatibility Profile) Mesa 20.3.0-rc2, AMD
GL Caps: Using framebuffer using OpenGL 3.0
Using VBOs: Yes
Is Modded: Definitely; Client brand changed to 'fabric'
Type: Client (map_client.txt)
Graphics mode: fancy
Resource Packs: slightguimodifications:cts_textures, vanilla, file/§l2D Blocks GUI§r (incompatible), file/VanillaTweaks_r722471.zip, fabric/autoconfig1u, fabric/carpet, fabric/chat_heads, fabric/clientcommands (incompatible), fabric/cloth-config2, fabric/cullparticles, fabric/eggtab, fabric/everythingisahat, fabric/fabric, fabric/fabric-api-base, fabric/fabric-biome-api-v1, fabric/fabric-blockrenderlayer-v1, fabric/fabric-containers-v0, fabric/fabric-content-registries-v0, fabric/fabric-crash-report-info-v1, fabric/fabric-events-interaction-v0, fabric/fabric-events-lifecycle-v0, fabric/fabric-game-rule-api-v1, fabric/fabric-item-api-v1, fabric/fabric-item-groups-v0, fabric/fabric-key-binding-api-v1, fabric/fabric-keybindings-v0, fabric/fabric-language-kotlin, fabric/fabric-lifecycle-events-v1, fabric/fabric-loot-tables-v1, fabric/fabric-mining-levels-v0, fabric/fabric-models-v0, fabric/fabric-networking-blockentity-v0, fabric/fabric-networking-v0, fabric/fabric-object-builder-api-v1, fabric/fabric-object-builders-v0, fabric/fabric-registry-sync-v0, fabric/fabric-renderer-api-v1, fabric/fabric-renderer-indigo, fabric/fabric-renderer-registries-v1, fabric/fabric-rendering-data-attachment-v1, fabric/fabric-rendering-fluids-v1, fabric/fabric-rendering-v0, fabric/fabric-rendering-v1, fabric/fabric-resource-loader-v0, fabric/fabric-screen-handler-api-v1, fabric/fabric-tag-extensions-v0, fabric/fabric-textures-v0, fabric/fabric-tool-attribute-api-v1, fabric/fabricloader, fabric/fastfurnace, fabric/jankson, fabric/lambdacontrols, fabric/litematica (incompatible), fabric/lithium, fabric/malilib (incompatible), fabric/modid, fabric/modmenu, fabric/multiconnect-api, fabric/okzoomer, fabric/spruceui, fabric/voidfog (incompatible), fabric/worldedit (incompatible), file/VanillaTweaks-itemstitching.zip, fabric/artifice, fabric/colormatic, fabric/dynamicfps, fabric/fabrishot, fabric/lambdynlights, fabric/libgui, fabric/minecraftcapes, fabric/mm, fabric/nbtviewer, fabric/notenoughcrashes, fabric/phosphor, fabric/raisedclouds, fabric/slight-gui-modifications, fabric/smoothscrollingeverywhere, fabric/sodium, fabric/textbook, fabric/window_title_changer, fabric/anycapes, fabric/authme, fabric/multiconnect
Current Language: English (US)
CPU: 4x AMD Athlon(tm) X4 880K Quad Core Processor
Client Crashes Since Restart: 1
Integrated Server Crashes Since Restart: 0

Suggestion: Mod Menu Config

Hi.

I understand that you are using the configuration menu visible from Mod Menu as a demo for how things should look like. Yet, it's not really elegant for end users to see this stuff just because the mods they're using utilize a library mod; none of the other library mods my mods use do this and it clutters the menu with something that is not really useful. I suggest instead that you instead post screenshots on CurseForge for people to see what they're getting.

Cheers,
Bogdan

Don't use cloth-config as the package name

As of 4.9, many packages were renamed and moved around
One of those changes was shadowing some code in me.shedaniel.cloth.cloth-config.shadowed
The hyphen '-' character is considered an illegal character for packages, and will break several packages under this domain, like @\Comment
imagen
(Image from Intellij IDEA)

Some IDEs will complain further about this:
imagen
(image from VScode)

Please follow naming conventions, so this doesn't break:
https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html

Question about snapshots

Hello!

Just to clarify: did you have intentions to update the mod for snapshots as well?

I read some modders in Fabricord which uses cloth as dependency willing to update their mods but cant since it doesn't have a snapshot build. So i went ahead and requested in the requests channel for someone to fork/PR this repo to update for snapshots, but after i felt bad because i didnt ask here before.

Thanks in advance for any answer!

DropDown menu don't display list

Hello.
I've tried to make DropDown menu. But it shows "No suggestions" instead of list with variants.
My code:

mapAppearance.addEntry(entryBuilder.startDropdownMenu(lang("current_skin"), MapSkin.getCurrentSkin(), MapSkin::getSkinByName, MapSkin::getName)
.setDefaultValue(MapSkin.getSkin((int) JustMap.CONFIG.getDefault("current_skin")))
.setSelections(MapSkin.getSkins())
.build());

MapSkin.getSkins() returns not empty List, I've checked.
And menu in your config shows only one element, but in the Enum in ClothConfig are several of them.
2020-02-23_21 09 51

Suggestion: Transparent Background

If reasonable, it would be handy (depending on the mod) to not render the background at all. In my current case it would help players see changes to nameplates without backing out of the menu to evaluate, then navigating back in to tweak further.

This idea came from a glitch while playing with Cloth Config's demo configs. All the UI and shading rendered properly but the background was missing, so I could see the paused world behind. I didn't know it was an glitch at the time and haven't been able to reproduce it since.

Edit: I forgot to add, I've tried using 8-bit and 24-bit transparent textures as the background to achieve this effect but they result in opaque backgrounds. I only tried in 1.15.2.

Possibly incorrect types in EnumSelectorBuilder and EnumListEntry

While using EnumSelectorBuilder I have found that I cannot use a very sensible function like

public static Text nameProvider(MyEnum value) ...

via method reference as an argument for the method setEnumNameProvider in EnumSelectorBuilder.

Argument of setEnumNameProvider (here) and field enumNameProvider(here) in EnumSelectorBuilder as well as parameters enumNameProvider of constructors of EnumListEntry (here, here and here) have the type Function<Enum, Text> but it seems that they all should have the type Function<T, Text> (T in both classes is defined as T extends Enum<?>).

Add topics to repository for discovery

Githubs search is really useful if you use topics. To find new libraries, I use topic:minecraft-fabric topic:library.
Using them makes a repository easy to discover and more visible.

You should add the following topics to your repository (these are the most common in fabric projects and fitting for this):

  • minecraft
  • minecraft-fabric
  • fabricmc
  • library

E.g.:
grafik

This is small change that can be done in less than a minute and it would help future users a lot.
Thank you.

P.S. Also do this for AutoConfig propably.

Support lists of Objects

This builder would require an additional function parameter to compute the widgets, as they won't be known at runtime like the other lists.

Request: Map entry builders

If it's not too difficult to implement, a Map entry builder would be nice to have. One of my config options is a Map<String, Integer>, and I have a feeling I'll end up with more Map options in the future. Because there are so many key-value type combinations, I wouldn't expect a bunch of functions with different types, like ConfigEntryBuilder#startStrIntMap. Instead, I feel like ConfigEntryBuilder#startMap that uses generics to determine the type would be the way to go, and just throw an exception if someone tries to use a type that isn't supported anywhere else in the config.
Alternatively, if you have a better idea for how to represent something like this in the config GUI, I'm open to suggestions.

EDIT: I realized a decent workaround for my particular scenario would be to turn it into a string list that uses a separator character to separate the key and value within each string. It's not the best solution, but it would be fairly easy to do and would work better than not showing the option.

Suggestion: True Dropdowns

Currently, "dropdown menus" behave as text fields with suggestions. This is suboptimal for short sets of possible values like common enums, as users have to erase the existing value to see the possibilities instead of seeing them from a single click.

An alternative to current dropdown menus with no text input and where every possibility is always shown would probably be better than both cycling buttons and text input with suggestions.

A secondary suggestion helping with the above problem is to allow right clicking a text field to erase its current content.

Crash in dev environment

I used
modApi "me.shedaniel.cloth:config-2:2.9.3"
in build.gradle.
When I clicked the mods button, it crashed
java.lang.NoSuchMethodError: net.minecraft.client.texture.TextureManager.method_4616(Lnet/minecraft/util/Identifier;Lnet/minecraft/client/texture/AbstractTexture;)Z at io.github.prospector.modmenu.gui.ModListEntry.bindIconTexture(ModListEntry.java:119) at io.github.prospector.modmenu.gui.ModListEntry.render(ModListEntry.java:49) at io.github.prospector.modmenu.gui.ModListWidget.renderList(ModListWidget.java:227)
This may be caused by yarn names mismatch.
I am using yarn mapping 1.15.2+build.14

Add a colour picker

While there is a colour option type available, it just renders the current value of a hex colour code. That's not super friendly for users just trying to pick something they like. I'd like to be able to provide a proper colour picker, something like:

image

I'm open to PRing this in myself (eventually) if that's not something you have time to do.

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.