Update for Minecraft 1.20.4
This commit is contained in:
		
							
								
								
									
										15
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,15 +1,18 @@ | |||||||
| # Ignore Gradle project-specific cache directory | # IntelliJ IDEA stuff | ||||||
|  | .idea/ | ||||||
|  |  | ||||||
|  | # VSCode stuff | ||||||
|  | .vscode/ | ||||||
|  |  | ||||||
|  | # Gradle project-specific cache directory | ||||||
| .gradle/ | .gradle/ | ||||||
|  |  | ||||||
| # Ignore Gradle build output directory | # Gradle build output directory | ||||||
| build/ | build/ | ||||||
| bin/ | bin/ | ||||||
|  |  | ||||||
| # Ignore run directory | # Run directory | ||||||
| run/ | run/ | ||||||
|  |  | ||||||
| # IntelliJ IDEA |  | ||||||
| .idea/ |  | ||||||
|  |  | ||||||
| # Remapped source file directory | # Remapped source file directory | ||||||
| remappedSrc/ | remappedSrc/ | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| MIT License | MIT License | ||||||
|  |  | ||||||
| Copyright (c) 2023 Adam Macdonald | Copyright (c) 2024 Adam Macdonald | ||||||
|  |  | ||||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
| of this software and associated documentation files (the "Software"), to deal | of this software and associated documentation files (the "Software"), to deal | ||||||
|   | |||||||
| @@ -6,9 +6,9 @@ org.gradle.parallel=true | |||||||
|  |  | ||||||
| # Fabric Properties | # Fabric Properties | ||||||
| # check these on https://fabricmc.net/develop | # check these on https://fabricmc.net/develop | ||||||
| minecraft_version=1.20.2 | minecraft_version=1.20.4 | ||||||
| yarn_mappings=1.20.2+build.4 | yarn_mappings=1.20.4+build.3 | ||||||
| loader_version=0.14.24 | loader_version=0.15.6 | ||||||
|  |  | ||||||
| # Mod Properties | # Mod Properties | ||||||
| mod_version = 0.1.2 | mod_version = 0.1.2 | ||||||
| @@ -16,4 +16,4 @@ maven_group = io.github.twokilohertz.hotbarreplace | |||||||
| archives_base_name = HotbarReplace | archives_base_name = HotbarReplace | ||||||
|  |  | ||||||
| # Dependencies | # Dependencies | ||||||
| fabric_version=0.90.4+1.20.2 | fabric_version=0.95.1+1.20.4 | ||||||
|   | |||||||
| @@ -28,34 +28,44 @@ public class HotbarReplace implements ModInitializer { | |||||||
|     public static void tryReplaceSlot(ItemPlacementContext context, Item item) { |     public static void tryReplaceSlot(ItemPlacementContext context, Item item) { | ||||||
|         // Return immediately if player is a spectator |         // Return immediately if player is a spectator | ||||||
|         PlayerEntity player = context.getPlayer(); |         PlayerEntity player = context.getPlayer(); | ||||||
|         if (player.isSpectator()) return; |         if (player.isSpectator()) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // Creative inventories don't run out of anyway |         // Creative inventories don't run out of anyway | ||||||
|         if (player.getAbilities().creativeMode) return; |         if (player.getAbilities().creativeMode) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // Get reference to player's current inventory |         // Get reference to player's current inventory | ||||||
|         PlayerInventory inventory = player.getInventory(); |         PlayerInventory inventory = player.getInventory(); | ||||||
|         if (inventory == null) return; |         if (inventory == null) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // Return if the inventory is empty |         // Return if the inventory is empty | ||||||
|         if (inventory.isEmpty()) return; |         if (inventory.isEmpty()) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // If current screen handler is null, return |         // If current screen handler is null, return | ||||||
|         if (player.currentScreenHandler == null) return; |         if (player.currentScreenHandler == null) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // Attempt to find a stack of matching items in the player's inventory |         // Attempt to find a stack of matching items in the player's inventory | ||||||
|         for (int i = 0; i < player.currentScreenHandler.slots.size(); i++) { |         for (int i = 0; i < player.currentScreenHandler.slots.size(); i++) { | ||||||
|             if (player.currentScreenHandler.slots.get(i).getStack().isOf(item)) { |             if (player.currentScreenHandler.slots.get(i).getStack().isOf(item)) { | ||||||
|                 // Simulate moving the stack from one slot to another |                 // Simulate moving the stack from one slot to another | ||||||
|                 if (client != null) { |                 if (client != null) { | ||||||
|                     client.interactionManager.clickSlot(player.currentScreenHandler.syncId, i, GLFW.GLFW_MOUSE_BUTTON_1, SlotActionType.PICKUP, player); |                     client.interactionManager.clickSlot(player.currentScreenHandler.syncId, i, GLFW.GLFW_MOUSE_BUTTON_1, | ||||||
|  |                             SlotActionType.PICKUP, player); | ||||||
|  |  | ||||||
|                     /* |                     /* | ||||||
|                      Wait 50 milliseconds (on another thread) before attempting to move the new stack |                      * Wait 50 milliseconds (on another thread) before attempting to move the new | ||||||
|                      PlayerInventory.MAIN_SIZE added to the selected slot (hotbar slot) is the correct slot ID |                      * stack | ||||||
|                     */ |                      * PlayerInventory.MAIN_SIZE added to the selected slot (hotbar slot) is the | ||||||
|  |                      * correct slot ID | ||||||
|  |                      */ | ||||||
|                     scheduler.schedule(() -> { |                     scheduler.schedule(() -> { | ||||||
|                         client.interactionManager.clickSlot(player.currentScreenHandler.syncId, inventory.selectedSlot + PlayerInventory.MAIN_SIZE, GLFW.GLFW_MOUSE_BUTTON_1, SlotActionType.PICKUP, player); |                         client.interactionManager.clickSlot(player.currentScreenHandler.syncId, | ||||||
|  |                                 inventory.selectedSlot + PlayerInventory.MAIN_SIZE, GLFW.GLFW_MOUSE_BUTTON_1, | ||||||
|  |                                 SlotActionType.PICKUP, player); | ||||||
|                     }, 50, TimeUnit.MILLISECONDS); |                     }, 50, TimeUnit.MILLISECONDS); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,13 +18,16 @@ public class BlockItemMixin { | |||||||
|     private void BlockItem_place_head(ItemPlacementContext context, CallbackInfoReturnable<ActionResult> info) { |     private void BlockItem_place_head(ItemPlacementContext context, CallbackInfoReturnable<ActionResult> info) { | ||||||
|         lastPlacedItem = context.getStack().getItem(); |         lastPlacedItem = context.getStack().getItem(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Inject(at = @At("TAIL"), method = "Lnet/minecraft/item/BlockItem;place(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/util/ActionResult;") |     @Inject(at = @At("TAIL"), method = "Lnet/minecraft/item/BlockItem;place(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/util/ActionResult;") | ||||||
|     private void mixin_BlockItem_place_tail(ItemPlacementContext context, CallbackInfoReturnable<ActionResult> info) { |     private void mixin_BlockItem_place_tail(ItemPlacementContext context, CallbackInfoReturnable<ActionResult> info) { | ||||||
|         // Early return if the block place action would fail |         // Early return if the block place action would fail | ||||||
|         if (info.getReturnValue() != ActionResult.SUCCESS) return; |         if (info.getReturnValue() != ActionResult.SUCCESS) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // Check if the stack is not empty, return if so |         // Check if the stack is not empty, return if so | ||||||
|         if (context.getStack().getCount() != 0) return; |         if (context.getStack().getCount() != 0) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|         // Try to replace the hotbar slot |         // Try to replace the hotbar slot | ||||||
|         HotbarReplace.tryReplaceSlot(context, lastPlacedItem); |         HotbarReplace.tryReplaceSlot(context, lastPlacedItem); | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ | |||||||
|   "schemaVersion": 1, |   "schemaVersion": 1, | ||||||
|   "id": "hotbarreplace", |   "id": "hotbarreplace", | ||||||
|   "version": "${version}", |   "version": "${version}", | ||||||
|  |  | ||||||
|   "name": "HotbarReplace", |   "name": "HotbarReplace", | ||||||
|   "description": "Replace blocks in your hotbar when you run out with blocks from your inventory", |   "description": "Replace blocks in your hotbar when you run out with blocks from your inventory", | ||||||
|   "authors": [ |   "authors": [ | ||||||
| @@ -13,10 +12,8 @@ | |||||||
|     "sources": "https://github.com/twokilohertz/HotbarReplace", |     "sources": "https://github.com/twokilohertz/HotbarReplace", | ||||||
|     "issues": "https://github.com/twokilohertz/HotbarReplace/issues" |     "issues": "https://github.com/twokilohertz/HotbarReplace/issues" | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "icon": "assets/hotbarreplace/icon.png", |   "icon": "assets/hotbarreplace/icon.png", | ||||||
|  |  | ||||||
|   "environment": "*", |   "environment": "*", | ||||||
|   "entrypoints": { |   "entrypoints": { | ||||||
|     "main": [ |     "main": [ | ||||||
| @@ -26,9 +23,8 @@ | |||||||
|   "mixins": [ |   "mixins": [ | ||||||
|     "hotbarreplace.mixins.json" |     "hotbarreplace.mixins.json" | ||||||
|   ], |   ], | ||||||
|  |  | ||||||
|   "depends": { |   "depends": { | ||||||
|     "fabricloader": ">=0.14.21", |     "fabricloader": ">=0.15.6", | ||||||
|     "fabric-api": "*", |     "fabric-api": "*", | ||||||
|     "minecraft": "~1.20", |     "minecraft": "~1.20", | ||||||
|     "java": ">=17" |     "java": ">=17" | ||||||
|   | |||||||
| @@ -3,8 +3,7 @@ | |||||||
|   "minVersion": "0.8", |   "minVersion": "0.8", | ||||||
|   "package": "io.github.twokilohertz.hotbarreplace.mixin", |   "package": "io.github.twokilohertz.hotbarreplace.mixin", | ||||||
|   "compatibilityLevel": "JAVA_17", |   "compatibilityLevel": "JAVA_17", | ||||||
|   "mixins": [ |   "mixins": [], | ||||||
|   ], |  | ||||||
|   "client": [ |   "client": [ | ||||||
|     "BlockItemMixin" |     "BlockItemMixin" | ||||||
|   ], |   ], | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Adam Macdonald
					Adam Macdonald