142 lines
5.3 KiB
Java
142 lines
5.3 KiB
Java
package zone.oat.supersecretrevival;
|
|
|
|
import net.fabricmc.api.ClientModInitializer;
|
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
|
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
|
import net.minecraft.client.MinecraftClient;
|
|
import net.minecraft.client.gl.ShaderEffect;
|
|
import net.minecraft.client.option.KeyBinding;
|
|
import net.minecraft.client.util.InputUtil;
|
|
import net.minecraft.client.world.ClientWorld;
|
|
import net.minecraft.sound.SoundCategory;
|
|
import net.minecraft.sound.SoundEvent;
|
|
import net.minecraft.sound.SoundEvents;
|
|
import net.minecraft.util.registry.Registry;
|
|
import net.minecraft.world.World;
|
|
import org.lwjgl.glfw.GLFW;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
|
|
public class Mod implements ClientModInitializer {
|
|
public static final Logger LOGGER = LoggerFactory.getLogger("super-secret-revival");
|
|
|
|
private static KeyBinding disableShaderKeybind = KeyBindingHelper.registerKeyBinding(new KeyBinding(
|
|
"key.supersecretrevival.disable", // The translation key of the keybinding's name
|
|
InputUtil.Type.KEYSYM, // The type of the keybinding, KEYSYM for keyboard, MOUSE for mouse.
|
|
GLFW.GLFW_KEY_F4, // The keycode of the key
|
|
"key.categories.misc" // The translation key of the keybinding's category.
|
|
));
|
|
|
|
// prevent these sounds from playing
|
|
//
|
|
// in 1.8 this used to be a list of categories;
|
|
// however sounds no longer have an association
|
|
// to categories so we have to improvise
|
|
|
|
private static SoundEvent[] soundBlocklist = {
|
|
SoundEvents.MUSIC_CREATIVE,
|
|
SoundEvents.MUSIC_CREDITS,
|
|
SoundEvents.MUSIC_DISC_11,
|
|
SoundEvents.MUSIC_DISC_13,
|
|
SoundEvents.MUSIC_DISC_BLOCKS,
|
|
SoundEvents.MUSIC_DISC_CAT,
|
|
SoundEvents.MUSIC_DISC_CHIRP,
|
|
SoundEvents.MUSIC_DISC_FAR,
|
|
SoundEvents.MUSIC_DISC_MALL,
|
|
SoundEvents.MUSIC_DISC_MELLOHI,
|
|
SoundEvents.MUSIC_DISC_PIGSTEP,
|
|
SoundEvents.MUSIC_DISC_STAL,
|
|
SoundEvents.MUSIC_DISC_STRAD,
|
|
SoundEvents.MUSIC_DISC_WAIT,
|
|
SoundEvents.MUSIC_DISC_WARD,
|
|
SoundEvents.MUSIC_DISC_OTHERSIDE,
|
|
SoundEvents.MUSIC_DRAGON,
|
|
SoundEvents.MUSIC_END,
|
|
SoundEvents.MUSIC_GAME,
|
|
SoundEvents.MUSIC_MENU,
|
|
SoundEvents.MUSIC_NETHER_BASALT_DELTAS,
|
|
SoundEvents.MUSIC_NETHER_CRIMSON_FOREST,
|
|
SoundEvents.MUSIC_OVERWORLD_DRIPSTONE_CAVES,
|
|
SoundEvents.MUSIC_OVERWORLD_GROVE,
|
|
SoundEvents.MUSIC_OVERWORLD_JAGGED_PEAKS,
|
|
SoundEvents.MUSIC_OVERWORLD_LUSH_CAVES,
|
|
SoundEvents.MUSIC_OVERWORLD_MEADOW,
|
|
SoundEvents.MUSIC_NETHER_NETHER_WASTES,
|
|
SoundEvents.MUSIC_OVERWORLD_FROZEN_PEAKS,
|
|
SoundEvents.MUSIC_OVERWORLD_SNOWY_SLOPES,
|
|
SoundEvents.MUSIC_NETHER_SOUL_SAND_VALLEY,
|
|
SoundEvents.MUSIC_OVERWORLD_STONY_PEAKS,
|
|
SoundEvents.MUSIC_NETHER_WARPED_FOREST,
|
|
SoundEvents.MUSIC_UNDER_WATER,
|
|
|
|
SoundEvents.AMBIENT_CAVE,
|
|
SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS,
|
|
SoundEvents.AMBIENT_BASALT_DELTAS_LOOP,
|
|
SoundEvents.AMBIENT_BASALT_DELTAS_MOOD,
|
|
SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS,
|
|
SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP,
|
|
SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD,
|
|
SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS,
|
|
SoundEvents.AMBIENT_NETHER_WASTES_LOOP,
|
|
SoundEvents.AMBIENT_NETHER_WASTES_MOOD,
|
|
SoundEvents.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS,
|
|
SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP,
|
|
SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD,
|
|
SoundEvents.AMBIENT_WARPED_FOREST_ADDITIONS,
|
|
SoundEvents.AMBIENT_WARPED_FOREST_LOOP,
|
|
SoundEvents.AMBIENT_WARPED_FOREST_MOOD,
|
|
SoundEvents.AMBIENT_UNDERWATER_ENTER,
|
|
SoundEvents.AMBIENT_UNDERWATER_EXIT,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP_ADDITIONS,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP_ADDITIONS_RARE,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP_ADDITIONS_ULTRA_RARE,
|
|
};
|
|
|
|
private static SoundEvent getRandomSound(Random random) {
|
|
SoundEvent event;
|
|
|
|
do {
|
|
Registry<SoundEvent> registry = Registry.SOUND_EVENT;
|
|
int size = registry.size();
|
|
int rand = random.nextInt(size);
|
|
event = registry.get(rand);
|
|
} while (Arrays.asList(soundBlocklist).contains(event));
|
|
|
|
return event;
|
|
}
|
|
|
|
public static void triggerSuperSecretSettings() {
|
|
MinecraftClient client = MinecraftClient.getInstance();
|
|
World world = client.world;
|
|
|
|
if (world instanceof ClientWorld) {
|
|
ShaderControls.setRandomShader();
|
|
|
|
// play a random noise
|
|
SoundEvent sound = getRandomSound(world.random);
|
|
world.playSound(
|
|
client.player,
|
|
client.player.getBlockPos(),
|
|
sound,
|
|
null,
|
|
1f,
|
|
0.5f
|
|
);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onInitializeClient() {
|
|
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
|
while (disableShaderKeybind.wasPressed()) {
|
|
ShaderControls.disableShader();
|
|
}
|
|
});
|
|
}
|
|
} |