From ff929b92603026a139898cba7ed81c0ce6651c7e Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 10 Aug 2018 22:24:26 -0500 Subject: [PATCH 1/4] Add hotbar check for presence of water bucket --- .../baritone/bot/pathing/movement/CalculationContext.java | 5 ++++- .../bot/pathing/movement/movements/MovementFall.java | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/baritone/bot/pathing/movement/CalculationContext.java b/src/main/java/baritone/bot/pathing/movement/CalculationContext.java index 3f5e6783..2e63e112 100644 --- a/src/main/java/baritone/bot/pathing/movement/CalculationContext.java +++ b/src/main/java/baritone/bot/pathing/movement/CalculationContext.java @@ -19,6 +19,7 @@ package baritone.bot.pathing.movement; import baritone.bot.utils.Helper; import baritone.bot.utils.ToolSet; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -28,6 +29,8 @@ import net.minecraft.item.ItemStack; */ public class CalculationContext implements Helper { + private static final ItemStack STACK_BUCKET_WATER = new ItemStack(Items.WATER_BUCKET); + private final ToolSet toolSet; private final boolean hasWaterBucket; @@ -37,7 +40,7 @@ public class CalculationContext implements Helper { public CalculationContext(ToolSet toolSet) { this.toolSet = toolSet; - this.hasWaterBucket = player().inventory.hasItemStack(new ItemStack(Items.WATER_BUCKET)); // TODO check if water bucket is on hotbar or main inventory + this.hasWaterBucket = InventoryPlayer.isHotbar(player().inventory.getSlotFor(STACK_BUCKET_WATER)); } public ToolSet getToolSet() { diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java index daf37c3f..8881b371 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java @@ -35,7 +35,7 @@ import java.util.Optional; public class MovementFall extends Movement { private static final ItemStack STACK_BUCKET_WATER = new ItemStack(Items.WATER_BUCKET); - private static final ItemStack STACK_BUCKET_AIR = new ItemStack(Items.BUCKET); + private static final ItemStack STACK_BUCKET_EMPTY = new ItemStack(Items.BUCKET); public MovementFall(BlockPos src, BlockPos dest) { super(src, dest, MovementFall.buildPositionsToBreak(src, dest), new BlockPos[]{dest.down()}); @@ -89,8 +89,8 @@ public class MovementFall extends Movement { } if (playerFeet.equals(dest) && (player().posY - playerFeet.getY() < 0.01 || BlockStateInterface.isWater(dest))) { - if (BlockStateInterface.isWater(dest) && player().inventory.hasItemStack(STACK_BUCKET_AIR)) { - player().inventory.currentItem = player().inventory.getSlotFor(STACK_BUCKET_AIR); + if (BlockStateInterface.isWater(dest) && player().inventory.hasItemStack(STACK_BUCKET_EMPTY)) { + player().inventory.currentItem = player().inventory.getSlotFor(STACK_BUCKET_EMPTY); if (player().motionY >= 0) { return state.setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); } else { From 2d16157d1b72e8286babe1a326b2b7bde073f5bf Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 10 Aug 2018 22:25:02 -0500 Subject: [PATCH 2/4] Create CachedChunk BitSet validity method --- .../java/baritone/bot/chunk/CachedChunk.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/baritone/bot/chunk/CachedChunk.java b/src/main/java/baritone/bot/chunk/CachedChunk.java index 99d8a7e9..69138402 100644 --- a/src/main/java/baritone/bot/chunk/CachedChunk.java +++ b/src/main/java/baritone/bot/chunk/CachedChunk.java @@ -63,8 +63,7 @@ public final class CachedChunk implements IBlockTypeAccess { private final BitSet data; CachedChunk(int x, int z, BitSet data) { - if (data.size() > SIZE) - throw new IllegalArgumentException("BitSet of invalid length provided"); + validateSize(data); this.x = x; this.z = z; @@ -78,8 +77,7 @@ public final class CachedChunk implements IBlockTypeAccess { } void updateContents(BitSet data) { - if (data.size() > SIZE) - throw new IllegalArgumentException("BitSet of invalid length provided"); + validateSize(data); for (int i = 0; i < data.length(); i++) this.data.set(i, data.get(i)); @@ -117,4 +115,17 @@ public final class CachedChunk implements IBlockTypeAccess { public static int getPositionIndex(int x, int y, int z) { return (x + (z << 4) + (y << 8)) * 2; } + + /** + * Validates the size of an input {@link BitSet} containing the raw + * packed chunk data. Sizes that exceed {@link CachedChunk#SIZE} are + * considered invalid, and thus, an exception will be thrown. + * + * @param data The raw data + * @throws IllegalArgumentException if the bitset size exceeds the maximum size + */ + private static void validateSize(BitSet data) { + if (data.size() > SIZE) + throw new IllegalArgumentException("BitSet of invalid length provided"); + } } From 6900fb2adee0ec035a5cb4d3d1e2a36b68cff9a8 Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 10 Aug 2018 23:43:23 -0500 Subject: [PATCH 3/4] Replace some GL 1.1 calls with GlStateManager calls --- src/main/java/baritone/bot/GameEventHandler.java | 3 +-- src/main/java/baritone/bot/InputOverrideHandler.java | 6 +++--- src/main/java/baritone/bot/utils/PathRenderer.java | 5 ++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/baritone/bot/GameEventHandler.java b/src/main/java/baritone/bot/GameEventHandler.java index 54ea36e2..e2694a9e 100755 --- a/src/main/java/baritone/bot/GameEventHandler.java +++ b/src/main/java/baritone/bot/GameEventHandler.java @@ -31,7 +31,6 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.settings.KeyBinding; import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; import java.util.function.Consumer; @@ -148,7 +147,7 @@ public final class GameEventHandler implements IGameEventListener, Helper { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.color(1.0F, 1.0F, 0.0F, 0.4F); - GL11.glLineWidth(2.0F); + GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); Tessellator tessellator = Tessellator.getInstance(); diff --git a/src/main/java/baritone/bot/InputOverrideHandler.java b/src/main/java/baritone/bot/InputOverrideHandler.java index c4c967ee..63f3bb39 100755 --- a/src/main/java/baritone/bot/InputOverrideHandler.java +++ b/src/main/java/baritone/bot/InputOverrideHandler.java @@ -25,9 +25,9 @@ import java.util.HashMap; import java.util.Map; /** - * This serves as a replacement to the old {@code MovementManager}'s - * input overriding capabilities. It is vastly more extensible in the - * inputs that can be overriden. + * An interface with the game's control system allowing the ability to + * force down certain controls, having the same effect as if we were actually + * physically forcing down the assigned key. * * @author Brady * @since 7/31/2018 11:20 PM diff --git a/src/main/java/baritone/bot/utils/PathRenderer.java b/src/main/java/baritone/bot/utils/PathRenderer.java index 701093f4..57bd573b 100644 --- a/src/main/java/baritone/bot/utils/PathRenderer.java +++ b/src/main/java/baritone/bot/utils/PathRenderer.java @@ -29,7 +29,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import org.lwjgl.opengl.GL11; import java.awt.*; import java.util.Collection; @@ -52,7 +51,7 @@ public final class PathRenderer implements Helper { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO); GlStateManager.color(color.getColorComponents(null)[0], color.getColorComponents(null)[1], color.getColorComponents(null)[2], 0.4F); - GL11.glLineWidth(3.0F); + GlStateManager.glLineWidth(3.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); List positions = path.positions(); @@ -99,7 +98,7 @@ public final class PathRenderer implements Helper { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.color(color.getColorComponents(null)[0], color.getColorComponents(null)[1], color.getColorComponents(null)[2], 0.4F); - GL11.glLineWidth(5.0F); + GlStateManager.glLineWidth(5.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); float expand = 0.002F; From 273a00753d288d1aac9986b49ca9910335715000 Mon Sep 17 00:00:00 2001 From: Brady Date: Sat, 11 Aug 2018 00:03:16 -0500 Subject: [PATCH 4/4] Refactor some event related things --- src/main/java/baritone/bot/Baritone.java | 1 + .../java/baritone/bot/behavior/Behavior.java | 2 +- .../bot/{ => event}/GameEventHandler.java | 353 +++++++++--------- .../AbstractGameEventListener.java | 19 +- .../{ => listener}/IGameEventListener.java | 215 ++++++----- 5 files changed, 321 insertions(+), 269 deletions(-) rename src/main/java/baritone/bot/{ => event}/GameEventHandler.java (87%) mode change 100755 => 100644 rename src/main/java/baritone/bot/event/{ => listener}/AbstractGameEventListener.java (69%) rename src/main/java/baritone/bot/event/{ => listener}/IGameEventListener.java (80%) mode change 100755 => 100644 diff --git a/src/main/java/baritone/bot/Baritone.java b/src/main/java/baritone/bot/Baritone.java index 96fd857f..1f89291d 100755 --- a/src/main/java/baritone/bot/Baritone.java +++ b/src/main/java/baritone/bot/Baritone.java @@ -21,6 +21,7 @@ import baritone.bot.behavior.Behavior; import baritone.bot.behavior.impl.LookBehavior; import baritone.bot.behavior.impl.MemoryBehavior; import baritone.bot.behavior.impl.PathingBehavior; +import baritone.bot.event.GameEventHandler; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/baritone/bot/behavior/Behavior.java b/src/main/java/baritone/bot/behavior/Behavior.java index 05e4a4d5..198dfb8a 100644 --- a/src/main/java/baritone/bot/behavior/Behavior.java +++ b/src/main/java/baritone/bot/behavior/Behavior.java @@ -17,7 +17,7 @@ package baritone.bot.behavior; -import baritone.bot.event.AbstractGameEventListener; +import baritone.bot.event.listener.AbstractGameEventListener; import baritone.bot.utils.Helper; /** diff --git a/src/main/java/baritone/bot/GameEventHandler.java b/src/main/java/baritone/bot/event/GameEventHandler.java old mode 100755 new mode 100644 similarity index 87% rename from src/main/java/baritone/bot/GameEventHandler.java rename to src/main/java/baritone/bot/event/GameEventHandler.java index e2694a9e..7c9f03a1 --- a/src/main/java/baritone/bot/GameEventHandler.java +++ b/src/main/java/baritone/bot/event/GameEventHandler.java @@ -1,168 +1,185 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Baritone. If not, see . - */ - -package baritone.bot; - -import baritone.bot.behavior.Behavior; -import baritone.bot.chunk.CachedWorld; -import baritone.bot.chunk.CachedWorldProvider; -import baritone.bot.chunk.ChunkPacker; -import baritone.bot.event.IGameEventListener; -import baritone.bot.event.events.*; -import baritone.bot.event.events.type.EventState; -import baritone.bot.utils.Helper; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.settings.KeyBinding; -import org.lwjgl.input.Keyboard; - -import java.util.function.Consumer; - -/** - * @author Brady - * @since 7/31/2018 11:04 PM - */ -public final class GameEventHandler implements IGameEventListener, Helper { - - GameEventHandler() {} - - @Override - public final void onTick(TickEvent event) { - dispatch(behavior -> behavior.onTick(event)); - } - - @Override - public void onPlayerUpdate() { - dispatch(Behavior::onPlayerUpdate); - } - - @Override - public void onProcessKeyBinds() { - InputOverrideHandler inputHandler = Baritone.INSTANCE.getInputOverrideHandler(); - - // Simulate the key being held down this tick - for (InputOverrideHandler.Input input : InputOverrideHandler.Input.values()) { - KeyBinding keyBinding = input.getKeyBinding(); - - if (inputHandler.isInputForcedDown(keyBinding) && !keyBinding.isKeyDown()) { - int keyCode = keyBinding.getKeyCode(); - - if (keyCode < Keyboard.KEYBOARD_SIZE) - KeyBinding.onTick(keyCode < 0 ? keyCode + 100 : keyCode); - } - } - - dispatch(Behavior::onProcessKeyBinds); - } - - @Override - public void onSendChatMessage(ChatEvent event) { - dispatch(behavior -> behavior.onSendChatMessage(event)); - } - - @Override - public void onChunkEvent(ChunkEvent event) { - EventState state = event.getState(); - ChunkEvent.Type type = event.getType(); - - boolean isPostPopulate = state == EventState.POST - && type == ChunkEvent.Type.POPULATE; - - // Whenever the server sends us to another dimension, chunks are unloaded - // technically after the new world has been loaded, so we perform a check - // to make sure the chunk being unloaded is already loaded. - boolean isPreUnload = state == EventState.PRE - && type == ChunkEvent.Type.UNLOAD - && mc.world.getChunkProvider().isChunkGeneratedAt(event.getX(), event.getZ()); - - if (isPostPopulate || isPreUnload) { - CachedWorldProvider.INSTANCE.ifWorldLoaded(world -> - world.updateCachedChunk(event.getX(), event.getZ(), - ChunkPacker.createPackedChunk(mc.world.getChunk(event.getX(), event.getZ())))); - } - - dispatch(behavior -> behavior.onChunkEvent(event)); - } - - @Override - public void onRenderPass(RenderEvent event) { - /* - CachedWorldProvider.INSTANCE.ifWorldLoaded(world -> world.forEachRegion(region -> region.forEachChunk(chunk -> { - drawChunkLine(region.getX() * 512 + chunk.getX() * 16, region.getZ() * 512 + chunk.getZ() * 16, event.getPartialTicks()); - }))); - */ - - dispatch(behavior -> behavior.onRenderPass(event)); - } - - @Override - public void onWorldEvent(WorldEvent event) { - CachedWorldProvider cache = CachedWorldProvider.INSTANCE; - - switch (event.getState()) { - case PRE: - cache.ifWorldLoaded(CachedWorld::save); - break; - case POST: - cache.closeWorld(); - if (event.getWorld() != null) - cache.initWorld(event.getWorld()); - break; - } - - dispatch(behavior -> behavior.onWorldEvent(event)); - } - - @Override - public void onSendPacket(PacketEvent event) { - dispatch(behavior -> behavior.onSendPacket(event)); - } - - @Override - public void onReceivePacket(PacketEvent event) { - dispatch(behavior -> behavior.onReceivePacket(event)); - } - - private void dispatch(Consumer dispatchFunction) { - Baritone.INSTANCE.getBehaviors().stream().filter(Behavior::isEnabled).forEach(dispatchFunction); - } - - private void drawChunkLine(int posX, int posZ, float partialTicks) { - GlStateManager.enableBlend(); - GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); - GlStateManager.color(1.0F, 1.0F, 0.0F, 0.4F); - GlStateManager.glLineWidth(2.0F); - GlStateManager.disableTexture2D(); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - double d0 = mc.getRenderManager().viewerPosX; - double d1 = mc.getRenderManager().viewerPosY; - double d2 = mc.getRenderManager().viewerPosZ; - buffer.begin(3, DefaultVertexFormats.POSITION); - buffer.pos(posX - d0, 0 - d1, posZ - d2).endVertex(); - buffer.pos(posX - d0, 256 - d1, posZ - d2).endVertex(); - tessellator.draw(); - - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.enableTexture2D(); - GlStateManager.disableBlend(); - } -} +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Baritone. If not, see . + */ + +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Baritone. If not, see . + */ + +package baritone.bot.event; + +import baritone.bot.Baritone; +import baritone.bot.InputOverrideHandler; +import baritone.bot.behavior.Behavior; +import baritone.bot.chunk.CachedWorld; +import baritone.bot.chunk.CachedWorldProvider; +import baritone.bot.chunk.ChunkPacker; +import baritone.bot.event.listener.IGameEventListener; +import baritone.bot.event.events.*; +import baritone.bot.event.events.type.EventState; +import baritone.bot.utils.Helper; +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.settings.KeyBinding; +import org.lwjgl.input.Keyboard; + +import java.util.function.Consumer; + +/** + * @author Brady + * @since 7/31/2018 11:04 PM + */ +public final class GameEventHandler implements IGameEventListener, Helper { + + @Override + public final void onTick(TickEvent event) { + dispatch(behavior -> behavior.onTick(event)); + } + + @Override + public void onPlayerUpdate() { + dispatch(Behavior::onPlayerUpdate); + } + + @Override + public void onProcessKeyBinds() { + InputOverrideHandler inputHandler = Baritone.INSTANCE.getInputOverrideHandler(); + + // Simulate the key being held down this tick + for (InputOverrideHandler.Input input : InputOverrideHandler.Input.values()) { + KeyBinding keyBinding = input.getKeyBinding(); + + if (inputHandler.isInputForcedDown(keyBinding) && !keyBinding.isKeyDown()) { + int keyCode = keyBinding.getKeyCode(); + + if (keyCode < Keyboard.KEYBOARD_SIZE) + KeyBinding.onTick(keyCode < 0 ? keyCode + 100 : keyCode); + } + } + + dispatch(Behavior::onProcessKeyBinds); + } + + @Override + public void onSendChatMessage(ChatEvent event) { + dispatch(behavior -> behavior.onSendChatMessage(event)); + } + + @Override + public void onChunkEvent(ChunkEvent event) { + EventState state = event.getState(); + ChunkEvent.Type type = event.getType(); + + boolean isPostPopulate = state == EventState.POST + && type == ChunkEvent.Type.POPULATE; + + // Whenever the server sends us to another dimension, chunks are unloaded + // technically after the new world has been loaded, so we perform a check + // to make sure the chunk being unloaded is already loaded. + boolean isPreUnload = state == EventState.PRE + && type == ChunkEvent.Type.UNLOAD + && mc.world.getChunkProvider().isChunkGeneratedAt(event.getX(), event.getZ()); + + if (isPostPopulate || isPreUnload) { + CachedWorldProvider.INSTANCE.ifWorldLoaded(world -> + world.updateCachedChunk(event.getX(), event.getZ(), + ChunkPacker.createPackedChunk(mc.world.getChunk(event.getX(), event.getZ())))); + } + + dispatch(behavior -> behavior.onChunkEvent(event)); + } + + @Override + public void onRenderPass(RenderEvent event) { + /* + CachedWorldProvider.INSTANCE.ifWorldLoaded(world -> world.forEachRegion(region -> region.forEachChunk(chunk -> { + drawChunkLine(region.getX() * 512 + chunk.getX() * 16, region.getZ() * 512 + chunk.getZ() * 16, event.getPartialTicks()); + }))); + */ + + dispatch(behavior -> behavior.onRenderPass(event)); + } + + @Override + public void onWorldEvent(WorldEvent event) { + CachedWorldProvider cache = CachedWorldProvider.INSTANCE; + + switch (event.getState()) { + case PRE: + cache.ifWorldLoaded(CachedWorld::save); + break; + case POST: + cache.closeWorld(); + if (event.getWorld() != null) + cache.initWorld(event.getWorld()); + break; + } + + dispatch(behavior -> behavior.onWorldEvent(event)); + } + + @Override + public void onSendPacket(PacketEvent event) { + dispatch(behavior -> behavior.onSendPacket(event)); + } + + @Override + public void onReceivePacket(PacketEvent event) { + dispatch(behavior -> behavior.onReceivePacket(event)); + } + + private void dispatch(Consumer dispatchFunction) { + Baritone.INSTANCE.getBehaviors().stream().filter(Behavior::isEnabled).forEach(dispatchFunction); + } + + private void drawChunkLine(int posX, int posZ, float partialTicks) { + GlStateManager.enableBlend(); + GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); + GlStateManager.color(1.0F, 1.0F, 0.0F, 0.4F); + GlStateManager.glLineWidth(2.0F); + GlStateManager.disableTexture2D(); + + Tessellator tessellator = Tessellator.getInstance(); + BufferBuilder buffer = tessellator.getBuffer(); + double d0 = mc.getRenderManager().viewerPosX; + double d1 = mc.getRenderManager().viewerPosY; + double d2 = mc.getRenderManager().viewerPosZ; + buffer.begin(3, DefaultVertexFormats.POSITION); + buffer.pos(posX - d0, 0 - d1, posZ - d2).endVertex(); + buffer.pos(posX - d0, 256 - d1, posZ - d2).endVertex(); + tessellator.draw(); + + GlStateManager.enableDepth(); + GlStateManager.depthMask(true); + GlStateManager.enableTexture2D(); + GlStateManager.disableBlend(); + } +} diff --git a/src/main/java/baritone/bot/event/AbstractGameEventListener.java b/src/main/java/baritone/bot/event/listener/AbstractGameEventListener.java similarity index 69% rename from src/main/java/baritone/bot/event/AbstractGameEventListener.java rename to src/main/java/baritone/bot/event/listener/AbstractGameEventListener.java index 0dc82130..23fd18ab 100644 --- a/src/main/java/baritone/bot/event/AbstractGameEventListener.java +++ b/src/main/java/baritone/bot/event/listener/AbstractGameEventListener.java @@ -15,7 +15,24 @@ * along with Baritone. If not, see . */ -package baritone.bot.event; +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Baritone. If not, see . + */ + +package baritone.bot.event.listener; import baritone.bot.event.events.*; diff --git a/src/main/java/baritone/bot/event/IGameEventListener.java b/src/main/java/baritone/bot/event/listener/IGameEventListener.java old mode 100755 new mode 100644 similarity index 80% rename from src/main/java/baritone/bot/event/IGameEventListener.java rename to src/main/java/baritone/bot/event/listener/IGameEventListener.java index 2563009f..f72bebfe --- a/src/main/java/baritone/bot/event/IGameEventListener.java +++ b/src/main/java/baritone/bot/event/listener/IGameEventListener.java @@ -1,99 +1,116 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Baritone. If not, see . - */ - -package baritone.bot.event; - -import baritone.bot.event.events.*; -import io.netty.util.concurrent.GenericFutureListener; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraft.client.multiplayer.WorldClient; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.client.settings.GameSettings; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; - -/** - * @author Brady - * @since 7/31/2018 11:05 PM - */ -public interface IGameEventListener { - - /** - * Run once per game tick before screen input is handled. - * - * @see Minecraft#runTick() - */ - void onTick(TickEvent event); - - /** - * Run once per game tick from before the player rotation is sent to the server. - * @see EntityPlayerSP#onUpdate() - */ - void onPlayerUpdate(); - - /** - * Run once per game tick from before keybinds are processed. - * - * @see Minecraft#processKeyBinds() - */ - void onProcessKeyBinds(); - - /** - * Runs whenever the client player sends a message to the server. - * - * @see EntityPlayerSP#sendChatMessage(String) - */ - void onSendChatMessage(ChatEvent event); - - /** - * Runs before and after whenever a chunk is either loaded, unloaded, or populated. - * - * @see WorldClient#doPreChunk(int, int, boolean) - */ - void onChunkEvent(ChunkEvent event); - - /** - * Runs once per world render pass. Two passes are made when {@link GameSettings#anaglyph} is on. - *

- * Note: {@link GameSettings#anaglyph} has been removed in Minecraft 1.13 - * - * @see EntityRenderer#renderWorldPass(int, float, long) - */ - void onRenderPass(RenderEvent event); - - /** - * Runs before and after whenever a new world is loaded - * - * @see Minecraft#loadWorld(WorldClient, String) - */ - void onWorldEvent(WorldEvent event); - - /** - * Runs before a outbound packet is sent - * - * @see NetworkManager#dispatchPacket(Packet, GenericFutureListener[]) - */ - void onSendPacket(PacketEvent event); - - /** - * Runs before an inbound packet is processed - * - * @see NetworkManager#dispatchPacket(Packet, GenericFutureListener[]) - */ - void onReceivePacket(PacketEvent event); -} +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Baritone. If not, see . + */ + +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Baritone. If not, see . + */ + +package baritone.bot.event.listener; + +import baritone.bot.event.events.*; +import io.netty.util.concurrent.GenericFutureListener; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.multiplayer.WorldClient; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; + +/** + * @author Brady + * @since 7/31/2018 11:05 PM + */ +public interface IGameEventListener { + + /** + * Run once per game tick before screen input is handled. + * + * @see Minecraft#runTick() + */ + void onTick(TickEvent event); + + /** + * Run once per game tick from before the player rotation is sent to the server. + * @see EntityPlayerSP#onUpdate() + */ + void onPlayerUpdate(); + + /** + * Run once per game tick from before keybinds are processed. + * + * @see Minecraft#processKeyBinds() + */ + void onProcessKeyBinds(); + + /** + * Runs whenever the client player sends a message to the server. + * + * @see EntityPlayerSP#sendChatMessage(String) + */ + void onSendChatMessage(ChatEvent event); + + /** + * Runs before and after whenever a chunk is either loaded, unloaded, or populated. + * + * @see WorldClient#doPreChunk(int, int, boolean) + */ + void onChunkEvent(ChunkEvent event); + + /** + * Runs once per world render pass. Two passes are made when {@link GameSettings#anaglyph} is on. + *

+ * Note: {@link GameSettings#anaglyph} has been removed in Minecraft 1.13 + * + * @see EntityRenderer#renderWorldPass(int, float, long) + */ + void onRenderPass(RenderEvent event); + + /** + * Runs before and after whenever a new world is loaded + * + * @see Minecraft#loadWorld(WorldClient, String) + */ + void onWorldEvent(WorldEvent event); + + /** + * Runs before a outbound packet is sent + * + * @see NetworkManager#dispatchPacket(Packet, GenericFutureListener[]) + */ + void onSendPacket(PacketEvent event); + + /** + * Runs before an inbound packet is processed + * + * @see NetworkManager#dispatchPacket(Packet, GenericFutureListener[]) + */ + void onReceivePacket(PacketEvent event); +}