Skip to content

Commit

Permalink
Narrator readout on experimental
Browse files Browse the repository at this point in the history
  • Loading branch information
Vazkii committed Dec 30, 2020
1 parent d4c381b commit a5837c7
Show file tree
Hide file tree
Showing 8 changed files with 104 additions and 3 deletions.
6 changes: 3 additions & 3 deletions build.properties
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#
#Tue Dec 22 14:17:37 GMT 2020
mod_name=Quark
forge_version=34.1.32
forge_version=35.1.28
mapping_version=20200916-1.16.2
mapping_channel=snapshot
mod_id=quark
jei_version=7.6.0.49
jei_version=7.6.0.62
arl_version=1.6-46.85
version=r2.4
dir_output=../Build Output/Quark/
build_number=284
mc_version=1.16.3
mc_version=1.16.4
Empty file added logs/debug.log
Empty file.
Empty file added logs/latest.log
Empty file.
Binary file added native/SAPIWrapper_x64.dll
Binary file not shown.
Binary file added native/SAPIWrapper_x86.dll
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class ModKeybindHandler {
public static final String MISC_GROUP = "quark.gui.keygroup.misc";
public static final String INV_GROUP = "quark.gui.keygroup.inv";
public static final String EMOTE_GROUP = "quark.gui.keygroup.emote";
public static final String ACCESSIBILITY_GROUP = "quark.gui.keygroup.accessibility";

public static KeyBinding init(String s, String key, String group) {
return init(s, key, "key.keyboard.", group, true);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package vazkii.quark.content.experimental.module;

import com.mojang.text2speech.Narrator;

import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import vazkii.quark.base.client.ModKeybindHandler;
import vazkii.quark.base.module.LoadModule;
import vazkii.quark.base.module.ModuleCategory;
import vazkii.quark.base.module.QuarkModule;

@LoadModule(category = ModuleCategory.EXPERIMENTAL, enabledByDefault = false, hasSubscriptions = true, subscribeOn = Dist.CLIENT)
public class NarratorReadoutModule extends QuarkModule {

@OnlyIn(Dist.CLIENT)
private KeyBinding keybind;

@Override
@OnlyIn(Dist.CLIENT)
public void clientSetup() {
if(enabled)
keybind = ModKeybindHandler.init("narrator_readout", "m", ModKeybindHandler.ACCESSIBILITY_GROUP);
}

@SubscribeEvent
@OnlyIn(Dist.CLIENT)
public void onMouseInput(InputEvent.MouseInputEvent event) {
acceptInput();
}

@SubscribeEvent
@OnlyIn(Dist.CLIENT)
public void onKeyInput(InputEvent.KeyInputEvent event) {
acceptInput();
}

private void acceptInput() {
Minecraft mc = Minecraft.getInstance();
boolean down = keybind != null && keybind.isKeyDown();
if(mc.isGameFocused() && down) {
Narrator narrator = Narrator.getNarrator();
String readout = getReadout(mc);
if(readout != null) {
narrator.say(readout, true);
if(mc.player != null)
mc.player.sendStatusMessage(new StringTextComponent(readout), true);
}
}
}

private String getReadout(Minecraft mc) {
PlayerEntity player = mc.player;
if(player == null)
return "Not ingame.";

StringBuilder sb = new StringBuilder();

RayTraceResult ray = mc.objectMouseOver;
if(ray != null && ray instanceof BlockRayTraceResult) {
BlockPos pos = ((BlockRayTraceResult) ray).getPos();
BlockState state = mc.world.getBlockState(pos);

Item item = state.getBlock().asItem();
if(item != null) {
sb.append("Looking at ");
sb.append(item.getDisplayName(new ItemStack(item)).getString().trim());
sb.append(", ");
}
}

ItemStack stack = player.getHeldItemMainhand();
if(!stack.isEmpty()) {
sb.append("Holding ");
sb.append(stack.getDisplayName().getString().trim());
sb.append(", ");
}

sb.append("Health ");
sb.append((int) mc.player.getHealth());
sb.append(", Food ");
sb.append(mc.player.getFoodStats().getFoodLevel());

return sb.toString();
}

}
2 changes: 2 additions & 0 deletions src/main/resources/assets/quark/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"quark.gui.keygroup.misc": "Quark Misc",
"quark.gui.keygroup.inv": "Quark Inventory",
"quark.gui.keygroup.emote": "Quark Emotes",
"quark.gui.keygroup.accessibility": "Quark Accessibility",

"quark.gui.config.save": "Save Changes",
"quark.gui.config.social.website": "Quark Site",
Expand Down Expand Up @@ -118,6 +119,7 @@
"quark.keybind.patreon_emote.zombie": "Zombie (Patreon)",
"quark.keybind.back": "Back",
"quark.keybind.camera_mode": "Camera Mode",
"quark.keybind.narrator_readout": "Narrator Readout",

"quark.subtitles.meep": "Stoneling runs away",
"quark.subtitles.give_stoneling": "Stoneling takes item",
Expand Down

0 comments on commit a5837c7

Please sign in to comment.