Skip to content

Commit 79e101d

Browse files
Merge branch 'main' into luax
2 parents da60ea2 + 13c26b5 commit 79e101d

39 files changed

+1593
-1061
lines changed

.editorconfig

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,46 @@
11
# https://editorconfig.org
2+
# http://editorconfig.org
23
root = true
34

45
[*]
5-
indent_style = space
6-
end_of_line = lf
76
charset = utf-8
8-
trim_trailing_whitespace = true
7+
end_of_line = lf
98
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.java]
12+
# 2-space indentation (Google Style Guide Section 4.2)
13+
indent_style = space
14+
15+
# Limit line length to 100 characters (Section 4.4)
16+
max_line_length = 100
17+
18+
# Standard Java formatting rules
19+
ij_java_use_single_class_imports = true
20+
ij_java_insert_inner_class_imports = false
21+
ij_java_class_count_to_use_import_on_demand = 999
22+
ij_java_names_count_to_use_import_on_demand = 999
23+
ij_java_packages_to_use_import_on_demand = unset
24+
ij_java_blank_lines_before_class_end = 1
25+
ij_java_blank_lines_after_class_header = 1
26+
27+
# Block formatting (Section 4.1.2)
28+
ij_java_class_brace_style = end_of_line
29+
ij_java_method_brace_style = end_of_line
30+
31+
# Space before opening brace (Section 4.6.2)
32+
ij_java_space_before_class_left_brace = true
33+
ij_java_space_before_method_left_brace = true
34+
ij_java_space_before_if_left_brace = true
35+
ij_java_space_before_while_left_brace = true
36+
ij_java_space_before_for_left_brace = true
37+
ij_java_space_before_try_left_brace = true
38+
ij_java_space_before_catch_left_brace = true
39+
ij_java_space_before_switch_left_brace = true
40+
ij_java_space_before_synchronized_left_brace = true
1041

1142
[*.{java,scala,groovy,kt,kts}]
12-
indent_size = 4
43+
indent_size = 2
1344

1445
[*.gradle]
1546
indent_size = 2

.github/FUNDING.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# These are supported funding model platforms
2+
3+
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: stringfromjava
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12+
polar: # Replace with a single Polar username
13+
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14+
thanks_dev: # Replace with a single thanks.dev username
15+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

.github/workflows/ci.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: CI Build Check
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main, develop ]
8+
9+
jobs:
10+
build:
11+
strategy:
12+
matrix:
13+
os: [windows-latest, macos-latest, ubuntu-latest]
14+
15+
runs-on: ${{ matrix.os }}
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
# LibGDX typically uses Java 11 or newer
21+
- name: Set up JDK 17
22+
uses: actions/setup-java@v4
23+
with:
24+
java-version: '17'
25+
distribution: 'temurin'
26+
# Cache Gradle dependencies to speed up subsequent runs
27+
cache: 'gradle'
28+
29+
# Grant execute permission for gradlew (necessary for macOS and Linux)
30+
- name: Grant execute permission for gradlew
31+
run: chmod +x gradlew
32+
# Use an 'if' condition to only run this on non-Windows OS
33+
if: startsWith(runner.os, 'macOS') || startsWith(runner.os, 'Linux')
34+
35+
# This task compiles all modules (core, desktop, etc.)
36+
- name: Build with Gradle
37+
run: ./gradlew build

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ www-test/
144144
nbactions.xml
145145
nb-configuration.xml
146146

147+
# VS Code
148+
.vscode/
149+
147150
## OS-Specific:
148151
.DS_Store
149152
Thumbs.db

COMPILING.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# How to Compile FNF:JE
2+
3+
> [!TIP]
4+
> If you want some helpful info about the Gradle tasks (or the framework FNF:JE uses), consider taking a look at [LIBGDX.md](LIBGDX.md)!
5+
6+
There are two main ways you can download and compile the game's code: with GitHub Desktop or the terminal.
7+
8+
In this guide, we'll use the GitHub Desktop method, since it the most user-friendly experience, which provides you a nice UI and does all the hard stuff for you!
9+
10+
# Prerequisites (for all methods)
11+
- A [GitHub](https://github.com) account to download the game's GitHub repository.
12+
- A [Java Development Kit (JDK)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) to compile the game's code.
13+
- An integrated development environment.
14+
- We recommend either one of the options listed below:
15+
- [Intellij IDEA](https://www.jetbrains.com/idea/download/) (RECOMMENDED)
16+
- [Eclipse](https://www.eclipse.org/downloads/)
17+
- [VS Code](https://code.visualstudio.com/)
18+
- Some basic knowledge of programming (especially Gradle) and how to navigate an IDE.
19+
20+
# Step-by-Step Guide
21+
22+
1. Visit the official [GitHub Desktop website](https://desktop.github.com/download/) and download the app.
23+
24+
> [!TIP]
25+
> If you're on Linux, don't worry! You can install a community made version by running the following commands in the terminal:
26+
> ```shell
27+
> wget -qO - https://mirror.mwt.me/shiftkey-desktop/gpgkey | gpg --dearmor | sudo tee /usr/share/keyrings/mwt-desktop.gpg > /dev/null
28+
> sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mwt-desktop.gpg] https://mirror.mwt.me/shiftkey-desktop/deb/ any main" > /etc/apt/sources.list.d/mwt-desktop.list'
29+
> ```
30+
> When it's done downloading, you can install the application by running the following command:
31+
> ```shell
32+
> sudo apt update && sudo apt install github-desktop
33+
> ```
34+
35+
2. When GitHub Desktop is done installing, sign in with your GitHub account when prompted to do so.
36+
37+
3. Go back to your browser and (on the official home page for FNF:JE's repository), click the green `<> Code` button and select `Open with GitHub Desktop`. You should see a prompt asking if you want to clone the game's code.
38+
39+
4. Click the blue `Clone` button and wait for the game's code to download.
40+
41+
> [!TIP]
42+
> We recommend putting the game's code in a place where you'll easily remember where it's at, such as your `Documents\GitHub` folder if you're on Windows!
43+
44+
5. Launch your IDE and open the game's folder when prompted to do so.
45+
46+
> [!IMPORTANT]
47+
> When you open the game's folder, your IDE will most likely start running Gradle tasks. Don't worry, this is normal and expected!
48+
49+
6. When the tasks are finished, you can now run the game's code! You can do so by running the applicable task depending on the platform.
50+
- For example, you can run the desktop version by executing the task `lwjgl3:run`.

CONTRIBUTING.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# How to Contribute
2+
3+
Around here, things are somewhat simple. All we ask is that you follow the basic rules and have common sense.
4+
5+
## Basic Info
6+
7+
- When you create a pull request to be merged into `develop`, please note that the rules will be *heavily* enforced. This is NOT because we want to be mean, but rather it's to make sure that FNF:JE has a good codebase. We don't want any contributors to deal with poorly put together code!
8+
- If you're looking for how to compile the game, please take a look at [COMPILING.md](COMPILING.md)!
9+
10+
## Issues
11+
12+
If you wish to fix a bug, make an enhancement, or even wish to
13+
simply make a recommendation, then no worries! You can make an [issue](https://github.com/stringfromjava/Starcore/issues)
14+
or create a sub-issue and help someone with something that needs to be worked on!
15+
16+
> [!IMPORTANT]
17+
> Make sure to set the base branch to `develop` on your pull request, or otherwise ***it will NOT be merged and accepted!!***
18+
19+
## Comments & Formatting
20+
21+
Comments are very valuable because they allow you and other
22+
programmers to easily understand what is happening in your code.
23+
24+
However, sometimes they can be a hindrance as well.
25+
26+
If your comments have typos, aren't clear or concise, or just
27+
hard to understand in general, then they won't be any
28+
use. Even too many comments are unnecessary, since your code should be
29+
self documented and easily readable.
30+
31+
<u>***Formatting MUST match the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html).***</u>
32+
33+
### Example of GOOD Comments (With Good Formatting)
34+
35+
```java
36+
/**
37+
* Plays a sound. (Duh.)
38+
*
39+
* @param path The path to play the sound from.
40+
* @return The sound instance itself, as a {@link FunkinSound}.
41+
*/
42+
public static FunkinSound playSound(String path) {
43+
FunkinSound sound = new FunkinSound(path);
44+
if (sound.ID != -1) { // libGDX will return -1 if the sound fails to play.
45+
soundPool.put(sound.ID, sound);
46+
}
47+
sound.play();
48+
return sound;
49+
}
50+
```
51+
52+
### Example of BAD Comments (With Bad Formatting)
53+
54+
```java
55+
/**
56+
* ooohhhhhef idkk plays a sound igg??????
57+
*
58+
* @prm daPatyhh its da path to play der sound (iykyk :fire:)
59+
* @return tf you think vro :broken_heart:
60+
*/
61+
public static
62+
FunkinSound playSound (String
63+
path)
64+
{
65+
// create da sound object duurrr
66+
FunkinSound sound = new FunkinSound(path);
67+
// six seven
68+
if
69+
(sound.ID != -1){ // i have lito have no idea what this does :wilted_flower:
70+
soundPool.put(sound.ID, sound); // puts da sound in der sound pool :3
71+
}
72+
sound.play(); // you already know dawg.
73+
return sound; // return the sound or whatever
74+
}
75+
```

LIBGDX.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
## This is a [libGDX](https://libgdx.com/) project generated with [gdx-liftoff](https://github.com/libgdx/gdx-liftoff).
2+
3+
# Platforms
4+
5+
FNF:JE is designed to run on multiple different platforms. Below are the different modules that hold the code for each one.
6+
7+
- `core`: Main module with the game's logic shared by all platforms. <u>This is where you want to write your source code!</u>
8+
- `lwjgl3`: Primary desktop platform using [LWJGL3](https://www.lwjgl.org/). <u>This is what launches the desktop versions of the game!</u>
9+
- `android`: Android mobile platform. <u>This requires the Android SDK, which can be downloaded and configured simply by running the universal [setup file](setup/android_setup.sh)!</u>
10+
11+
> [!IMPORTANT]
12+
> When you install the Android SDK, you need to make sure that either your `ANDROID_HOME` path is configured correctly, or you have a `local.properties` file created with an `sdk.dir` property assigned to your SDK path; otherwise, it won't work!
13+
14+
# Gradle
15+
16+
This project uses [Gradle](https://gradle.org/) to manage dependencies.
17+
The Gradle wrapper was included, so you can run Gradle tasks using `gradlew.bat` or `./gradlew` commands.
18+
19+
## Flags
20+
21+
- `--continue`: when using this flag, errors will not stop the tasks from running.
22+
- `--daemon`: thanks to this flag, Gradle daemon will be used to run chosen tasks.
23+
- `--offline`: when using this flag, cached dependency archives will be used.
24+
- `--refresh-dependencies`: this flag forces validation of all dependencies. Useful for snapshot versions.
25+
26+
## Tasks
27+
28+
- `android:lint`: performs Android project validation.
29+
- `build`: builds sources and archives of every project.
30+
- `cleanEclipse`: removes Eclipse project data.
31+
- `cleanIdea`: removes IntelliJ project data.
32+
- `clean`: removes `build` folders, which store compiled classes and built archives.
33+
- `eclipse`: generates Eclipse project data.
34+
- `idea`: generates IntelliJ project data.
35+
- `lwjgl3:jar`: builds the game's runnable jar, which can be found at `lwjgl3/build/libs`.
36+
- `lwjgl3:run`: starts the desktop version of the game.
37+
- `test`: runs unit tests (if any).
38+
39+
Note that most tasks that are not specific to a single project can be run with `name:` prefix, where the `name` should be replaced with the ID of a specific project.
40+
For example, `core:clean` removes `build` folder only from the `core` project.

LICENSE renamed to LICENSE.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
# Friday Night Funkin': Java Edition License
2+
3+
The original game (created by Cameron Taylor and the Funkin' Crew) uses a license called the *Apache License*, which is a permissive, free software license that allows users to freely use, modify, and distribute the software for any purpose, including commercially.
4+
5+
Because Friday Night Funkin': Java Edition (FNF:JE) is based off of the base game, we also adapt the same license they have to maintain consistency.
6+
7+
## License
8+
9+
```
110
Apache License
211
Version 2.0, January 2004
312
http://www.apache.org/licenses/
@@ -175,18 +184,7 @@ Apache License
175184
176185
END OF TERMS AND CONDITIONS
177186
178-
APPENDIX: How to apply the Apache License to your work.
179-
180-
To apply the Apache License to your work, attach the following
181-
boilerplate notice, with the fields enclosed by brackets "[]"
182-
replaced with your own identifying information. (Don't include
183-
the brackets!) The text should be enclosed in the appropriate
184-
comment syntax for the file format. We also recommend that a
185-
file or class name and description of purpose be included on the
186-
same "printed page" as the copyright notice for easier
187-
identification within third-party archives.
188-
189-
Copyright [yyyy] [name of copyright owner]
187+
Copyright 2026 String
190188
191189
Licensed under the Apache License, Version 2.0 (the "License");
192190
you may not use this file except in compliance with the License.
@@ -199,3 +197,4 @@ Apache License
199197
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200198
See the License for the specific language governing permissions and
201199
limitations under the License.
200+
```

README.md

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,5 @@
1-
# Funkin-Java
1+
# Friday Night Funkin': Java Edition
22

3-
A [libGDX](https://libgdx.com/) project generated with [gdx-liftoff](https://github.com/libgdx/gdx-liftoff).
3+
Welcome to the official GitHub repository for the Java edition of Friday Night Funkin'!
44

5-
This project was generated with a template including simple application launchers and an `ApplicationAdapter` extension that draws libGDX logo.
6-
7-
## Platforms
8-
9-
- `core`: Main module with the application logic shared by all platforms.
10-
- `lwjgl3`: Primary desktop platform using LWJGL3; was called 'desktop' in older docs.
11-
- `android`: Android mobile platform. Needs Android SDK.
12-
13-
## Gradle
14-
15-
This project uses [Gradle](https://gradle.org/) to manage dependencies.
16-
The Gradle wrapper was included, so you can run Gradle tasks using `gradlew.bat` or `./gradlew` commands.
17-
Useful Gradle tasks and flags:
18-
19-
- `--continue`: when using this flag, errors will not stop the tasks from running.
20-
- `--daemon`: thanks to this flag, Gradle daemon will be used to run chosen tasks.
21-
- `--offline`: when using this flag, cached dependency archives will be used.
22-
- `--refresh-dependencies`: this flag forces validation of all dependencies. Useful for snapshot versions.
23-
- `android:lint`: performs Android project validation.
24-
- `build`: builds sources and archives of every project.
25-
- `cleanEclipse`: removes Eclipse project data.
26-
- `cleanIdea`: removes IntelliJ project data.
27-
- `clean`: removes `build` folders, which store compiled classes and built archives.
28-
- `eclipse`: generates Eclipse project data.
29-
- `idea`: generates IntelliJ project data.
30-
- `lwjgl3:jar`: builds application's runnable jar, which can be found at `lwjgl3/build/libs`.
31-
- `lwjgl3:run`: starts the application.
32-
- `test`: runs unit tests (if any).
33-
34-
Note that most tasks that are not specific to a single project can be run with `name:` prefix, where the `name` should be replaced with the ID of a specific project.
35-
For example, `core:clean` removes `build` folder only from the `core` project.
5+
### Please note that this unofficial version of the game is NOT completed! This has a long way to go, but with YOUR help, we can make this project come alive! <3

0 commit comments

Comments
 (0)