From 18f5c129a48e873a4ef2d7ed26f19365aa9fd3fc Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 14 Dec 2018 17:24:07 -0600 Subject: [PATCH] Remove dependency for PlayerControllerMP implementation --- .../baritone/api/utils/IPlayerContext.java | 3 +- .../baritone/api/utils/IPlayerController.java | 43 ++++++++++++++ .../utils/player/PrimaryPlayerContext.java | 5 +- .../utils/player/PrimaryPlayerController.java | 58 +++++++++++++++++++ 4 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 src/api/java/baritone/api/utils/IPlayerController.java create mode 100644 src/main/java/baritone/utils/player/PrimaryPlayerController.java diff --git a/src/api/java/baritone/api/utils/IPlayerContext.java b/src/api/java/baritone/api/utils/IPlayerContext.java index cd80a7d9..83040ab5 100644 --- a/src/api/java/baritone/api/utils/IPlayerContext.java +++ b/src/api/java/baritone/api/utils/IPlayerContext.java @@ -20,7 +20,6 @@ package baritone.api.utils; import baritone.api.cache.IWorldData; import net.minecraft.block.BlockSlab; import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraft.client.multiplayer.PlayerControllerMP; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; @@ -37,7 +36,7 @@ public interface IPlayerContext { EntityPlayerSP player(); - PlayerControllerMP playerController(); + IPlayerController playerController(); World world(); diff --git a/src/api/java/baritone/api/utils/IPlayerController.java b/src/api/java/baritone/api/utils/IPlayerController.java new file mode 100644 index 00000000..bf987a06 --- /dev/null +++ b/src/api/java/baritone/api/utils/IPlayerController.java @@ -0,0 +1,43 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.api.utils; + +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.GameType; + +/** + * @author Brady + * @since 12/14/2018 + */ +public interface IPlayerController { + + boolean clickBlock(BlockPos pos, EnumFacing side); + + boolean onPlayerDamageBlock(BlockPos pos, EnumFacing side); + + void resetBlockRemoving(); + + void setGameType(GameType type); + + GameType getGameType(); + + default double getBlockReachDistance() { + return this.getGameType().isCreative() ? 5.0F : 4.5F; + } +} diff --git a/src/main/java/baritone/utils/player/PrimaryPlayerContext.java b/src/main/java/baritone/utils/player/PrimaryPlayerContext.java index 4247e92b..05b1f80a 100644 --- a/src/main/java/baritone/utils/player/PrimaryPlayerContext.java +++ b/src/main/java/baritone/utils/player/PrimaryPlayerContext.java @@ -20,6 +20,7 @@ package baritone.utils.player; import baritone.api.BaritoneAPI; import baritone.api.cache.IWorldData; import baritone.api.utils.IPlayerContext; +import baritone.api.utils.IPlayerController; import baritone.utils.Helper; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.multiplayer.PlayerControllerMP; @@ -42,8 +43,8 @@ public enum PrimaryPlayerContext implements IPlayerContext, Helper { } @Override - public PlayerControllerMP playerController() { - return mc.playerController; + public IPlayerController playerController() { + return PrimaryPlayerController.INSTANCE; } @Override diff --git a/src/main/java/baritone/utils/player/PrimaryPlayerController.java b/src/main/java/baritone/utils/player/PrimaryPlayerController.java new file mode 100644 index 00000000..750d578c --- /dev/null +++ b/src/main/java/baritone/utils/player/PrimaryPlayerController.java @@ -0,0 +1,58 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils.player; + +import baritone.api.utils.IPlayerController; +import baritone.utils.Helper; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.GameType; + +/** + * @author Brady + * @since 12/14/2018 + */ +public enum PrimaryPlayerController implements IPlayerController, Helper { + + INSTANCE; + + @Override + public boolean clickBlock(BlockPos pos, EnumFacing side) { + return mc.playerController.clickBlock(pos, side); + } + + @Override + public boolean onPlayerDamageBlock(BlockPos pos, EnumFacing side) { + return mc.playerController.onPlayerDamageBlock(pos, side); + } + + @Override + public void resetBlockRemoving() { + mc.playerController.resetBlockRemoving(); + } + + @Override + public void setGameType(GameType type) { + mc.playerController.setGameType(type); + } + + @Override + public GameType getGameType() { + return mc.playerController.getCurrentGameType(); + } +}