Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public final class ClientTickEvent {
- private static final Minecraft mc = Minecraft.getMinecraft();
- private CompletableFuture<InfoMessage> future;
- private final Consumer<InfoMessage> consumer;
- private final int frequency;
- private int ticks;
- private ClientTickEvent(int frequency, Consumer<InfoMessage> consumer) {
- this.frequency = frequency * 20;
- this.consumer = consumer;
- this.ticks = 0;
- }
- @SubscribeEvent
- public void tick(TickEvent.ClientTickEvent event) {
- if (mc.thePlayer != null && event.phase == TickEvent.Phase.END) {
- if (this.ticks++ == this.frequency) {
- this.future = CompletableFuture.supplyAsync(ClientProxy::findProcesses);
- this.ticks = 0;
- }
- if ((this.future != null) && (this.future.isDone())) {
- try {
- InfoMessage message = this.future.get();
- if (message.isValid()) {
- this.consumer.accept(message);
- }
- this.future = null;
- } catch (InterruptedException | ExecutionException e) {
- //ignore
- }
- }
- }
- }
- @SubscribeEvent
- public void disconnect(FMLNetworkEvent.ClientDisconnectionFromServerEvent event) {
- try {
- if (this.future != null)
- this.future.cancel(false);
- } catch (Exception e) {
- //
- }
- unregister(this);
- }
- static void doChecks(int frequency, Consumer<InfoMessage> consumer) {
- register(new ClientTickEvent(frequency, consumer));
- }
- private static void register(Object object) {
- if (object != null) {
- MinecraftForge.EVENT_BUS.register(object);
- FMLCommonHandler.instance().bus().register(object);
- }
- }
- private static void unregister(Object object) {
- if (object != null) {
- MinecraftForge.EVENT_BUS.unregister(object);
- FMLCommonHandler.instance().bus().unregister(object);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement