Compare commits

...

33 commits

Author SHA1 Message Date
TheClashFruit db2d06817b
feat (ci): remove gradle cache as it's broken
All checks were successful
Build Project / build (push) Successful in 15m36s
2024-07-14 17:26:45 +02:00
TheClashFruit 88783230ea
fix: remove unused imports
Some checks failed
Build Project / build (push) Has been cancelled
2024-07-14 17:25:40 +02:00
TheClashFruit 04b0ba8ae0
fix: add the enchantment books back to the tools tab for 1.21 2024-07-14 17:23:33 +02:00
TheClashFruit 5068e3ed19
docs: remove gradle genSources instruction 2024-07-14 15:31:38 +02:00
TheClashFruit 42da315531
feat: add tuff stuff 2024-07-14 15:21:15 +02:00
TheClashFruit 989adfcc19
feat: multi version dev env (#4)
All checks were successful
Build Project / build (push) Successful in 25m38s
Reviewed-on: #4
2024-07-13 16:14:21 +02:00
TheClashFruit 3a82764c52
fix (ci): java was in the wrong order
Some checks failed
Build Project / build (pull_request) Has been cancelled
2024-07-13 16:12:55 +02:00
TheClashFruit 8daf7c7309
fix (ci): install multiple javas
Some checks failed
Build Project / build (pull_request) Has been cancelled
2024-07-13 16:09:47 +02:00
TheClashFruit 7d6a6e6400
feat (ci): update to java 21
Some checks failed
Build Project / build (pull_request) Failing after 9m36s
2024-07-13 15:57:54 +02:00
TheClashFruit a98760f350
feat: finish multi version except 1.20.5
Some checks failed
Build Project / build (pull_request) Failing after 4m33s
2024-07-13 15:49:33 +02:00
TheClashFruit 9f850881b3
feat: multi version start 2024-07-13 13:57:40 +02:00
TheClashFruit c9e5b11be9
feat: add pottery sherds and smithing templates
All checks were successful
Build Project / build (push) Successful in 4m13s
2024-07-13 10:43:47 +02:00
TheClashFruit d365e4197a
docs: add curseforge downloads badge
All checks were successful
Build Project / build (push) Successful in 5m48s
2023-12-09 11:53:25 +01:00
TheClashFruit bbe3aa455a
feat: update to latest minecraft versions
All checks were successful
Build Project / build (push) Successful in 3m53s
2023-12-08 22:54:43 +01:00
TheClashFruit db414325ae
feat: better gitignore
All checks were successful
Build Project / build (push) Successful in 4m41s
2023-10-28 20:51:22 +02:00
TheClashFruit 9fa3e46210
feat: update to 1.20.2
All checks were successful
Build Project / build (push) Successful in 2m26s
2023-09-24 12:38:04 +02:00
TheClashFruit a9f400e16e feat: release 1.0.0-rc.2 (#2)
All checks were successful
Build Project / build (push) Successful in 2m2s
Reviewed-on: #2
2023-08-16 10:42:47 +02:00
TheClashFruit 2d2901ab5e
feat: set version to rc.2
All checks were successful
Build Project / build (pull_request) Successful in 2m15s
2023-08-16 10:36:04 +02:00
TheClashFruit 2de9e88d67
docs: add downloads badge :3 2023-08-16 10:33:35 +02:00
TheClashFruit 86e0dfdf1e
feat: more bamboo 2023-08-16 10:32:23 +02:00
TheClashFruit c8601c3661
feat: bamboo 2023-08-15 13:52:37 +02:00
TheClashFruit 025dcdb6e4
feat: remove tests 2023-08-15 13:42:02 +02:00
TheClashFruit cd81afb5c5
feat: nvm 2023-08-15 13:40:22 +02:00
TheClashFruit 0a475b3821
feat: pain 2023-08-14 20:43:56 +02:00
TheClashFruit 1d34d58d3d
feat: testing, trying to make tabs wider 2023-08-14 19:26:51 +02:00
TheClashFruit 1a44d8d72a docs: improved docs (#1)
All checks were successful
Build Project / build (push) Successful in 2m12s
Reviewed-on: #1
2023-08-10 17:35:31 +02:00
TheClashFruit 3f812367cb
docs: finish new README.md
All checks were successful
Build Project / build (pull_request) Successful in 2m1s
2023-08-10 16:35:32 +02:00
TheClashFruit 61b2f5c16d
fix: fix cf link (used the legacy website link) 2023-08-10 16:18:54 +02:00
TheClashFruit a99fa5a745
docs: better title thing 2023-08-10 14:04:00 +02:00
TheClashFruit 5152eb69e2
feat: add issue templates
All checks were successful
Build Project / build (push) Successful in 2m30s
2023-08-10 13:51:01 +02:00
TheClashFruit aebcbb44e0
feat: fix artifacts?
All checks were successful
Build Project / build (push) Successful in 2m29s
2023-08-10 13:38:13 +02:00
TheClashFruit 7d08549592
docs: add version badge
All checks were successful
Build Project / build (push) Successful in 2m33s
2023-08-10 13:31:49 +02:00
TheClashFruit 4b829faff4
feat: add build workflow
All checks were successful
Build Project / build (push) Successful in 3m9s
2023-08-10 13:12:55 +02:00
40 changed files with 719 additions and 519 deletions

View file

@ -0,0 +1,33 @@
---
name: Bug Report
about: Create a report to help us improve
title: ''
labels: Kind/Bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- Minecraft: [e.g. 1.20.1]
- Fabric API: [e.g. 0.86.1+1.20.1]
- Fabric Loader: [e.g. 0.14.22]
- Version: [e.g. 1.0.0-rc.1]
- Other Mods: [e.g. Mod Menu, Sodium]
**Additional context**
Add any other context about the problem here. Such as logs.

View file

@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Discord
url: https://discord.gg/CWEApqJ6rc
about: Got a question? Join our Discord server!

View file

@ -0,0 +1,19 @@
---
name: Feature Request
about: Suggest an idea for this project
title: ''
labels: Kind/Enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View file

@ -0,0 +1,7 @@
---
name: Other
about: Anything other.
title: ''
labels: ''
assignees: ''
---

View file

@ -0,0 +1,30 @@
name: Build Project
on:
push:
branches: [ main ]
pull_request:
branches: [ main, dev/* ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: |
17
21
- name: Make Gradle Executable
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew clean build
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
path: 'versions/**/build/libs/*.jar'

56
.gitignore vendored
View file

@ -1,22 +1,40 @@
.gradle # gradle
**/build/
!src/**/build/ .gradle/
build/
out/
classes/
# eclipse
*.launch
# idea
.idea/
*.iml
*.ipr
*.iws
# vscode
.settings/
.vscode/
bin/
.classpath
.project
# macos
*.DS_Store
# fabric
run/ run/
# Ignore Gradle GUI config # java
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) hs_err_*.log
!gradle-wrapper.jar replay_*.log
*.hprof
# Avoid ignore Gradle wrappper properties *.jfr
!gradle-wrapper.properties
# Cache of project
.gradletasknamecache
# Eclipse Gradle plugin generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath

8
.idea/.gitignore vendored
View file

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

View file

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="MavenRepo" />
<option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="LoomGlobalMinecraft" />
<option name="name" value="LoomGlobalMinecraft" />
<option name="url" value="file:/$USER_HOME$/.gradle/caches/fabric-loom/minecraftMaven/" />
</remote-repository>
<remote-repository>
<option name="id" value="Fabric" />
<option name="name" value="Fabric" />
<option name="url" value="https://maven.fabricmc.net/" />
</remote-repository>
<remote-repository>
<option name="id" value="Mojang" />
<option name="name" value="Mojang" />
<option name="url" value="https://libraries.minecraft.net/" />
</remote-repository>
<remote-repository>
<option name="id" value="LoomLocalRemappedMods" />
<option name="name" value="LoomLocalRemappedMods" />
<option name="url" value="file:/$PROJECT_DIR$/.gradle/loom-cache/remapped_mods/" />
</remote-repository>
<remote-repository>
<option name="id" value="LoomLocalMinecraft" />
<option name="name" value="LoomLocalMinecraft" />
<option name="url" value="file:/$PROJECT_DIR$/.gradle/loom-cache/minecraftMaven/" />
</remote-repository>
<remote-repository>
<option name="id" value="Modrinth" />
<option name="name" value="Modrinth" />
<option name="url" value="https://api.modrinth.com/maven" />
</remote-repository>
</component>
</project>

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/ClutteredCreative.main.iml" filepath="$PROJECT_DIR$/.idea/modules/ClutteredCreative.main.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/ClutteredCreative.test.iml" filepath="$PROJECT_DIR$/.idea/modules/ClutteredCreative.test.iml" />
</modules>
</component>
</project>

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>FABRIC</platformType>
<platformType>MIXIN</platformType>
<platformType>MCP</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="McpModuleSettings">
<option name="srgType" value="SRG" />
</component>
</module>

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>FABRIC</platformType>
<platformType>MIXIN</platformType>
<platformType>MCP</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="McpModuleSettings">
<option name="srgType" value="SRG" />
</component>
</module>

View file

@ -1,16 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" factoryName="Application" name="Minecraft Client" type="Application">
<option name="MAIN_CLASS_NAME" value="net.fabricmc.devlaunchinjector.Main"/>
<module name="ClutteredCreative.main"/>
<option name="PROGRAM_PARAMETERS" value=""/>
<option name="VM_PARAMETERS" value="-Dfabric.dli.config=D:\Projects\ClutteredCreative\.gradle\loom-cache\launch.cfg -Dfabric.dli.env=client -Dfabric.dli.main=net.fabricmc.loader.impl.launch.knot.KnotClient"/>
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/run/"/>
<method v="2">
<option enabled="true" name="Make"/>
</method>
<envs>
</envs>
<shortenClasspath name="ARGS_FILE"/>
<classpathModifications/></configuration>
</component>

View file

@ -1,16 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" factoryName="Application" name="Minecraft Server" type="Application">
<option name="MAIN_CLASS_NAME" value="net.fabricmc.devlaunchinjector.Main"/>
<module name="ClutteredCreative.main"/>
<option name="PROGRAM_PARAMETERS" value="nogui"/>
<option name="VM_PARAMETERS" value="-Dfabric.dli.config=D:\Projects\ClutteredCreative\.gradle\loom-cache\launch.cfg -Dfabric.dli.env=server -Dfabric.dli.main=net.fabricmc.loader.impl.launch.knot.KnotServer"/>
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/run/"/>
<method v="2">
<option enabled="true" name="Make"/>
</method>
<envs>
</envs>
<shortenClasspath name="ARGS_FILE"/>
<classpathModifications><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.5.13\e5f6cae5ca7ecaac1ec2827a9e2d65ae2869cada\httpclient-4.5.13.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.1\cbac1b8d30cb4795149c1ef540f912671a8616d0\lwjgl-glfw-3.3.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j\71.1\9e7d3304c23f9ba5cb71915f7cce23231a57a445\icu4j-71.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.1\831a5533a21a5f4f81bbc51bb13e9899319b5411\lwjgl-opengl-3.3.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.2\4bfc12adfe4842bf07b657f0369c4cb522955686\commons-logging-1.2.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\com.mojang\patchy\2.2.10\da05971b07cbb379d002cf7eaec6a2048211fefc\patchy-2.2.10.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\com.mojang\text2speech\1.17.9\3cad216e3a7f0c19b4b394388bc9ffc446f13b14\text2speech-1.17.9.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-tinyfd\3.3.1\ff1914111ef2e3e0110ef2dabc8d8cdaad82347\lwjgl-tinyfd-3.3.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\com.mojang\blocklist\1.0.10\5c685c5ffa94c4cd39496c7184c1d122e515ecef\blocklist-1.0.10.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-jemalloc\3.3.1\a817bcf213db49f710603677457567c37d53e103\lwjgl-jemalloc-3.3.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.1\ae58664f88e18a9bb2c77b063833ca7aaec484cb\lwjgl-3.3.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.21\4ec95b60d4e86b5c95a0e919cb172a0af98011ef\commons-compress-1.21.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.15\49d94806b6e3dc933dacbd8acb0fdbab8ebd1e5d\commons-codec-1.15.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.4.15\7f2e0c573eaa7a74bac2e89b359e1f73d92a0a1d\httpcore-4.4.15.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-stb\3.3.1\b119297cf8ed01f247abe8685857f8e7fcf5980f\lwjgl-stb-3.3.1.jar"/><entry exclude="true" path="C:\Users\TheClashFruit\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openal\3.3.1\2623a6b8ae1dfcd880738656a9f0243d2e6840bd\lwjgl-openal-3.3.1.jar"/></classpathModifications></configuration>
</component>

View file

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View file

@ -1,38 +1,103 @@
<p align="center">
<img alt="Cluttered Creative Icon" height="128px" width="128px" src="https://git.theclashfruit.me/TheClashFruit/ClutteredCreative/raw/branch/main/src/main/resources/assets/cc/icon.png">
</p>
<h1 align="center">Cluttered Creative</h1> <h1 align="center">Cluttered Creative</h1>
<p align="center"> <p align="center">
<img alt="Issues" src="https://img.shields.io/badge/dynamic/json?color=yellow&label=issues&query=%24.open_issues_count&url=https%3A%2F%2Fgit.theclashfruit.me%2Fapi%2Fv1%2Frepos%2FTheClashFruit%2FClutteredCreative"> <img alt="Issues" src="https://img.shields.io/badge/dynamic/json?color=yellow&label=issues&query=%24.open_issues_count&url=https%3A%2F%2Fgit.theclashfruit.me%2Fapi%2Fv1%2Frepos%2FTheClashFruit%2FClutteredCreative">
<img alt="Pull Requests" src="https://img.shields.io/badge/dynamic/json?color=brightgreen&label=pull+requests&query=%24.open_pr_counter&url=https%3A%2F%2Fgit.theclashfruit.me%2Fapi%2Fv1%2Frepos%2FTheClashFruit%2FClutteredCreative"> <img alt="Pull Requests" src="https://img.shields.io/badge/dynamic/json?color=brightgreen&label=pull+requests&query=%24.open_pr_counter&url=https%3A%2F%2Fgit.theclashfruit.me%2Fapi%2Fv1%2Frepos%2FTheClashFruit%2FClutteredCreative">
<!-- <img alt="Version" src="https://img.shields.io/badge/dynamic/json?color=orange&label=version&query=%24%5B0%5D.name&url=https%3A%2F%2Fgit.theclashfruit.me%2Fapi%2Fv1%2Frepos%2FTheClashFruit%2FClutteredCreative%2Freleases">
<img alt="Modrinth Downloads" src="https://img.shields.io/modrinth/dt/Fs6mB0ic">
<img alt="Modrinth Version" src="https://img.shields.io/modrinth/v/Fs6mB0ic">
-->
<img alt="License (MIT)" src="https://img.shields.io/badge/license-MIT-green.svg"> <img alt="License (MIT)" src="https://img.shields.io/badge/license-MIT-green.svg">
</p> </p>
<p align="center">
<img alt="Modrinth Downloads" src="https://img.shields.io/modrinth/dt/Fs6mB0ic?label=Modrinth%20Downloads">
<img alt="CurseForge Downloads" src="https://img.shields.io/curseforge/dt/901062?label=CurseForge%20Downloads">
</p>
<p align="center">
<a href="https://modrinth.com/mod/cluttered-creative">
<img alt="curseforge" height="40" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/available/modrinth_vector.svg">
</a>
<a href="https://www.curseforge.com/minecraft/mc-mods/cluttered-creative">
<img alt="curseforge" height="40" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/available/curseforge_vector.svg">
</a>
</p>
<p align="center"> <p align="center">
Bring back the old cluttered creative inventory. Bring back the old cluttered creative inventory.
</p> </p>
## Building ## Screenshot
TBA ![Building Blocks](https://cdn-raw.modrinth.com/data/Fs6mB0ic/images/01122692525430bb275d19972e934b2126ce2792.png)
## Contributing ## FAQ
TBA ### Mod Compatibility
## Download (soon) Probably not compatible with mods that add items to the default item groups, however a compatibility layer is planned.
<p> ### Missing Items
<a href="https://modrinth.com/mod/cluttered-creative">
<img alt="curseforge" height="40" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/available/modrinth_vector.svg">
</a>
<a href="https://legacy.curseforge.com/minecraft/mc-mods/cluttered-creative"> I'm doing my best to include all items including new ones from 1.20, but I might miss some so please report them on the issues page or in my [Discord server](https://discord.gg/CWEApqJ6rc).
<img alt="curseforge" height="40" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/available/curseforge_vector.svg">
</a> > Got some other questions? Feel free to ask them in my [Discord server](https://discord.gg/CWEApqJ6rc).
</p>
## Developing & Contributing
Development is mostly straight forward.
### Setup
> It is recommended that you install the [Minecraft Development](https://plugins.jetbrains.com/plugin/8327-minecraft-development) Plugin for IntelliJ IDEA.
1. Clone the repository from your fork.
2. Open the project.
3. You can start developing!
<!-- 3. Run `gradle genSources` to generate the sources. -->
### Git Commit Messages
Please use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for your commit messages.
### Git Branches
You can use any branch you like except main. But it is recommended to use `dev/<feature>` if you add something new and `fix/<issue>` if you are fixing something related to an issue.
### Opening a Pull Request
When you start your development please open a draft pull request. This way we can see that someone is working on select feature/bug.
> Make sure to mention related issues/pull requests in your pull request.
## License
```
The MIT License (MIT)
Copyright (c) 2023 TheClashFruit
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
```

View file

@ -1,96 +0,0 @@
plugins {
id 'fabric-loom' version '1.2-SNAPSHOT'
id 'maven-publish'
}
version = project.mod_version
group = project.maven_group
repositories {
// Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modLocalRuntime("maven.modrinth:modmenu:7.0.1")
}
loom {
accessWidenerPath = file("src/main/resources/cc.accesswidener")
}
processResources {
inputs.property "version", project.version
inputs.property "minecraft_version", project.minecraft_version
inputs.property "loader_version", project.loader_version
filteringCharset "UTF-8"
filesMatching("fabric.mod.json") {
expand "version": project.version,
"minecraft_version": project.minecraft_version,
"loader_version": project.loader_version
}
}
def targetJavaVersion = 17
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
it.options.release = targetJavaVersion
}
}
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
archivesBaseName = project.archives_base_name
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
jar {
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}"}
}
}
// configure the maven publication
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}

86
build.gradle.kts Normal file
View file

@ -0,0 +1,86 @@
import dev.deftu.gradle.utils.*
import dev.deftu.gradle.tools.minecraft.CurseRelation
import dev.deftu.gradle.tools.minecraft.CurseRelationType
import com.modrinth.minotaur.dependencies.DependencyType
import com.modrinth.minotaur.dependencies.ModDependency
plugins {
java
id("dev.deftu.gradle.multiversion")
id("dev.deftu.gradle.tools")
id("dev.deftu.gradle.tools.resources")
id("dev.deftu.gradle.tools.minecraft.api")
id("dev.deftu.gradle.tools.minecraft.loom")
id("dev.deftu.gradle.tools.publishing.maven")
id("dev.deftu.gradle.tools.minecraft.releases")
}
repositories {
maven("https://api.modrinth.com/maven")
}
dependencies {
if (mcData.isFabric) {
modImplementation("net.fabricmc.fabric-api:fabric-api:${mcData.dependencies.fabric.fabricApiVersion}")
modImplementation(mcData.dependencies.fabric.modMenuDependency)
}
}
loom {
accessWidenerPath = file("../../src/main/resources/cc.accesswidener")
}
java {
base.archivesName.set(modData.id)
tasks {
if (isLoomPresent()) {
named<org.gradle.jvm.tasks.Jar>("remapJar") {
archiveBaseName.set(modData.id)
}
} else {
named<Jar>("jar") {
archiveBaseName.set(modData.id)
}
}
}
}
/*
minecraft {
accessTransformer = file("../../src/main/resources/META-INF/accesstransformer.cfg")
}
*/
toolkitReleases {
detectVersionType.set(true)
rootProject.file("changelogs/${modData.version}.md").let { file ->
if (file.exists())
changelogFile.set(file)
}
modrinth {
projectId.set("Fs6mB0ic")
if (mcData.loader == ModLoader.FABRIC) {
dependencies.addAll(listOf(
ModDependency("P7dR8mSH", DependencyType.REQUIRED), // Fabric API
ModDependency("mOgUt4GM", DependencyType.OPTIONAL) // Mod Menu
))
}
}
curseforge {
projectId.set("901062")
if (mcData.loader == ModLoader.FABRIC) {
relations.addAll(listOf(
CurseRelation("fabric-api", CurseRelationType.REQUIRED), // Fabric API
CurseRelation("modmenu", CurseRelationType.OPTIONAL) // Mod Menu
))
}
}
}

11
changelogs/2.0.0-rc.1.md Normal file
View file

@ -0,0 +1,11 @@
The mod has been revived from the dead!
### New
* 1.21 Support
* !! Enchantment books are missing from the tools tab.
### Fixes
1. Added Missing Items
* Pottery Sherds
* Smithing Templates
2. Fixed The Brewing Tab Icon

3
changelogs/2.0.0.md Normal file
View file

@ -0,0 +1,3 @@
### Fixes
* Added the tuff blocks
* Enchantment books are back in the tools tab.

View file

@ -1,17 +1,7 @@
# Done to increase the memory available to gradle. # Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G org.gradle.jvmargs=-Xmx2G
# Fabric Properties mod.name=Cluttered Creative
# check these on https://modmuss50.me/fabric.html mod.id=cc
minecraft_version=1.20 mod.version=2.0.0
yarn_mappings=1.20+build.1 mod.group=me.theclashfruit
loader_version=0.14.22
# Mod Properties
mod_version = 1.0.0-rc.1
maven_group = me.theclashfruit
archives_base_name = cc
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.83.0+1.20

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000 networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

23
root.gradle.kts Normal file
View file

@ -0,0 +1,23 @@
plugins {
id("dev.deftu.gradle.multiversion-root")
}
preprocess {
val fabric_1_21 = createNode("1.21-fabric", 1210, "yarn")
val fabric_1_20_6 = createNode("1.20.6-fabric", 1206, "yarn")
val fabric_1_20_5 = createNode("1.20.5-fabric", 1205, "yarn") // broken due to upstream issues
val fabric_1_20_4 = createNode("1.20.4-fabric", 1204, "yarn")
val fabric_1_20_3 = createNode("1.20.3-fabric", 1203, "yarn")
val fabric_1_20_2 = createNode("1.20.2-fabric", 1202, "yarn")
val fabric_1_20_1 = createNode("1.20.1-fabric", 1201, "yarn")
val fabric_1_20 = createNode("1.20-fabric", 1200, "yarn")
fabric_1_21.link(fabric_1_20_6)
//fabric_1_20_6.link(fabric_1_20_5)
fabric_1_20_6.link(fabric_1_20_4)
//fabric_1_20_5.link(fabric_1_20_4)
fabric_1_20_4.link(fabric_1_20_3)
fabric_1_20_3.link(fabric_1_20_2)
fabric_1_20_2.link(fabric_1_20_1)
fabric_1_20_1.link(fabric_1_20)
}

View file

@ -1,9 +0,0 @@
pluginManagement {
repositories {
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
}
gradlePluginPortal()
}
}

44
settings.gradle.kts Normal file
View file

@ -0,0 +1,44 @@
pluginManagement {
repositories {
maven("https://maven.deftu.dev/releases")
maven("https://maven.fabricmc.net")
maven("https://maven.architectury.dev/")
maven("https://maven.minecraftforge.net")
maven("https://maven.neoforged.net/releases")
maven("https://repo.essential.gg/repository/maven-public")
maven("https://server.bbkr.space/artifactory/libs-release/")
maven("https://jitpack.io/")
maven("https://maven.deftu.dev/snapshots")
mavenLocal()
gradlePluginPortal()
mavenCentral()
}
plugins {
id("dev.deftu.gradle.multiversion-root") version("2.2.3")
}
}
val projectName: String = "Cluttered Creative"
rootProject.name = projectName
rootProject.buildFileName = "root.gradle.kts"
listOf(
"1.20-fabric",
"1.20.1-fabric",
"1.20.2-fabric",
"1.20.3-fabric",
"1.20.4-fabric",
//"1.20.5-fabric",
"1.20.6-fabric",
"1.21-fabric",
).forEach { version ->
include(":$version")
project(":$version").apply {
projectDir = file("versions/$version")
buildFileName = "../../build.gradle.kts"
}
}

View file

@ -1,10 +1,14 @@
package me.theclashfruit.cc; package me.theclashfruit.cc;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ClutteredCreative implements ModInitializer { public class ClutteredCreative implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("ClutteredCreative");
@Override @Override
public void onInitialize() { public void onInitialize() {
LOGGER.info("ClutteredCreative has been initialized!");
} }
} }

View file

@ -1,10 +0,0 @@
package me.theclashfruit.cc.client;
import net.fabricmc.api.ClientModInitializer;
public class ClutteredCreativeClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
}
}

View file

@ -1,7 +1,6 @@
package me.theclashfruit.cc.mixin; package me.theclashfruit.cc.mixin;
import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentTarget;
import net.minecraft.item.Instrument; import net.minecraft.item.Instrument;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
@ -12,6 +11,12 @@ import net.minecraft.registry.tag.TagKey;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.gen.Invoker;
//#if MC >= 1.20.6
import net.minecraft.resource.featuretoggle.FeatureSet;
//#elseif MC < 1.20.5
//$$ import net.minecraft.enchantment.EnchantmentTarget;
//#endif
import java.util.Set; import java.util.Set;
@Mixin(ItemGroups.class) @Mixin(ItemGroups.class)
@ -21,13 +26,42 @@ public interface ItemGroupsInterfaceMixin {
throw new AssertionError(); throw new AssertionError();
} }
//#if MC >= 1.20.6
@Invoker("addPotions") @Invoker("addPotions")
static void invokeAddPotions(ItemGroup.Entries entries, RegistryWrapper<Potion> registryWrapper, Item item, ItemGroup.StackVisibility visibility) { static void invokeAddPotions(ItemGroup.Entries entries, RegistryWrapper<Potion> registryWrapper, Item item, ItemGroup.StackVisibility stackVisibility, FeatureSet featureSet) {
throw new AssertionError(); throw new AssertionError();
} }
//#elseif MC >= 1.20.5
//$$ @Invoker("addPotions")
//$$ static void invokeAddPotions(ItemGroup.Entries entries, RegistryWrapper<Potion> registryWrapper, Item item, ItemGroup.StackVisibility visibility) {
//$$ throw new AssertionError();
//$$ }
//#else
//$$ @Invoker("addPotions")
//$$ static void invokeAddPotions(ItemGroup.Entries entries, RegistryWrapper<Potion> registryWrapper, Item item, ItemGroup.StackVisibility visibility) {
//$$ throw new AssertionError();
//$$ }
//#endif
//#if MC >= 1.21
@Invoker("addMaxLevelEnchantedBooks") @Invoker("addMaxLevelEnchantedBooks")
static void invokeAddMaxLevelEnchantedBooks(ItemGroup.Entries entries, RegistryWrapper<Enchantment> registryWrapper, Set<EnchantmentTarget> enchantmentTargets, ItemGroup.StackVisibility visibility) { static void invokeAddMaxLevelEnchantedBooks(ItemGroup.Entries entries, RegistryWrapper<Enchantment> registryWrapper, ItemGroup.StackVisibility visibility) {
throw new AssertionError(); throw new AssertionError();
} }
//#elseif MC >= 1.20.6
//$$ @Invoker("addMaxLevelEnchantedBooks")
//$$ static void invokeAddMaxLevelEnchantedBooks(ItemGroup.Entries entries, RegistryWrapper<Enchantment> registryWrapper, Set<TagKey<Item>> set, ItemGroup.StackVisibility stackVisibility, FeatureSet featureSet) {
//$$ throw new AssertionError();
//$$ }
//#elseif MC >= 1.20.5
//$$ @Invoker("addMaxLevelEnchantedBooks")
//$$ static void invokeAddMaxLevelEnchantedBooks(ItemGroup.Entries entries, RegistryWrapper<Enchantment> registryWrapper, Set<TagKey<Item>> enchantmentTargets, ItemGroup.StackVisibility visibility) {
//$$ throw new AssertionError();
//$$ }
//#else
//$$ @Invoker("addMaxLevelEnchantedBooks")
//$$ static void invokeAddMaxLevelEnchantedBooks(ItemGroup.Entries entries, RegistryWrapper<Enchantment> registryWrapper, Set<EnchantmentTarget> enchantmentTargets, ItemGroup.StackVisibility visibility) {
//$$ throw new AssertionError();
//$$ }
//#endif
} }

View file

@ -1,34 +1,70 @@
package me.theclashfruit.cc.mixin; package me.theclashfruit.cc.mixin;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.client.gui.screen.ingame.EnchantmentScreen;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.EnchantmentLevelEntry; import net.minecraft.enchantment.EnchantmentLevelEntry;
import net.minecraft.enchantment.EnchantmentTarget;
import net.minecraft.enchantment.Enchantments; import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.Entity;
import net.minecraft.item.*; import net.minecraft.item.*;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionUtil;
import net.minecraft.potion.Potions; import net.minecraft.potion.Potions;
import net.minecraft.predicate.item.EnchantmentPredicate;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.registry.tag.InstrumentTags; import net.minecraft.registry.tag.InstrumentTags;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.registry.tag.TagKey; import net.minecraft.registry.tag.TagKey;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.village.raid.Raid; import net.minecraft.village.raid.Raid;
import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.gen.Invoker;
//#if MC >= 1.20.6
import net.minecraft.util.Identifier;
import net.minecraft.component.type.ItemEnchantmentsComponent;
import net.minecraft.component.type.PotionContentsComponent;
//#else
//$$ import net.minecraft.enchantment.EnchantmentTarget;
//$$ import net.minecraft.potion.PotionUtil;
//#endif
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Set; import java.util.Set;
import java.util.stream.IntStream;
import static me.theclashfruit.cc.ClutteredCreative.LOGGER;
import static net.minecraft.item.ItemGroups.*; import static net.minecraft.item.ItemGroups.*;
@Mixin(ItemGroups.class) @Mixin(ItemGroups.class)
public class ItemGroupsMixin { public class ItemGroupsMixin {
@Shadow @Final public static RegistryKey<ItemGroup> COLORED_BLOCKS; @Invoker("register")
@Shadow @Final public static RegistryKey<ItemGroup> REDSTONE; private static RegistryKey<ItemGroup> register(String id) {
throw new AssertionError();
}
@Unique
private static final RegistryKey<ItemGroup> BUILDING_BLOCKS = register("building_blocks");
@Unique
private static final RegistryKey<ItemGroup> DECORATION = register("natural_blocks");
@Unique
private static final RegistryKey<ItemGroup> REDSTONE = register("redstone_blocks");
@Unique
private static final RegistryKey<ItemGroup> TRANSPORTATION = register("functional_blocks");
@Unique
private static final RegistryKey<ItemGroup> MISC = register("ingredients");
@Unique
private static final RegistryKey<ItemGroup> FOOD = register("food_and_drinks");
@Unique
private static final RegistryKey<ItemGroup> TOOLS = register("tools_and_utilities");
@Unique
private static final RegistryKey<ItemGroup> BREWING = register("spawn_eggs");
@Unique @Unique
private static final ItemGroup hotbarGroup = ItemGroup private static final ItemGroup hotbarGroup = ItemGroup
.create(ItemGroup.Row.TOP, 5) .create(ItemGroup.Row.TOP, 5)
@ -38,12 +74,25 @@ public class ItemGroupsMixin {
.type(ItemGroup.Type.HOTBAR) .type(ItemGroup.Type.HOTBAR)
.build(); .build();
//#if MC >= 1.21
@Unique
private static final Identifier INVENTORY_TAB_TEXTURE_ID = ItemGroup.getTabTextureId("inventory");
@Unique
private static final Identifier ITEM_SEARCH_TAB_TEXTURE_ID = ItemGroup.getTabTextureId("item_search");
//#endif
@Unique @Unique
private static final ItemGroup inventoryGroup = ItemGroup private static final ItemGroup inventoryGroup = ItemGroup
.create(ItemGroup.Row.BOTTOM, 6) .create(ItemGroup.Row.BOTTOM, 6)
.displayName(Text.translatable("itemGroup.inventory")) .displayName(Text.translatable("itemGroup.inventory"))
.icon(() -> new ItemStack(Blocks.CHEST)) .icon(() -> new ItemStack(Blocks.CHEST))
.texture("inventory.png") .texture(
//#if MC >= 1.21
INVENTORY_TAB_TEXTURE_ID
//#else
//$$ "inventory.png"
//#endif
)
.noRenderedName() .noRenderedName()
.special() .special()
.type(ItemGroup.Type.INVENTORY) .type(ItemGroup.Type.INVENTORY)
@ -52,7 +101,7 @@ public class ItemGroupsMixin {
/** /**
* @author TheClashFruit * @author TheClashFruit
* @reason pre 1.19.4 inventory layout :3 * @reason pre 1.19.3 inventory layout :3
*/ */
@Overwrite @Overwrite
public static ItemGroup registerAndGetDefault(Registry<ItemGroup> registry) { public static ItemGroup registerAndGetDefault(Registry<ItemGroup> registry) {
@ -69,7 +118,13 @@ public class ItemGroupsMixin {
content.addAll(itemGroupSet); content.addAll(itemGroupSet);
}) })
.texture("item_search.png") .texture(
//#if MC >= 1.21
ITEM_SEARCH_TAB_TEXTURE_ID
//#else
//$$ "item_search.png"
//#endif
)
.special() .special()
.type(ItemGroup.Type.SEARCH) .type(ItemGroup.Type.SEARCH)
.build(); .build();
@ -84,6 +139,7 @@ public class ItemGroupsMixin {
BUILDING_BLOCKS, BUILDING_BLOCKS,
ItemGroup ItemGroup
.create(ItemGroup.Row.TOP, 0) .create(ItemGroup.Row.TOP, 0)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.buildingBlocks")) .displayName(Text.translatable("itemGroup.buildingBlocks"))
.icon(() -> new ItemStack(Blocks.BRICKS)) .icon(() -> new ItemStack(Blocks.BRICKS))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -117,6 +173,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_PLANKS); content.add(Items.DARK_OAK_PLANKS);
content.add(Items.MANGROVE_PLANKS); content.add(Items.MANGROVE_PLANKS);
content.add(Items.CHERRY_PLANKS); content.add(Items.CHERRY_PLANKS);
content.add(Items.BAMBOO_PLANKS);
content.add(Items.CRIMSON_PLANKS); content.add(Items.CRIMSON_PLANKS);
content.add(Items.WARPED_PLANKS); content.add(Items.WARPED_PLANKS);
content.add(Items.BEDROCK); content.add(Items.BEDROCK);
@ -196,6 +253,7 @@ public class ItemGroupsMixin {
content.add(Items.MANGROVE_ROOTS); content.add(Items.MANGROVE_ROOTS);
content.add(Items.MUDDY_MANGROVE_ROOTS); content.add(Items.MUDDY_MANGROVE_ROOTS);
content.add(Items.CHERRY_LOG); content.add(Items.CHERRY_LOG);
content.add(Items.BAMBOO_BLOCK);
content.add(Items.CRIMSON_STEM); content.add(Items.CRIMSON_STEM);
content.add(Items.WARPED_STEM); content.add(Items.WARPED_STEM);
@ -207,6 +265,7 @@ public class ItemGroupsMixin {
content.add(Items.STRIPPED_DARK_OAK_LOG); content.add(Items.STRIPPED_DARK_OAK_LOG);
content.add(Items.STRIPPED_MANGROVE_LOG); content.add(Items.STRIPPED_MANGROVE_LOG);
content.add(Items.STRIPPED_CHERRY_LOG); content.add(Items.STRIPPED_CHERRY_LOG);
content.add(Items.STRIPPED_BAMBOO_BLOCK);
content.add(Items.STRIPPED_CRIMSON_STEM); content.add(Items.STRIPPED_CRIMSON_STEM);
content.add(Items.STRIPPED_WARPED_STEM); content.add(Items.STRIPPED_WARPED_STEM);
@ -269,6 +328,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_SLAB); content.add(Items.DARK_OAK_SLAB);
content.add(Items.MANGROVE_SLAB); content.add(Items.MANGROVE_SLAB);
content.add(Items.CHERRY_SLAB); content.add(Items.CHERRY_SLAB);
content.add(Items.BAMBOO_SLAB);
content.add(Items.CRIMSON_SLAB); content.add(Items.CRIMSON_SLAB);
content.add(Items.WARPED_SLAB); content.add(Items.WARPED_SLAB);
@ -337,6 +397,13 @@ public class ItemGroupsMixin {
content.add(Items.CHISELED_DEEPSLATE); content.add(Items.CHISELED_DEEPSLATE);
content.add(Items.REINFORCED_DEEPSLATE); content.add(Items.REINFORCED_DEEPSLATE);
//#if MC >= 1.21
content.add(Items.CHISELED_TUFF);
content.add(Items.POLISHED_TUFF);
content.add(Items.TUFF_BRICKS);
content.add(Items.CHISELED_TUFF_BRICKS);
//#endif
content.add(Items.MELON); content.add(Items.MELON);
content.add(Items.BRICK_STAIRS); content.add(Items.BRICK_STAIRS);
@ -363,6 +430,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_STAIRS); content.add(Items.DARK_OAK_STAIRS);
content.add(Items.MANGROVE_STAIRS); content.add(Items.MANGROVE_STAIRS);
content.add(Items.CHERRY_STAIRS); content.add(Items.CHERRY_STAIRS);
content.add(Items.BAMBOO_STAIRS);
content.add(Items.CRIMSON_STAIRS); content.add(Items.CRIMSON_STAIRS);
content.add(Items.WARPED_STAIRS); content.add(Items.WARPED_STAIRS);
@ -496,6 +564,12 @@ public class ItemGroupsMixin {
content.add(Items.DEEPSLATE_BRICK_STAIRS); content.add(Items.DEEPSLATE_BRICK_STAIRS);
content.add(Items.DEEPSLATE_TILE_STAIRS); content.add(Items.DEEPSLATE_TILE_STAIRS);
//#if MC >= 1.21
content.add(Items.TUFF_BRICK_STAIRS);
content.add(Items.POLISHED_TUFF_STAIRS);
content.add(Items.TUFF_STAIRS);
//#endif
content.add(Items.POLISHED_GRANITE_SLAB); content.add(Items.POLISHED_GRANITE_SLAB);
content.add(Items.SMOOTH_RED_SANDSTONE_SLAB); content.add(Items.SMOOTH_RED_SANDSTONE_SLAB);
content.add(Items.MOSSY_STONE_BRICK_SLAB); content.add(Items.MOSSY_STONE_BRICK_SLAB);
@ -514,6 +588,12 @@ public class ItemGroupsMixin {
content.add(Items.DEEPSLATE_BRICK_SLAB); content.add(Items.DEEPSLATE_BRICK_SLAB);
content.add(Items.DEEPSLATE_TILE_SLAB); content.add(Items.DEEPSLATE_TILE_SLAB);
//#if MC >= 1.21
content.add(Items.TUFF_SLAB);
content.add(Items.POLISHED_TUFF_SLAB);
content.add(Items.TUFF_BRICK_SLAB);
//#endif
content.add(Items.DRIED_KELP_BLOCK); content.add(Items.DRIED_KELP_BLOCK);
content.add(Items.CRYING_OBSIDIAN); content.add(Items.CRYING_OBSIDIAN);
@ -535,9 +615,10 @@ public class ItemGroupsMixin {
Registry.register( Registry.register(
registry, registry,
NATURAL, DECORATION,
ItemGroup ItemGroup
.create(ItemGroup.Row.TOP, 1) .create(ItemGroup.Row.TOP, 1)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.decorations")) .displayName(Text.translatable("itemGroup.decorations"))
.icon(() -> new ItemStack(Blocks.PEONY)) .icon(() -> new ItemStack(Blocks.PEONY))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -563,7 +644,7 @@ public class ItemGroupsMixin {
content.add(Items.COBWEB); content.add(Items.COBWEB);
content.add(Items.GRASS); content.add(Items.SHORT_GRASS);
content.add(Items.FERN); content.add(Items.FERN);
content.add(Items.AZALEA); content.add(Items.AZALEA);
content.add(Items.FLOWERING_AZALEA); content.add(Items.FLOWERING_AZALEA);
@ -604,6 +685,7 @@ public class ItemGroupsMixin {
content.add(Items.BIG_DRIPLEAF); content.add(Items.BIG_DRIPLEAF);
content.add(Items.SMALL_DRIPLEAF); content.add(Items.SMALL_DRIPLEAF);
content.add(Items.BAMBOO); content.add(Items.BAMBOO);
content.add(Items.BAMBOO_MOSAIC);
content.add(Items.TORCH); content.add(Items.TORCH);
@ -631,6 +713,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_FENCE); content.add(Items.DARK_OAK_FENCE);
content.add(Items.MANGROVE_FENCE); content.add(Items.MANGROVE_FENCE);
content.add(Items.CHERRY_FENCE); content.add(Items.CHERRY_FENCE);
content.add(Items.BAMBOO_FENCE);
content.add(Items.CRIMSON_FENCE); content.add(Items.CRIMSON_FENCE);
content.add(Items.WARPED_FENCE); content.add(Items.WARPED_FENCE);
@ -690,6 +773,12 @@ public class ItemGroupsMixin {
content.add(Items.DEEPSLATE_BRICK_WALL); content.add(Items.DEEPSLATE_BRICK_WALL);
content.add(Items.DEEPSLATE_TILE_WALL); content.add(Items.DEEPSLATE_TILE_WALL);
//#if MC >= 1.21
content.add(Items.TUFF_WALL);
content.add(Items.POLISHED_TUFF_WALL);
content.add(Items.TUFF_BRICK_WALL);
//#endif
content.add(Items.ANVIL); content.add(Items.ANVIL);
content.add(Items.CHIPPED_ANVIL); content.add(Items.CHIPPED_ANVIL);
content.add(Items.DAMAGED_ANVIL); content.add(Items.DAMAGED_ANVIL);
@ -806,6 +895,7 @@ public class ItemGroupsMixin {
content.add(Items.ACACIA_SIGN); content.add(Items.ACACIA_SIGN);
content.add(Items.DARK_OAK_SIGN); content.add(Items.DARK_OAK_SIGN);
content.add(Items.MANGROVE_SIGN); content.add(Items.MANGROVE_SIGN);
content.add(Items.BAMBOO_SIGN);
content.add(Items.CHERRY_SIGN); content.add(Items.CHERRY_SIGN);
content.add(Items.CRIMSON_SIGN); content.add(Items.CRIMSON_SIGN);
content.add(Items.WARPED_SIGN); content.add(Items.WARPED_SIGN);
@ -818,6 +908,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_HANGING_SIGN); content.add(Items.DARK_OAK_HANGING_SIGN);
content.add(Items.MANGROVE_HANGING_SIGN); content.add(Items.MANGROVE_HANGING_SIGN);
content.add(Items.CHERRY_HANGING_SIGN); content.add(Items.CHERRY_HANGING_SIGN);
content.add(Items.BAMBOO_HANGING_SIGN);
content.add(Items.CRIMSON_HANGING_SIGN); content.add(Items.CRIMSON_HANGING_SIGN);
content.add(Items.WARPED_HANGING_SIGN); content.add(Items.WARPED_HANGING_SIGN);
@ -869,7 +960,12 @@ public class ItemGroupsMixin {
content.add(Items.GREEN_BANNER); content.add(Items.GREEN_BANNER);
content.add(Items.RED_BANNER); content.add(Items.RED_BANNER);
content.add(Items.BLACK_BANNER); content.add(Items.BLACK_BANNER);
content.add(Raid.getOminousBanner());
//#if MC >= 1.20.6
content.add(Raid.getOminousBanner(displayContext.lookup().getWrapperOrThrow(RegistryKeys.BANNER_PATTERN)));
//#else
//$$ content.add(Raid.getOminousBanner());
//#endif
content.add(Items.END_CRYSTAL); content.add(Items.END_CRYSTAL);
@ -934,9 +1030,10 @@ public class ItemGroupsMixin {
Registry.register( Registry.register(
registry, registry,
REDSTONE, ItemGroupsMixin.REDSTONE,
ItemGroup ItemGroup
.create(ItemGroup.Row.TOP, 2) .create(ItemGroup.Row.TOP, 2)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.redstone")) .displayName(Text.translatable("itemGroup.redstone"))
.icon(() -> new ItemStack(Items.REDSTONE)) .icon(() -> new ItemStack(Items.REDSTONE))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -976,6 +1073,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_BUTTON); content.add(Items.DARK_OAK_BUTTON);
content.add(Items.MANGROVE_BUTTON); content.add(Items.MANGROVE_BUTTON);
content.add(Items.CHERRY_BUTTON); content.add(Items.CHERRY_BUTTON);
content.add(Items.BAMBOO_BUTTON);
content.add(Items.CRIMSON_BUTTON); content.add(Items.CRIMSON_BUTTON);
content.add(Items.WARPED_BUTTON); content.add(Items.WARPED_BUTTON);
@ -991,6 +1089,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_PRESSURE_PLATE); content.add(Items.DARK_OAK_PRESSURE_PLATE);
content.add(Items.MANGROVE_PRESSURE_PLATE); content.add(Items.MANGROVE_PRESSURE_PLATE);
content.add(Items.CHERRY_PRESSURE_PLATE); content.add(Items.CHERRY_PRESSURE_PLATE);
content.add(Items.BAMBOO_PRESSURE_PLATE);
content.add(Items.CRIMSON_PRESSURE_PLATE); content.add(Items.CRIMSON_PRESSURE_PLATE);
content.add(Items.WARPED_PRESSURE_PLATE); content.add(Items.WARPED_PRESSURE_PLATE);
@ -1003,6 +1102,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_DOOR); content.add(Items.DARK_OAK_DOOR);
content.add(Items.MANGROVE_DOOR); content.add(Items.MANGROVE_DOOR);
content.add(Items.CHERRY_DOOR); content.add(Items.CHERRY_DOOR);
content.add(Items.BAMBOO_DOOR);
content.add(Items.CRIMSON_DOOR); content.add(Items.CRIMSON_DOOR);
content.add(Items.WARPED_DOOR); content.add(Items.WARPED_DOOR);
@ -1015,6 +1115,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_TRAPDOOR); content.add(Items.DARK_OAK_TRAPDOOR);
content.add(Items.MANGROVE_TRAPDOOR); content.add(Items.MANGROVE_TRAPDOOR);
content.add(Items.CHERRY_TRAPDOOR); content.add(Items.CHERRY_TRAPDOOR);
content.add(Items.BAMBOO_TRAPDOOR);
content.add(Items.CRIMSON_TRAPDOOR); content.add(Items.CRIMSON_TRAPDOOR);
content.add(Items.WARPED_TRAPDOOR); content.add(Items.WARPED_TRAPDOOR);
@ -1026,6 +1127,7 @@ public class ItemGroupsMixin {
content.add(Items.DARK_OAK_FENCE_GATE); content.add(Items.DARK_OAK_FENCE_GATE);
content.add(Items.MANGROVE_FENCE_GATE); content.add(Items.MANGROVE_FENCE_GATE);
content.add(Items.CHERRY_FENCE_GATE); content.add(Items.CHERRY_FENCE_GATE);
content.add(Items.BAMBOO_FENCE_GATE);
content.add(Items.CRIMSON_FENCE_GATE); content.add(Items.CRIMSON_FENCE_GATE);
content.add(Items.WARPED_FENCE_GATE); content.add(Items.WARPED_FENCE_GATE);
}) })
@ -1034,9 +1136,10 @@ public class ItemGroupsMixin {
Registry.register( Registry.register(
registry, registry,
FUNCTIONAL, TRANSPORTATION,
ItemGroup ItemGroup
.create(ItemGroup.Row.TOP, 3) .create(ItemGroup.Row.TOP, 3)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.transportation")) .displayName(Text.translatable("itemGroup.transportation"))
.icon(() -> new ItemStack(Items.POWERED_RAIL)) .icon(() -> new ItemStack(Items.POWERED_RAIL))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -1074,22 +1177,30 @@ public class ItemGroupsMixin {
content.add(Items.MANGROVE_CHEST_BOAT); content.add(Items.MANGROVE_CHEST_BOAT);
content.add(Items.CHERRY_BOAT); content.add(Items.CHERRY_BOAT);
content.add(Items.CHERRY_CHEST_BOAT); content.add(Items.CHERRY_CHEST_BOAT);
content.add(Items.BAMBOO_RAFT);
content.add(Items.BAMBOO_CHEST_RAFT);
}) })
.build() .build()
); );
Registry.register( Registry.register(
registry, registry,
INGREDIENTS, MISC,
ItemGroup ItemGroup
.create(ItemGroup.Row.BOTTOM, 0) .create(ItemGroup.Row.BOTTOM, 0)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.misc")) .displayName(Text.translatable("itemGroup.misc"))
.icon(() -> new ItemStack(Items.LAVA_BUCKET)) .icon(() -> new ItemStack(Items.LAVA_BUCKET))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
content.add(Items.BEACON); content.add(Items.BEACON);
content.add(Items.TURTLE_EGG); content.add(Items.TURTLE_EGG);
content.add(Items.CONDUIT); content.add(Items.CONDUIT);
content.add(Items.SCUTE);
//#if MC >= 1.20
content.add(Items.TURTLE_SCUTE);
//#else
//$$ content.add(Items.SCUTE);
//#endif
content.add(Items.COAL); content.add(Items.COAL);
content.add(Items.CHARCOAL); content.add(Items.CHARCOAL);
@ -1317,15 +1428,39 @@ public class ItemGroupsMixin {
content.add(Items.HONEYCOMB); content.add(Items.HONEYCOMB);
content.add(Items.FROGSPAWN); content.add(Items.FROGSPAWN);
content.add(Items.ECHO_SHARD); content.add(Items.ECHO_SHARD);
//#if MC >= 1.20
content.add(Items.ANGLER_POTTERY_SHERD);
content.add(Items.ARCHER_POTTERY_SHERD);
content.add(Items.ARMS_UP_POTTERY_SHERD);
content.add(Items.BLADE_POTTERY_SHERD);
content.add(Items.BREWER_POTTERY_SHERD);
content.add(Items.BURN_POTTERY_SHERD);
content.add(Items.DANGER_POTTERY_SHERD);
content.add(Items.EXPLORER_POTTERY_SHERD);
content.add(Items.FRIEND_POTTERY_SHERD);
content.add(Items.HEART_POTTERY_SHERD);
content.add(Items.HEARTBREAK_POTTERY_SHERD);
content.add(Items.HOWL_POTTERY_SHERD);
content.add(Items.MINER_POTTERY_SHERD);
content.add(Items.MOURNER_POTTERY_SHERD);
content.add(Items.PLENTY_POTTERY_SHERD);
content.add(Items.PRIZE_POTTERY_SHERD);
content.add(Items.SHEAF_POTTERY_SHERD);
content.add(Items.SHELTER_POTTERY_SHERD);
content.add(Items.SKULL_POTTERY_SHERD);
content.add(Items.SNORT_POTTERY_SHERD);
//#endif
}) })
.build() .build()
); );
Registry.register( Registry.register(
registry, registry,
FOOD_AND_DRINK, FOOD,
ItemGroup ItemGroup
.create(ItemGroup.Row.BOTTOM, 1) .create(ItemGroup.Row.BOTTOM, 1)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.food")) .displayName(Text.translatable("itemGroup.food"))
.icon(() -> new ItemStack(Items.APPLE)) .icon(() -> new ItemStack(Items.APPLE))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -1373,9 +1508,10 @@ public class ItemGroupsMixin {
Registry.register( Registry.register(
registry, registry,
TOOLS, ItemGroupsMixin.TOOLS,
ItemGroup ItemGroup
.create(ItemGroup.Row.BOTTOM, 2) .create(ItemGroup.Row.BOTTOM, 2)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.tools")) .displayName(Text.translatable("itemGroup.tools"))
.icon(() -> new ItemStack(Items.IRON_AXE)) .icon(() -> new ItemStack(Items.IRON_AXE))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -1421,14 +1557,27 @@ public class ItemGroupsMixin {
content.add(Items.SPYGLASS); content.add(Items.SPYGLASS);
content.add(Items.SHEARS); content.add(Items.SHEARS);
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.EFFICIENCY, 5))); //#if MC >= 1.21
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.SILK_TOUCH, 1))); displayContext.lookup().getOptionalWrapper(RegistryKeys.ENCHANTMENT).ifPresent(impl -> {
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.UNBREAKING, 3))); content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.EFFICIENCY), 5)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.FORTUNE, 3))); content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.SILK_TOUCH), 1)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.LUCK_OF_THE_SEA, 3))); content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.UNBREAKING), 3)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.LURE, 3))); content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.FORTUNE), 3)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.MENDING, 1))); content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.LUCK_OF_THE_SEA), 3)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.VANISHING_CURSE, 1))); content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.LURE), 3)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.MENDING), 1)));
content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(impl.getOrThrow(Enchantments.VANISHING_CURSE), 1)));
});
//#else
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.EFFICIENCY, 5)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.SILK_TOUCH, 1)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.UNBREAKING, 3)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.FORTUNE, 3)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.LUCK_OF_THE_SEA, 3)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.LURE, 3)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.MENDING, 1)));
//$$ content.add(EnchantedBookItem.forEnchantment(new EnchantmentLevelEntry(Enchantments.VANISHING_CURSE, 1)));
//#endif
content.add(Items.LEAD); content.add(Items.LEAD);
content.add(Items.NAME_TAG); content.add(Items.NAME_TAG);
@ -1441,6 +1590,7 @@ public class ItemGroupsMixin {
COMBAT, COMBAT,
ItemGroup ItemGroup
.create(ItemGroup.Row.BOTTOM, 3) .create(ItemGroup.Row.BOTTOM, 3)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.combat")) .displayName(Text.translatable("itemGroup.combat"))
.icon(() -> new ItemStack(Items.GOLDEN_SWORD)) .icon(() -> new ItemStack(Items.GOLDEN_SWORD))
.entries((displayContext, content) -> { .entries((displayContext, content) -> {
@ -1485,36 +1635,87 @@ public class ItemGroupsMixin {
content.add(Items.NETHERITE_LEGGINGS); content.add(Items.NETHERITE_LEGGINGS);
content.add(Items.NETHERITE_BOOTS); content.add(Items.NETHERITE_BOOTS);
EnumSet<EnchantmentTarget> set = EnumSet.allOf(EnchantmentTarget.class); //#if MC >= 1.21
displayContext.lookup().getOptionalWrapper(RegistryKeys.ENCHANTMENT).ifPresent((impl) -> {
displayContext.lookup().getOptionalWrapper(RegistryKeys.ENCHANTMENT).ifPresent(wrapper -> { ItemGroupsInterfaceMixin.invokeAddMaxLevelEnchantedBooks(content, impl, ItemGroup.StackVisibility.PARENT_TAB_ONLY);
ItemGroupsInterfaceMixin.invokeAddMaxLevelEnchantedBooks(content, wrapper, set, ItemGroup.StackVisibility.PARENT_TAB_ONLY);
}); });
//#elseif MC >= 1.20.6
//$$ Set<TagKey<Item>> set = Set.of(ItemTags.FOOT_ARMOR_ENCHANTABLE, ItemTags.LEG_ARMOR_ENCHANTABLE, ItemTags.CHEST_ARMOR_ENCHANTABLE, ItemTags.HEAD_ARMOR_ENCHANTABLE, ItemTags.ARMOR_ENCHANTABLE, ItemTags.SWORD_ENCHANTABLE, ItemTags.SHARP_WEAPON_ENCHANTABLE, ItemTags.MACE_ENCHANTABLE, ItemTags.FIRE_ASPECT_ENCHANTABLE, ItemTags.WEAPON_ENCHANTABLE, ItemTags.MINING_ENCHANTABLE, ItemTags.MINING_LOOT_ENCHANTABLE, ItemTags.FISHING_ENCHANTABLE, ItemTags.TRIDENT_ENCHANTABLE, ItemTags.DURABILITY_ENCHANTABLE, ItemTags.BOW_ENCHANTABLE, ItemTags.EQUIPPABLE_ENCHANTABLE, ItemTags.CROSSBOW_ENCHANTABLE, ItemTags.VANISHING_ENCHANTABLE);
//$$
//$$ displayContext.lookup().getOptionalWrapper(RegistryKeys.ENCHANTMENT).ifPresent((impl) -> {
//$$ ItemGroupsInterfaceMixin.invokeAddMaxLevelEnchantedBooks(content, impl, set, ItemGroup.StackVisibility.PARENT_TAB_ONLY, displayContext.comp_1251());
//$$ });
//#else
//$$ EnumSet<EnchantmentTarget> set = EnumSet.allOf(EnchantmentTarget.class);
//$$
//$$ displayContext.lookup().getOptionalWrapper(RegistryKeys.ENCHANTMENT).ifPresent(wrapper -> {
//$$ ItemGroupsInterfaceMixin.invokeAddMaxLevelEnchantedBooks(content, wrapper, set, ItemGroup.StackVisibility.PARENT_TAB_ONLY);
//$$ });
//#endif
content.add(Items.SPECTRAL_ARROW); content.add(Items.SPECTRAL_ARROW);
displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent(wrapper -> ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.TIPPED_ARROW, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS));
//#if MC >= 1.20.6
displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent((impl) -> {
ItemGroupsInterfaceMixin.invokeAddPotions(content, impl, Items.TIPPED_ARROW, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS, displayContext.comp_1251());
});
//#else
//$$ displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent(wrapper -> ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.TIPPED_ARROW, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS));
//#endif
content.add(Items.SHIELD); content.add(Items.SHIELD);
content.add(Items.TOTEM_OF_UNDYING); content.add(Items.TOTEM_OF_UNDYING);
content.add(Items.TRIDENT); content.add(Items.TRIDENT);
content.add(Items.CROSSBOW); content.add(Items.CROSSBOW);
//#if MC >= 1.20
content.add(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE);
content.add(Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.COAST_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.RIB_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE);
//#endif
}) })
.build() .build()
); );
Registry.register( Registry.register(
registry, registry,
COLORED_BLOCKS, BREWING,
ItemGroup ItemGroup
.create(ItemGroup.Row.BOTTOM, 4) .create(ItemGroup.Row.BOTTOM, 4)
.type(ItemGroup.Type.CATEGORY)
.displayName(Text.translatable("itemGroup.brewing")) .displayName(Text.translatable("itemGroup.brewing"))
.icon(() -> new ItemStack(PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER).getItem())) .icon(() ->
.entries((displayContext, content) -> { //#if MC >= 1.20.6
PotionContentsComponent.createStack(Items.POTION, Potions.WATER)
//#else
//$$ PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER)
//#endif
).entries((displayContext, content) -> {
content.add(Items.GHAST_TEAR); content.add(Items.GHAST_TEAR);
displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent(wrapper -> { //#if MC >= 1.20.6
ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS); displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent((impl) -> {
ItemGroupsInterfaceMixin.invokeAddPotions(content, impl, Items.POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS, displayContext.comp_1251());
}); });
//#else
//$$ displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent(wrapper -> {
//$$ ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS);
//$$ });
//#endif
content.add(Items.GLASS_BOTTLE); content.add(Items.GLASS_BOTTLE);
content.add(Items.FERMENTED_SPIDER_EYE); content.add(Items.FERMENTED_SPIDER_EYE);
@ -1527,10 +1728,17 @@ public class ItemGroupsMixin {
content.add(Items.RABBIT_FOOT); content.add(Items.RABBIT_FOOT);
content.add(Items.DRAGON_BREATH); content.add(Items.DRAGON_BREATH);
displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent(wrapper -> { //#if MC >= 1.20.6
ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.SPLASH_POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS); displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent((impl) -> {
ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.LINGERING_POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS); ItemGroupsInterfaceMixin.invokeAddPotions(content, impl, Items.SPLASH_POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS, displayContext.comp_1251());
ItemGroupsInterfaceMixin.invokeAddPotions(content, impl, Items.LINGERING_POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS, displayContext.comp_1251());
}); });
//#else
//$$ displayContext.lookup().getOptionalWrapper(RegistryKeys.POTION).ifPresent(wrapper -> {
//$$ ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.SPLASH_POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS);
//$$ ItemGroupsInterfaceMixin.invokeAddPotions(content, wrapper, Items.LINGERING_POTION, ItemGroup.StackVisibility.PARENT_AND_SEARCH_TABS);
//$$ });
//#endif
content.add(Items.PHANTOM_MEMBRANE); content.add(Items.PHANTOM_MEMBRANE);
}) })

View file

@ -0,0 +1 @@
public net.minecraft.world.item.CreativeModeTab.Builder type(Lnet/minecraft/world/item/CreativeModeTab.Type;)Lnet/minecraft/world/item/CreativeModeTab/Builder;

View file

@ -0,0 +1,15 @@
modLoader="javafml"
loaderVersion="[31,)"
issueTrackerURL="https://git.theclashfruit.me/TheClashFruit/ClutteredCreative/issues"
license="MIT"
[[mods]]
modId="cc"
version="${mod_version}"
displayName="Cluttered Creative"
description="Bring back the old cluttered creative inventory."
authors="TheClashFruit"
logoFile="assets/cc/icon.png"
[[mixins]]
config = "cc.mixins.json"

View file

@ -0,0 +1,15 @@
modLoader="javafml"
loaderVersion="[1,)"
issueTrackerURL="https://git.theclashfruit.me/TheClashFruit/ClutteredCreative/issues"
license="MIT"
[[mods]]
modId="cc"
version="${mod_version}"
displayName="Cluttered Creative"
description="Bring back the old cluttered creative inventory."
authors="TheClashFruit"
logoFile="assets/cc/icon.png"
[[mixins]]
config = "cc.mixins.json"

View file

@ -1,3 +1,10 @@
accessWidener v1 named accessWidener v1 named
accessible class net/minecraft/item/ItemGroup$StackVisibility
accessible method net/minecraft/item/ItemGroup$Builder type (Lnet/minecraft/item/ItemGroup$Type;)Lnet/minecraft/item/ItemGroup$Builder; accessible method net/minecraft/item/ItemGroup$Builder type (Lnet/minecraft/item/ItemGroup$Type;)Lnet/minecraft/item/ItemGroup$Builder;
accessible field net/minecraft/item/ItemGroups INVENTORY Lnet/minecraft/registry/RegistryKey;
accessible field net/minecraft/item/ItemGroups HOTBAR Lnet/minecraft/registry/RegistryKey;
accessible field net/minecraft/item/ItemGroups SEARCH Lnet/minecraft/registry/RegistryKey;
accessible field net/minecraft/item/ItemGroups COMBAT Lnet/minecraft/registry/RegistryKey;

View file

@ -8,6 +8,7 @@
"ItemGroupsMixin" "ItemGroupsMixin"
], ],
"client": [ "client": [
], ],
"injectors": { "injectors": {
"defaultRequire": 1 "defaultRequire": 1

View file

@ -1,7 +1,7 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"id": "cc", "id": "cc",
"version": "${version}", "version": "${mod_version}",
"name": "Cluttered Creative", "name": "Cluttered Creative",
"description": "Bring back the old cluttered creative inventory.", "description": "Bring back the old cluttered creative inventory.",
"authors": [ "authors": [
@ -16,9 +16,6 @@
"icon": "assets/cc/icon.png", "icon": "assets/cc/icon.png",
"environment": "*", "environment": "*",
"entrypoints": { "entrypoints": {
"client": [
"me.theclashfruit.cc.client.ClutteredCreativeClient"
],
"main": [ "main": [
"me.theclashfruit.cc.ClutteredCreative" "me.theclashfruit.cc.ClutteredCreative"
] ]
@ -28,9 +25,9 @@
], ],
"accessWidener" : "cc.accesswidener", "accessWidener" : "cc.accesswidener",
"depends": { "depends": {
"fabricloader": ">=${loader_version}", "fabricloader": ">=0.15.1",
"fabric": "*", "fabric": "*",
"minecraft": ">=${minecraft_version}" "minecraft": "${mc_version}"
}, },
"custom": { "custom": {
"modmenu": { "modmenu": {

1
versions/mainProject Normal file
View file

@ -0,0 +1 @@
1.21-fabric