Compare commits

..

10 Commits

Author SHA1 Message Date
Martin Prokoph
24288b3ebd Update README.md 2022-05-03 10:25:09 +00:00
Motschen
0226bfc62f MidnightControls 0.2.0 - Fixes, improvements, compat
- Fix #4
- Fix #3 (maybe?)
- No longer break OptiFabric
- Better XBox controller icons (#7) by @Ivanoks
- Start of reimplementing REI compat
- Hide HUD when controller is missing
2022-05-03 12:22:20 +02:00
Martin Prokoph
28d92a65d4 Merge pull request #8 from DioEgizio/patch-1
fix links in fmj
2022-04-29 18:28:19 +02:00
DioEgizio
132bdc0cc5 fix links in fmj
fix links in fabric.mod.json
2022-04-21 16:48:43 +02:00
Motschen
bdffef681f Update CHANGELOG.md 2022-03-16 16:40:57 +01:00
Motschen
a49a64ef44 Update README.md 2022-03-12 23:12:17 +01:00
Motschen
0e192b2af4 Merge branch '1.18' of https://github.com/Motschen/LambdaControls into 1.18 2022-03-12 23:10:33 +01:00
Motschen
6dd654f2f5 Update metafiles 2022-03-12 23:10:29 +01:00
Motschen
eb406a4681 Update README.md 2022-03-12 23:02:55 +01:00
Motschen
d386e3d9a2 Update README.md 2022-03-12 23:02:10 +01:00
24 changed files with 224 additions and 154 deletions

View File

@@ -1,5 +1,21 @@
# Changelog
# MidnightControls
## 0.1.0
First beta!
Changes from LambdaControls:
- Support for Steam Deck and Dualsense
- Support for L4, L5, R4, R5 buttons
- Updated Libraries
- New Logo and Name
- Lots of Bugfixes
- MidnightConfig backend
# LambdaControls
## 1.0.0
:tada: First release! :tada:
@@ -14,11 +30,11 @@
### 1.0.1
- Fixed tutorial toast to look around not affected by camera movement done with a controller. ([#2](https://github.com/LambdAurora/midnightcontrols/issues/2))
- Fixed tutorial toast to look around not affected by camera movement done with a controller. ([#2](https://github.com/LambdAurora/LambdaControls/issues/2))
### 1.0.2 (Unofficial)
This update was never pushed but was aiming to fix [#4](https://github.com/LambdAurora/midnightcontrols/issues/4).
This update was never pushed but was aiming to fix [#4](https://github.com/LambdAurora/LambdaControls/issues/4).
- Fixed the toggle sneak button binding.
- Fixed broken chat arrow keys.
@@ -26,17 +42,17 @@ This update was never pushed but was aiming to fix [#4](https://github.com/Lambd
## 1.1.0 - Chording update
This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAurora/midnightcontrols/issues/9)).
This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAurora/LambdaControls/issues/9)).
- Rewrote everything (almost).
- Added [networking](https://github.com/LambdAurora/midnightcontrols/wiki/midnightcontrols-Networking) for some features.
- Added [networking](https://github.com/LambdAurora/LambdaControls/wiki/LambdaControls-Networking) for some features.
- Added second controller support (Joycons supported now hopefully).
- Added chording.
- Added better developer API
- Added hover messages ([#5](https://github.com/LambdAurora/midnightcontrols/issues/5)).
- Added hotbar button bindings ([#7](https://github.com/LambdAurora/midnightcontrols/issues/7)).
- Added front block placing feature ([#8](https://github.com/LambdAurora/midnightcontrols/issues/8)).
- Added no creative fly drifting ([#8](https://github.com/LambdAurora/midnightcontrols/issues/8)).
- Added hover messages ([#5](https://github.com/LambdAurora/LambdaControls/issues/5)).
- Added hotbar button bindings ([#7](https://github.com/LambdAurora/LambdaControls/issues/7)).
- Added front block placing feature ([#8](https://github.com/LambdAurora/LambdaControls/issues/8)).
- Added no creative fly drifting ([#8](https://github.com/LambdAurora/LambdaControls/issues/8)).
- Added option to enable controller focus.
- Added [OkZoomer](https://github.com/joaoh1/OkZoomer) compatibility.
- Added D-pad movements in inventories.
@@ -50,10 +66,10 @@ This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAur
## 1.2.0-1.3.0
- Improved rotation algorithm ([#11](https://github.com/LambdAurora/midnightcontrols/issues/11)).
- Improved rotation algorithm ([#11](https://github.com/LambdAurora/LambdaControls/issues/11)).
- Added virtual mouse.
- Added outline on front block placing.
- Added fast block placement ([#8](https://github.com/LambdAurora/midnightcontrols/issues/8)).
- Added fast block placement ([#8](https://github.com/LambdAurora/LambdaControls/issues/8)).
- Added [REI](https://www.curseforge.com/minecraft/mc-mods/roughly-enough-items) compatibility.
- Improved HUD.
- Added recipe book control.
@@ -62,7 +78,7 @@ This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAur
### 1.3.1
- Fixed broken inventory interactions ([#13](https://github.com/LambdAurora/midnightcontrols/issues/13))
- Fixed broken inventory interactions ([#13](https://github.com/LambdAurora/LambdaControls/issues/13))
- Fixed virtual mouse preventing continuous attack (thus making breaking blocks impossible).
- Added support for [ModUpdater](https://gitea.thebrokenrail.com/TheBrokenRail/ModUpdater) hopefully.
- Updated [SpruceUI](https://github.com/LambdAurora/SpruceUI) to 1.5.2.
@@ -76,7 +92,7 @@ This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAur
## 1.4.0
- Added analog movements ([#10](https://github.com/LambdAurora/midnightcontrols/issues/10)).
- Added analog movements ([#10](https://github.com/LambdAurora/LambdaControls/issues/10)).
- Improved Ok Zoomer compability.
- Updated [SpruceUI](https://github.com/LambdAurora/SpruceUI) to 1.5.8 to ensure 1.16.2 compability.
- Internal changes:
@@ -84,7 +100,7 @@ This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAur
- Replace lot of strings with Texts.
- Improved block outline rendering injection.
- Shadow library jars instead of Jar-in-Jar.
- Fixed crash in inventory ([#16](https://github.com/LambdAurora/midnightcontrols/issues/16))
- Fixed crash in inventory ([#16](https://github.com/LambdAurora/LambdaControls/issues/16))
- WIP:
- Started to work on action ring.
- Will allow for better compability with other mods.
@@ -97,8 +113,8 @@ This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAur
## 1.5.0
- Added mappings string editor screen.
- Added Simplified Chinese translations ([#18](https://github.com/LambdAurora/midnightcontrols/pull/18)).
- Added Mexican Spanish translations ([#22](https://github.com/LambdAurora/midnightcontrols/pull/22)).
- Added Simplified Chinese translations ([#18](https://github.com/LambdAurora/LambdaControls/pull/18)).
- Added Mexican Spanish translations ([#22](https://github.com/LambdAurora/LambdaControls/pull/22)).
- Added Xbox 360 button skin and overhauled Xbox button skin.
- Added debug option.
- Respect toggle setting in Accessibility screen.
@@ -114,17 +130,17 @@ This update also has a backport 1.14.4 version ([#9](https://github.com/LambdAur
## 1.6.0
- Reworked entirely the settings screen.
- Added independent stick dead zones. ([#32](https://github.com/LambdAurora/midnightcontrols/issues/32))
- Added max values range. ([#41](https://github.com/LambdAurora/midnightcontrols/issues/41))
- Updated [SpruceUI] and fix related crashes due to incompatible versions ([#40](https://github.com/LambdAurora/midnightcontrols/issues/40), [#48](https://github.com/LambdAurora/midnightcontrols/issues/48)).
- Fix boat control issues ([#37](https://github.com/LambdAurora/midnightcontrols/issues/37)).
- Fix incompatibilities with mods using night-config. Now shadowing properly night-config. ([#33](https://github.com/LambdAurora/midnightcontrols/issues/33), [#39](https://github.com/LambdAurora/midnightcontrols/issues/39))
- Added independent stick dead zones. ([#32](https://github.com/LambdAurora/LambdaControls/issues/32))
- Added max values range. ([#41](https://github.com/LambdAurora/LambdaControls/issues/41))
- Updated [SpruceUI] and fix related crashes due to incompatible versions ([#40](https://github.com/LambdAurora/LambdaControls/issues/40), [#48](https://github.com/LambdAurora/LambdaControls/issues/48)).
- Fix boat control issues ([#37](https://github.com/LambdAurora/LambdaControls/issues/37)).
- Fix incompatibilities with mods using night-config. Now shadowing properly night-config. ([#33](https://github.com/LambdAurora/LambdaControls/issues/33), [#39](https://github.com/LambdAurora/LambdaControls/issues/39))
## 1.7.0
- Updated to 1.17.
- Small improvements to the codebase thanks to Java 16.
- Fix controller bindings not being saved ([#31](https://github.com/LambdAurora/midnightcontrols/issues/31), [#55](https://github.com/LambdAurora/midnightcontrols/issues/55)).
- Fix controller bindings not being saved ([#31](https://github.com/LambdAurora/LambdaControls/issues/31), [#55](https://github.com/LambdAurora/LambdaControls/issues/55)).
- Dropped entirely Touchscreen Input Mode.
- Dropped Roughly Enough Items compatibility.

View File

@@ -2,7 +2,7 @@
:tada: First of all, thanks for taking time to contribute! :tada:
The following is a set of guidelines for contributing to midnightcontrols.
The following is a set of guidelines for contributing to MidnightControls.
Feel free to propose changes to this document in a pull request.
**Table of Contents**
@@ -18,7 +18,7 @@ Feel free to propose changes to this document in a pull request.
## Code of Conduct
This project and everyone participating in it is governed by the [Code of Conduct](https://github.com/LambdAurora/midnightcontrols/blob/master/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable behavior at [aurora42lambda@gmail.com](mailto:aurora42lambda@gmail.com).
By participating, you are expected to uphold this code. Please report unacceptable behavior at [motschen@midnightdust.eu](mailto:motschen@midnightdust.eu).
## What should I know before I get started?
@@ -26,9 +26,9 @@ By participating, you are expected to uphold this code. Please report unacceptab
[Fabric](https://fabricmc.net/) is the mod loader and the software which allows Gradle to setup the workspace.
### Java 16
### Java 17
Java is the main language used to make midnightcontrols alive.
Java is the main language used to make MidnightControls alive.
Knowing how to code in Java is necessary if you contribute to the code.
### Minecraft
@@ -60,12 +60,12 @@ Git commits should be signed.
#### How do I submit a bug report?
Go in the issues tab in GitHub and read the [bug report guide](https://github.com/LambdAurora/midnightcontrols/blob/1.17/.github/ISSUE_TEMPLATE/bug_report.md)
Go in the issues tab in GitHub and read the [bug report guide](https://github.com/TeamMidnightDust/MidnightControls/blob/1.18/.github/ISSUE_TEMPLATE/bug_report.md)
### Suggesting enhancements
Enhancement suggestions are tracked as [GitHub issues](https://github.com/LambdAurora/midnightcontrols/issues).
Check out the [feature request](https://github.com/LambdAurora/midnightcontrols/blob/1.17/.github/ISSUE_TEMPLATE/feature_request.md) guide.
Enhancement suggestions are tracked as [GitHub issues](https://github.com/TeamMidnightDust/MidnightControls/issues).
Check out the [feature request](https://github.com/TeamMidnightDust/MidnightControls/blob/1.17/.github/ISSUE_TEMPLATE/feature_request.md) guide.
### Do pull requests

3
HEADER
View File

@@ -1,6 +1,7 @@
Copyright © 2021 LambdAurora <aurora42lambda@gmail.com>
Copyright © 2022 Motschen <motschen@midnightdust.eu>
This file is part of midnightcontrols.
This file is part of MidnightControls.
Licensed under the MIT license. For more information,
see the LICENSE file.

View File

@@ -1,6 +1,7 @@
MIT License
Copyright © 2021 LambdAurora <aurora42lambda@gmail.com>
Copyright © 2022 Motschen <motschen@midnightdust.eu>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,15 +1,16 @@
# midnightcontrols
# MidnightControls
<!-- modrinth_exclude.start -->
![Java 16](https://img.shields.io/badge/language-Java%2016-9B599A.svg?style=flat-square) <!-- modrinth_exclude.end -->
[![GitHub license](https://img.shields.io/github/license/LambdAurora/midnightcontrols?style=flat-square)](https://raw.githubusercontent.com/LambdAurora/midnightcontrols/master/LICENSE)
![Java 16](https://img.shields.io/badge/language-Java%2017-9B599A.svg?style=flat-square) <!-- modrinth_exclude.end -->
[![GitHub license](https://img.shields.io/github/license/TeamMidnightDust/MidnightControls?style=flat-square)](https://raw.githubusercontent.com/TeamMidnightDust/MidnightControls/master/LICENSE)
![Environment: Client](https://img.shields.io/badge/environment-client-1976d2?style=flat-square)
[![Mod loader: Fabric]][fabric] <!-- modrinth_exclude.start -->
![Version](https://img.shields.io/github/v/tag/LambdAurora/midnightcontrols?label=version&style=flat-square)
[![Mod loader: Quilt/Fabric]][quilt] <!-- modrinth_exclude.start -->
![Version](https://img.shields.io/github/v/tag/TeamMidnightDust/MidnightControls?label=version&style=flat-square)
[![CurseForge](http://cf.way2muchnoise.eu/title/354231.svg)](https://www.curseforge.com/minecraft/mc-mods/midnightcontrols)
<!-- modrinth_exclude.end -->
A Fabric Minecraft mod which adds better controls, reach-around and controller support.
Forked from [LambdaControls](https://github.com/LambdAurora/LambdaControls) by the amazing [LambdAurora](https://github.com/LambdAurora), which was sadly discontinued.
## What's this mod?
@@ -37,9 +38,11 @@ This mod also adds controller support.
## 🎮 Supported Controllers:
- Dualshock controllers
- Dualsense controllers
- Xbox controllers
- Switch Pro controllers
- Joycons
- Steam controller and Steam Deck (WIP)
- And many more!
## Screenshots
@@ -53,5 +56,5 @@ This mod also adds controller support.
Just do `./gradlew build` and everything should build just fine!
<!-- modrinth_exclude.end -->
[fabric]: https://fabricmc.net
[Mod loader: Fabric]: https://img.shields.io/badge/modloader-Fabric-1976d2?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTEyLTE2VDE2OjU0OjE3LTA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0wNy0yOFQyMToxNzo0OC0wNzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wNy0yOFQyMToxNzo0OC0wNzowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZWRiMWMyYy1mZjhjLWU0NDEtOTMxZi00OTVkNGYxNGM3NjAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MGVkYjFjMmMtZmY4Yy1lNDQxLTkzMWYtNDk1ZDRmMTRjNzYwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MGVkYjFjMmMtZmY4Yy1lNDQxLTkzMWYtNDk1ZDRmMTRjNzYwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZWRiMWMyYy1mZjhjLWU0NDEtOTMxZi00OTVkNGYxNGM3NjAiIHN0RXZ0OndoZW49IjIwMTgtMTItMTZUMTY6NTQ6MTctMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4/HiGMAAAAtUlEQVRYw+XXrQqAMBQF4D2P2eBL+QIG8RnEJFaNBjEum+0+zMQLtwwv+wV3ZzhhMDgfJ0wUSinxZUQWgKos1JP/AbD4OneIDyQPwCFniA+EJ4CaXm4TxAXCC0BNHgLhAdAnx9hC8PwGSRtAFVMQjF7cNTWED8B1cgwW20yfJgAvrssAsZ1cB3g/xckAxr6FmCDU5N6f488BrpCQ4rQBJkiMYh4ACmLzwOQF0CExinkCsvw7vgGikl+OotaKRwAAAABJRU5ErkJggg==
[quilt]: https://quiltmc.org
[Mod loader: Quilt/Fabric]: https://img.shields.io/badge/modloader-Quilt%2FFabric-blueviolet?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAADGAAAAxgGwdJvFAAAFU0lEQVR4nO1bwW7bOBCdCHtP+wUNxIvhS7yA7kkPOjf9AKPam4/OF2zzB96bblXhH0jPPkS5G1jnIvgib/IFtX/ALoYZemmKtEWRRe3aDzAsURbJGQ6HM4/02Wq1gmNGcNTSnxQA8IdakDK4AOCfJpj3SpiI98r2rAMAbxrWNWFFOMeL1nCJdXQa1gPTbpCbnm34ABIeBThv2hgAfOyVcF+2ZwkAfHGo54kVIRe6NVxiny4d6vpn2g36ugfqFLhwFB6kkUoc67k0XLv0qYKj9wEnBXiqZwEAf/ZKOOuV8BkLWBFesyI8A4C/LOt6AoC39C7HtBvg9Vt65hUnC/BUDzrOf1MGq5S9WkDZnuVle7ZqsBKgw/tO73K0hku8/u64EmhxsoA96MMvxdEroBIKO+CWoshnqqJPYTAGRJ8sql3QO3Op7D19D3z7AV8KeAGArFf+32lWhDwnKNuzuaUCclaE93KBiOU9hMQV+FLAOxz9lPHRR0VkZXs2oBDUNon5ULZnKOgcYwl4FTwna/K+CtRRwIK+dTnCCwkP9I0fkXmh4FcN+6UKqqtHblvtb+18po4TvKaPilsS8qVuYx5havsbJXS1I0ZVAXP1B5jfyzm+hAnN+We1XPluioX03kJtY9oNtG1T+b1aburDxhRAQVMGHw3z9k65F41nktmjUnjjrAj7ZXv27ECIyEKgBd7saBuka7lsPu0GA1MjR0+KVpwgMTlrMkN4YoztlZ/2camTvD0QjcWZF6KxMgcLyKbdAN+HKOb1y6PYH49gEsUwUKw1G48gi2KQZcApkYxH1eldUQBxeKbkRfXEQjDZ21+h2bMiHJDwH2wk1rSX0XWueHZd2yCZ/oVSnilTaA3VAiqjRRahQ0JBjuov3ijfPqAua0kUg67tmyjWCmvsS504wGQRnywjPJ8wtY3xw3827fjMBXziUalL3DcNrIzYRwXcTbvBZ7lgPHoNxKKYky1/+2xsHxXQbw2X/EIoggQHyjC9Yh8VcC6NshDc66jLOHpC5KSAPejDL8U+KuArboTQZgjHeARn+MFnvhvbRyfYaQ2XfNkTVFgUr/mIxlvkJuyjAjCae6BrYQUPW37vhDpT4MnAsCyIgbHBnYbcADJt7/t+deBCiSWsCG8sOv5IgU2FnJh2g+RnBDl1oCpgogqEx1TEURUFokx+tpCYnEzzjg1kh+fq/Ix9OXpG6OjjgI1VIGWcOMhlXh4PPdAz1VTe90rIU8Z/L9JUnALXSK4SjSUzOY+Y1ekyOlzjaamTvf3X8cjunBH1v6OeVtsG1QI66qYEVkoVmyA/O5fYmIHjgSsrskUavAc6q1BLeXXiANMZu0HKwGav7opGv+LticZqHOToLBeZrJRxC97qjOsowCTgZYO9OlNa25haMwgvsFMJPp3gLW1ji8b6dO89fhfYIbzAl23T4adtjyNvD6/mbbs9Xgs1hRcwWoIvCxDb47nQNm5aRDHvoPGcblNYCi+gtQSfU+AdLYfioLXYtHA9eruBhsILVJRwUIGQo/ACG0o4GAV4El5grQSffMA3SqbEnBdb1zeunfYsvAB3jL4UwE92KauA2NnNbLerNKhEqJ6Q+FIAOjpcATAVzjFHoC3qC9OurCW0W9s+6vXpAy4p0hPkSUL3ziNHiY3tqfNdQN4jORgnSEGMLyU8Udbq1QIEdEyRF3hSwlp4vKkwQimrHDuxAR6S4tleFIPzERnhSFXQEtbkD1kbwiMOlhJroISK8IiDpcQsp4NWeMRBc4I1lWAUHnHwpOgOJWwVHvFbsMIGJewUHvFb7QuQYxR/ttgIzbUAgB9KOM3uc+PN7QAAAABJRU5ErkJggg==

View File

@@ -3,11 +3,9 @@ plugins {
id 'java-library'
id 'maven-publish'
id 'com.github.johnrengelman.shadow' version '7.0.0'
id 'org.cadixdev.licenser' version '0.6.1'
id 'com.modrinth.minotaur' version '1.2.+'
}
import net.fabricmc.loom.task.RemapJarTask
import com.google.gson.GsonBuilder
import com.google.gson.JsonObject
import com.modrinth.minotaur.TaskModrinthUpload
@@ -41,14 +39,6 @@ String getMCVersionString() {
return version[0] + '.' + version[1]
}
String getTerraformersMCMaven() {
def terraformersUrl = 'https://maven.terraformersmc.com/'
if (pingUrl(terraformersUrl))
return terraformersUrl
else
return 'https://maven.kotlindiscord.com/repository/terraformers/'
}
boolean pingUrl(String address) {
try {
def conn = (HttpURLConnection) new URL(address).openConnection()
@@ -65,7 +55,6 @@ String parseReadme() {
def readme = (String) file('README.md').text
readme = readme.replaceAll(excludeRegex, '')
readme = readme.replaceAll(linkRegex, '![$1](https://raw.githubusercontent.com/LambdAurora/midnightcontrols/1.17/$2)')
return readme
}
@@ -82,18 +71,12 @@ repositories {
name 'CottonMC'
url 'https://server.bbkr.space/artifactory/libs-snapshot'
}
maven {
name 'TerraformersMC'
url getTerraformersMCMaven()
content {
includeGroup 'dev.emi'
includeGroup 'com.terraformersmc'
}
}
maven { url "https://maven.terraformersmc.com/releases/" }
maven { url 'https://maven.kosmx.dev' }
maven { url 'https://maven.shedaniel.me/' }
maven { url 'https://jitpack.io' }
maven { url "https://api.modrinth.com/maven" }
maven { url 'https://maven.quiltmc.org/repository/release'}
}
configurations {
@@ -121,10 +104,10 @@ dependencies {
modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}"
// Compatibility mods
modImplementation("com.github.EnnuiL:okzoomer:e6a801b1a3") {
exclude group: 'com.terraformersmc'
exclude group: 'dev.lambdaurora'
}
modImplementation("maven.modrinth:ok-zoomer:${project.ok_zoomer_version}")
modImplementation "io.github.ennuil:LibZoomer:${project.libzoomer_version}"
modImplementation "org.quiltmc:quilt-json5:1.0.0"
modImplementation("me.shedaniel:RoughlyEnoughItems-runtime-fabric:${project.rei_version}")
modImplementation "maven.modrinth:emotecraft:${project.emotecraft_version}"
modImplementation "io.github.kosmx:bendy-lib:${project.bendylib_version}"
@@ -159,17 +142,6 @@ processResources {
}
}
jar {
from('LICENSE') {
rename { "${it}_${project.archivesBaseName}" }
}
}
license {
header file('HEADER')
include '**/*.java'
}
task publishModrinth(type: TaskModrinthUpload) {
dependsOn(build)
onlyIf {

View File

@@ -8,7 +8,7 @@ yarn_mappings=1.18.1+build.22
loader_version=0.13.3
# Mod Properties
mod_version = 0.1.0
mod_version = 0.2.0
maven_group = eu.midnightdust
archives_base_name = midnightcontrols
modrinth_id=W1D3UXEc
@@ -21,3 +21,6 @@ midnightlib_version=0.4.0
modmenu_version=2.0.2
emotecraft_version=2.1-MC1.18.1-fabric
bendylib_version=2.0.+
rei_version=7.4.456
ok_zoomer_version=5.0.0-beta.3+1.17.1
libzoomer_version = 0.3.0+1.17.1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -26,10 +26,10 @@ import java.util.Objects;
import java.util.Optional;
/**
* Represents the midnightcontrols mod.
* Represents the MidnightControls mod.
*
* @author LambdAurora
* @version 1.7.0
* @author LambdAurora & Motschen
* @version 1.8.0
* @since 1.0.0
*/
public class MidnightControls implements ModInitializer {
@@ -40,12 +40,12 @@ public class MidnightControls implements ModInitializer {
public static final TranslatableText NOT_BOUND_TEXT = new TranslatableText("midnightcontrols.not_bound");
public final Logger logger = LogManager.getLogger("midnightcontrols");
public final Logger logger = LogManager.getLogger("MidnightControls");
@Override
public void onInitialize() {
INSTANCE = this;
this.log("Initializing midnightcontrols...");
this.log("Initializing MidnightControls...");
ServerPlayNetworking.registerGlobalReceiver(HELLO_CHANNEL, (server, player, handler, buf, responseSender) -> {
String version = buf.readString(32);
@@ -68,7 +68,7 @@ public class MidnightControls implements ModInitializer {
* @param info the message to print
*/
public void log(String info) {
this.logger.info("[midnightcontrols] " + info);
this.logger.info("[MidnightControls] " + info);
}
/**
@@ -77,7 +77,7 @@ public class MidnightControls implements ModInitializer {
* @param warning the warning to print
*/
public void warn(String warning) {
this.logger.info("[midnightcontrols] " + warning);
this.logger.info("[MidnightControls] " + warning);
}
/**
@@ -119,9 +119,9 @@ public class MidnightControls implements ModInitializer {
}
/**
* Gets the midnightcontrols instance.
* Gets the MidnightControls instance.
*
* @return the midnightcontrols instance
* @return the MidnightControls instance
*/
public static MidnightControls get() {
return INSTANCE;

View File

@@ -13,7 +13,7 @@ package eu.midnightdust.midnightcontrols;
import net.minecraft.util.Identifier;
/**
* Represents the constants used by midnightcontrols.
* Represents the constants used by MidnightControls.
*
* @author LambdAurora
* @version 1.1.0

View File

@@ -46,7 +46,6 @@ public class MidnightControlsConfig extends MidnightConfig {
@Entry public static int[] reacharoundOutlineColor = new int[]{255, 255, 255, 102};
// Controller
@Entry public static ControllerType controllerType = ControllerType.DEFAULT;
//private static final double DEFAULT_DEAD_ZONE = 0.25;
@Entry public static double rightDeadZone = 0.25;
@Entry public static double leftDeadZone = 0.25;
@Entry public static boolean invertRightYAxis = false;
@@ -124,7 +123,7 @@ public class MidnightControlsConfig extends MidnightConfig {
if (raw instanceof Number) {
if (((Number) raw).intValue() == -1)
return Optional.empty();
return Optional.of(Controller.byId((Integer) raw));
return Optional.of(Controller.byId(((Number) raw).intValue()));
} else if (raw instanceof String) {
return Optional.of(Controller.byGuid((String) raw).orElse(Controller.byId(GLFW.GLFW_JOYSTICK_1)));
}

View File

@@ -70,7 +70,7 @@ import static org.lwjgl.glfw.GLFW.*;
public class MidnightInput {
private static final Map<Integer, Integer> BUTTON_COOLDOWNS = new HashMap<>();
// Cooldowns
private int actionGuiCooldown = 0;
public int actionGuiCooldown = 0;
private boolean ignoreNextARelease = false;
private double targetYaw = 0.0;
private double targetPitch = 0.0;

View File

@@ -13,9 +13,7 @@ import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding;
import io.github.kosmx.emotes.arch.gui.screen.ingame.FastChosseScreen;
import io.github.kosmx.emotes.main.network.ClientEmotePlay;
import net.minecraft.client.gui.screen.Screen;
import org.jetbrains.annotations.NotNull;
import org.lwjgl.glfw.GLFW;
/**
* Represents a compatibility handler for Emotecraft.

View File

@@ -31,7 +31,7 @@ import java.util.stream.Stream;
* @since 1.1.0
*/
public class MidnightControlsCompat {
private static final List<CompatHandler> HANDLERS = new ArrayList<>();
public static final List<CompatHandler> HANDLERS = new ArrayList<>();
/**
* Initializes compatibility with other mods if needed.

View File

@@ -36,7 +36,7 @@ public class MidnightControlsMixinPlugin implements IMixinConfigPlugin {
}
private void putConditionalMixin(@NotNull String path, boolean condition) {
this.conditionalMixins.put("me.lambdaurora.midnightcontrols.client.compat.mixin." + path, condition);
this.conditionalMixins.put("eu.midnightdust.midnightcontrols.client.compat.mixin." + path, condition);
}
@Override

View File

@@ -11,15 +11,39 @@ package eu.midnightdust.midnightcontrols.client.compat;
import eu.midnightdust.midnightcontrols.client.ButtonState;
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
import eu.midnightdust.midnightcontrols.client.compat.mixin.EntryListWidgetAccessor;
import eu.midnightdust.midnightcontrols.client.compat.mixin.EntryWidgetAccessor;
import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding;
import eu.midnightdust.midnightcontrols.client.controller.InputHandlers;
import eu.midnightdust.midnightcontrols.client.controller.PressAction;
import me.shedaniel.rei.RoughlyEnoughItemsCoreClient;
import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.screen.CompositeDisplayViewingScreen;
import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen;
import me.shedaniel.rei.impl.client.gui.widget.EntryListEntryWidget;
import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import me.shedaniel.rei.impl.client.registry.screen.ScreenRegistryImpl;
import me.shedaniel.rei.impl.common.entry.AbstractEntryStack;
import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry;
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.Selectable;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.EntryListWidget;
import net.minecraft.util.Identifier;
import net.minecraft.util.Pair;
import org.aperlambda.lambdacommon.utils.LambdaReflection;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Optional;
import static eu.midnightdust.midnightcontrols.client.compat.CompatHandler.SlotPos.INVALID_SLOT;
import static org.lwjgl.glfw.GLFW.*;
/**
@@ -30,11 +54,11 @@ import static org.lwjgl.glfw.GLFW.*;
* @since 1.2.0
*/
public class ReiCompat implements CompatHandler {
//private static EntryListWidget ENTRY_LIST_WIDGET;
private static EntryListWidget ENTRY_LIST_WIDGET;
@Override
public void handle(@NotNull MidnightControlsClient mod) {
ButtonBinding.builder(new Identifier("rei", "category_back"))
/*ButtonBinding.builder(new Identifier("rei", "category_back"))
.buttons(GLFW_GAMEPAD_BUTTON_LEFT_BUMPER)
.filter((client, binding) -> isViewingScreen(client.currentScreen))
.action(handleTab(false))
@@ -87,38 +111,40 @@ public class ReiCompat implements CompatHandler {
.action(handleShowRecipeUsage(false))
.cooldown(true)
.register();
*/
}
/*
@Override
public boolean requireMouseOnScreen(Screen screen) {
return isViewingScreen(screen) /*|| screen instanceof PreRecipeViewingScreen*/;
return isViewingScreen(screen);
}
@Override
public @Nullable SlotPos getSlotAt(@NotNull Screen screen, int mouseX, int mouseY) {
/*var overlay = ScreenHelper.getOptionalOverlay();
if (overlay.isPresent() && overlay.get().isInside(mouseX, mouseY)) {
var widget = getEntryListWidget();
public @Nullable CompatHandler.SlotPos getSlotAt(@NotNull Screen screen, int mouseX, int mouseY) {
ScreenOverlayImpl overlay = ScreenOverlayImpl.getInstance();
if (overlay.isInside(mouseX, mouseY)) {
EntryListWidget widget = getEntryListWidget();
if (widget == null)
return null;
var slot = this.getSlotAt(widget, mouseX, mouseY, false);
if (slot != null && slot != INVALID_SLOT)
return slot;
return this.getSlotAt(widget, mouseX, mouseY, false);
} else if (isViewingScreen(screen)) {
for (var element : screen.children()) {
for (Element element : screen.children()) {
var slot = this.getSlotAt(element, mouseX, mouseY, true);
if (slot != null && slot != INVALID_SLOT)
if (slot != null)
return slot;
}
}*/
}
return null;
}
/*private @Nullable SlotPos getSlotAt(@NotNull Element element, int mouseX, int mouseY, boolean allowEmpty) {
if (element instanceof EntryWidget entry) {
private @Nullable CompatHandler.SlotPos getSlotAt(@NotNull Element element, int mouseX, int mouseY, boolean allowEmpty) {
if (element instanceof EntryWidget) {
EntryWidget entry = (EntryWidget) element;
if (entry.containsMouse(mouseX, mouseY)) {
if (!allowEmpty && entry.entries().isEmpty())
if (!allowEmpty && entry.getEntries().isEmpty())
return INVALID_SLOT;
return new SlotPos(entry.getBounds().getX() + 1, entry.getBounds().getY() + 1);
}
@@ -137,11 +163,10 @@ public class ReiCompat implements CompatHandler {
}
}
return null;
}*/
}
private static boolean isViewingScreen(Screen screen) {
return true;
//return screen instanceof DefaultDisplayViewingScreen || screen instanceof CompositeDisplayViewingScreen;
return screen instanceof DefaultDisplayViewingScreen || screen instanceof CompositeDisplayViewingScreen;
}
@Override
@@ -149,12 +174,12 @@ public class ReiCompat implements CompatHandler {
if (!isViewingScreen(screen))
return false;
/*MinecraftClient.getInstance().openScreen(REIRuntimeImpl.getInstance().getPreviousContainerScreen());
ScreenHelper.getLastOverlay().init();*/
MinecraftClient.getInstance().setScreen(REIRuntimeImpl.getInstance().getPreviousContainerScreen());
REIRuntimeImpl.getInstance().getLastOverlay().init();
return true;
}
/*private static EntryListWidget getEntryListWidget() {
private static EntryListWidget getEntryListWidget() {
if (ENTRY_LIST_WIDGET == null) {
ENTRY_LIST_WIDGET = LambdaReflection.getFirstFieldOfType(ContainerScreenOverlay.class, EntryListWidget.class)
.map(field -> (EntryListWidget) LambdaReflection.getFieldValue(null, field))
@@ -163,55 +188,56 @@ public class ReiCompat implements CompatHandler {
return ENTRY_LIST_WIDGET;
}
private static @Nullable EntryStack getCurrentStack(@NotNull MinecraftClient client) {
private static @Nullable AbstractEntryStack getCurrentStack(@NotNull MinecraftClient client) {
double x = client.mouse.getX() * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth();
double y = client.mouse.getY() * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight();
if (isViewingScreen(client.currentScreen)) {
for (var element : client.currentScreen.children()) {
var stack = getCurrentStack(element, x, y);
for (Element element : client.currentScreen.children()) {
EntryStack stack = getCurrentStack(element, x, y);
if (stack != null)
return stack;
}
}
var overlay = ScreenHelper.getOptionalOverlay();
Optional<ContainerScreenOverlay> overlay = REIRuntimeImpl.getInstance().getOverlay(false,false);
if (!overlay.isPresent())
return RecipeHelper.getInstance().getScreenFocusedStack(client.currentScreen);
var widget = getEntryListWidget();
EntryListWidget widget = getEntryListWidget();
if (widget == null)
return RecipeHelper.getInstance().getScreenFocusedStack(client.currentScreen);
return ScreenOverlayImpl.getInstance().getInstance().getOverlayMenu()..getScreenFocusedStack(client.currentScreen);
return getCurrentStack(widget, x, y);
}
private static @Nullable EntryStack getCurrentStack(@NotNull Element element, double mouseX, double mouseY) {
if (element instanceof EntryWidget entry) {
if (element instanceof EntryWidget) {
EntryWidget entry = (EntryWidget) element;
if (entry.containsMouse(mouseX, mouseY))
return ((EntryWidgetAccessor) entry).midnightcontrols_getCurrentEntry();
return ((EntryWidgetAccessor) entry).lambdacontrols_getCurrentEntry();
} else if (element instanceof EntryListWidget) {
var entries = ((EntryListWidgetAccessor) element).getEntries();
List<EntryListEntryWidget> entries = ((EntryListWidgetAccessor) element).getEntries();
for (EntryListEntryWidget entry : entries) {
if (entry.containsMouse(mouseX, mouseY)) {
return ((EntryWidgetAccessor) entry).midnightcontrols_getCurrentEntry();
return ((EntryWidgetAccessor) entry).lambdacontrols_getCurrentEntry();
}
}
} else if (!(element instanceof ButtonWidget) && element instanceof WidgetWithBounds widgetWithBounds) {
for (var child : widgetWithBounds.children()) {
var stack = getCurrentStack(child, mouseX, mouseY);
} else if (!(element instanceof ButtonWidget) && element instanceof WidgetWithBounds) {
for (Element child : ((WidgetWithBounds) element).children()) {
EntryStack stack = getCurrentStack(child, mouseX, mouseY);
if (stack != null)
return stack;
}
}
return null;
}*/
}
private static PressAction handleShowRecipeUsage(boolean usage) {
return (client, button, value, action) -> {
if (action.isUnpressed())
return false;
/*EntryStack stack = RecipeHelper.getInstance().getScreenFocusedStack(client.currentScreen);
EntryStack stack = RecipeHelper.getInstance().getScreenFocusedStack(client.currentScreen);
if (stack == null) {
stack = getCurrentStack(client);
}
@@ -223,7 +249,7 @@ public class ReiCompat implements CompatHandler {
} else {
return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addRecipesFor(stack).setOutputNotice(stack).fillPreferredOpenedCategory());
}
}*/
}
return false;
};
@@ -234,11 +260,11 @@ public class ReiCompat implements CompatHandler {
if (action == ButtonState.RELEASE)
return false;
/*Optional<ContainerScreenOverlay> overlay = ScreenHelper.getOptionalOverlay();
Optional<ContainerScreenOverlay> overlay = ScreenHelper.getOptionalOverlay();
if (!overlay.isPresent())
return false;
var widget = getEntryListWidget();
EntryListWidget widget = getEntryListWidget();
if (widget == null)
return false;
@@ -246,7 +272,7 @@ public class ReiCompat implements CompatHandler {
widget.nextPage();
else
widget.previousPage();
widget.updateEntriesPosition();*/
widget.updateEntriesPosition();
return true;
};
@@ -258,27 +284,28 @@ public class ReiCompat implements CompatHandler {
* @param next True if the action is to switch to the next tab.
* @return The handler.
*/
/*
private static PressAction handleTab(boolean next) {
return (client, button, value, action) -> {
if (action != ButtonState.RELEASE)
return false;
/*if (client.currentScreen instanceof DefaultDisplayViewingScreen) {
if (client.currentScreen instanceof RecipeViewingScreen) {
RecipeViewingScreenAccessor screen = (RecipeViewingScreenAccessor) client.currentScreen;
if (next)
screen.getCategoryNext().onClick();
else
screen.getCategoryBack().onClick();
return true;
} else if (client.currentScreen instanceof CompositeDisplayViewingScreen) {
} else if (client.currentScreen instanceof VillagerRecipeViewingScreen) {
VillagerRecipeViewingScreenAccessor screen = (VillagerRecipeViewingScreenAccessor) client.currentScreen;
List<RecipeCategory<?>> categories = screen.getCategories();
int currentTab = screen.getSelectedCategoryIndex();
screen.setSelectedCategoryIndex(getNextIndex(currentTab, categories.size(), next));
screen.setSelectedRecipeIndex(0);
screen.midnightcontrols_init();
screen.lambdacontrols_init();
return true;
}*/
}
return false;
};
}
@@ -288,13 +315,15 @@ public class ReiCompat implements CompatHandler {
if (action.isUnpressed())
return false;
/*if (client.currentScreen instanceof RecipeViewingScreenAccessor screen) {
if (client.currentScreen instanceof RecipeViewingScreen) {
RecipeViewingScreenAccessor screen = (RecipeViewingScreenAccessor) client.currentScreen;
if (next)
screen.getRecipeNext().onClick();
else
screen.getRecipeBack().onClick();
return true;
} else if (client.currentScreen instanceof VillagerRecipeViewingScreenAccessor screen) {
} else if (client.currentScreen instanceof VillagerRecipeViewingScreen) {
VillagerRecipeViewingScreenAccessor screen = (VillagerRecipeViewingScreenAccessor) client.currentScreen;
List<RecipeCategory<?>> categories = screen.getCategories();
int currentTab = screen.getSelectedCategoryIndex();
List<RecipeDisplay> recipes = screen.getCategoryMap().get(categories.get(currentTab));
@@ -315,10 +344,10 @@ public class ReiCompat implements CompatHandler {
}
screen.setSelectedRecipeIndex(nextRecipe);
screen.midnightcontrols_init();
screen.lambdacontrols_init();
return true;
}*/
}
return false;
};
@@ -332,4 +361,5 @@ public class ReiCompat implements CompatHandler {
nextIndex = 0;
return nextIndex;
}
*/
}

View File

@@ -9,6 +9,13 @@
package eu.midnightdust.midnightcontrols.client.compat.mixin;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.widget.EntryListWidget;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.List;
/**
* Represents an accessor to REI's EntryListWidget.
*
@@ -16,8 +23,8 @@ package eu.midnightdust.midnightcontrols.client.compat.mixin;
* @version 1.5.0
* @since 1.5.0
*/
//@Mixin(value = EntryListWidget.class, remap = false)
@Mixin(value = EntryListWidget.class, remap = false)
public interface EntryListWidgetAccessor {
/*@Accessor(value = "entries")
List<EntryListEntryWidget> getEntries();*/
@Accessor(value = "children")
List<Element> getEntries();
}

View File

@@ -14,6 +14,7 @@ import eu.midnightdust.midnightcontrols.MidnightControlsConstants;
import eu.midnightdust.midnightcontrols.client.HudSide;
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
import eu.midnightdust.midnightcontrols.client.MidnightInput;
import eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat;
import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding;
import dev.lambdaurora.spruceui.hud.Hud;
@@ -77,7 +78,7 @@ public class MidnightControlsHud extends Hud {
*/
@Override
public void render(MatrixStack matrices, float tickDelta) {
if (MidnightControlsConfig.controlsMode == ControlsMode.CONTROLLER && this.client.currentScreen == null) {
if (MidnightControlsConfig.controlsMode == ControlsMode.CONTROLLER && this.client.currentScreen == null && MidnightControlsConfig.getController().isConnected() && MidnightControlsConfig.getController().isGamepad()) {
int y = bottom(2);
this.renderFirstIcons(matrices, MidnightControlsConfig.hudSide == HudSide.LEFT ? 2 : client.getWindow().getScaledWidth() - 2, y);
this.renderSecondIcons(matrices, MidnightControlsConfig.hudSide == HudSide.RIGHT ? 2 : client.getWindow().getScaledWidth() - 2, y);

View File

@@ -9,6 +9,10 @@
package eu.midnightdust.midnightcontrols.client.gui;
import com.mojang.blaze3d.systems.RenderSystem;
import dev.lambdaurora.spruceui.background.Background;
import dev.lambdaurora.spruceui.widget.SpruceWidget;
import eu.midnightdust.lib.util.MidnightColorUtil;
import eu.midnightdust.midnightcontrols.MidnightControls;
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
@@ -27,6 +31,7 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.render.*;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.LiteralText;
@@ -35,8 +40,11 @@ import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Formatting;
import net.minecraft.util.Util;
import net.minecraft.util.math.Matrix4f;
import org.lwjgl.glfw.GLFW;
import java.awt.*;
/**
* Represents the midnightcontrols settings screen.
*/
@@ -158,7 +166,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
ClientPlayNetworking.getSender().sendPacket(MidnightControls.CONTROLS_MODE_CHANNEL, this.mod.makeControlsModeBuffer(next));
}
}, option -> option.getDisplayText(new TranslatableText(MidnightControlsConfig.controlsMode.getTranslationKey())),
new TranslatableText("midnightcontrols.tooltip.controls_mode"));
new TranslatableText("midnightcontrols.tooltip.controlsMidnightColorUtil.radialRainbow(1f,1f);_mode"));
this.autoSwitchModeOption = new SpruceToggleBooleanOption("midnightcontrols.menu.auto_switch_mode", () -> MidnightControlsConfig.autoSwitchMode,
value -> MidnightControlsConfig.autoSwitchMode = value, new TranslatableText("midnightcontrols.tooltip.auto_switch_mode"));
this.rotationSpeedOption = new SpruceDoubleOption("midnightcontrols.menu.rotation_speed", 0.0, 100.0, .5f,
@@ -262,6 +270,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
var tabs = new SpruceTabbedWidget(Position.of(0, 24), this.width, this.height - 32 - 24,
null,
Math.max(116, this.width / 8), 0);
tabs.getList().setBackground(new MidnightControlsBackground());
this.addDrawableChild(tabs);
tabs.addSeparatorEntry(new TranslatableText("midnightcontrols.menu.separator.general"));
@@ -368,4 +377,35 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
public void renderTitle(MatrixStack matrices, int mouseX, int mouseY, float delta) {
drawCenteredText(matrices, this.textRenderer, I18n.translate("midnightcontrols.menu.title"), this.width / 2, 8, 16777215);
}
public static class MidnightControlsBackground implements Background {
@Override
public void render(MatrixStack matrixStack, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) {
fill(matrixStack, widget.getX(), widget.getY(), widget.getX() + widget.getWidth(), widget.getY() + widget.getHeight(), MidnightColorUtil.hex2Rgb("#000000"));
}
private void fill(MatrixStack matrixStack, int x2, int y2, int x1, int y1, Color color) {
matrixStack.push();
Matrix4f matrix = matrixStack.peek().getPositionMatrix();
float r = (float)(color.getRed()) / 255.0F;
float g = (float)(color.getGreen()) / 255.0F;
float b = (float)(color.getBlue()) / 255.0F;
float t = (float)(160) / 255.0F;
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
RenderSystem.enableBlend();
RenderSystem.disableTexture();
RenderSystem.defaultBlendFunc();
RenderSystem.setShader(GameRenderer::getPositionColorShader);
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
bufferBuilder.vertex(matrix, (float)x1, (float)y2, 0.0F).color(r, g, b, t).next();
bufferBuilder.vertex(matrix, (float)x2, (float)y2, 0.0F).color(r, g, b, t).next();
bufferBuilder.vertex(matrix, (float)x2, (float)y1, 0.0F).color(r, g, b, t).next();
bufferBuilder.vertex(matrix, (float)x1, (float)y1, 0.0F).color(r, g, b, t).next();
bufferBuilder.end();
BufferRenderer.draw(bufferBuilder);
RenderSystem.enableTexture();
RenderSystem.disableBlend();
matrixStack.pop();
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -10,8 +10,8 @@
],
"contact": {
"homepage": "https://modrinth.com/mod/midnightcontrols",
"sources": "https://github.com/LambdAurora/midnightcontrols.git",
"issues": "https://github.com/LambdAurora/midnightcontrols/issues"
"sources": "https://github.com/TeamMidnightDust/MidnightControls",
"issues": "https://github.com/TeamMidnightDust/MidnightControls/issues"
},
"license": "MIT",
"icon": "assets/midnightcontrols/icon.png",
@@ -37,17 +37,16 @@
"fabric": ">=0.36.0",
"minecraft": ">=1.17",
"spruceui": ">=3.2.0",
"java": ">=16"
"java": ">=17"
},
"recommends": {
"modmenu": ">=1.12.2"
},
"suggests": {
"flamingo": "*"
"quilt_loader": "*"
},
"breaks": {
"lambdacontrols": "*",
"modmenu": "<1.12.2",
"optifabric": "*"
"modmenu": "<1.12.2"
}
}

View File

@@ -1,6 +1,6 @@
{
"required": true,
"package": "dev.lambdaurora.midnightcontrols.client.compat.mixin",
"package": "eu.midnightdust.midnightcontrols.client.compat.mixin",
"plugin": "eu.midnightdust.midnightcontrols.client.compat.MidnightControlsMixinPlugin",
"compatibilityLevel": "JAVA_16",
"client": [