mirror of
				https://github.com/chylex/Minecraft-Window-Title.git
				synced 2025-10-31 12:17:18 +01:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			1.15
			...
			6c4892dcd0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6c4892dcd0 | |||
| e0b48e1c53 | |||
| d070b4b22f | |||
| 2c12af5fa8 | |||
| 04f1714ec5 | |||
| 466de670f3 | |||
| 639f96dbed | |||
| 4aceac18c2 | 
							
								
								
									
										21
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -4,15 +4,22 @@ eclipse/ | |||||||
| run/ | run/ | ||||||
| out/ | out/ | ||||||
| .gradle/ | .gradle/ | ||||||
|  | .idea/$CACHE_FILE$ | ||||||
|  | .idea/codeStyles/ | ||||||
|  | .idea/compiler.xml | ||||||
|  | .idea/dictionaries | ||||||
|  | .idea/inspectionProfiles/ | ||||||
|  | .idea/jarRepositories.xml | ||||||
|  | .idea/libraries/ | ||||||
|  | .idea/misc.xml | ||||||
|  | .idea/modules/ | ||||||
|  | .idea/modules.xml | ||||||
|  | .idea/runConfigurations/ | ||||||
|  | .idea/shelf/ | ||||||
|  | .idea/uiDesigner.xml | ||||||
|  | .idea/workspace.xml | ||||||
| .settings/ | .settings/ | ||||||
| .updateclasses/ | .updateclasses/ | ||||||
| .idea/codeStyles/ |  | ||||||
| .idea/inspectionProfiles/ |  | ||||||
| .idea/libraries/ |  | ||||||
| .idea/$CACHE_FILE$ |  | ||||||
| .idea/dictionaries |  | ||||||
| .idea/jarRepositories.xml |  | ||||||
| .idea/workspace.xml |  | ||||||
| .classpath | .classpath | ||||||
| .project | .project | ||||||
| .DS_Store | .DS_Store | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,13 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="CompilerConfiguration"> |  | ||||||
|     <bytecodeTargetLevel> |  | ||||||
|       <module name="Fabric" target="1.8" /> |  | ||||||
|       <module name="Fabric.main" target="1.8" /> |  | ||||||
|       <module name="Fabric.test" target="1.8" /> |  | ||||||
|       <module name="Forge" target="1.8" /> |  | ||||||
|       <module name="Forge.main" target="1.8" /> |  | ||||||
|       <module name="Forge.test" target="1.8" /> |  | ||||||
|     </bytecodeTargetLevel> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										13
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							| @@ -7,20 +7,11 @@ | |||||||
|         <option name="delegatedBuild" value="true" /> |         <option name="delegatedBuild" value="true" /> | ||||||
|         <option name="testRunner" value="GRADLE" /> |         <option name="testRunner" value="GRADLE" /> | ||||||
|         <option name="distributionType" value="DEFAULT_WRAPPED" /> |         <option name="distributionType" value="DEFAULT_WRAPPED" /> | ||||||
|         <option name="externalProjectPath" value="$PROJECT_DIR$/Fabric" /> |         <option name="externalProjectPath" value="$PROJECT_DIR$" /> | ||||||
|         <option name="modules"> |         <option name="modules"> | ||||||
|           <set> |           <set> | ||||||
|  |             <option value="$PROJECT_DIR$" /> | ||||||
|             <option value="$PROJECT_DIR$/Fabric" /> |             <option value="$PROJECT_DIR$/Fabric" /> | ||||||
|           </set> |  | ||||||
|         </option> |  | ||||||
|       </GradleProjectSettings> |  | ||||||
|       <GradleProjectSettings> |  | ||||||
|         <option name="delegatedBuild" value="true" /> |  | ||||||
|         <option name="testRunner" value="GRADLE" /> |  | ||||||
|         <option name="distributionType" value="DEFAULT_WRAPPED" /> |  | ||||||
|         <option name="externalProjectPath" value="$PROJECT_DIR$/Forge" /> |  | ||||||
|         <option name="modules"> |  | ||||||
|           <set> |  | ||||||
|             <option value="$PROJECT_DIR$/Forge" /> |             <option value="$PROJECT_DIR$/Forge" /> | ||||||
|           </set> |           </set> | ||||||
|         </option> |         </option> | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,16 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="EntryPointsManager"> |  | ||||||
|     <list size="6"> |  | ||||||
|       <item index="0" class="java.lang.String" itemvalue="net.minecraftforge.eventbus.api.SubscribeEvent" /> |  | ||||||
|       <item index="1" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.Mod" /> |  | ||||||
|       <item index="2" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.Mod.EventHandler" /> |  | ||||||
|       <item index="3" class="java.lang.String" itemvalue="org.spongepowered.asm.mixin.Mixin" /> |  | ||||||
|       <item index="4" class="java.lang.String" itemvalue="org.spongepowered.asm.mixin.injection.Inject" /> |  | ||||||
|       <item index="5" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.eventhandler.SubscribeEvent" /> |  | ||||||
|     </list> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> |  | ||||||
|     <output url="file://$PROJECT_DIR$/out" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										14
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,14 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="ProjectModuleManager"> |  | ||||||
|     <modules> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/modules/Fabric.iml" filepath="$PROJECT_DIR$/.idea/modules/Fabric.iml" /> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/modules/Fabric.main.iml" filepath="$PROJECT_DIR$/.idea/modules/Fabric.main.iml" /> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/modules/Fabric.test.iml" filepath="$PROJECT_DIR$/.idea/modules/Fabric.test.iml" /> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/modules/Forge.iml" filepath="$PROJECT_DIR$/.idea/modules/Forge.iml" /> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/modules/Forge.main.iml" filepath="$PROJECT_DIR$/.idea/modules/Forge.main.iml" /> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/modules/Forge.test.iml" filepath="$PROJECT_DIR$/.idea/modules/Forge.test.iml" /> |  | ||||||
|       <module fileurl="file://$PROJECT_DIR$/Minecraft-Window-Title.iml" filepath="$PROJECT_DIR$/Minecraft-Window-Title.iml" /> |  | ||||||
|     </modules> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										14
									
								
								.idea/modules/Fabric.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								.idea/modules/Fabric.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,14 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module version="4"> |  | ||||||
|   <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="chylex.customwindowtitle.fabric" externalSystemModuleVersion="v1.1.0" linkedProjectId="Fabric" linkedProjectPath="$MODULE_DIR$/../../Fabric" rootProjectPath="$MODULE_DIR$/../../Fabric" /> |  | ||||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$/../../Fabric"> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/../../Fabric/.gradle" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/../../Fabric/build" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/../../Fabric/run" /> |  | ||||||
|     </content> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|   </component> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										122
									
								
								.idea/modules/Fabric.main.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										122
									
								
								.idea/modules/Fabric.main.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,122 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module version="4"> |  | ||||||
|   <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="chylex.customwindowtitle.fabric" externalSystemModuleType="sourceSet" externalSystemModuleVersion="v1.1.0" linkedProjectId="Fabric:main" linkedProjectPath="$MODULE_DIR$/../../Fabric" rootProjectPath="$MODULE_DIR$/../../Fabric" /> |  | ||||||
|   <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> |  | ||||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$/../../Fabric/src/main"> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/../../Fabric/src/main/java" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/../../Fabric/src/main/resources" type="java-resource" /> |  | ||||||
|     </content> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|     <orderEntry type="module-library" scope="PROVIDED"> |  | ||||||
|       <library> |  | ||||||
|         <CLASSES> |  | ||||||
|           <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loom/0.2.6-SNAPSHOT/c4870a9dea65b47e62686806437c907ccf5f4b65/fabric-loom-0.2.6-SNAPSHOT.jar!/" /> |  | ||||||
|         </CLASSES> |  | ||||||
|         <JAVADOC /> |  | ||||||
|         <SOURCES /> |  | ||||||
|       </library> |  | ||||||
|     </orderEntry> |  | ||||||
|     <orderEntry type="module-library"> |  | ||||||
|       <library> |  | ||||||
|         <CLASSES> |  | ||||||
|           <root url="jar://$USER_HOME$/.gradle/caches/fabric-loom/yarn-1.15.2+build.1-v2-final.jar!/" /> |  | ||||||
|         </CLASSES> |  | ||||||
|         <JAVADOC /> |  | ||||||
|         <SOURCES /> |  | ||||||
|       </library> |  | ||||||
|     </orderEntry> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:patchy:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: oshi-project:oshi-core:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:platform:3.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.ibm.icu:icu4j-core-mojang:51.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:javabridge:1.0.22" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.sf.jopt-simple:jopt-simple:5.0.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: io.netty:netty-all:4.1.25.Final" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-lang3:3.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-io:commons-io:2.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.10" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jutils:jutils:1.0.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:brigadier:1.0.17" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:datafixerupper:2.0.24" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:authlib:1.5.25" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-compress:1.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpclient:4.3.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-logging:commons-logging:1.1.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpcore:4.3.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: it.unimi.dsi:fastutil:8.2.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-api:2.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-core:2.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-jemalloc:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-openal:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-opengl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-glfw:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-stb:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-tinyfd:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:text2speech:1.11.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:tiny-mappings-parser:0.2.2.14" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:sponge-mixin:0.8+build.18" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:tiny-remapper:0.2.2.64" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:fabric-loader-sat4j:2.3.5.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.jimfs:jimfs:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-analysis:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-commons:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-tree:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-util:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraft:minecraft:1.15.2-mapped-net.fabricmc.yarn-1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-api:0.4.29+build.290-1.15@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-api-base:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-biomes-v1:0.1.5+3b05f68e0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-blockrenderlayer-v1:1.1.4+c6a8ea890c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-commands-v0:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-containers-v0:0.1.3+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-content-registries-v0:0.1.3+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-crash-report-info-v1:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-dimensions-v1:0.2.4+203491ea0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-events-interaction-v0:0.2.7+a1bd31180c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-events-lifecycle-v0:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-item-groups-v0:0.1.6+ec40b2e10c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-keybindings-v0:0.1.1+dfdb52d60c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-loot-tables-v1:0.1.5+e08a73050c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-mining-levels-v0:0.1.1+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-models-v0:0.1.0+dfdb52d60c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-networking-blockentity-v0:0.2.3+e08a73050c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-networking-v0:0.1.7+12515ed90c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-object-builders-v0:0.1.3+e4c9a9c30c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-particles-v1:0.1.1+dfdb52d60c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-registry-sync-v0:0.2.6+f3d8141b0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-renderer-api-v1:0.2.9+aea78a250c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-renderer-indigo:0.2.22+203491ea0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-renderer-registries-v1:2.0.1+5a0f9a600c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-data-attachment-v1:0.1.3+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-fluids-v1:0.1.6+12515ed90c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-v0:1.1.0+534104900c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-v1:0.1.0+534104900c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-resource-loader-v0:0.1.10+06c939b30c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-tag-extensions-v0:0.1.3+abd915800c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-textures-v0:1.0.4+821cdba70c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:fabric-loader:0.8.2+build.194@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" scope="RUNTIME" name="Gradle: net.fabricmc:dev-launch-injector:0.2.0+build.6" level="project" /> |  | ||||||
|   </component> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										112
									
								
								.idea/modules/Fabric.test.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										112
									
								
								.idea/modules/Fabric.test.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,112 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module version="4"> |  | ||||||
|   <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="chylex.customwindowtitle.fabric" externalSystemModuleType="sourceSet" externalSystemModuleVersion="v1.1.0" linkedProjectId="Fabric:test" linkedProjectPath="$MODULE_DIR$/../../Fabric" rootProjectPath="$MODULE_DIR$/../../Fabric" /> |  | ||||||
|   <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> |  | ||||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$/../../Fabric/src/test" /> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|     <orderEntry type="module" module-name="Fabric.main" /> |  | ||||||
|     <orderEntry type="module-library"> |  | ||||||
|       <library> |  | ||||||
|         <CLASSES> |  | ||||||
|           <root url="jar://$USER_HOME$/.gradle/caches/fabric-loom/yarn-1.15.2+build.1-v2-final.jar!/" /> |  | ||||||
|         </CLASSES> |  | ||||||
|         <JAVADOC /> |  | ||||||
|         <SOURCES /> |  | ||||||
|       </library> |  | ||||||
|     </orderEntry> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:patchy:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: oshi-project:oshi-core:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:platform:3.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.ibm.icu:icu4j-core-mojang:51.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:javabridge:1.0.22" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.sf.jopt-simple:jopt-simple:5.0.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: io.netty:netty-all:4.1.25.Final" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-lang3:3.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-io:commons-io:2.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.10" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jutils:jutils:1.0.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:brigadier:1.0.17" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:datafixerupper:2.0.24" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:authlib:1.5.25" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-compress:1.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpclient:4.3.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-logging:commons-logging:1.1.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpcore:4.3.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: it.unimi.dsi:fastutil:8.2.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-api:2.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-core:2.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-jemalloc:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-openal:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-opengl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-glfw:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-stb:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-tinyfd:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:text2speech:1.11.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:tiny-mappings-parser:0.2.2.14" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:sponge-mixin:0.8+build.18" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:tiny-remapper:0.2.2.64" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:fabric-loader-sat4j:2.3.5.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.jimfs:jimfs:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-analysis:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-commons:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-tree:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-util:8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraft:minecraft:1.15.2-mapped-net.fabricmc.yarn-1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-api:0.4.29+build.290-1.15@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-api-base:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-biomes-v1:0.1.5+3b05f68e0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-blockrenderlayer-v1:1.1.4+c6a8ea890c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-commands-v0:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-containers-v0:0.1.3+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-content-registries-v0:0.1.3+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-crash-report-info-v1:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-dimensions-v1:0.2.4+203491ea0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-events-interaction-v0:0.2.7+a1bd31180c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-events-lifecycle-v0:0.1.2+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-item-groups-v0:0.1.6+ec40b2e10c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-keybindings-v0:0.1.1+dfdb52d60c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-loot-tables-v1:0.1.5+e08a73050c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-mining-levels-v0:0.1.1+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-models-v0:0.1.0+dfdb52d60c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-networking-blockentity-v0:0.2.3+e08a73050c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-networking-v0:0.1.7+12515ed90c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-object-builders-v0:0.1.3+e4c9a9c30c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-particles-v1:0.1.1+dfdb52d60c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-registry-sync-v0:0.2.6+f3d8141b0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-renderer-api-v1:0.2.9+aea78a250c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-renderer-indigo:0.2.22+203491ea0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-renderer-registries-v1:2.0.1+5a0f9a600c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-data-attachment-v1:0.1.3+b7f9825d0c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-fluids-v1:0.1.6+12515ed90c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-v0:1.1.0+534104900c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-rendering-v1:0.1.0+534104900c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-resource-loader-v0:0.1.10+06c939b30c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-tag-extensions-v0:0.1.3+abd915800c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc.fabric-api:fabric-textures-v0:1.0.4+821cdba70c@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.fabricmc:fabric-loader:0.8.2+build.194@net.fabricmc.yarn.1_15_2.1.15.2+build.1-v2" level="project" /> |  | ||||||
|     <orderEntry type="library" scope="RUNTIME" name="Gradle: net.fabricmc:dev-launch-injector:0.2.0+build.6" level="project" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="TestModuleProperties" production-module="Fabric.main" /> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										14
									
								
								.idea/modules/Forge.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								.idea/modules/Forge.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,14 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module version="4"> |  | ||||||
|   <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="chylex.customwindowtitle.forge" externalSystemModuleVersion="1.0.2" linkedProjectId="Forge" linkedProjectPath="$MODULE_DIR$/../../Forge" rootProjectPath="$MODULE_DIR$/../../Forge" /> |  | ||||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$/../../Forge"> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/../../Forge/.gradle" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/../../Forge/build" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/../../Forge/run" /> |  | ||||||
|     </content> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|   </component> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										103
									
								
								.idea/modules/Forge.main.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										103
									
								
								.idea/modules/Forge.main.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,103 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module version="4"> |  | ||||||
|   <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="chylex.customwindowtitle.forge" externalSystemModuleType="sourceSet" externalSystemModuleVersion="1.0.2" linkedProjectId="Forge:main" linkedProjectPath="$MODULE_DIR$/../../Forge" rootProjectPath="$MODULE_DIR$/../../Forge" /> |  | ||||||
|   <component name="FacetManager"> |  | ||||||
|     <facet type="minecraft" name="Minecraft"> |  | ||||||
|       <configuration> |  | ||||||
|         <autoDetectTypes> |  | ||||||
|           <platformType>FORGE</platformType> |  | ||||||
|           <platformType>MCP</platformType> |  | ||||||
|         </autoDetectTypes> |  | ||||||
|       </configuration> |  | ||||||
|     </facet> |  | ||||||
|   </component> |  | ||||||
|   <component name="McpModuleSettings"> |  | ||||||
|     <option name="mappingFile" value="C:\Projects\Mods\Minecraft-Window-Title\Forge\build\createMcpToSrg\output.tsrg" /> |  | ||||||
|     <option name="mcpVersion" value="snapshot_20200130-1.15.1" /> |  | ||||||
|     <option name="minecraftVersion" value="1.15.2" /> |  | ||||||
|     <option name="srgType" value="TSRG" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="NewModuleRootManager"> |  | ||||||
|     <output url="file://$MODULE_DIR$/../../Forge/build/classes/java/main" /> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$/../../Forge/src/main"> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/../../Forge/src/main/java" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/../../Forge/src/main/resources" type="java-resource" /> |  | ||||||
|     </content> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:forge:1.15.2-31.0.14_mapped_snapshot_20200130-1.15.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:forge:launcher:1.15.2-31.0.14_mapped_snapshot_20200130-1.15.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraft:client:extra:1.15.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:accesstransformers:shadowed:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:eventbus:service:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:coremods:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:forgespi:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: cpw.mods:modlauncher:5.0.0-milestone.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: cpw.mods:modlauncher:api:5.0.0-milestone.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.code.findbugs:jsr305:3.0.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:mergetool:api:1.0.9" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraft:mappings_snapshot:zip:20200130-1.15.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-commons:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-tree:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: cpw.mods:grossjava9hacks:1.1.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:unsafe:0.2.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.electronwill.night-config:toml:3.6.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.electronwill.night-config:core:3.6.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.jline:jline:3.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.maven:maven-artifact:3.6.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.jodah:typetools:0.6.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecrell:terminalconsoleappender:1.2.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-core:2.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-api:2.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.sf.jopt-simple:jopt-simple:5.0.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:patchy:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: oshi-project:oshi-core:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:platform:3.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.ibm.icu:icu4j-core-mojang:51.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:javabridge:1.0.22" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: io.netty:netty-all:4.1.25.Final" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-lang3:3.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-io:commons-io:2.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpclient:4.3.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.10" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jutils:jutils:1.0.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:brigadier:1.0.17" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:datafixerupper:2.0.24" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:authlib:1.5.25" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-compress:1.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-logging:commons-logging:1.1.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpcore:4.3.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: it.unimi.dsi:fastutil:8.2.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-jemalloc:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-jemalloc:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-openal:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-openal:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-opengl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-opengl:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-glfw:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-glfw:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-stb:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-stb:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-tinyfd:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-tinyfd:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:text2speech:1.11.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:text2speech:natives-windows:1.11.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.antlr:antlr4-runtime:4.7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-util:6.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-analysis:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.codehaus.plexus:plexus-utils:3.2.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.jline:jline-reader:3.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput-platform:natives-linux:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput-platform:natives-osx:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput-platform:natives-windows:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.jline:jline-terminal:3.12.1" level="project" /> |  | ||||||
|   </component> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										105
									
								
								.idea/modules/Forge.test.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										105
									
								
								.idea/modules/Forge.test.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,105 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module version="4"> |  | ||||||
|   <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="chylex.customwindowtitle.forge" externalSystemModuleType="sourceSet" externalSystemModuleVersion="1.0.2" linkedProjectId="Forge:test" linkedProjectPath="$MODULE_DIR$/../../Forge" rootProjectPath="$MODULE_DIR$/../../Forge" /> |  | ||||||
|   <component name="FacetManager"> |  | ||||||
|     <facet type="minecraft" name="Minecraft"> |  | ||||||
|       <configuration> |  | ||||||
|         <autoDetectTypes> |  | ||||||
|           <platformType>FORGE</platformType> |  | ||||||
|           <platformType>MCP</platformType> |  | ||||||
|         </autoDetectTypes> |  | ||||||
|       </configuration> |  | ||||||
|     </facet> |  | ||||||
|   </component> |  | ||||||
|   <component name="McpModuleSettings"> |  | ||||||
|     <option name="mappingFile" value="C:\Projects\Mods\Minecraft-Window-Title\Forge\build\createMcpToSrg\output.tsrg" /> |  | ||||||
|     <option name="mcpVersion" value="snapshot_20200130-1.15.1" /> |  | ||||||
|     <option name="minecraftVersion" value="1.15.2" /> |  | ||||||
|     <option name="srgType" value="TSRG" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="NewModuleRootManager"> |  | ||||||
|     <output-test url="file://$MODULE_DIR$/../../Forge/build/classes/java/test" /> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$/../../Forge/src/test"> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/../../Forge/src/test/java" isTestSource="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/../../Forge/src/test/resources" type="java-test-resource" /> |  | ||||||
|     </content> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|     <orderEntry type="module" module-name="Forge.main" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:forge:1.15.2-31.0.14_mapped_snapshot_20200130-1.15.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:forge:launcher:1.15.2-31.0.14_mapped_snapshot_20200130-1.15.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraft:client:extra:1.15.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:accesstransformers:shadowed:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:eventbus:service:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:coremods:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:forgespi:2.0.0-milestone.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: cpw.mods:modlauncher:5.0.0-milestone.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: cpw.mods:modlauncher:api:5.0.0-milestone.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.code.findbugs:jsr305:3.0.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:mergetool:api:1.0.9" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraft:mappings_snapshot:zip:20200130-1.15.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-commons:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-tree:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: cpw.mods:grossjava9hacks:1.1.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecraftforge:unsafe:0.2.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.electronwill.night-config:toml:3.6.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.electronwill.night-config:core:3.6.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.jline:jline:3.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.maven:maven-artifact:3.6.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.jodah:typetools:0.6.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.minecrell:terminalconsoleappender:1.2.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-core:2.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.logging.log4j:log4j-api:2.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.sf.jopt-simple:jopt-simple:5.0.4" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:patchy:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: oshi-project:oshi-core:1.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.dev.jna:platform:3.4.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.ibm.icu:icu4j-core-mojang:51.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:javabridge:1.0.22" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: io.netty:netty-all:4.1.25.Final" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-lang3:3.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-io:commons-io:2.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpclient:4.3.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.10" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jutils:jutils:1.0.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:brigadier:1.0.17" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:datafixerupper:2.0.24" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:authlib:1.5.25" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.commons:commons-compress:1.8.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: commons-logging:commons-logging:1.1.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.apache.httpcomponents:httpcore:4.3.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: it.unimi.dsi:fastutil:8.2.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-jemalloc:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-jemalloc:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-openal:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-openal:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-opengl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-opengl:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-glfw:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-glfw:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-stb:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-stb:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-tinyfd:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl-tinyfd:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.lwjgl:lwjgl:natives-windows:3.2.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:text2speech:1.11.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: com.mojang:text2speech:natives-windows:1.11.3" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.antlr:antlr4-runtime:4.7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-util:6.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.ow2.asm:asm-analysis:7.2" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.codehaus.plexus:plexus-utils:3.2.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.jline:jline-reader:3.12.1" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput-platform:natives-linux:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput-platform:natives-osx:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: net.java.jinput:jinput-platform:natives-windows:2.0.5" level="project" /> |  | ||||||
|     <orderEntry type="library" name="Gradle: org.jline:jline-terminal:3.12.1" level="project" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="TestModuleProperties" production-module="Forge.main" /> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										13
									
								
								.idea/runConfigurations/Build___Merge.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								.idea/runConfigurations/Build___Merge.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,13 +0,0 @@ | |||||||
| <component name="ProjectRunConfigurationManager"> |  | ||||||
|   <configuration default="false" name="Build & Merge" type="ShConfigurationType"> |  | ||||||
|     <option name="INDEPENDENT_SCRIPT_PATH" value="false" /> |  | ||||||
|     <option name="SCRIPT_PATH" value="$PROJECT_DIR$/BuildMerge.bat" /> |  | ||||||
|     <option name="SCRIPT_OPTIONS" value="" /> |  | ||||||
|     <option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" /> |  | ||||||
|     <option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" /> |  | ||||||
|     <option name="INDEPENDENT_INTERPRETER_PATH" value="true" /> |  | ||||||
|     <option name="INTERPRETER_PATH" value="" /> |  | ||||||
|     <option name="INTERPRETER_OPTIONS" value="" /> |  | ||||||
|     <method v="2" /> |  | ||||||
|   </configuration> |  | ||||||
| </component> |  | ||||||
							
								
								
									
										21
									
								
								.idea/runConfigurations/Fabric__runClient_.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										21
									
								
								.idea/runConfigurations/Fabric__runClient_.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,21 +0,0 @@ | |||||||
| <component name="ProjectRunConfigurationManager"> |  | ||||||
|   <configuration default="false" name="Fabric [runClient]" type="GradleRunConfiguration" factoryName="Gradle" nameIsGenerated="true"> |  | ||||||
|     <ExternalSystemSettings> |  | ||||||
|       <option name="executionName" /> |  | ||||||
|       <option name="externalProjectPath" value="$PROJECT_DIR$/Fabric" /> |  | ||||||
|       <option name="externalSystemIdString" value="GRADLE" /> |  | ||||||
|       <option name="scriptParameters" value="" /> |  | ||||||
|       <option name="taskDescriptions"> |  | ||||||
|         <list /> |  | ||||||
|       </option> |  | ||||||
|       <option name="taskNames"> |  | ||||||
|         <list> |  | ||||||
|           <option value="runClient" /> |  | ||||||
|         </list> |  | ||||||
|       </option> |  | ||||||
|       <option name="vmOptions" value="" /> |  | ||||||
|     </ExternalSystemSettings> |  | ||||||
|     <GradleScriptDebugEnabled>true</GradleScriptDebugEnabled> |  | ||||||
|     <method v="2" /> |  | ||||||
|   </configuration> |  | ||||||
| </component> |  | ||||||
							
								
								
									
										21
									
								
								.idea/runConfigurations/Forge__runClient_.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										21
									
								
								.idea/runConfigurations/Forge__runClient_.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,21 +0,0 @@ | |||||||
| <component name="ProjectRunConfigurationManager"> |  | ||||||
|   <configuration default="false" name="Forge [runClient]" type="GradleRunConfiguration" factoryName="Gradle" nameIsGenerated="true"> |  | ||||||
|     <ExternalSystemSettings> |  | ||||||
|       <option name="executionName" /> |  | ||||||
|       <option name="externalProjectPath" value="$PROJECT_DIR$/Forge" /> |  | ||||||
|       <option name="externalSystemIdString" value="GRADLE" /> |  | ||||||
|       <option name="scriptParameters" value="" /> |  | ||||||
|       <option name="taskDescriptions"> |  | ||||||
|         <list /> |  | ||||||
|       </option> |  | ||||||
|       <option name="taskNames"> |  | ||||||
|         <list> |  | ||||||
|           <option value="runClient" /> |  | ||||||
|         </list> |  | ||||||
|       </option> |  | ||||||
|       <option name="vmOptions" value="" /> |  | ||||||
|     </ExternalSystemSettings> |  | ||||||
|     <GradleScriptDebugEnabled>true</GradleScriptDebugEnabled> |  | ||||||
|     <method v="2" /> |  | ||||||
|   </configuration> |  | ||||||
| </component> |  | ||||||
| @@ -1 +0,0 @@ | |||||||
| python BuildMerge.py |  | ||||||
| @@ -1,61 +0,0 @@ | |||||||
| import subprocess |  | ||||||
| import platform |  | ||||||
| import sys |  | ||||||
| import os |  | ||||||
| import time |  | ||||||
| import shutil |  | ||||||
| import zipfile |  | ||||||
|  |  | ||||||
| root = os.path.abspath(sys.path[0]) |  | ||||||
| builds = os.path.join(root, "Build") |  | ||||||
| combined = os.path.join(builds, "Combined") |  | ||||||
| outputjar = "CustomWindowTitle.jar" |  | ||||||
|  |  | ||||||
| gradlew = "gradlew.bat" if platform.system() == "Windows" else "gradlew" |  | ||||||
|  |  | ||||||
| def build(folder): |  | ||||||
|     separator = "========={}".format("=" * len(folder)) |  | ||||||
|      |  | ||||||
|     print(separator) |  | ||||||
|     print("Building {}".format(folder)) |  | ||||||
|     print(separator) |  | ||||||
|      |  | ||||||
|     libs = os.path.join(root, folder, "build", "libs") |  | ||||||
|     shutil.rmtree(libs) |  | ||||||
|      |  | ||||||
|     os.chdir(os.path.join(root, folder)) |  | ||||||
|     subprocess.run([gradlew, "build"]) |  | ||||||
|      |  | ||||||
|     for fname in os.listdir(libs): |  | ||||||
|         if "-dev" not in fname: |  | ||||||
|             global outputjar |  | ||||||
|             outputjar = fname |  | ||||||
|              |  | ||||||
|             jar = os.path.join(builds, "{}.{}".format(folder, fname)) |  | ||||||
|             shutil.copyfile(os.path.join(libs, fname), jar) |  | ||||||
|              |  | ||||||
|             jar = zipfile.ZipFile(jar) |  | ||||||
|             jar.extractall(combined) |  | ||||||
|             jar.close() |  | ||||||
|              |  | ||||||
|             break |  | ||||||
|  |  | ||||||
| if os.path.isdir(builds): |  | ||||||
|     shutil.rmtree(builds) |  | ||||||
|     time.sleep(0.25) |  | ||||||
|  |  | ||||||
| os.mkdir(builds) |  | ||||||
| os.mkdir(combined) |  | ||||||
|  |  | ||||||
| # Forge must run last to overwrite MANIFEST.MF |  | ||||||
| build("Fabric") |  | ||||||
| build("Forge") |  | ||||||
|  |  | ||||||
| os.chdir(builds) |  | ||||||
|  |  | ||||||
| with zipfile.ZipFile(outputjar, "w", compression = zipfile.ZIP_DEFLATED, compresslevel = 9) as jar: |  | ||||||
|     for root, dirs, files in os.walk(combined): |  | ||||||
|         for fname in files: |  | ||||||
|             fname = os.path.join(root, fname) |  | ||||||
|             fname = os.path.normpath(fname) |  | ||||||
|             jar.write(fname, os.path.relpath(fname, combined)) |  | ||||||
							
								
								
									
										30
									
								
								CURSEFORGE.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								CURSEFORGE.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | <h2>Installation</h2> | ||||||
|  | <p>The mod supports <a href="https://files.minecraftforge.net/">Forge</a> and <a href="https://fabricmc.net/">Fabric</a> (*) mod loaders. Follow either mod loader's installation guide, then <a href="https://www.curseforge.com/minecraft/mc-mods/custom-window-title/files">download the mod file</a> for your Minecraft version and mod loader, and install it into the <strong>.minecraft/mods</strong> folder.</p> | ||||||
|  | <p>(*) Fabric API is <strong>not</strong> required.</p> | ||||||
|  | <h2>Configuration</h2> | ||||||
|  | <p>Run the game once to create the configuration file. By default, the window title will be set to <strong>Minecraft <em><version></em></strong>. Unlike in vanilla 1.15.2 onwards, the title will not change when you enter a world/server.</p> | ||||||
|  | <p>To change the title or icon, navigate to the <strong>.minecraft/config</strong> folder, and open <strong>customwindowtitle-client.toml</strong> in a text editor. You will see the following entries:</p> | ||||||
|  | <p><span style="font-family: courier new,courier,monospace;">title = '<span style="color: #808000;">Minecraft {mcversion}</span>'</span><br /> <span style="font-family: courier new,courier,monospace;">icon16 = ''</span><br /> <span style="font-family: courier new,courier,monospace;">icon32 = ''</span></p> | ||||||
|  | <p>Only edit text inside quotes or apostrophes.</p> | ||||||
|  | <h3>Changing the Title</h3> | ||||||
|  | <p>You can use the following special tokens in the <em>title</em> configuration entry:</p> | ||||||
|  | <ul> | ||||||
|  |   <li><strong>{mcversion}</strong> - current Minecraft version</li> | ||||||
|  |   <li><strong>{modversion:<span style="text-decoration: underline;">modid</span>}</strong> - version of installed mod with the identifier <em>modid</em></li> | ||||||
|  | </ul> | ||||||
|  | <p>If any of the tokens aren't working, search the game log for <strong>CustomWindowTitle</strong> and you should see the reason, otherwise please file an issue on the <a href="https://github.com/chylex/Minecraft-Window-Title/issues">issue tracker</a> with as many details as possible.</p> | ||||||
|  | <h3>Changing the Icon</h3> | ||||||
|  | <p>You must create two PNG images with sizes 16x16 and 32x32 pixels. The images <strong>must be saved with transparency</strong> even if they don't use it, <strong>otherwise the icons will appear corrupted</strong>. In Krita for example, you must check <em>Store alpha channel (transparency)</em> when saving the image.</p> | ||||||
|  | <p>The <em>icon16</em> and <em>icon32</em> configuration entries point to the PNG files relative to the <strong>.minecraft/config</strong> folder. For example, if you place the two icons in a folder named <em>customwindowtitle</em> as follows:</p> | ||||||
|  | <ul> | ||||||
|  |   <li><span style="font-family: courier new, courier, monospace;">.minecraft/config/<span style="color: #008080;">customwindowtitle-client.toml</span></span></li> | ||||||
|  |   <li><span style="font-family: courier new, courier, monospace;">.minecraft/config/<span style="color: #808000;">customwindowtitle/icon16.png</span></span></li> | ||||||
|  |   <li><span style="font-family: courier new, courier, monospace;">.minecraft/config/<span style="color: #808000;">customwindowtitle/icon32.png</span></span></li> | ||||||
|  | </ul> | ||||||
|  | <p>Then, the two icon entries should look like this:</p> | ||||||
|  | <p><span style="font-family: courier new,courier,monospace;">icon16 = '<span style="color: #808000;">customwindowtitle/icon16.png</span>'</span><br /> <span style="font-family: courier new,courier,monospace;">icon32 = '<span style="color: #808000;">customwindowtitle/icon32.png</span>'</span></p> | ||||||
|  | <p><strong>Custom icons require Custom Window Title 1.1.0 or newer.</strong></p> | ||||||
|  | <h2>Screenshots</h2> | ||||||
|  | <p>These screenshots were taken using the following example configuration:</p> | ||||||
|  | <p><span style="font-family: courier new,courier,monospace;">title = "<span style="color: #808000;">Minecraft {mcversion} - Custom Window Title {modversion:customwindowtitle}</span>"</span></p> | ||||||
|  | <p><img src="https://media.forgecdn.net/attachments/277/212/customwindowtitlefabric.png" width="417" height="284" /><img src="https://media.forgecdn.net/attachments/277/213/customwindowtitleforge.png" alt="" width="417" height="284" /></p> | ||||||
							
								
								
									
										9
									
								
								Fabric/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								Fabric/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | |||||||
| .idea/codeStyles/ |  | ||||||
| .idea/inspectionProfiles/ |  | ||||||
| .idea/modules/ |  | ||||||
| .idea/runConfigurations/ |  | ||||||
|  |  | ||||||
| .idea/$CACHE_FILE$ |  | ||||||
| .idea/dictionaries |  | ||||||
| .idea/jarRepositories.xml |  | ||||||
| .idea/workspace.xml |  | ||||||
							
								
								
									
										2
									
								
								Fabric/.idea/Fabric.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Fabric/.idea/Fabric.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,2 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module type="JAVA_MODULE" version="4" /> |  | ||||||
							
								
								
									
										6
									
								
								Fabric/.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Fabric/.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="CompilerConfiguration"> |  | ||||||
|     <bytecodeTargetLevel target="1.8" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										6
									
								
								Fabric/.idea/encodings.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Fabric/.idea/encodings.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8"> |  | ||||||
|     <file url="PROJECT" charset="UTF-8" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										22
									
								
								Fabric/.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								Fabric/.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,22 +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="delegatedBuild" value="true" /> |  | ||||||
|         <option name="testRunner" value="GRADLE" /> |  | ||||||
|         <option name="disableWrapperSourceDistributionNotification" value="true" /> |  | ||||||
|         <option name="distributionType" value="DEFAULT_WRAPPED" /> |  | ||||||
|         <option name="externalProjectPath" value="$PROJECT_DIR$" /> |  | ||||||
|         <option name="gradleJvm" value="1.8" /> |  | ||||||
|         <option name="modules"> |  | ||||||
|           <set> |  | ||||||
|             <option value="$PROJECT_DIR$" /> |  | ||||||
|           </set> |  | ||||||
|         </option> |  | ||||||
|         <option name="useQualifiedModuleNames" value="true" /> |  | ||||||
|       </GradleProjectSettings> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										13
									
								
								Fabric/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								Fabric/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,13 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="EntryPointsManager"> |  | ||||||
|     <list size="5"> |  | ||||||
|       <item index="0" class="java.lang.String" itemvalue="net.minecraftforge.eventbus.api.SubscribeEvent" /> |  | ||||||
|       <item index="1" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.Mod" /> |  | ||||||
|       <item index="2" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.Mod.EventHandler" /> |  | ||||||
|       <item index="3" class="java.lang.String" itemvalue="org.spongepowered.asm.mixin.Mixin" /> |  | ||||||
|       <item index="4" class="java.lang.String" itemvalue="org.spongepowered.asm.mixin.injection.Inject" /> |  | ||||||
|     </list> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" /> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										6
									
								
								Fabric/.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Fabric/.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="VcsDirectoryMappings"> |  | ||||||
|     <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
| @@ -1,47 +0,0 @@ | |||||||
| plugins{ |  | ||||||
| 	id 'fabric-loom' version '0.2.6-SNAPSHOT' |  | ||||||
| 	id 'maven-publish' |  | ||||||
| } |  | ||||||
|  |  | ||||||
| sourceCompatibility = JavaVersion.VERSION_1_8 |  | ||||||
| targetCompatibility = JavaVersion.VERSION_1_8 |  | ||||||
|  |  | ||||||
| archivesBaseName = project.archives_base_name |  | ||||||
| version = project.mod_version |  | ||||||
| group = project.maven_group |  | ||||||
|  |  | ||||||
| minecraft{} |  | ||||||
|  |  | ||||||
| dependencies{ |  | ||||||
| 	minecraft "com.mojang:minecraft:${project.minecraft_version}" |  | ||||||
| 	mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" |  | ||||||
| 	modCompile "net.fabricmc:fabric-loader:${project.loader_version}" |  | ||||||
| 	modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| processResources{ |  | ||||||
| 	inputs.property "version", project.version |  | ||||||
|  |  | ||||||
| 	from(sourceSets.main.resources.srcDirs){ |  | ||||||
| 		include "fabric.mod.json" |  | ||||||
| 		expand "version": project.version |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	from(sourceSets.main.resources.srcDirs){ |  | ||||||
| 		exclude "fabric.mod.json" |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // fix jar file name |  | ||||||
| version = 'v' + version |  | ||||||
|  |  | ||||||
| // 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 |  | ||||||
| tasks.withType(JavaCompile){ |  | ||||||
| 	options.encoding = "UTF-8" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| jar{ |  | ||||||
| 	from "../LICENSE" |  | ||||||
| } |  | ||||||
							
								
								
									
										39
									
								
								Fabric/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Fabric/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | val modId: String by project | ||||||
|  | val minecraftVersion: String by project | ||||||
|  | val fabricVersion: String by project | ||||||
|  |  | ||||||
|  | plugins { | ||||||
|  | 	idea | ||||||
|  | 	id("fabric-loom") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | dependencies { | ||||||
|  | 	minecraft("com.mojang:minecraft:$minecraftVersion") | ||||||
|  | 	modImplementation("net.fabricmc:fabric-loader:$fabricVersion") | ||||||
|  | 	mappings(loom.officialMojangMappings()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | loom { | ||||||
|  | 	runs { | ||||||
|  | 		named("client") { | ||||||
|  | 			configName = "Fabric Client" | ||||||
|  | 			client() | ||||||
|  | 			runDir("../run") | ||||||
|  | 			ideConfigGenerated(true) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	mixin { | ||||||
|  | 		add(sourceSets.main.get(), "$modId.refmap.json") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tasks.processResources { | ||||||
|  | 	filesMatching("fabric.mod.json") { | ||||||
|  | 		expand(inputs.properties) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tasks.remapJar { | ||||||
|  | 	archiveVersion.set(tasks.jar.get().archiveVersion) | ||||||
|  | } | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| # Done to increase the memory available to gradle. |  | ||||||
| org.gradle.jvmargs=-Xmx1G |  | ||||||
|  |  | ||||||
| # Fabric Properties |  | ||||||
| 	# check these on https://fabricmc.net/use |  | ||||||
| 	minecraft_version=1.15.2 |  | ||||||
| 	yarn_mappings=1.15.2+build.1 |  | ||||||
| 	loader_version=0.7.5+build.178 |  | ||||||
|  |  | ||||||
| # Mod Properties |  | ||||||
| 	mod_version = 1.1.1 |  | ||||||
| 	maven_group = chylex.customwindowtitle.fabric |  | ||||||
| 	archives_base_name = CustomWindowTitle |  | ||||||
|  |  | ||||||
| # Dependencies |  | ||||||
| 	# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api |  | ||||||
| 	fabric_version=0.4.29+build.290-1.15 |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| distributionBase=GRADLE_USER_HOME |  | ||||||
| distributionPath=wrapper/dists |  | ||||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip |  | ||||||
| zipStoreBase=GRADLE_USER_HOME |  | ||||||
| zipStorePath=wrapper/dists |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| pluginManagement { |  | ||||||
|     repositories { |  | ||||||
|         jcenter() |  | ||||||
|         maven { |  | ||||||
|             name = 'Fabric' |  | ||||||
|             url = 'https://maven.fabricmc.net/' |  | ||||||
|         } |  | ||||||
|         gradlePluginPortal() |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -1,132 +0,0 @@ | |||||||
| package chylex.customwindowtitle; |  | ||||||
| import java.io.IOException; |  | ||||||
| import java.io.InputStream; |  | ||||||
| import java.nio.charset.StandardCharsets; |  | ||||||
| import java.nio.file.Files; |  | ||||||
| import java.nio.file.Path; |  | ||||||
| import java.nio.file.Paths; |  | ||||||
| import java.nio.file.StandardOpenOption; |  | ||||||
| import java.util.Collections; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.LinkedHashMap; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.stream.Collectors; |  | ||||||
|  |  | ||||||
| public final class TitleConfig{ |  | ||||||
| 	private static final Map<String, String> DEFAULTS; |  | ||||||
| 	 |  | ||||||
| 	static{ |  | ||||||
| 		final Map<String, String> defaults = new LinkedHashMap<>(); |  | ||||||
| 		 |  | ||||||
| 		defaults.put("title", "Minecraft {mcversion}"); |  | ||||||
| 		defaults.put("icon16", ""); |  | ||||||
| 		defaults.put("icon32", ""); |  | ||||||
| 		 |  | ||||||
| 		DEFAULTS = Collections.unmodifiableMap(defaults); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public static TitleConfig read(final String folder){ |  | ||||||
| 		final Path configFile = Paths.get(folder, "customwindowtitle-client.toml"); |  | ||||||
| 		final Map<String, String> config = new LinkedHashMap<>(DEFAULTS); |  | ||||||
| 		 |  | ||||||
| 		try{ |  | ||||||
| 			if (!Files.exists(configFile)){ |  | ||||||
| 				Files.write(configFile, config.entrySet().stream().map(entry -> String.format("%s = '%s'", entry.getKey(), entry.getValue())).collect(Collectors.toList()), StandardCharsets.UTF_8); |  | ||||||
| 			} |  | ||||||
| 			else{ |  | ||||||
| 				Files.readAllLines(configFile, StandardCharsets.UTF_8).stream().map(String::trim).filter(line -> !line.isEmpty()).forEach(line -> { |  | ||||||
| 					final String[] split = line.split("=", 2); |  | ||||||
| 					 |  | ||||||
| 					if (split.length != 2){ |  | ||||||
| 						throw new RuntimeException("CustomWindowTitle configuration has an invalid line: " + line); |  | ||||||
| 					} |  | ||||||
| 					 |  | ||||||
| 					final String key = split[0].trim(); |  | ||||||
| 					final String value = parseTrimmedValue(split[1].trim()); |  | ||||||
| 					 |  | ||||||
| 					if (config.containsKey(key)){ |  | ||||||
| 						config.put(key, value); |  | ||||||
| 					} |  | ||||||
| 					else{ |  | ||||||
| 						throw new RuntimeException("CustomWindowTitle configuration has an invalid key: " + key); |  | ||||||
| 					} |  | ||||||
| 				}); |  | ||||||
| 			} |  | ||||||
| 		}catch(final IOException e){ |  | ||||||
| 			throw new RuntimeException("CustomWindowTitle configuration error", e); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		final String icon16 = config.get("icon16"); |  | ||||||
| 		final String icon32 = config.get("icon32"); |  | ||||||
| 		 |  | ||||||
| 		final Path pathIcon16 = icon16.isEmpty() ? null : Paths.get(folder, icon16); |  | ||||||
| 		final Path pathIcon32 = icon32.isEmpty() ? null : Paths.get(folder, icon32); |  | ||||||
| 		 |  | ||||||
| 		if ((pathIcon16 == null) != (pathIcon32 == null)){ |  | ||||||
| 			throw new RuntimeException("CustomWindowTitle configuration specifies only one icon, both 'icon16' and 'icon32' must be set."); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		if (pathIcon16 != null && Files.notExists(pathIcon16)){ |  | ||||||
| 			throw new RuntimeException("CustomWindowTitle 16x16 icon not found: " + pathIcon16); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		if (pathIcon32 != null && Files.notExists(pathIcon32)){ |  | ||||||
| 			throw new RuntimeException("CustomWindowTitle 32x32 icon not found: " + pathIcon32); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		return new TitleConfig(config.get("title"), pathIcon16, pathIcon32); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	private static String parseTrimmedValue(String value){ |  | ||||||
| 		if (value.isEmpty()){ |  | ||||||
| 			return value; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		final char surrounding = value.charAt(0); |  | ||||||
| 		final int length = value.length(); |  | ||||||
| 		 |  | ||||||
| 		if (value.charAt(length - 1) == surrounding){ |  | ||||||
| 			value = value.substring(1, length - 1); |  | ||||||
| 			 |  | ||||||
| 			if (surrounding == '"'){ |  | ||||||
| 				value = value.replace("\\\"", "\"").replace("\\\\", "\\"); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		return value; |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	private final String title; |  | ||||||
| 	private final Path icon16; |  | ||||||
| 	private final Path icon32; |  | ||||||
| 	 |  | ||||||
| 	private TitleConfig(final String title, final Path icon16, final Path icon32){ |  | ||||||
| 		this.title = title; |  | ||||||
| 		this.icon16 = icon16; |  | ||||||
| 		this.icon32 = icon32; |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public String getTitle(){ |  | ||||||
| 		return title; |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public boolean hasIcon(){ |  | ||||||
| 		return icon16 != null && icon32 != null; |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public InputStream readIcon16(){ |  | ||||||
| 		try{ |  | ||||||
| 			return Files.newInputStream(icon16, StandardOpenOption.READ); |  | ||||||
| 		}catch(final IOException e){ |  | ||||||
| 			throw new RuntimeException("CustomWindowTitle could not open the specified 16x16 icon: " + icon16, e); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public InputStream readIcon32(){ |  | ||||||
| 		try{ |  | ||||||
| 			return Files.newInputStream(icon32, StandardOpenOption.READ); |  | ||||||
| 		}catch(final IOException e){ |  | ||||||
| 			throw new RuntimeException("CustomWindowTitle could not open the specified 32x32 icon: " + icon16, e); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| package chylex.customwindowtitle; |  | ||||||
| import org.apache.commons.lang3.ArrayUtils; |  | ||||||
| import org.apache.commons.lang3.StringUtils; |  | ||||||
| import org.apache.logging.log4j.LogManager; |  | ||||||
| import org.apache.logging.log4j.Logger; |  | ||||||
| import java.util.regex.Matcher; |  | ||||||
| import java.util.regex.Pattern; |  | ||||||
|  |  | ||||||
| public final class TitleParser{ |  | ||||||
| 	private static final Pattern tokenRegex = Pattern.compile("\\{([a-z]+)(?::([^}]+))?}"); |  | ||||||
| 	private static final Logger logger = LogManager.getLogger("CustomWindowTitle"); |  | ||||||
| 	 |  | ||||||
| 	public static String parse(final String input){ |  | ||||||
| 		final StringBuffer buffer = new StringBuffer(); |  | ||||||
| 		final Matcher matcher = tokenRegex.matcher(input); |  | ||||||
| 		 |  | ||||||
| 		while(matcher.find()){ |  | ||||||
| 			final String token = matcher.group(1); |  | ||||||
| 			final String[] args = StringUtils.split(matcher.group(2), ','); |  | ||||||
| 			 |  | ||||||
| 			String result = null; |  | ||||||
| 			 |  | ||||||
| 			try{ |  | ||||||
| 				result = TitleTokens.getTokenFunction(token).apply(args == null ? ArrayUtils.EMPTY_STRING_ARRAY : args); |  | ||||||
| 			}catch(final TokenException e){ |  | ||||||
| 				logger.warn("Error processing token '" + token + "': " + e.getMessage()); |  | ||||||
| 			}catch(final Throwable t){ |  | ||||||
| 				logger.warn("Error processing token '" + token + "': " + t.getMessage(), t); |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			if (result == null){ |  | ||||||
| 				matcher.appendReplacement(buffer, input.substring(matcher.start(), matcher.end())); |  | ||||||
| 			} |  | ||||||
| 			else{ |  | ||||||
| 				matcher.appendReplacement(buffer, result); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		matcher.appendTail(buffer); |  | ||||||
| 		return buffer.toString(); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	// Static class |  | ||||||
| 	 |  | ||||||
| 	private TitleParser(){} |  | ||||||
| } |  | ||||||
| @@ -1,43 +0,0 @@ | |||||||
| package chylex.customwindowtitle; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.function.Function; |  | ||||||
| import java.util.function.Supplier; |  | ||||||
| import java.util.function.UnaryOperator; |  | ||||||
|  |  | ||||||
| public final class TitleTokens{ |  | ||||||
| 	 |  | ||||||
| 	// Registry |  | ||||||
| 	 |  | ||||||
| 	private static final Map<String, Function<String[], String>> tokenMap = new HashMap<>(); |  | ||||||
| 	 |  | ||||||
| 	public static void registerToken(final String token, final Function<String[], String> processor){ |  | ||||||
| 		tokenMap.putIfAbsent(token, processor); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public static Function<String[], String> getTokenFunction(final String token){ |  | ||||||
| 		return tokenMap.getOrDefault(token, args -> null); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	// Arguments |  | ||||||
| 	 |  | ||||||
| 	public static Function<String[], String> noArgs(final Supplier<String> func){ |  | ||||||
| 		return args -> args.length > 0 ? fail("expected no arguments, got " + args.length) : func.get(); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public static Function<String[], String> oneArg(final UnaryOperator<String> func){ |  | ||||||
| 		return args -> args.length != 1 ? fail("expected 1 argument, got " + args.length) : func.apply(args[0]); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	public static Function<String[], String> rangeArgs(final int min, final int max, final Function<String[], String> func){ |  | ||||||
| 		return args -> args.length < min || args.length > max ? fail("expected between " + min + " and " + max + " arguments, got " + args.length) : func.apply(args); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	private static String fail(final String message){ |  | ||||||
| 		throw new TokenException(message); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	// Static class |  | ||||||
| 	 |  | ||||||
| 	private TitleTokens(){} |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| package chylex.customwindowtitle; |  | ||||||
|  |  | ||||||
| public class TokenException extends RuntimeException{ |  | ||||||
| 	public TokenException(final String message){ |  | ||||||
| 		super(message); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,29 +1,30 @@ | |||||||
| package chylex.customwindowtitle.fabric; | package chylex.customwindowtitle.fabric; | ||||||
| import chylex.customwindowtitle.TitleConfig; | import chylex.customwindowtitle.TitleConfig; | ||||||
| import chylex.customwindowtitle.TitleParser; | import chylex.customwindowtitle.TitleParser; | ||||||
|  | import chylex.customwindowtitle.data.CommonTokenData; | ||||||
|  | import com.mojang.blaze3d.platform.Window; | ||||||
| import net.fabricmc.api.ClientModInitializer; | import net.fabricmc.api.ClientModInitializer; | ||||||
| import net.fabricmc.loader.api.FabricLoader; | import net.fabricmc.loader.api.FabricLoader; | ||||||
| import net.minecraft.client.MinecraftClient; | import net.minecraft.client.Minecraft; | ||||||
| import net.minecraft.client.util.Window; |  | ||||||
|  |  | ||||||
| public class CustomWindowTitle implements ClientModInitializer{ | public class CustomWindowTitle implements ClientModInitializer { | ||||||
| 	private final TitleConfig config; | 	private final TitleConfig config; | ||||||
| 	 | 	 | ||||||
| 	public CustomWindowTitle(){ | 	public CustomWindowTitle() { | ||||||
| 		config = TitleConfig.read(FabricLoader.getInstance().getConfigDirectory().getAbsolutePath()); | 		config = TitleConfig.read(FabricLoader.getInstance().getConfigDirectory().getAbsolutePath()); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void onInitializeClient(){ | 	public void onInitializeClient() { | ||||||
| 		TokenData.register(); | 		CommonTokenData.register(new TokenProvider()); | ||||||
| 		MinecraftClient.getInstance().execute(this::updateTitle); | 		Minecraft.getInstance().execute(this::updateTitle); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private void updateTitle(){ | 	private void updateTitle() { | ||||||
| 		final Window window = MinecraftClient.getInstance().getWindow(); | 		final Window window = Minecraft.getInstance().getWindow(); | ||||||
| 		window.setTitle(TitleParser.parse(config.getTitle())); | 		window.setTitle(TitleParser.parse(config.getTitle())); | ||||||
| 		 | 		 | ||||||
| 		if (config.hasIcon()){ | 		if (config.hasIcon()) { | ||||||
| 			window.setIcon(config.readIcon16(), config.readIcon32()); | 			window.setIcon(config.readIcon16(), config.readIcon32()); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -1,22 +0,0 @@ | |||||||
| package chylex.customwindowtitle.fabric; |  | ||||||
| import chylex.customwindowtitle.TokenException; |  | ||||||
| import net.fabricmc.loader.api.FabricLoader; |  | ||||||
| import net.minecraft.SharedConstants; |  | ||||||
| import static chylex.customwindowtitle.TitleTokens.noArgs; |  | ||||||
| import static chylex.customwindowtitle.TitleTokens.oneArg; |  | ||||||
| import static chylex.customwindowtitle.TitleTokens.registerToken; |  | ||||||
|  |  | ||||||
| final class TokenData{ |  | ||||||
| 	static void register(){ |  | ||||||
| 		registerToken("mcversion", noArgs(TokenData::getMinecraftVersion)); |  | ||||||
| 		registerToken("modversion", oneArg(TokenData::getModVersion)); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	static String getMinecraftVersion(){ |  | ||||||
| 		return SharedConstants.getGameVersion().getName(); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	static String getModVersion(final String modId){ |  | ||||||
| 		return FabricLoader.getInstance().getModContainer(modId).orElseThrow(() -> new TokenException("mod info for '" + modId + "' not found")).getMetadata().getVersion().getFriendlyString(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -0,0 +1,16 @@ | |||||||
|  | package chylex.customwindowtitle.fabric; | ||||||
|  | import chylex.customwindowtitle.TokenException; | ||||||
|  | import chylex.customwindowtitle.data.CommonTokenProvider; | ||||||
|  | import net.fabricmc.loader.api.FabricLoader; | ||||||
|  |  | ||||||
|  | final class TokenProvider implements CommonTokenProvider { | ||||||
|  | 	@Override | ||||||
|  | 	public String getModVersion(final String modId) { | ||||||
|  | 		return FabricLoader.getInstance() | ||||||
|  | 			.getModContainer(modId) | ||||||
|  | 			.orElseThrow(() -> new TokenException("mod info for '" + modId + "' not found")) | ||||||
|  | 			.getMetadata() | ||||||
|  | 			.getVersion() | ||||||
|  | 			.getFriendlyString(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -1,14 +0,0 @@ | |||||||
| package chylex.customwindowtitle.fabric.mixin; |  | ||||||
| import net.minecraft.client.MinecraftClient; |  | ||||||
| import org.spongepowered.asm.mixin.Mixin; |  | ||||||
| import org.spongepowered.asm.mixin.injection.At; |  | ||||||
| import org.spongepowered.asm.mixin.injection.Inject; |  | ||||||
| import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |  | ||||||
|  |  | ||||||
| @Mixin(MinecraftClient.class) |  | ||||||
| public final class DisableVanillaTitle{ |  | ||||||
| 	@Inject(method = "updateWindowTitle()V", at = @At("HEAD"), cancellable = true) |  | ||||||
| 	private void updateTitle(final CallbackInfo info){ |  | ||||||
| 		info.cancel(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,32 +1,34 @@ | |||||||
| { | { | ||||||
|   "schemaVersion": 1, |   "schemaVersion": 1, | ||||||
|   "id": "customwindowtitle", |   "id": "${id}", | ||||||
|  |   "name": "${name}", | ||||||
|  |   "description": "${description}", | ||||||
|   "version": "${version}", |   "version": "${version}", | ||||||
|  |   "license": "${license}", | ||||||
|    |    | ||||||
|   "name": "Custom Window Title", |  | ||||||
|   "authors": [ |   "authors": [ | ||||||
|     "chylex" |     "${author}" | ||||||
|   ], |   ], | ||||||
|  |    | ||||||
|   "contact": { |   "contact": { | ||||||
|     "homepage": "https://chylex.com", |     "homepage": "https://chylex.com", | ||||||
|     "sources": "https://github.com/chylex/Minecraft-Window-Title", |     "issues": "${issuesURL}", | ||||||
|     "issues": "https://github.com/chylex/Minecraft-Window-Title/issues" |     "sources": "${sourcesURL}" | ||||||
|   }, |   }, | ||||||
|    |    | ||||||
|   "license": "Unlicense", |  | ||||||
|  |  | ||||||
|   "environment": "client", |   "environment": "client", | ||||||
|   "entrypoints": { |   "entrypoints": { | ||||||
|     "client": [ |     "client": [ | ||||||
|       "chylex.customwindowtitle.fabric.CustomWindowTitle" |       "chylex.customwindowtitle.fabric.CustomWindowTitle" | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   "mixins": [ |    | ||||||
|     "mixins.json" |   "mixins": [{ | ||||||
|   ], |     "config": "${id}.mixins.json" | ||||||
|  |   }], | ||||||
|    |    | ||||||
|   "depends": { |   "depends": { | ||||||
|     "fabricloader": ">=0.7.2", |     "fabricloader": ">=${minimumFabricVersion}", | ||||||
|     "minecraft": ">=1.15" |     "minecraft": ">=${minimumMinecraftVersion}" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,13 +0,0 @@ | |||||||
| { |  | ||||||
|   "required": true, |  | ||||||
|   "package": "chylex.customwindowtitle.fabric.mixin", |  | ||||||
|   "compatibilityLevel": "JAVA_8", |  | ||||||
|   "mixins": [ |  | ||||||
|   ], |  | ||||||
|   "client": [ |  | ||||||
|     "DisableVanillaTitle" |  | ||||||
|   ], |  | ||||||
|   "injectors": { |  | ||||||
|     "defaultRequire": 1 |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										9
									
								
								Forge/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								Forge/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | |||||||
| .idea/codeStyles/ |  | ||||||
| .idea/inspectionProfiles/ |  | ||||||
| .idea/modules/ |  | ||||||
| .idea/runConfigurations/ |  | ||||||
|  |  | ||||||
| .idea/$CACHE_FILE$ |  | ||||||
| .idea/dictionaries |  | ||||||
| .idea/jarRepositories.xml |  | ||||||
| .idea/workspace.xml |  | ||||||
							
								
								
									
										2
									
								
								Forge/.idea/Forge.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Forge/.idea/Forge.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,2 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module type="JAVA_MODULE" version="4" /> |  | ||||||
							
								
								
									
										6
									
								
								Forge/.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Forge/.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="CompilerConfiguration"> |  | ||||||
|     <bytecodeTargetLevel target="1.8" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										6
									
								
								Forge/.idea/encodings.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Forge/.idea/encodings.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8"> |  | ||||||
|     <file url="PROJECT" charset="UTF-8" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										22
									
								
								Forge/.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								Forge/.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,22 +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="delegatedBuild" value="true" /> |  | ||||||
|         <option name="testRunner" value="GRADLE" /> |  | ||||||
|         <option name="disableWrapperSourceDistributionNotification" value="true" /> |  | ||||||
|         <option name="distributionType" value="DEFAULT_WRAPPED" /> |  | ||||||
|         <option name="externalProjectPath" value="$PROJECT_DIR$" /> |  | ||||||
|         <option name="gradleJvm" value="1.8" /> |  | ||||||
|         <option name="modules"> |  | ||||||
|           <set> |  | ||||||
|             <option value="$PROJECT_DIR$" /> |  | ||||||
|           </set> |  | ||||||
|         </option> |  | ||||||
|         <option name="useQualifiedModuleNames" value="true" /> |  | ||||||
|       </GradleProjectSettings> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										13
									
								
								Forge/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								Forge/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,13 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="EntryPointsManager"> |  | ||||||
|     <list size="5"> |  | ||||||
|       <item index="0" class="java.lang.String" itemvalue="net.minecraftforge.eventbus.api.SubscribeEvent" /> |  | ||||||
|       <item index="1" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.Mod" /> |  | ||||||
|       <item index="2" class="java.lang.String" itemvalue="net.minecraftforge.fml.common.Mod.EventHandler" /> |  | ||||||
|       <item index="3" class="java.lang.String" itemvalue="org.spongepowered.asm.mixin.Mixin" /> |  | ||||||
|       <item index="4" class="java.lang.String" itemvalue="org.spongepowered.asm.mixin.injection.Inject" /> |  | ||||||
|     </list> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" /> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										6
									
								
								Forge/.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Forge/.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="VcsDirectoryMappings"> |  | ||||||
|     <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
| @@ -1,82 +0,0 @@ | |||||||
| buildscript{ |  | ||||||
|     repositories{ |  | ||||||
|         maven{ url = 'https://files.minecraftforge.net/maven' } |  | ||||||
|         jcenter() |  | ||||||
|         mavenCentral() |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     dependencies{ |  | ||||||
|         classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| apply plugin: 'net.minecraftforge.gradle' |  | ||||||
| apply plugin: 'eclipse' |  | ||||||
|  |  | ||||||
| def mcversion = "1.15.2" |  | ||||||
| def forgeversion = "31.0.14" |  | ||||||
|  |  | ||||||
| def prefixName = 'displayName = ' |  | ||||||
| def prefixVersion = 'version = ' |  | ||||||
|  |  | ||||||
| def metaLines = file('src/main/resources/META-INF/mods.toml').readLines() |  | ||||||
| def metaName = metaLines.find { line -> line.startsWith(prefixName) }.substring(prefixName.length())[1..-2] |  | ||||||
| def metaVersion = metaLines.find { line -> line.startsWith(prefixVersion) }.substring(prefixVersion.length())[1..-2] |  | ||||||
|  |  | ||||||
| group = 'chylex.customwindowtitle.forge' |  | ||||||
| version = metaVersion |  | ||||||
| archivesBaseName = metaName.replaceAll('\\s', '') |  | ||||||
|  |  | ||||||
| sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' |  | ||||||
|  |  | ||||||
| minecraft{ |  | ||||||
|     mappings channel: 'snapshot', version: '20200130-1.15.1' |  | ||||||
|  |  | ||||||
|     runs{ |  | ||||||
|         client{ |  | ||||||
|             workingDirectory file('run') |  | ||||||
|  |  | ||||||
|             mods{ |  | ||||||
|                 customwindowtitle{ |  | ||||||
|                     source sourceSets.main |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         server{ |  | ||||||
|             workingDirectory file('run') |  | ||||||
|  |  | ||||||
|             mods{ |  | ||||||
|                 customwindowtitle{ |  | ||||||
|                     source sourceSets.main |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| dependencies{ |  | ||||||
|     minecraft 'net.minecraftforge:forge:' + mcversion + '-' + forgeversion |  | ||||||
| } |  | ||||||
|  |  | ||||||
| jar{ |  | ||||||
|     archiveName = archivesBaseName + '-1.15+v' + version + '.jar' |  | ||||||
|  |  | ||||||
|     from('../'){ |  | ||||||
|         include 'LICENSE' |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     manifest{ |  | ||||||
|         attributes([ |  | ||||||
|                 'Specification-Title'  : 'customwindowtitle', |  | ||||||
|                 'Specification-Version': '1', |  | ||||||
|                 'Specification-Vendor' : 'chylex', |  | ||||||
|  |  | ||||||
|                 'Implementation-Title'  : metaName, |  | ||||||
|                 'Implementation-Version': metaVersion, |  | ||||||
|                 'Implementation-Vendor' : 'chylex', |  | ||||||
|  |  | ||||||
|                 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") |  | ||||||
|         ]) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
							
								
								
									
										78
									
								
								Forge/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								Forge/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | |||||||
|  | import net.minecraftforge.gradle.userdev.UserDevExtension | ||||||
|  | import org.gradle.api.file.DuplicatesStrategy.INCLUDE | ||||||
|  | import org.spongepowered.asm.gradle.plugins.MixinExtension | ||||||
|  |  | ||||||
|  | val modId: String by project | ||||||
|  | val minecraftVersion: String by project | ||||||
|  | val forgeVersion: String by project | ||||||
|  | val mixinVersion: String by project | ||||||
|  |  | ||||||
|  | buildscript { | ||||||
|  | 	repositories { | ||||||
|  | 		maven("https://maven.minecraftforge.net") | ||||||
|  | 		maven("https://repo.spongepowered.org/maven") | ||||||
|  | 		mavenCentral() | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	dependencies { | ||||||
|  | 		classpath(group = "net.minecraftforge.gradle", name = "ForgeGradle", version = "5.1.+") { isChanging = true } | ||||||
|  | 		classpath(group = "org.spongepowered", name = "mixingradle", version = "0.7-SNAPSHOT") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | plugins { | ||||||
|  | 	java | ||||||
|  | 	eclipse | ||||||
|  | } | ||||||
|  |  | ||||||
|  | apply { | ||||||
|  | 	plugin("net.minecraftforge.gradle") | ||||||
|  | 	plugin("org.spongepowered.mixin") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | dependencies { | ||||||
|  | 	"minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") | ||||||
|  | 	 | ||||||
|  | 	if (System.getProperty("idea.sync.active") != "true") { | ||||||
|  | 		annotationProcessor("org.spongepowered:mixin:$mixinVersion:processor") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure<UserDevExtension> { | ||||||
|  | 	mappings("official", minecraftVersion) | ||||||
|  | 	 | ||||||
|  | 	runs { | ||||||
|  | 		create("client") { | ||||||
|  | 			taskName = "Client" | ||||||
|  | 			workingDirectory(rootProject.file("run")) | ||||||
|  | 			ideaModule("${rootProject.name}.${project.name}.main") | ||||||
|  | 			 | ||||||
|  | 			property("mixin.env.remapRefMap", "true") | ||||||
|  | 			property("mixin.env.refMapRemappingFile", "$projectDir/build/createSrgToMcp/output.srg") | ||||||
|  | 			arg("-mixin.config=$modId.mixins.json") | ||||||
|  | 			 | ||||||
|  | 			mods { | ||||||
|  | 				create(modId) { | ||||||
|  | 					source(sourceSets.main.get()) | ||||||
|  | 					source(rootProject.sourceSets.main.get()) | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure<MixinExtension> { | ||||||
|  | 	add(sourceSets.main.get(), "$modId.refmap.json") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tasks.processResources { | ||||||
|  | 	from(sourceSets.main.get().resources.srcDirs) { | ||||||
|  | 		include("META-INF/mods.toml") | ||||||
|  | 		expand(inputs.properties) | ||||||
|  | 		duplicatesStrategy = INCLUDE | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tasks.jar { | ||||||
|  | 	finalizedBy("reobfJar") | ||||||
|  | } | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| # Sets default memory used for gradle commands. Can be overridden by user or command line properties. |  | ||||||
| # This is required to provide enough memory for the Minecraft decompilation process. |  | ||||||
| org.gradle.jvmargs=-Xmx3G |  | ||||||
| org.gradle.daemon=false |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								Forge/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Forge/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										172
									
								
								Forge/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										172
									
								
								Forge/gradlew
									
									
									
									
										vendored
									
									
								
							| @@ -1,172 +0,0 @@ | |||||||
| #!/usr/bin/env sh |  | ||||||
|  |  | ||||||
| ############################################################################## |  | ||||||
| ## |  | ||||||
| ##  Gradle start up script for UN*X |  | ||||||
| ## |  | ||||||
| ############################################################################## |  | ||||||
|  |  | ||||||
| # Attempt to set APP_HOME |  | ||||||
| # Resolve links: $0 may be a link |  | ||||||
| PRG="$0" |  | ||||||
| # Need this for relative symlinks. |  | ||||||
| while [ -h "$PRG" ] ; do |  | ||||||
|     ls=`ls -ld "$PRG"` |  | ||||||
|     link=`expr "$ls" : '.*-> \(.*\)$'` |  | ||||||
|     if expr "$link" : '/.*' > /dev/null; then |  | ||||||
|         PRG="$link" |  | ||||||
|     else |  | ||||||
|         PRG=`dirname "$PRG"`"/$link" |  | ||||||
|     fi |  | ||||||
| done |  | ||||||
| SAVED="`pwd`" |  | ||||||
| cd "`dirname \"$PRG\"`/" >/dev/null |  | ||||||
| APP_HOME="`pwd -P`" |  | ||||||
| cd "$SAVED" >/dev/null |  | ||||||
|  |  | ||||||
| APP_NAME="Gradle" |  | ||||||
| APP_BASE_NAME=`basename "$0"` |  | ||||||
|  |  | ||||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. |  | ||||||
| DEFAULT_JVM_OPTS="" |  | ||||||
|  |  | ||||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. |  | ||||||
| MAX_FD="maximum" |  | ||||||
|  |  | ||||||
| warn () { |  | ||||||
|     echo "$*" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| die () { |  | ||||||
|     echo |  | ||||||
|     echo "$*" |  | ||||||
|     echo |  | ||||||
|     exit 1 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # OS specific support (must be 'true' or 'false'). |  | ||||||
| cygwin=false |  | ||||||
| msys=false |  | ||||||
| darwin=false |  | ||||||
| nonstop=false |  | ||||||
| case "`uname`" in |  | ||||||
|   CYGWIN* ) |  | ||||||
|     cygwin=true |  | ||||||
|     ;; |  | ||||||
|   Darwin* ) |  | ||||||
|     darwin=true |  | ||||||
|     ;; |  | ||||||
|   MINGW* ) |  | ||||||
|     msys=true |  | ||||||
|     ;; |  | ||||||
|   NONSTOP* ) |  | ||||||
|     nonstop=true |  | ||||||
|     ;; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar |  | ||||||
|  |  | ||||||
| # Determine the Java command to use to start the JVM. |  | ||||||
| if [ -n "$JAVA_HOME" ] ; then |  | ||||||
|     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |  | ||||||
|         # IBM's JDK on AIX uses strange locations for the executables |  | ||||||
|         JAVACMD="$JAVA_HOME/jre/sh/java" |  | ||||||
|     else |  | ||||||
|         JAVACMD="$JAVA_HOME/bin/java" |  | ||||||
|     fi |  | ||||||
|     if [ ! -x "$JAVACMD" ] ; then |  | ||||||
|         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME |  | ||||||
|  |  | ||||||
| Please set the JAVA_HOME variable in your environment to match the |  | ||||||
| location of your Java installation." |  | ||||||
|     fi |  | ||||||
| else |  | ||||||
|     JAVACMD="java" |  | ||||||
|     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. |  | ||||||
|  |  | ||||||
| Please set the JAVA_HOME variable in your environment to match the |  | ||||||
| location of your Java installation." |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Increase the maximum file descriptors if we can. |  | ||||||
| if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then |  | ||||||
|     MAX_FD_LIMIT=`ulimit -H -n` |  | ||||||
|     if [ $? -eq 0 ] ; then |  | ||||||
|         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then |  | ||||||
|             MAX_FD="$MAX_FD_LIMIT" |  | ||||||
|         fi |  | ||||||
|         ulimit -n $MAX_FD |  | ||||||
|         if [ $? -ne 0 ] ; then |  | ||||||
|             warn "Could not set maximum file descriptor limit: $MAX_FD" |  | ||||||
|         fi |  | ||||||
|     else |  | ||||||
|         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" |  | ||||||
|     fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # For Darwin, add options to specify how the application appears in the dock |  | ||||||
| if $darwin; then |  | ||||||
|     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # For Cygwin, switch paths to Windows format before running java |  | ||||||
| if $cygwin ; then |  | ||||||
|     APP_HOME=`cygpath --path --mixed "$APP_HOME"` |  | ||||||
|     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` |  | ||||||
|     JAVACMD=`cygpath --unix "$JAVACMD"` |  | ||||||
|  |  | ||||||
|     # We build the pattern for arguments to be converted via cygpath |  | ||||||
|     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` |  | ||||||
|     SEP="" |  | ||||||
|     for dir in $ROOTDIRSRAW ; do |  | ||||||
|         ROOTDIRS="$ROOTDIRS$SEP$dir" |  | ||||||
|         SEP="|" |  | ||||||
|     done |  | ||||||
|     OURCYGPATTERN="(^($ROOTDIRS))" |  | ||||||
|     # Add a user-defined pattern to the cygpath arguments |  | ||||||
|     if [ "$GRADLE_CYGPATTERN" != "" ] ; then |  | ||||||
|         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" |  | ||||||
|     fi |  | ||||||
|     # Now convert the arguments - kludge to limit ourselves to /bin/sh |  | ||||||
|     i=0 |  | ||||||
|     for arg in "$@" ; do |  | ||||||
|         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` |  | ||||||
|         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option |  | ||||||
|  |  | ||||||
|         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition |  | ||||||
|             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` |  | ||||||
|         else |  | ||||||
|             eval `echo args$i`="\"$arg\"" |  | ||||||
|         fi |  | ||||||
|         i=$((i+1)) |  | ||||||
|     done |  | ||||||
|     case $i in |  | ||||||
|         (0) set -- ;; |  | ||||||
|         (1) set -- "$args0" ;; |  | ||||||
|         (2) set -- "$args0" "$args1" ;; |  | ||||||
|         (3) set -- "$args0" "$args1" "$args2" ;; |  | ||||||
|         (4) set -- "$args0" "$args1" "$args2" "$args3" ;; |  | ||||||
|         (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; |  | ||||||
|         (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; |  | ||||||
|         (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; |  | ||||||
|         (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; |  | ||||||
|         (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; |  | ||||||
|     esac |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Escape application args |  | ||||||
| save () { |  | ||||||
|     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done |  | ||||||
|     echo " " |  | ||||||
| } |  | ||||||
| APP_ARGS=$(save "$@") |  | ||||||
|  |  | ||||||
| # Collect all arguments for the java command, following the shell quoting and substitution rules |  | ||||||
| eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" |  | ||||||
|  |  | ||||||
| # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong |  | ||||||
| if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then |  | ||||||
|   cd "$(dirname "$0")" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| exec "$JAVACMD" "$@" |  | ||||||
							
								
								
									
										84
									
								
								Forge/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										84
									
								
								Forge/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @@ -1,84 +0,0 @@ | |||||||
| @if "%DEBUG%" == "" @echo off |  | ||||||
| @rem ########################################################################## |  | ||||||
| @rem |  | ||||||
| @rem  Gradle startup script for Windows |  | ||||||
| @rem |  | ||||||
| @rem ########################################################################## |  | ||||||
|  |  | ||||||
| @rem Set local scope for the variables with windows NT shell |  | ||||||
| if "%OS%"=="Windows_NT" setlocal |  | ||||||
|  |  | ||||||
| set DIRNAME=%~dp0 |  | ||||||
| if "%DIRNAME%" == "" set DIRNAME=. |  | ||||||
| set APP_BASE_NAME=%~n0 |  | ||||||
| set APP_HOME=%DIRNAME% |  | ||||||
|  |  | ||||||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. |  | ||||||
| set DEFAULT_JVM_OPTS= |  | ||||||
|  |  | ||||||
| @rem Find java.exe |  | ||||||
| if defined JAVA_HOME goto findJavaFromJavaHome |  | ||||||
|  |  | ||||||
| set JAVA_EXE=java.exe |  | ||||||
| %JAVA_EXE% -version >NUL 2>&1 |  | ||||||
| if "%ERRORLEVEL%" == "0" goto init |  | ||||||
|  |  | ||||||
| echo. |  | ||||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. |  | ||||||
| echo. |  | ||||||
| echo Please set the JAVA_HOME variable in your environment to match the |  | ||||||
| echo location of your Java installation. |  | ||||||
|  |  | ||||||
| goto fail |  | ||||||
|  |  | ||||||
| :findJavaFromJavaHome |  | ||||||
| set JAVA_HOME=%JAVA_HOME:"=% |  | ||||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe |  | ||||||
|  |  | ||||||
| if exist "%JAVA_EXE%" goto init |  | ||||||
|  |  | ||||||
| echo. |  | ||||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% |  | ||||||
| echo. |  | ||||||
| echo Please set the JAVA_HOME variable in your environment to match the |  | ||||||
| echo location of your Java installation. |  | ||||||
|  |  | ||||||
| goto fail |  | ||||||
|  |  | ||||||
| :init |  | ||||||
| @rem Get command-line arguments, handling Windows variants |  | ||||||
|  |  | ||||||
| if not "%OS%" == "Windows_NT" goto win9xME_args |  | ||||||
|  |  | ||||||
| :win9xME_args |  | ||||||
| @rem Slurp the command line arguments. |  | ||||||
| set CMD_LINE_ARGS= |  | ||||||
| set _SKIP=2 |  | ||||||
|  |  | ||||||
| :win9xME_args_slurp |  | ||||||
| if "x%~1" == "x" goto execute |  | ||||||
|  |  | ||||||
| set CMD_LINE_ARGS=%* |  | ||||||
|  |  | ||||||
| :execute |  | ||||||
| @rem Setup the command line |  | ||||||
|  |  | ||||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar |  | ||||||
|  |  | ||||||
| @rem Execute Gradle |  | ||||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% |  | ||||||
|  |  | ||||||
| :end |  | ||||||
| @rem End local scope for the variables with windows NT shell |  | ||||||
| if "%ERRORLEVEL%"=="0" goto mainEnd |  | ||||||
|  |  | ||||||
| :fail |  | ||||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of |  | ||||||
| rem the _cmd.exe /c_ return code! |  | ||||||
| if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 |  | ||||||
| exit /b 1 |  | ||||||
|  |  | ||||||
| :mainEnd |  | ||||||
| if "%OS%"=="Windows_NT" endlocal |  | ||||||
|  |  | ||||||
| :omega |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| package chylex.customwindowtitle; |  | ||||||
|  |  | ||||||
| public class TokenException extends RuntimeException{ |  | ||||||
| 	public TokenException(final String message){ |  | ||||||
| 		super(message); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,40 +1,40 @@ | |||||||
| package chylex.customwindowtitle.forge; | package chylex.customwindowtitle.forge; | ||||||
| import chylex.customwindowtitle.TitleConfig; | import chylex.customwindowtitle.TitleConfig; | ||||||
| import chylex.customwindowtitle.TitleParser; | import chylex.customwindowtitle.TitleParser; | ||||||
| import net.minecraft.client.MainWindow; | import chylex.customwindowtitle.data.CommonTokenData; | ||||||
|  | import com.mojang.blaze3d.platform.Window; | ||||||
| import net.minecraft.client.Minecraft; | import net.minecraft.client.Minecraft; | ||||||
| import net.minecraftforge.eventbus.api.SubscribeEvent; | import net.minecraftforge.eventbus.api.SubscribeEvent; | ||||||
| import net.minecraftforge.fml.ExtensionPoint; | import net.minecraftforge.fml.IExtensionPoint.DisplayTest; | ||||||
| import net.minecraftforge.fml.ModLoadingContext; | import net.minecraftforge.fml.ModLoadingContext; | ||||||
| import net.minecraftforge.fml.common.Mod; | import net.minecraftforge.fml.common.Mod; | ||||||
| import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; | import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; | ||||||
| import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; | import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; | ||||||
| import net.minecraftforge.fml.loading.FMLPaths; | import net.minecraftforge.fml.loading.FMLPaths; | ||||||
| import net.minecraftforge.fml.network.FMLNetworkConstants; | import net.minecraftforge.fmllegacy.network.FMLNetworkConstants; | ||||||
| import org.apache.commons.lang3.tuple.Pair; |  | ||||||
|  |  | ||||||
| @Mod("customwindowtitle") | @Mod("customwindowtitle") | ||||||
| public class CustomWindowTitle{ | public class CustomWindowTitle { | ||||||
| 	private final TitleConfig config; | 	private final TitleConfig config; | ||||||
| 	 | 	 | ||||||
| 	public CustomWindowTitle(){ | 	public CustomWindowTitle() { | ||||||
| 		config = TitleConfig.read(FMLPaths.CONFIGDIR.get().toString()); | 		config = TitleConfig.read(FMLPaths.CONFIGDIR.get().toString()); | ||||||
| 		ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.DISPLAYTEST, () -> Pair.of(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true)); | 		ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true)); | ||||||
| 		FMLJavaModLoadingContext.get().getModEventBus().register(this); | 		FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup); | ||||||
| 		TokenData.register(); | 		CommonTokenData.register(new TokenProvider()); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	@SubscribeEvent | 	@SubscribeEvent | ||||||
| 	public void onClientSetup(final FMLClientSetupEvent e){ | 	public void onClientSetup(final FMLClientSetupEvent e) { | ||||||
| 		e.getMinecraftSupplier().get().execute(this::updateTitle); | 		e.enqueueWork(this::updateTitle); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private void updateTitle(){ | 	private void updateTitle() { | ||||||
| 		final MainWindow window = Minecraft.getInstance().getMainWindow(); | 		final Window window = Minecraft.getInstance().getWindow(); | ||||||
| 		window.func_230148_b_(TitleParser.parse(config.getTitle())); | 		window.setTitle(TitleParser.parse(config.getTitle())); | ||||||
| 		 | 		 | ||||||
| 		if (config.hasIcon()){ | 		if (config.hasIcon()) { | ||||||
| 			window.setWindowIcon(config.readIcon16(), config.readIcon32()); | 			window.setIcon(config.readIcon16(), config.readIcon32()); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,36 +0,0 @@ | |||||||
| package chylex.customwindowtitle.forge; |  | ||||||
| import chylex.customwindowtitle.TokenException; |  | ||||||
| import net.minecraft.util.SharedConstants; |  | ||||||
| import net.minecraftforge.fml.ModList; |  | ||||||
| import net.minecraftforge.fml.loading.moddiscovery.ModFileInfo; |  | ||||||
| import net.minecraftforge.forgespi.language.IModInfo; |  | ||||||
| import static chylex.customwindowtitle.TitleTokens.noArgs; |  | ||||||
| import static chylex.customwindowtitle.TitleTokens.oneArg; |  | ||||||
| import static chylex.customwindowtitle.TitleTokens.registerToken; |  | ||||||
|  |  | ||||||
| final class TokenData{ |  | ||||||
| 	static void register(){ |  | ||||||
| 		registerToken("mcversion", noArgs(TokenData::getMinecraftVersion)); |  | ||||||
| 		registerToken("modversion", oneArg(TokenData::getModVersion)); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	static String getMinecraftVersion(){ |  | ||||||
| 		return SharedConstants.getVersion().getName(); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	static String getModVersion(final String modId){ |  | ||||||
| 		final ModFileInfo file = ModList.get().getModFileById(modId); |  | ||||||
| 		 |  | ||||||
| 		if (file == null){ |  | ||||||
| 			throw new TokenException("mod file for '" + modId + "' not found"); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		for(final IModInfo info : file.getMods()){ |  | ||||||
| 			if (info.getModId().equals(modId)){ |  | ||||||
| 				return info.getVersion().toString(); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		throw new TokenException("mod info for '" + modId + "' not found"); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -0,0 +1,25 @@ | |||||||
|  | package chylex.customwindowtitle.forge; | ||||||
|  | import chylex.customwindowtitle.TokenException; | ||||||
|  | import chylex.customwindowtitle.data.CommonTokenProvider; | ||||||
|  | import net.minecraftforge.fml.ModList; | ||||||
|  | import net.minecraftforge.forgespi.language.IModFileInfo; | ||||||
|  | import net.minecraftforge.forgespi.language.IModInfo; | ||||||
|  |  | ||||||
|  | final class TokenProvider implements CommonTokenProvider { | ||||||
|  | 	@Override | ||||||
|  | 	public String getModVersion(final String modId) { | ||||||
|  | 		final IModFileInfo file = ModList.get().getModFileById(modId); | ||||||
|  | 		 | ||||||
|  | 		if (file == null) { | ||||||
|  | 			throw new TokenException("mod file for '" + modId + "' not found"); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		for (final IModInfo info : file.getMods()) { | ||||||
|  | 			if (info.getModId().equals(modId)) { | ||||||
|  | 				return info.getVersion().toString(); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		throw new TokenException("mod info for '" + modId + "' not found"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| { |  | ||||||
|   "CustomWindowTitle": "coremods/main.js" |  | ||||||
| } |  | ||||||
| @@ -1,26 +1,27 @@ | |||||||
| modLoader = "javafml" | modLoader = "javafml" | ||||||
| loaderVersion = "[31,)" | loaderVersion = "[0,)" | ||||||
|  |  | ||||||
| authors = "chylex" | authors = "${author}" | ||||||
| license = "Unlicense" | license = "${license}" | ||||||
| issueTrackerURL = "https://github.com/chylex/Minecraft-Window-Title/issues" | issueTrackerURL = "${issuesURL}" | ||||||
|  |  | ||||||
| [[mods]] | [[mods]] | ||||||
| modId = "customwindowtitle" | modId = "${id}" | ||||||
| version = "1.1.1" | version = "${version}" | ||||||
| displayName = "Custom Window Title" | displayName = "${name}" | ||||||
| displayURL = "https://github.com/chylex/Minecraft-Window-Title" | description = "${description}" | ||||||
|  | displayURL = "${sourcesURL}" | ||||||
|  |  | ||||||
| [[dependencies.customwindowtitle]] | [[dependencies.${id}]] | ||||||
| modId = "minecraft" | modId = "minecraft" | ||||||
| mandatory = true | mandatory = true | ||||||
| versionRange = "[1.15.2,)" | versionRange = "[${minimumMinecraftVersion},)" | ||||||
| ordering = "NONE" | ordering = "NONE" | ||||||
| side = "CLIENT" | side = "CLIENT" | ||||||
|  |  | ||||||
| [[dependencies.customwindowtitle]] | [[dependencies.${id}]] | ||||||
| modId = "forge" | modId = "forge" | ||||||
| mandatory = true | mandatory = true | ||||||
| versionRange = "[31,)" | versionRange = "[${minimumForgeVersion},)" | ||||||
| ordering = "NONE" | ordering = "NONE" | ||||||
| side = "CLIENT" | side = "CLIENT" | ||||||
|   | |||||||
| @@ -1,19 +0,0 @@ | |||||||
| function initializeCoreMod(){ |  | ||||||
|     var opcodes = Java.type("org.objectweb.asm.Opcodes"); |  | ||||||
|     var InsnNode = Java.type("org.objectweb.asm.tree.InsnNode"); |  | ||||||
|  |  | ||||||
|     return { |  | ||||||
|         "CustomWindowTitle": { |  | ||||||
|             "target": { |  | ||||||
|                 "type": "METHOD", |  | ||||||
|                 "class": "net.minecraft.client.Minecraft", |  | ||||||
|                 "methodName": "func_230150_b_", |  | ||||||
|                 "methodDesc": "()V" |  | ||||||
|             }, |  | ||||||
|             "transformer": function(methodNode){ |  | ||||||
|                 methodNode.instructions.insert(new InsnNode(opcodes.RETURN)); |  | ||||||
|                 return methodNode; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     }; |  | ||||||
| } |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module type="JAVA_MODULE" version="4"> |  | ||||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$" /> |  | ||||||
|     <orderEntry type="inheritedJdk" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|     <orderEntry type="module" module-name="Fabric" /> |  | ||||||
|     <orderEntry type="module" module-name="Forge" /> |  | ||||||
|   </component> |  | ||||||
| </module> |  | ||||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @@ -58,6 +58,13 @@ title = "Minecraft {mcversion} - Custom Window Title {modversion:customwindowtit | |||||||
|  |  | ||||||
| # For Developers | # For Developers | ||||||
|  |  | ||||||
| Currently the common source files (package `chylex.customwindowtitle`) are just duplicated in the Forge and Fabric folders, and the jar files are combined with a horrible python script. If anyone has the time and patience to clean it up, I'd appreciate a Pull Request :P | The mod sources are organized into 3 projects: | ||||||
|  | - `src/` contains common source files and mixins | ||||||
|  | - `Fabric/src/` contains source files specific for Fabric | ||||||
|  | - `Forge/src/` contains source files specific for Forge | ||||||
|  |  | ||||||
| For now, you can build either separate Forge and Fabric projects using `gradlew build` in either folder, or run `python BuildMerge.py` to automatically build both and combine them into a single `.jar` file. | The Gradle project provides the following tasks: | ||||||
|  | - `setupIdea` generates Minecraft sources and run configurations for IntelliJ IDEA | ||||||
|  | - `assemble` creates 2 `.jar` files in the `build/dist` folder - one for Forge, one for Fabric | ||||||
|  |  | ||||||
|  | When building against a Minecraft version that is only supported by one mod loader, open `gradle.properties` and comment or remove either `forgeVersion` or `fabricVersion` to disable them. | ||||||
|   | |||||||
							
								
								
									
										179
									
								
								build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,179 @@ | |||||||
|  | import org.gradle.api.file.DuplicatesStrategy.EXCLUDE | ||||||
|  | import java.text.SimpleDateFormat | ||||||
|  | import java.util.Date | ||||||
|  |  | ||||||
|  | val modId: String by project | ||||||
|  | val modName: String by project | ||||||
|  | val modDescription: String by project | ||||||
|  | val modAuthor: String by project | ||||||
|  | val modVersion: String by project | ||||||
|  | val modLicense: String by project | ||||||
|  | val modSourcesURL: String by project | ||||||
|  | val modIssuesURL: String by project | ||||||
|  |  | ||||||
|  | val minecraftVersion: String by project | ||||||
|  | val mixinVersion: String by project | ||||||
|  |  | ||||||
|  | val minimumMinecraftVersion: String by project | ||||||
|  | val minimumForgeVersion: String by project | ||||||
|  | val minimumFabricVersion: String by project | ||||||
|  |  | ||||||
|  | val modNameStripped = modName.replace(" ", "") | ||||||
|  | val jarVersion = "$minecraftVersion+v$modVersion" | ||||||
|  |  | ||||||
|  | buildscript { | ||||||
|  | 	repositories { | ||||||
|  | 		maven("https://repo.spongepowered.org/maven") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | plugins { | ||||||
|  | 	`java-library` | ||||||
|  | 	idea | ||||||
|  | 	id("org.spongepowered.gradle.vanilla") version "0.2.1-SNAPSHOT" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | idea { | ||||||
|  | 	module { | ||||||
|  | 		excludeDirs.add(file("gradle")) | ||||||
|  | 		excludeDirs.add(file("run")) | ||||||
|  | 		 | ||||||
|  | 		if (findProject(":Forge") == null) { | ||||||
|  | 			excludeDirs.add(file("Forge")) | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if (findProject(":Fabric") == null) { | ||||||
|  | 			excludeDirs.add(file("Fabric")) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | repositories { | ||||||
|  | 	maven("https://repo.spongepowered.org/maven") | ||||||
|  | 	mavenCentral() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | dependencies { | ||||||
|  | 	implementation("org.spongepowered:mixin:$mixinVersion") | ||||||
|  | 	api("com.google.code.findbugs:jsr305:3.0.2") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | base { | ||||||
|  | 	archivesName.set("$modNameStripped-Common") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | minecraft { | ||||||
|  | 	version(minecraftVersion) | ||||||
|  | 	runs.clear() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | allprojects { | ||||||
|  | 	group = "com.$modAuthor.$modId" | ||||||
|  | 	version = modVersion | ||||||
|  | 	 | ||||||
|  | 	apply(plugin = "java") | ||||||
|  | 	 | ||||||
|  | 	dependencies { | ||||||
|  | 		implementation("org.jetbrains:annotations:22.0.0") | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	extensions.getByType<JavaPluginExtension>().apply { | ||||||
|  | 		toolchain.languageVersion.set(JavaLanguageVersion.of(16)) | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	tasks.withType<JavaCompile> { | ||||||
|  | 		options.encoding = "UTF-8" | ||||||
|  | 		options.release.set(16) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subprojects { | ||||||
|  | 	repositories { | ||||||
|  | 		maven("https://repo.spongepowered.org/maven") | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	dependencies { | ||||||
|  | 		implementation(rootProject) | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	base { | ||||||
|  | 		archivesName.set("$modNameStripped-${project.name}") | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	tasks.withType<JavaCompile> { | ||||||
|  | 		source({ rootProject.sourceSets.main.get().allSource }) | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	tasks.processResources { | ||||||
|  | 		inputs.property("id", modId) | ||||||
|  | 		inputs.property("name", modName) | ||||||
|  | 		inputs.property("description", modDescription) | ||||||
|  | 		inputs.property("version", modVersion) | ||||||
|  | 		inputs.property("author", modAuthor) | ||||||
|  | 		inputs.property("license", modLicense) | ||||||
|  | 		inputs.property("sourcesURL", modSourcesURL) | ||||||
|  | 		inputs.property("issuesURL", modIssuesURL) | ||||||
|  | 		inputs.property("minimumMinecraftVersion", minimumMinecraftVersion) | ||||||
|  | 		inputs.property("minimumForgeVersion", minimumForgeVersion) | ||||||
|  | 		inputs.property("minimumFabricVersion", minimumFabricVersion) | ||||||
|  | 		 | ||||||
|  | 		from(rootProject.sourceSets.main.get().resources) { | ||||||
|  | 			expand(inputs.properties) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	tasks.jar { | ||||||
|  | 		archiveVersion.set(jarVersion) | ||||||
|  | 		 | ||||||
|  | 		from(rootProject.file("LICENSE")) | ||||||
|  | 		 | ||||||
|  | 		manifest { | ||||||
|  | 			attributes( | ||||||
|  | 				"Specification-Title" to modId, | ||||||
|  | 				"Specification-Vendor" to modAuthor, | ||||||
|  | 				"Specification-Version" to "1", | ||||||
|  | 				"Implementation-Title" to "$modNameStripped-${project.name}", | ||||||
|  | 				"Implementation-Vendor" to modAuthor, | ||||||
|  | 				"Implementation-Version" to modVersion, | ||||||
|  | 				"Implementation-Timestamp" to SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(Date()), | ||||||
|  | 				"MixinConfigs" to "$modId.mixins.json" | ||||||
|  | 			) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	tasks.test { | ||||||
|  | 		onlyIf { false } | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tasks.register("setupIdea") { | ||||||
|  | 	group = "mod" | ||||||
|  | 	 | ||||||
|  | 	dependsOn(tasks.findByName("decompile")) | ||||||
|  | 	 | ||||||
|  | 	val forge = findProject(":Forge") | ||||||
|  | 	if (forge != null) { | ||||||
|  | 		dependsOn(forge.tasks.getByName("genIntellijRuns")) | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	val fabric = findProject(":Fabric") | ||||||
|  | 	if (fabric != null) { | ||||||
|  | 		dependsOn(fabric.tasks.getByName("genSources")) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | val copyJars = tasks.register<Copy>("copyJars") { | ||||||
|  | 	group = "build" | ||||||
|  | 	duplicatesStrategy = EXCLUDE | ||||||
|  | 	 | ||||||
|  | 	for (subproject in subprojects) { | ||||||
|  | 		dependsOn(subproject.tasks.assemble) | ||||||
|  | 		from(subproject.base.libsDirectory.file("${subproject.base.archivesName.get()}-$jarVersion.jar")) | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	into(file("${project.buildDir}/dist")) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tasks.assemble { | ||||||
|  | 	finalizedBy(copyJars) | ||||||
|  | } | ||||||
							
								
								
									
										25
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | # Mod | ||||||
|  | modId=customwindowtitle | ||||||
|  | modName=Custom Window Title | ||||||
|  | modDescription=Customize window title and icon. | ||||||
|  | modAuthor=chylex | ||||||
|  | modVersion=1.1.1 | ||||||
|  | modLicense=Unlicense | ||||||
|  | modSourcesURL=https://github.com/chylex/Minecraft-Window-Title | ||||||
|  | modIssuesURL=https://github.com/chylex/Minecraft-Window-Title/issues | ||||||
|  |  | ||||||
|  | # Dependencies | ||||||
|  | minecraftVersion=1.17.1 | ||||||
|  | forgeVersion=37.0.75 | ||||||
|  | fabricVersion=0.11.7 | ||||||
|  | loomVersion=0.12 | ||||||
|  | mixinVersion=0.8.4 | ||||||
|  |  | ||||||
|  | # Constraints | ||||||
|  | minimumMinecraftVersion=1.17 | ||||||
|  | minimumForgeVersion=31.2.45 | ||||||
|  | minimumFabricVersion=0.7.2 | ||||||
|  |  | ||||||
|  | # Gradle | ||||||
|  | org.gradle.jvmargs=-Xmx3G | ||||||
|  | org.gradle.daemon=false | ||||||
										
											Binary file not shown.
										
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| distributionBase=GRADLE_USER_HOME | distributionBase=GRADLE_USER_HOME | ||||||
| distributionPath=wrapper/dists | distributionPath=wrapper/dists | ||||||
|  | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip | ||||||
| zipStoreBase=GRADLE_USER_HOME | zipStoreBase=GRADLE_USER_HOME | ||||||
| zipStorePath=wrapper/dists | zipStorePath=wrapper/dists | ||||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip |  | ||||||
							
								
								
									
										53
									
								
								Fabric/gradlew → gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								Fabric/gradlew → gradlew
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/env sh | #!/usr/bin/env bash | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
| # Copyright 2015 the original author or authors. | # Copyright 2015 the original author or authors. | ||||||
| @@ -72,7 +72,7 @@ case "`uname`" in | |||||||
|   Darwin* ) |   Darwin* ) | ||||||
|     darwin=true |     darwin=true | ||||||
|     ;; |     ;; | ||||||
|   MINGW* ) |   MSYS* | MINGW* ) | ||||||
|     msys=true |     msys=true | ||||||
|     ;; |     ;; | ||||||
|   NONSTOP* ) |   NONSTOP* ) | ||||||
| @@ -82,6 +82,7 @@ esac | |||||||
| 
 | 
 | ||||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| # Determine the Java command to use to start the JVM. | # Determine the Java command to use to start the JVM. | ||||||
| if [ -n "$JAVA_HOME" ] ; then | if [ -n "$JAVA_HOME" ] ; then | ||||||
|     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||||||
| @@ -125,10 +126,11 @@ if $darwin; then | |||||||
|     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" |     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # For Cygwin, switch paths to Windows format before running java | # For Cygwin or MSYS, switch paths to Windows format before running java | ||||||
| if $cygwin ; then | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then | ||||||
|     APP_HOME=`cygpath --path --mixed "$APP_HOME"` |     APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||||||
|     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` |     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||||||
|  | 
 | ||||||
|     JAVACMD=`cygpath --unix "$JAVACMD"` |     JAVACMD=`cygpath --unix "$JAVACMD"` | ||||||
| 
 | 
 | ||||||
|     # We build the pattern for arguments to be converted via cygpath |     # We build the pattern for arguments to be converted via cygpath | ||||||
| @@ -154,35 +156,28 @@ if $cygwin ; then | |||||||
|         else |         else | ||||||
|             eval `echo args$i`="\"$arg\"" |             eval `echo args$i`="\"$arg\"" | ||||||
|         fi |         fi | ||||||
|         i=$((i+1)) |         i=`expr $i + 1` | ||||||
|     done |     done | ||||||
|     case $i in |     case $i in | ||||||
|         (0) set -- ;; |         0) set -- ;; | ||||||
|         (1) set -- "$args0" ;; |         1) set -- "$args0" ;; | ||||||
|         (2) set -- "$args0" "$args1" ;; |         2) set -- "$args0" "$args1" ;; | ||||||
|         (3) set -- "$args0" "$args1" "$args2" ;; |         3) set -- "$args0" "$args1" "$args2" ;; | ||||||
|         (4) set -- "$args0" "$args1" "$args2" "$args3" ;; |         4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||||||
|         (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; |         5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||||||
|         (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; |         6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||||||
|         (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; |         7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||||||
|         (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; |         8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||||||
|         (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; |         9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||||||
|     esac |     esac | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Escape application args | ARGV=("$@") | ||||||
| save () { | eval set -- $DEFAULT_JVM_OPTS | ||||||
|     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done |  | ||||||
|     echo " " |  | ||||||
| } |  | ||||||
| APP_ARGS=$(save "$@") |  | ||||||
| 
 | 
 | ||||||
| # Collect all arguments for the java command, following the shell quoting and substitution rules | IFS=$' | ||||||
| eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ' read -rd '' -a JAVA_OPTS_ARR <<< "$(echo $JAVA_OPTS | xargs -n1)" | ||||||
|  | IFS=$' | ||||||
|  | ' read -rd '' -a GRADLE_OPTS_ARR <<< "$(echo $GRADLE_OPTS | xargs -n1)" | ||||||
| 
 | 
 | ||||||
| # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | exec "$JAVACMD" "$@" "${JAVA_OPTS_ARR[@]}" "${GRADLE_OPTS_ARR[@]}" "-Dorg.gradle.appname=$APP_BASE_NAME" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "${ARGV[@]}" | ||||||
| if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then |  | ||||||
|   cd "$(dirname "$0")" |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| exec "$JAVACMD" "$@" |  | ||||||
							
								
								
									
										25
									
								
								Fabric/gradlew.bat → gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								Fabric/gradlew.bat → gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. | |||||||
| set APP_BASE_NAME=%~n0 | set APP_BASE_NAME=%~n0 | ||||||
| set APP_HOME=%DIRNAME% | set APP_HOME=%DIRNAME% | ||||||
| 
 | 
 | ||||||
|  | @rem Resolve any "." and ".." in APP_HOME to make it shorter. | ||||||
|  | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | ||||||
|  | 
 | ||||||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||||
| set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||||||
| 
 | 
 | ||||||
| @@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome | |||||||
| 
 | 
 | ||||||
| set JAVA_EXE=java.exe | set JAVA_EXE=java.exe | ||||||
| %JAVA_EXE% -version >NUL 2>&1 | %JAVA_EXE% -version >NUL 2>&1 | ||||||
| if "%ERRORLEVEL%" == "0" goto init | if "%ERRORLEVEL%" == "0" goto execute | ||||||
| 
 | 
 | ||||||
| echo. | echo. | ||||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||||
| @@ -51,7 +54,7 @@ goto fail | |||||||
| set JAVA_HOME=%JAVA_HOME:"=% | set JAVA_HOME=%JAVA_HOME:"=% | ||||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||||
| 
 | 
 | ||||||
| if exist "%JAVA_EXE%" goto init | if exist "%JAVA_EXE%" goto execute | ||||||
| 
 | 
 | ||||||
| echo. | echo. | ||||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||||
| @@ -61,28 +64,14 @@ echo location of your Java installation. | |||||||
| 
 | 
 | ||||||
| goto fail | goto fail | ||||||
| 
 | 
 | ||||||
| :init |  | ||||||
| @rem Get command-line arguments, handling Windows variants |  | ||||||
| 
 |  | ||||||
| if not "%OS%" == "Windows_NT" goto win9xME_args |  | ||||||
| 
 |  | ||||||
| :win9xME_args |  | ||||||
| @rem Slurp the command line arguments. |  | ||||||
| set CMD_LINE_ARGS= |  | ||||||
| set _SKIP=2 |  | ||||||
| 
 |  | ||||||
| :win9xME_args_slurp |  | ||||||
| if "x%~1" == "x" goto execute |  | ||||||
| 
 |  | ||||||
| set CMD_LINE_ARGS=%* |  | ||||||
| 
 |  | ||||||
| :execute | :execute | ||||||
| @rem Setup the command line | @rem Setup the command line | ||||||
| 
 | 
 | ||||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| @rem Execute Gradle | @rem Execute Gradle | ||||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||||
| 
 | 
 | ||||||
| :end | :end | ||||||
| @rem End local scope for the variables with windows NT shell | @rem End local scope for the variables with windows NT shell | ||||||
							
								
								
									
										23
									
								
								settings.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								settings.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | rootProject.name = "Minecraft-Window-Title" | ||||||
|  |  | ||||||
|  | pluginManagement { | ||||||
|  | 	repositories { | ||||||
|  | 		gradlePluginPortal() | ||||||
|  | 		maven(url = "https://maven.fabricmc.net/") { name = "Fabric" } | ||||||
|  | 		maven(url = "https://repo.spongepowered.org/repository/maven-public/") { name = "Sponge Snapshots" } | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	plugins { | ||||||
|  | 		if (settings.extra.has("loomVersion")) { | ||||||
|  | 			id("fabric-loom") version "${settings.extra["loomVersion"]}-SNAPSHOT" | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if (settings.extra.has("forgeVersion")) { | ||||||
|  | 	include("Forge") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if (settings.extra.has("fabricVersion")) { | ||||||
|  | 	include("Fabric") | ||||||
|  | } | ||||||
| @@ -7,15 +7,14 @@ import java.nio.file.Path; | |||||||
| import java.nio.file.Paths; | import java.nio.file.Paths; | ||||||
| import java.nio.file.StandardOpenOption; | import java.nio.file.StandardOpenOption; | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.LinkedHashMap; | import java.util.LinkedHashMap; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| public final class TitleConfig{ | public final class TitleConfig { | ||||||
| 	private static final Map<String, String> DEFAULTS; | 	private static final Map<String, String> DEFAULTS; | ||||||
| 	 | 	 | ||||||
| 	static{ | 	static { | ||||||
| 		final Map<String, String> defaults = new LinkedHashMap<>(); | 		final Map<String, String> defaults = new LinkedHashMap<>(); | ||||||
| 		 | 		 | ||||||
| 		defaults.put("title", "Minecraft {mcversion}"); | 		defaults.put("title", "Minecraft {mcversion}"); | ||||||
| @@ -25,34 +24,34 @@ public final class TitleConfig{ | |||||||
| 		DEFAULTS = Collections.unmodifiableMap(defaults); | 		DEFAULTS = Collections.unmodifiableMap(defaults); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public static TitleConfig read(final String folder){ | 	public static TitleConfig read(final String folder) { | ||||||
| 		final Path configFile = Paths.get(folder, "customwindowtitle-client.toml"); | 		final Path configFile = Paths.get(folder, "customwindowtitle-client.toml"); | ||||||
| 		final Map<String, String> config = new LinkedHashMap<>(DEFAULTS); | 		final Map<String, String> config = new LinkedHashMap<>(DEFAULTS); | ||||||
| 		 | 		 | ||||||
| 		try{ | 		try { | ||||||
| 			if (!Files.exists(configFile)){ | 			if (!Files.exists(configFile)) { | ||||||
| 				Files.write(configFile, config.entrySet().stream().map(entry -> String.format("%s = '%s'", entry.getKey(), entry.getValue())).collect(Collectors.toList()), StandardCharsets.UTF_8); | 				Files.write(configFile, config.entrySet().stream().map(entry -> String.format("%s = '%s'", entry.getKey(), entry.getValue())).collect(Collectors.toList()), StandardCharsets.UTF_8); | ||||||
| 			} | 			} | ||||||
| 			else{ | 			else { | ||||||
| 				Files.readAllLines(configFile, StandardCharsets.UTF_8).stream().map(String::trim).filter(line -> !line.isEmpty()).forEach(line -> { | 				Files.readAllLines(configFile, StandardCharsets.UTF_8).stream().map(String::trim).filter(line -> !line.isEmpty()).forEach(line -> { | ||||||
| 					final String[] split = line.split("=", 2); | 					final String[] split = line.split("=", 2); | ||||||
| 					 | 					 | ||||||
| 					if (split.length != 2){ | 					if (split.length != 2) { | ||||||
| 						throw new RuntimeException("CustomWindowTitle configuration has an invalid line: " + line); | 						throw new RuntimeException("CustomWindowTitle configuration has an invalid line: " + line); | ||||||
| 					} | 					} | ||||||
| 					 | 					 | ||||||
| 					final String key = split[0].trim(); | 					final String key = split[0].trim(); | ||||||
| 					final String value = parseTrimmedValue(split[1].trim()); | 					final String value = parseTrimmedValue(split[1].trim()); | ||||||
| 					 | 					 | ||||||
| 					if (config.containsKey(key)){ | 					if (config.containsKey(key)) { | ||||||
| 						config.put(key, value); | 						config.put(key, value); | ||||||
| 					} | 					} | ||||||
| 					else{ | 					else { | ||||||
| 						throw new RuntimeException("CustomWindowTitle configuration has an invalid key: " + key); | 						throw new RuntimeException("CustomWindowTitle configuration has an invalid key: " + key); | ||||||
| 					} | 					} | ||||||
| 				}); | 				}); | ||||||
| 			} | 			} | ||||||
| 		}catch(final IOException e){ | 		} catch (final IOException e) { | ||||||
| 			throw new RuntimeException("CustomWindowTitle configuration error", e); | 			throw new RuntimeException("CustomWindowTitle configuration error", e); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| @@ -62,33 +61,33 @@ public final class TitleConfig{ | |||||||
| 		final Path pathIcon16 = icon16.isEmpty() ? null : Paths.get(folder, icon16); | 		final Path pathIcon16 = icon16.isEmpty() ? null : Paths.get(folder, icon16); | ||||||
| 		final Path pathIcon32 = icon32.isEmpty() ? null : Paths.get(folder, icon32); | 		final Path pathIcon32 = icon32.isEmpty() ? null : Paths.get(folder, icon32); | ||||||
| 		 | 		 | ||||||
| 		if ((pathIcon16 == null) != (pathIcon32 == null)){ | 		if ((pathIcon16 == null) != (pathIcon32 == null)) { | ||||||
| 			throw new RuntimeException("CustomWindowTitle configuration specifies only one icon, both 'icon16' and 'icon32' must be set."); | 			throw new RuntimeException("CustomWindowTitle configuration specifies only one icon, both 'icon16' and 'icon32' must be set."); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		if (pathIcon16 != null && Files.notExists(pathIcon16)){ | 		if (pathIcon16 != null && Files.notExists(pathIcon16)) { | ||||||
| 			throw new RuntimeException("CustomWindowTitle 16x16 icon not found: " + pathIcon16); | 			throw new RuntimeException("CustomWindowTitle 16x16 icon not found: " + pathIcon16); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		if (pathIcon32 != null && Files.notExists(pathIcon32)){ | 		if (pathIcon32 != null && Files.notExists(pathIcon32)) { | ||||||
| 			throw new RuntimeException("CustomWindowTitle 32x32 icon not found: " + pathIcon32); | 			throw new RuntimeException("CustomWindowTitle 32x32 icon not found: " + pathIcon32); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		return new TitleConfig(config.get("title"), pathIcon16, pathIcon32); | 		return new TitleConfig(config.get("title"), pathIcon16, pathIcon32); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private static String parseTrimmedValue(String value){ | 	private static String parseTrimmedValue(String value) { | ||||||
| 		if (value.isEmpty()){ | 		if (value.isEmpty()) { | ||||||
| 			return value; | 			return value; | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		final char surrounding = value.charAt(0); | 		final char surrounding = value.charAt(0); | ||||||
| 		final int length = value.length(); | 		final int length = value.length(); | ||||||
| 		 | 		 | ||||||
| 		if (value.charAt(length - 1) == surrounding){ | 		if (value.charAt(length - 1) == surrounding) { | ||||||
| 			value = value.substring(1, length - 1); | 			value = value.substring(1, length - 1); | ||||||
| 			 | 			 | ||||||
| 			if (surrounding == '"'){ | 			if (surrounding == '"') { | ||||||
| 				value = value.replace("\\\"", "\"").replace("\\\\", "\\"); | 				value = value.replace("\\\"", "\"").replace("\\\\", "\\"); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -100,32 +99,32 @@ public final class TitleConfig{ | |||||||
| 	private final Path icon16; | 	private final Path icon16; | ||||||
| 	private final Path icon32; | 	private final Path icon32; | ||||||
| 	 | 	 | ||||||
| 	private TitleConfig(final String title, final Path icon16, final Path icon32){ | 	private TitleConfig(final String title, final Path icon16, final Path icon32) { | ||||||
| 		this.title = title; | 		this.title = title; | ||||||
| 		this.icon16 = icon16; | 		this.icon16 = icon16; | ||||||
| 		this.icon32 = icon32; | 		this.icon32 = icon32; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public String getTitle(){ | 	public String getTitle() { | ||||||
| 		return title; | 		return title; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public boolean hasIcon(){ | 	public boolean hasIcon() { | ||||||
| 		return icon16 != null && icon32 != null; | 		return icon16 != null && icon32 != null; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public InputStream readIcon16(){ | 	public InputStream readIcon16() { | ||||||
| 		try{ | 		try { | ||||||
| 			return Files.newInputStream(icon16, StandardOpenOption.READ); | 			return Files.newInputStream(icon16, StandardOpenOption.READ); | ||||||
| 		}catch(final IOException e){ | 		} catch (final IOException e) { | ||||||
| 			throw new RuntimeException("CustomWindowTitle could not open the specified 16x16 icon: " + icon16, e); | 			throw new RuntimeException("CustomWindowTitle could not open the specified 16x16 icon: " + icon16, e); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public InputStream readIcon32(){ | 	public InputStream readIcon32() { | ||||||
| 		try{ | 		try { | ||||||
| 			return Files.newInputStream(icon32, StandardOpenOption.READ); | 			return Files.newInputStream(icon32, StandardOpenOption.READ); | ||||||
| 		}catch(final IOException e){ | 		} catch (final IOException e) { | ||||||
| 			throw new RuntimeException("CustomWindowTitle could not open the specified 32x32 icon: " + icon16, e); | 			throw new RuntimeException("CustomWindowTitle could not open the specified 32x32 icon: " + icon16, e); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -6,32 +6,32 @@ import org.apache.logging.log4j.Logger; | |||||||
| import java.util.regex.Matcher; | import java.util.regex.Matcher; | ||||||
| import java.util.regex.Pattern; | import java.util.regex.Pattern; | ||||||
| 
 | 
 | ||||||
| public final class TitleParser{ | public final class TitleParser { | ||||||
| 	private static final Pattern tokenRegex = Pattern.compile("\\{([a-z]+)(?::([^}]+))?}"); | 	private static final Pattern tokenRegex = Pattern.compile("\\{([a-z]+)(?::([^}]+))?}"); | ||||||
| 	private static final Logger logger = LogManager.getLogger("CustomWindowTitle"); | 	private static final Logger logger = LogManager.getLogger("CustomWindowTitle"); | ||||||
| 	 | 	 | ||||||
| 	public static String parse(final String input){ | 	public static String parse(final String input) { | ||||||
| 		final StringBuffer buffer = new StringBuffer(); | 		final StringBuffer buffer = new StringBuffer(); | ||||||
| 		final Matcher matcher = tokenRegex.matcher(input); | 		final Matcher matcher = tokenRegex.matcher(input); | ||||||
| 		 | 		 | ||||||
| 		while(matcher.find()){ | 		while (matcher.find()) { | ||||||
| 			final String token = matcher.group(1); | 			final String token = matcher.group(1); | ||||||
| 			final String[] args = StringUtils.split(matcher.group(2), ','); | 			final String[] args = StringUtils.split(matcher.group(2), ','); | ||||||
| 			 | 			 | ||||||
| 			String result = null; | 			String result = null; | ||||||
| 			 | 			 | ||||||
| 			try{ | 			try { | ||||||
| 				result = TitleTokens.getTokenFunction(token).apply(args == null ? ArrayUtils.EMPTY_STRING_ARRAY : args); | 				result = TitleTokens.getTokenFunction(token).apply(args == null ? ArrayUtils.EMPTY_STRING_ARRAY : args); | ||||||
| 			}catch(final TokenException e){ | 			} catch (final TokenException e) { | ||||||
| 				logger.warn("Error processing token '" + token + "': " + e.getMessage()); | 				logger.warn("Error processing token '" + token + "': " + e.getMessage()); | ||||||
| 			}catch(final Throwable t){ | 			} catch (final Throwable t) { | ||||||
| 				logger.warn("Error processing token '" + token + "': " + t.getMessage(), t); | 				logger.warn("Error processing token '" + token + "': " + t.getMessage(), t); | ||||||
| 			} | 			} | ||||||
| 			 | 			 | ||||||
| 			if (result == null){ | 			if (result == null) { | ||||||
| 				matcher.appendReplacement(buffer, input.substring(matcher.start(), matcher.end())); | 				matcher.appendReplacement(buffer, input.substring(matcher.start(), matcher.end())); | ||||||
| 			} | 			} | ||||||
| 			else{ | 			else { | ||||||
| 				matcher.appendReplacement(buffer, result); | 				matcher.appendReplacement(buffer, result); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -42,5 +42,5 @@ public final class TitleParser{ | |||||||
| 	 | 	 | ||||||
| 	// Static class | 	// Static class | ||||||
| 	 | 	 | ||||||
| 	private TitleParser(){} | 	private TitleParser() {} | ||||||
| } | } | ||||||
| @@ -5,39 +5,39 @@ import java.util.function.Function; | |||||||
| import java.util.function.Supplier; | import java.util.function.Supplier; | ||||||
| import java.util.function.UnaryOperator; | import java.util.function.UnaryOperator; | ||||||
| 
 | 
 | ||||||
| public final class TitleTokens{ | public final class TitleTokens { | ||||||
| 	 | 	 | ||||||
| 	// Registry | 	// Registry | ||||||
| 	 | 	 | ||||||
| 	private static final Map<String, Function<String[], String>> tokenMap = new HashMap<>(); | 	private static final Map<String, Function<String[], String>> tokenMap = new HashMap<>(); | ||||||
| 	 | 	 | ||||||
| 	public static void registerToken(final String token, final Function<String[], String> processor){ | 	public static void registerToken(final String token, final Function<String[], String> processor) { | ||||||
| 		tokenMap.putIfAbsent(token, processor); | 		tokenMap.putIfAbsent(token, processor); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public static Function<String[], String> getTokenFunction(final String token){ | 	public static Function<String[], String> getTokenFunction(final String token) { | ||||||
| 		return tokenMap.getOrDefault(token, args -> null); | 		return tokenMap.getOrDefault(token, args -> null); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	// Arguments | 	// Arguments | ||||||
| 	 | 	 | ||||||
| 	public static Function<String[], String> noArgs(final Supplier<String> func){ | 	public static Function<String[], String> noArgs(final Supplier<String> func) { | ||||||
| 		return args -> args.length > 0 ? fail("expected no arguments, got " + args.length) : func.get(); | 		return args -> args.length > 0 ? fail("expected no arguments, got " + args.length) : func.get(); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public static Function<String[], String> oneArg(final UnaryOperator<String> func){ | 	public static Function<String[], String> oneArg(final UnaryOperator<String> func) { | ||||||
| 		return args -> args.length != 1 ? fail("expected 1 argument, got " + args.length) : func.apply(args[0]); | 		return args -> args.length != 1 ? fail("expected 1 argument, got " + args.length) : func.apply(args[0]); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public static Function<String[], String> rangeArgs(final int min, final int max, final Function<String[], String> func){ | 	public static Function<String[], String> rangeArgs(final int min, final int max, final Function<String[], String> func) { | ||||||
| 		return args -> args.length < min || args.length > max ? fail("expected between " + min + " and " + max + " arguments, got " + args.length) : func.apply(args); | 		return args -> args.length < min || args.length > max ? fail("expected between " + min + " and " + max + " arguments, got " + args.length) : func.apply(args); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private static String fail(final String message){ | 	private static String fail(final String message) { | ||||||
| 		throw new TokenException(message); | 		throw new TokenException(message); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	// Static class | 	// Static class | ||||||
| 	 | 	 | ||||||
| 	private TitleTokens(){} | 	private TitleTokens() {} | ||||||
| } | } | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | package chylex.customwindowtitle; | ||||||
|  |  | ||||||
|  | public class TokenException extends RuntimeException { | ||||||
|  | 	public TokenException(final String message) { | ||||||
|  | 		super(message); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -0,0 +1,14 @@ | |||||||
|  | package chylex.customwindowtitle.data; | ||||||
|  |  | ||||||
|  | import static chylex.customwindowtitle.TitleTokens.noArgs; | ||||||
|  | import static chylex.customwindowtitle.TitleTokens.oneArg; | ||||||
|  | import static chylex.customwindowtitle.TitleTokens.registerToken; | ||||||
|  |  | ||||||
|  | public final class CommonTokenData { | ||||||
|  | 	public static void register(final CommonTokenProvider provider) { | ||||||
|  | 		registerToken("mcversion", noArgs(provider::getMinecraftVersion)); | ||||||
|  | 		registerToken("modversion", oneArg(provider::getModVersion)); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	private CommonTokenData() {} | ||||||
|  | } | ||||||
| @@ -0,0 +1,10 @@ | |||||||
|  | package chylex.customwindowtitle.data; | ||||||
|  | import net.minecraft.client.Minecraft; | ||||||
|  |  | ||||||
|  | public interface CommonTokenProvider { | ||||||
|  | 	default String getMinecraftVersion() { | ||||||
|  | 		return Minecraft.getInstance().getGame().getVersion().getName(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	String getModVersion(final String modId); | ||||||
|  | } | ||||||
| @@ -0,0 +1,14 @@ | |||||||
|  | package chylex.customwindowtitle.mixin; | ||||||
|  | import net.minecraft.client.Minecraft; | ||||||
|  | import org.spongepowered.asm.mixin.Mixin; | ||||||
|  | import org.spongepowered.asm.mixin.injection.At; | ||||||
|  | import org.spongepowered.asm.mixin.injection.Inject; | ||||||
|  | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; | ||||||
|  |  | ||||||
|  | @Mixin(Minecraft.class) | ||||||
|  | public final class DisableVanillaTitle { | ||||||
|  | 	@Inject(method = "updateTitle()V", at = @At("HEAD"), cancellable = true) | ||||||
|  | 	private void updateTitle(final CallbackInfo info) { | ||||||
|  | 		info.cancel(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										13
									
								
								src/main/resources/customwindowtitle.mixins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/main/resources/customwindowtitle.mixins.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | { | ||||||
|  |   "required": true, | ||||||
|  |   "minVersion": "0.8", | ||||||
|  |   "package": "chylex.customwindowtitle.mixin", | ||||||
|  |   "refmap": "customwindowtitle.refmap.json", | ||||||
|  |   "compatibilityLevel": "JAVA_16", | ||||||
|  |   "client": [ | ||||||
|  |     "DisableVanillaTitle" | ||||||
|  |   ], | ||||||
|  |   "injectors": { | ||||||
|  |     "defaultRequire": 1 | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|     "pack": { |     "pack": { | ||||||
|         "description": "Custom Window Title", |         "description": "${name}", | ||||||
|         "pack_format": 5, |         "pack_format": 5, | ||||||
|         "_comment": "" |         "_comment": "" | ||||||
|     } |     } | ||||||
		Reference in New Issue
	
	Block a user