{"id":16854653,"url":"https://github.com/crykn/guacamole","last_synced_at":"2025-03-22T06:31:03.771Z","repository":{"id":96737270,"uuid":"268923265","full_name":"crykn/guacamole","owner":"crykn","description":"A small collection of utilities for libGDX games.","archived":false,"fork":false,"pushed_at":"2024-12-30T18:14:53.000Z","size":249,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T08:53:30.893Z","etag":null,"topics":["java","libgdx","utilities"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crykn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-02T22:40:11.000Z","updated_at":"2025-03-06T07:51:17.000Z","dependencies_parsed_at":"2024-03-02T10:24:15.930Z","dependency_job_id":"52b5febe-7613-412b-80b8-96069c744e43","html_url":"https://github.com/crykn/guacamole","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crykn%2Fguacamole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crykn%2Fguacamole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crykn%2Fguacamole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crykn%2Fguacamole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crykn","download_url":"https://codeload.github.com/crykn/guacamole/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244918500,"owners_count":20531682,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","libgdx","utilities"],"created_at":"2024-10-13T13:56:14.939Z","updated_at":"2025-03-22T06:31:03.167Z","avatar_url":"https://github.com/crykn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# guacamole\n\n[![Release](https://jitpack.io/v/crykn/guacamole.svg)](https://jitpack.io/#crykn/guacamole) [![Build](https://img.shields.io/github/actions/workflow/status/crykn/guacamole/build-and-test.yml?label=Build)](https://github.com/crykn/guacamole/actions) ![GWT Compatible](https://img.shields.io/badge/GWT-compatible-informational)\n\nA small collection of some common and **very basic utilities for [libGDX](https://github.com/libgdx/libgdx) games**, which is used in [libgdx-screenmanager](https://github.com/crykn/libgdx-screenmanager) and [pancake](https://github.com/eskalon/pancake).\n\n## Core \n\n```\ndependencies {\n    implementation 'com.github.crykn.guacamole:core:$guacamoleVersion'\n}\n```\n\n* [@Beta](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/annotations/Beta.java): an annotation to denote APIs that may be subject to changes in future releases\n* [BooleanConsumer](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/func/BooleanConsumer.java), [FloatConsumer](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/func/FloatConsumer.java), [ShortConsumer](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/func/ShortConsumer.java), [ICallback](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/ICallback.java)\n* [ClassUtils](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/ClassUtils.java): contains utilities for dealing with classes\n* [ConcatenatedIterator](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/ConcatenatedIterator.java): this class aggregates multiple iterators into one\n* [DaemonThreadFactory](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/concurrent/DaemonThreadFactory.java): a `ThreadFactory` creating daemon threads\n* [Exceptions](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/Exceptions.java): `#throwAsRuntimeException(Exception)`, `#getStackTraceAsString(Exception)`\n* [@GwtIncompatible](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/annotations/GwtIncompatible.java): indicates that an API is not compatible with GWT and thus shouldn't be compiled for it\n* [IntRange](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/ClassUtils.java)\n* [MoreObjects](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/MoreObjects.java): contains helper functions for dealing with objects which are not already included in Java's `Objects` class\n* [@Nullable](https://github.com/jspecify/jspecify/blob/main/src/main/java/org/jspecify/annotations/Nullable.java): the `@Nullable` annotation from [JSpecify](https://jspecify.dev/) is provided as a transitive dependency \n* [Pair](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/tuple/Pair.java), [Triple](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/tuple/Triple.java), [IntPair](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/tuple/IntPair.java) \u0026 [IntTriple](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/tuple/IntTriple.java) implementations (immutable)\n* [Preconditions](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/Preconditions.java): has methods like `#checkArgument(boolean, String)`, `#checkState(boolean, String)` \u0026 `#checkNotNull(Object, String)`; is slimmer than the commonly known class from [guava](https://github.com/google/guava/wiki/PreconditionsExplained)\n* [StopWatch](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/StopWatch.java)\n* [ThreadHandler](https://github.com/crykn/guacamole/blob/master/core/src/main/java/de/damios/guacamole/concurrent/ThreadHandler.java): a class to easily offload simple, time-consuming tasks onto threads\n\n\u003cbr/\u003e\n\n## gdx \u0026 gdx-desktop \u0026 gdx-gwt\n\n### gdx \u0026 gdx-gwt\n\n**Core project:**\n\n```\ndependencies {\n    implementation \"com.github.crykn.guacamole:gdx:$guacamoleVersion\" // guacamole-core is included\n}\n```\n\n**Html project:**\n\n```\ndependencies {\n    implementation \"com.github.crykn.guacamole:gdx:$guacamoleVersion\" // guacamole-core is included\n    \n    implementation \"com.github.crykn.guacamole:core:$guacamoleVersion:sources\"\n    implementation \"com.github.crykn.guacamole:gdx:$guacamoleVersion:sources\"\n    implementation \"com.github.crykn.guacamole:gdx-gwt:$guacamoleVersion\"\n    implementation \"com.github.crykn.guacamole:gdx-gwt:$guacamoleVersion:sources\"\n}\n```\n\nModule file (_GdxDefinition.gwt.xml_):\n\n```\n\u003cinherits name=\"guacamole_gdx_gwt\" /\u003e\n```\n\n**What is added:**\n\n* [DefaultInputProcessor](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/DefaultInputProcessor.java): an `InputProcessor` providing default methods to reduce boilerplate code; is an interface alternative to `InputAdapter`\n* [DisposablePool](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/math/pool/DisposablePool.java), [Vector2Pool](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/math/pool/Vector2Pool.java) \u0026 [Vector3Pool](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/math/pool/Vector3Pool.java)\n* [FPSCounter](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/utils/FPSCounter.java)\n* [IntVector2](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/math/IntVector2.java): a vector for integer values\n* [Logger](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/log/Logger.java) \u0026 [LoggerService](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/log/LoggerService.java): supports formatting; is super-sourced on GWT via [formic](https://github.com/tommyettinger/formic); use `LoggerService.getLogger(MyGdxGame.class)` to obtain a logger; calling, for instance, `logger.error(\"something went %s!\", \"wrong\")` leads to the following console output: `[ERROR] [c.b.g.m.MyGdxGame]: something went wrong!`\n* [NestableFrameBuffer](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/graphics/NestableFrameBuffer.java): a nestable framebuffer implementation, see [here](https://github.com/crykn/libgdx-screenmanager/wiki/Custom-FrameBuffer-implementation) for details\n* [QuadMeshGenerator](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/graphics/QuadMeshGenerator.java): allows easily creating different quads; is useful when applying shaders\n* [ReflectionUtils](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/reflection/ReflectionUtils.java): utility methods for dealing with libGDX's reflection\n* [ShaderCompatibilityHelper](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/graphics/ShaderCompatibilityHelper.java): Allows converting GLSL shader code from version 120 to 150\n* [ShaderProgramFactory](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/graphics/ShaderProgramFactory.java) \u0026 [ShaderPreconditions](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/graphics/ShaderProgramFactory.java#L107): Adds methods to easily create \u0026 compile a shader (`#fromString(String, String)`); automatically throws exceptions when the compilation fails; prepends can be ignored\n* [Text](https://github.com/crykn/guacamole/blob/master/gdx/src/main/java/de/damios/guacamole/gdx/assets/Text.java) asset type\n   \n### gdx-desktop\n\n**Desktop project:**\n\n```\ndependencies {\n    implementation \"com.github.crykn.guacamole:gdx:$guacamoleVersion\" // guacamole-core is included\n    \n    implementation \"com.github.crykn.guacamole:gdx-desktop:$guacamoleVersion\"\n}\n```\n\n**What is added:**\n\n* [StartOnFirstThreadHelper](https://github.com/crykn/guacamole/blob/master/gdx-desktop/src/main/java/de/damios/guacamole/gdx/StartOnFirstThreadHelper.java): Starts a new JVM if the current one was not started with the `-XstartOnFirstThread` argument on macOS; this is only needed for the LWJGL 3 backend!\n   \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrykn%2Fguacamole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrykn%2Fguacamole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrykn%2Fguacamole/lists"}