Skip to content

Commit 6e987a5

Browse files
committed
Implement ingredient checks, replace default sounds
1 parent e399a06 commit 6e987a5

File tree

4 files changed

+203
-59
lines changed

4 files changed

+203
-59
lines changed

src/main/java/mod/acgaming/extrasounds/config/ESConfig.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public static class SoundCategories
129129
@Config.Name("Pick/Place Sounds")
130130
@Config.Comment({
131131
"Categories of sounds when picking and placing items in GUIs",
132-
"Available categories: wood, dirt, gravel, sand, grass, wool, snow, ingot, nugget, gem, dust",
132+
"Available categories: dirt, dust, gem, grass, gravel, ingot, nugget, sand, snow, stone, wood, wool",
133133
"Syntax: CATEGORY;REGISTRY_NAME",
134134
"Use * for ore dictionary wildcards",
135135
"Examples | ingot;ore:example_ore | gem;mod_id:example_item"
@@ -141,7 +141,32 @@ public static class SoundCategories
141141
"ingot;ore:ingot*",
142142
"nugget;ore:nugget*",
143143
"snow;ore:snow",
144-
"wood;ore:stickWood"
144+
"stone;ore:stone*",
145+
"gem;minecraft:diamond_axe",
146+
"gem;minecraft:diamond_hoe",
147+
"gem;minecraft:diamond_pickaxe",
148+
"gem;minecraft:diamond_shovel",
149+
"gem;minecraft:diamond_sword",
150+
"ingot;minecraft:golden_axe",
151+
"ingot;minecraft:golden_hoe",
152+
"ingot;minecraft:golden_pickaxe",
153+
"ingot;minecraft:golden_shovel",
154+
"ingot;minecraft:golden_sword",
155+
"ingot;minecraft:iron_axe",
156+
"ingot;minecraft:iron_hoe",
157+
"ingot;minecraft:iron_pickaxe",
158+
"ingot;minecraft:iron_shovel",
159+
"ingot;minecraft:iron_sword",
160+
"stone;minecraft:stone_axe",
161+
"stone;minecraft:stone_hoe",
162+
"stone;minecraft:stone_pickaxe",
163+
"stone;minecraft:stone_shovel",
164+
"stone;minecraft:stone_sword",
165+
"wood;minecraft:wooden_axe",
166+
"wood;minecraft:wooden_hoe",
167+
"wood;minecraft:wooden_pickaxe",
168+
"wood;minecraft:wooden_shovel",
169+
"wood;minecraft:wooden_sword"
145170
};
146171
}
147172

src/main/java/mod/acgaming/extrasounds/sound/ESSoundEvents.java

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class ESSoundEvents
5050
public static SoundEvent pick_place_nugget;
5151
public static SoundEvent pick_place_sand;
5252
public static SoundEvent pick_place_snow;
53+
public static SoundEvent pick_place_stone;
5354
public static SoundEvent pick_place_wood;
5455
public static SoundEvent pick_place_wool;
5556
public static SoundEvent place_boat;
@@ -102,6 +103,7 @@ public static void preInit()
102103
pick_place_nugget = register("pick_place_nugget");
103104
pick_place_sand = register("pick_place_sand");
104105
pick_place_snow = register("pick_place_snow");
106+
pick_place_stone = register("pick_place_stone");
105107
pick_place_wood = register("pick_place_wood");
106108
pick_place_wool = register("pick_place_wool");
107109
place_boat = register("place_boat");
@@ -130,20 +132,20 @@ public static void getBackportedSounds()
130132
backportMap.put("assets/minecraft/sounds/block/bamboo/step6.ogg", "assets/extrasounds/sounds/block/bamboo/step6.ogg");
131133

132134
// PLANT CROP
133-
backportMap.put("assets/minecraft/sounds/item/plant/crop1.ogg", "assets/extrasounds/sounds/plant/crop1.ogg");
134-
backportMap.put("assets/minecraft/sounds/item/plant/crop2.ogg", "assets/extrasounds/sounds/plant/crop2.ogg");
135-
backportMap.put("assets/minecraft/sounds/item/plant/crop3.ogg", "assets/extrasounds/sounds/plant/crop3.ogg");
136-
backportMap.put("assets/minecraft/sounds/item/plant/crop4.ogg", "assets/extrasounds/sounds/plant/crop4.ogg");
137-
backportMap.put("assets/minecraft/sounds/item/plant/crop5.ogg", "assets/extrasounds/sounds/plant/crop5.ogg");
138-
backportMap.put("assets/minecraft/sounds/item/plant/crop6.ogg", "assets/extrasounds/sounds/plant/crop6.ogg");
135+
backportMap.put("assets/minecraft/sounds/item/plant/crop1.ogg", "assets/extrasounds/sounds/item/plant/crop1.ogg");
136+
backportMap.put("assets/minecraft/sounds/item/plant/crop2.ogg", "assets/extrasounds/sounds/item/plant/crop2.ogg");
137+
backportMap.put("assets/minecraft/sounds/item/plant/crop3.ogg", "assets/extrasounds/sounds/item/plant/crop3.ogg");
138+
backportMap.put("assets/minecraft/sounds/item/plant/crop4.ogg", "assets/extrasounds/sounds/item/plant/crop4.ogg");
139+
backportMap.put("assets/minecraft/sounds/item/plant/crop5.ogg", "assets/extrasounds/sounds/item/plant/crop5.ogg");
140+
backportMap.put("assets/minecraft/sounds/item/plant/crop6.ogg", "assets/extrasounds/sounds/item/plant/crop6.ogg");
139141

140142
// PLANT NETHERWART
141-
backportMap.put("assets/minecraft/sounds/item/plant/netherwart1.ogg", "assets/extrasounds/sounds/plant/netherwart1.ogg");
142-
backportMap.put("assets/minecraft/sounds/item/plant/netherwart2.ogg", "assets/extrasounds/sounds/plant/netherwart2.ogg");
143-
backportMap.put("assets/minecraft/sounds/item/plant/netherwart3.ogg", "assets/extrasounds/sounds/plant/netherwart3.ogg");
144-
backportMap.put("assets/minecraft/sounds/item/plant/netherwart4.ogg", "assets/extrasounds/sounds/plant/netherwart4.ogg");
145-
backportMap.put("assets/minecraft/sounds/item/plant/netherwart5.ogg", "assets/extrasounds/sounds/plant/netherwart5.ogg");
146-
backportMap.put("assets/minecraft/sounds/item/plant/netherwart6.ogg", "assets/extrasounds/sounds/plant/netherwart6.ogg");
143+
backportMap.put("assets/minecraft/sounds/item/plant/netherwart1.ogg", "assets/extrasounds/sounds/item/plant/netherwart1.ogg");
144+
backportMap.put("assets/minecraft/sounds/item/plant/netherwart2.ogg", "assets/extrasounds/sounds/item/plant/netherwart2.ogg");
145+
backportMap.put("assets/minecraft/sounds/item/plant/netherwart3.ogg", "assets/extrasounds/sounds/item/plant/netherwart3.ogg");
146+
backportMap.put("assets/minecraft/sounds/item/plant/netherwart4.ogg", "assets/extrasounds/sounds/item/plant/netherwart4.ogg");
147+
backportMap.put("assets/minecraft/sounds/item/plant/netherwart5.ogg", "assets/extrasounds/sounds/item/plant/netherwart5.ogg");
148+
backportMap.put("assets/minecraft/sounds/item/plant/netherwart6.ogg", "assets/extrasounds/sounds/item/plant/netherwart6.ogg");
147149

148150
// BEACON
149151
backportMap.put("assets/minecraft/sounds/block/beacon/ambient.ogg", "assets/extrasounds/sounds/block/beacon/ambient.ogg");
@@ -177,6 +179,27 @@ public static void getBackportedSounds()
177179
backportMap.put("assets/minecraft/sounds/enchant/soulspeed/soulspeed12.ogg", "assets/extrasounds/sounds/enchant/soulspeed/soulspeed12.ogg");
178180
backportMap.put("assets/minecraft/sounds/enchant/soulspeed/soulspeed13.ogg", "assets/extrasounds/sounds/enchant/soulspeed/soulspeed13.ogg");
179181

182+
// METAL
183+
backportMap.put("assets/minecraft/sounds/block/copper/step1.ogg", "assets/extrasounds/sounds/block/copper/step1.ogg");
184+
backportMap.put("assets/minecraft/sounds/block/copper/step2.ogg", "assets/extrasounds/sounds/block/copper/step2.ogg");
185+
backportMap.put("assets/minecraft/sounds/block/copper/step3.ogg", "assets/extrasounds/sounds/block/copper/step3.ogg");
186+
backportMap.put("assets/minecraft/sounds/block/copper/step4.ogg", "assets/extrasounds/sounds/block/copper/step4.ogg");
187+
backportMap.put("assets/minecraft/sounds/block/copper/step5.ogg", "assets/extrasounds/sounds/block/copper/step5.ogg");
188+
backportMap.put("assets/minecraft/sounds/block/copper/step6.ogg", "assets/extrasounds/sounds/block/copper/step6.ogg");
189+
190+
// GEM
191+
backportMap.put("assets/minecraft/sounds/block/amethyst/place1.ogg", "assets/extrasounds/sounds/block/amethyst/place1.ogg");
192+
backportMap.put("assets/minecraft/sounds/block/amethyst/place2.ogg", "assets/extrasounds/sounds/block/amethyst/place2.ogg");
193+
backportMap.put("assets/minecraft/sounds/block/amethyst/place3.ogg", "assets/extrasounds/sounds/block/amethyst/place3.ogg");
194+
backportMap.put("assets/minecraft/sounds/block/amethyst/place4.ogg", "assets/extrasounds/sounds/block/amethyst/place4.ogg");
195+
196+
// BONEMEAL
197+
backportMap.put("assets/minecraft/sounds/item/bonemeal/bonemeal1.ogg", "assets/extrasounds/sounds/item/bonemeal/bonemeal1.ogg");
198+
backportMap.put("assets/minecraft/sounds/item/bonemeal/bonemeal2.ogg", "assets/extrasounds/sounds/item/bonemeal/bonemeal2.ogg");
199+
backportMap.put("assets/minecraft/sounds/item/bonemeal/bonemeal3.ogg", "assets/extrasounds/sounds/item/bonemeal/bonemeal3.ogg");
200+
backportMap.put("assets/minecraft/sounds/item/bonemeal/bonemeal4.ogg", "assets/extrasounds/sounds/item/bonemeal/bonemeal4.ogg");
201+
backportMap.put("assets/minecraft/sounds/item/bonemeal/bonemeal5.ogg", "assets/extrasounds/sounds/item/bonemeal/bonemeal5.ogg");
202+
180203
ExtraSounds.LOGGER.info("Downloading Minecraft 1.19.2 sounds, this could take a while...");
181204
AssetMoverAPI.fromMinecraft("1.19.2", backportMap);
182205
ExtraSounds.LOGGER.info("Downloading finished!");
@@ -224,6 +247,7 @@ public static void register(RegistryEvent.Register<SoundEvent> event)
224247
event.getRegistry().register(pick_place_nugget);
225248
event.getRegistry().register(pick_place_sand);
226249
event.getRegistry().register(pick_place_snow);
250+
event.getRegistry().register(pick_place_stone);
227251
event.getRegistry().register(pick_place_wood);
228252
event.getRegistry().register(pick_place_wool);
229253
event.getRegistry().register(place_boat);

src/main/java/mod/acgaming/extrasounds/sound/ESSoundManager.java

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package mod.acgaming.extrasounds.sound;
22

3-
import java.util.Map;
3+
import java.util.*;
44

55
import net.minecraft.client.Minecraft;
66
import net.minecraft.client.audio.ISound;
@@ -9,6 +9,9 @@
99
import net.minecraft.init.Items;
1010
import net.minecraft.init.SoundEvents;
1111
import net.minecraft.item.*;
12+
import net.minecraft.item.crafting.CraftingManager;
13+
import net.minecraft.item.crafting.IRecipe;
14+
import net.minecraft.item.crafting.Ingredient;
1215
import net.minecraft.util.ResourceLocation;
1316
import net.minecraft.util.SoundCategory;
1417
import net.minecraft.util.SoundEvent;
@@ -53,17 +56,18 @@ public static void initSoundCategoryMap()
5356
{
5457
soundCategoryMap.clear();
5558

56-
soundCategoryMap.put("wood", ESSoundEvents.pick_place_wood);
5759
soundCategoryMap.put("dirt", ESSoundEvents.pick_place_dirt);
58-
soundCategoryMap.put("gravel", ESSoundEvents.pick_place_gravel);
59-
soundCategoryMap.put("sand", ESSoundEvents.pick_place_sand);
60+
soundCategoryMap.put("dust", ESSoundEvents.pick_place_dust);
61+
soundCategoryMap.put("gem", ESSoundEvents.pick_place_gem);
6062
soundCategoryMap.put("grass", ESSoundEvents.pick_place_grass);
61-
soundCategoryMap.put("wool", ESSoundEvents.pick_place_wool);
62-
soundCategoryMap.put("snow", ESSoundEvents.pick_place_snow);
63+
soundCategoryMap.put("gravel", ESSoundEvents.pick_place_gravel);
6364
soundCategoryMap.put("ingot", ESSoundEvents.pick_place_ingot);
6465
soundCategoryMap.put("nugget", ESSoundEvents.pick_place_nugget);
65-
soundCategoryMap.put("gem", ESSoundEvents.pick_place_gem);
66-
soundCategoryMap.put("dust", ESSoundEvents.pick_place_dust);
66+
soundCategoryMap.put("sand", ESSoundEvents.pick_place_sand);
67+
soundCategoryMap.put("snow", ESSoundEvents.pick_place_snow);
68+
soundCategoryMap.put("stone", ESSoundEvents.pick_place_stone);
69+
soundCategoryMap.put("wood", ESSoundEvents.pick_place_wood);
70+
soundCategoryMap.put("wool", ESSoundEvents.pick_place_wool);
6771
}
6872

6973
@SuppressWarnings("ConstantConditions")
@@ -134,13 +138,34 @@ public static void initSoundFinalMap()
134138
if (item instanceof ItemBlock) soundEvent = ((ItemBlock) item).getBlock().getSoundType().getPlaceSound();
135139
else if (item instanceof ItemFood) soundEvent = ESSoundEvents.pick_place_food;
136140
else if (item instanceof ItemArmor) soundEvent = ((ItemArmor) item).getArmorMaterial().getSoundEvent();
137-
else if (item == Items.WATER_BUCKET) soundEvent = SoundEvents.ITEM_BUCKET_FILL;
141+
else if (item == Items.WATER_BUCKET || item == Items.MILK_BUCKET) soundEvent = SoundEvents.ITEM_BUCKET_FILL;
138142
else if (item == Items.LAVA_BUCKET) soundEvent = SoundEvents.ITEM_BUCKET_FILL_LAVA;
139143
else if (item instanceof UniversalBucket)
140144
{
141145
FluidStack fluidStack = ((UniversalBucket) item).getFluid(new ItemStack(item));
142146
if (fluidStack != null) soundEvent = fluidStack.getFluid().getFillSound();
143147
}
148+
// CHECK ITEM'S RECIPE INGREDIENTS FOR KNOWN SOUND EVENTS
149+
else if (item.getRegistryName() != null && CraftingManager.REGISTRY.containsKey(item.getRegistryName()))
150+
{
151+
IRecipe recipe = CraftingManager.REGISTRY.getObject(item.getRegistryName());
152+
if (recipe != null)
153+
{
154+
List<Ingredient> ingredientList = new ArrayList<>(recipe.getIngredients());
155+
List<ItemStack> ingredientStackList = new ArrayList<>();
156+
// GET ALL INGREDIENT ITEM STACKS
157+
for (Ingredient ingredient : ingredientList) ingredientStackList.addAll(Arrays.asList(ingredient.getMatchingStacks()));
158+
if (ingredientStackList.size() > 0)
159+
{
160+
// SORT LIST BY FREQUENCY
161+
ingredientStackList.sort(Comparator.comparing(i -> Collections.frequency(ingredientStackList, i)).reversed());
162+
// GET MOST FREQUENT ITEM (BEST EFFORT)
163+
Item ingredientItem = ingredientStackList.get(0).getItem();
164+
if (soundItemMap.containsKey(ingredientItem)) soundEvent = soundCategoryMap.get(soundItemMap.get(ingredientItem));
165+
else if (ingredientItem instanceof ItemBlock) soundEvent = ((ItemBlock) ingredientItem).getBlock().getSoundType().getPlaceSound();
166+
}
167+
}
168+
}
144169
if (soundEvent != null) soundFinalMap.put(item, soundEvent);
145170
}
146171
}
@@ -157,8 +182,8 @@ public static void playSoundPlayer(SoundEvent soundEvent, float pitch, float vol
157182
{
158183
Minecraft mc = Minecraft.getMinecraft();
159184
EntityPlayerSP player = mc.player;
160-
if (player != null) mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.PLAYERS, volume, pitch, false, 0, ISound.AttenuationType.NONE, (float) player.posX, (float) player.posY + 32, (float) player.posZ));
161-
else mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.MASTER, volume, pitch, false, 0, ISound.AttenuationType.NONE, 0F, 0F, 0F));
185+
if (player != null) mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.PLAYERS, volume, pitch - 0.1F + randomOffset(), false, 0, ISound.AttenuationType.NONE, (float) player.posX, (float) player.posY + 32, (float) player.posZ));
186+
else mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.MASTER, volume, pitch - 0.1F + randomOffset(), false, 0, ISound.AttenuationType.NONE, 0F, 0F, 0F));
162187
lastPlayed = now;
163188
}
164189
}
@@ -170,8 +195,8 @@ public static void playSoundPlayer(SoundEvent soundEvent)
170195
{
171196
Minecraft mc = Minecraft.getMinecraft();
172197
EntityPlayerSP player = mc.player;
173-
if (player != null) mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.PLAYERS, 1.0F, 1.0F, false, 0, ISound.AttenuationType.NONE, (float) player.posX, (float) player.posY + 32, (float) player.posZ));
174-
else mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.MASTER, 1.0F, 1.0F, false, 0, ISound.AttenuationType.NONE, 0F, 0F, 0F));
198+
if (player != null) mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.PLAYERS, 1.0F, 0.9F + randomOffset(), false, 0, ISound.AttenuationType.NONE, (float) player.posX, (float) player.posY + 32, (float) player.posZ));
199+
else mc.getSoundHandler().playSound(new PositionedSoundRecord(soundEvent.getSoundName(), SoundCategory.MASTER, 1.0F, 0.9F + randomOffset(), false, 0, ISound.AttenuationType.NONE, 0F, 0F, 0F));
175200
lastPlayed = now;
176201
}
177202
}
@@ -206,7 +231,6 @@ public static void playClickSound(ItemStack stackIn)
206231
if (stackIn.isEmpty()) return;
207232

208233
Item item = stackIn.getItem();
209-
210234
if (soundItemMap.containsKey(item)) playSoundPlayer(soundCategoryMap.get(soundItemMap.get(item)));
211235
else if (soundFinalMap.containsKey(item)) playSoundPlayer(soundFinalMap.get(item), 2.0F, 0.4F);
212236
else playSoundPlayer(ESSoundEvents.pick_place_generic);

0 commit comments

Comments
 (0)