diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index 0c8919406..c028d9365 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -29,6 +29,12 @@ jobs: - name: Build with Gradle run: ./gradlew build -Pmod_version="$(git describe --always --tags | cut -c2-)" + - name: Build (fabric) with Gradle + run: ./gradlew build -Pbaritone.fabric_build + + - name: Build (forge) with Gradle + run: ./gradlew build -Pbaritone.forge_build -Ploom.platform=forge + - name: Archive Artifacts uses: actions/upload-artifact@v2 with: diff --git a/scripts/proguard.pro b/scripts/proguard.pro index 36aa91d8d..1d6778336 100644 --- a/scripts/proguard.pro +++ b/scripts/proguard.pro @@ -50,7 +50,6 @@ #proguard doesnt like it when it cant find our fake schematica classes -dontwarn baritone.utils.schematic.schematica.** - # Keep - Applications. Keep all application classes, along with their 'main' # methods. -keepclasseswithmembers public class * { diff --git a/src/api/java/baritone/api/schematic/FillSchematic.java b/src/api/java/baritone/api/schematic/FillSchematic.java index a55954961..126501987 100644 --- a/src/api/java/baritone/api/schematic/FillSchematic.java +++ b/src/api/java/baritone/api/schematic/FillSchematic.java @@ -18,10 +18,11 @@ package baritone.api.schematic; import baritone.api.utils.BlockOptionalMeta; -import java.util.List; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import java.util.List; + public class FillSchematic extends AbstractSchematic { private final BlockOptionalMeta bom; diff --git a/src/launch/java/baritone/launch/mixins/MixinItemTool.java b/src/launch/java/baritone/launch/mixins/MixinItemTool.java deleted file mode 100644 index c2a30edad..000000000 --- a/src/launch/java/baritone/launch/mixins/MixinItemTool.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.launch.mixins; - -import baritone.utils.accessor.IItemTool; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.TieredItem; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(TieredItem.class) -public class MixinItemTool implements IItemTool { - @Final @Shadow private Tier tier; - - @Override - public int getHarvestLevel() { - return tier.getLevel(); - } - -} diff --git a/src/launch/resources/mixins.baritone.json b/src/launch/resources/mixins.baritone.json index d956fa2c8..eb461292f 100644 --- a/src/launch/resources/mixins.baritone.json +++ b/src/launch/resources/mixins.baritone.json @@ -17,7 +17,6 @@ "MixinEntity", "MixinEntityRenderManager", "MixinItemStack", - "MixinItemTool", "MixinLivingEntity", "MixinLootContext", "MixinMinecraft", diff --git a/src/main/java/baritone/behavior/WaypointBehavior.java b/src/main/java/baritone/behavior/WaypointBehavior.java index e37f15fff..035f1dfd6 100644 --- a/src/main/java/baritone/behavior/WaypointBehavior.java +++ b/src/main/java/baritone/behavior/WaypointBehavior.java @@ -28,6 +28,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.level.block.BedBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BedPart; @@ -69,9 +70,9 @@ public class WaypointBehavior extends Behavior { return; Waypoint deathWaypoint = new Waypoint("death", Waypoint.Tag.DEATH, ctx.playerFeet()); baritone.getWorldProvider().getCurrentWorld().getWaypoints().addWaypoint(deathWaypoint); - Component component = Component.literal("Death position saved."); - component.getStyle() - .applyFormat(ChatFormatting.WHITE) + MutableComponent component = Component.literal("Death position saved."); + component.setStyle(component.getStyle() + .withColor(ChatFormatting.WHITE) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, Component.literal("Click to goto death") @@ -85,7 +86,7 @@ public class WaypointBehavior extends Behavior { deathWaypoint.getTag().getName(), deathWaypoint.getCreationTimestamp() ) - )); + ))); Helper.HELPER.logDirect(component); } diff --git a/src/main/java/baritone/cache/ChunkPacker.java b/src/main/java/baritone/cache/ChunkPacker.java index 471809761..d544ac74d 100644 --- a/src/main/java/baritone/cache/ChunkPacker.java +++ b/src/main/java/baritone/cache/ChunkPacker.java @@ -133,7 +133,7 @@ public final class ChunkPacker { return PathingBlockType.AVOID; } if (x == 0 || x == 15 || z == 0 || z == 15) { - Vec3 flow = state.getFluidState().getFlow(chunk.getLevel(), new BlockPos(x + chunk.getPos().x << 4, y, z + chunk.getPos().z << 4)); + Vec3 flow = state.getFluidState().getFlow(chunk.getLevel(), new BlockPos(x + (chunk.getPos().x << 4), y, z + (chunk.getPos().z << 4))); if (flow.x != 0.0 || flow.z != 0.0) { return PathingBlockType.WATER; } diff --git a/src/main/java/baritone/command/defaults/SelCommand.java b/src/main/java/baritone/command/defaults/SelCommand.java index 01b50d67d..b4ba0ce59 100644 --- a/src/main/java/baritone/command/defaults/SelCommand.java +++ b/src/main/java/baritone/command/defaults/SelCommand.java @@ -39,12 +39,6 @@ import baritone.api.utils.BlockOptionalMetaLookup; import baritone.utils.IRenderer; import baritone.utils.BlockStateInterface; import baritone.utils.schematic.StaticSchematic; -import java.awt.*; -import java.util.*; -import java.util.List; -import java.util.function.Function; -import java.util.stream.Stream; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; @@ -52,6 +46,12 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; +import java.awt.*; +import java.util.*; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Stream; + public class SelCommand extends Command { private ISelectionManager manager = baritone.getSelectionManager(); diff --git a/src/main/java/baritone/command/defaults/SetCommand.java b/src/main/java/baritone/command/defaults/SetCommand.java index 29e443005..ba0bf919e 100644 --- a/src/main/java/baritone/command/defaults/SetCommand.java +++ b/src/main/java/baritone/command/defaults/SetCommand.java @@ -28,6 +28,8 @@ import baritone.api.command.exception.CommandInvalidTypeException; import baritone.api.command.helpers.Paginator; import baritone.api.command.helpers.TabCompleteHelper; import baritone.api.utils.SettingsUtil; + +import java.awt.*; import java.util.Arrays; import java.util.List; import java.util.Locale; @@ -35,6 +37,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.*; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; @@ -79,9 +82,9 @@ public class SetCommand extends Command { " (%s)", settingTypeToString(setting) )); - typeComponent.getStyle().withColor(ChatFormatting.DARK_GRAY); + typeComponent.setStyle(typeComponent.getStyle().withColor(ChatFormatting.DARK_GRAY)); MutableComponent hoverComponent = Component.literal(""); - hoverComponent.getStyle().withColor(ChatFormatting.GRAY); + hoverComponent.setStyle(hoverComponent.getStyle().withColor(ChatFormatting.GRAY)); hoverComponent.append(setting.getName()); hoverComponent.append(String.format("\nType: %s", settingTypeToString(setting))); hoverComponent.append(String.format("\n\nValue:\n%s", settingValueToString(setting))); diff --git a/src/main/java/baritone/command/defaults/WaypointsCommand.java b/src/main/java/baritone/command/defaults/WaypointsCommand.java index 09c33dade..c0f7814a2 100644 --- a/src/main/java/baritone/command/defaults/WaypointsCommand.java +++ b/src/main/java/baritone/command/defaults/WaypointsCommand.java @@ -155,8 +155,8 @@ public class WaypointsCommand extends Command { ForWaypoints.waypoints(this.baritone).removeWaypoint(waypoint); } deletedWaypoints.computeIfAbsent(baritone.getWorldProvider().getCurrentWorld(), k -> new ArrayList<>()).addAll(Arrays.asList(waypoints)); - MutableComponent MutableComponent = Component.literal(String.format("Cleared %d waypoints, click to restore them", waypoints.length)); - MutableComponent.getStyle().withClickEvent(new ClickEvent( + MutableComponent textComponent = Component.literal(String.format("Cleared %d waypoints, click to restore them", waypoints.length)); + textComponent.setStyle(textComponent.getStyle().withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, String.format( "%s%s restore @ %s", @@ -164,8 +164,8 @@ public class WaypointsCommand extends Command { label, Stream.of(waypoints).map(wp -> Long.toString(wp.getCreationTimestamp())).collect(Collectors.joining(" ")) ) - )); - logDirect(MutableComponent); + ))); + logDirect(textComponent); } else if (action == Action.RESTORE) { List waypoints = new ArrayList<>(); List deletedWaypoints = this.deletedWaypoints.getOrDefault(baritone.getWorldProvider().getCurrentWorld(), Collections.emptyList()); @@ -259,7 +259,7 @@ public class WaypointsCommand extends Command { ) ))); MutableComponent recreateComponent = Component.literal("Click to show a command to recreate this waypoint"); - recreateComponent.getStyle().withClickEvent(new ClickEvent( + recreateComponent.setStyle(recreateComponent.getStyle().withClickEvent(new ClickEvent( ClickEvent.Action.SUGGEST_COMMAND, String.format( "%s%s save %s %s %s %s %s", @@ -271,16 +271,16 @@ public class WaypointsCommand extends Command { waypoint.getLocation().y, waypoint.getLocation().z ) - )); + ))); MutableComponent backComponent = Component.literal("Click to return to the waypoints list"); - backComponent.getStyle().withClickEvent(new ClickEvent( + backComponent.setStyle(backComponent.getStyle().withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, String.format( "%s%s list", FORCE_COMMAND_PREFIX, label ) - )); + ))); logDirect(deleteComponent); logDirect(goalComponent); logDirect(recreateComponent); @@ -288,8 +288,8 @@ public class WaypointsCommand extends Command { } else if (action == Action.DELETE) { ForWaypoints.waypoints(this.baritone).removeWaypoint(waypoint); deletedWaypoints.computeIfAbsent(baritone.getWorldProvider().getCurrentWorld(), k -> new ArrayList<>()).add(waypoint); - MutableComponent MutableComponent = Component.literal("That waypoint has successfully been deleted, click to restore it"); - MutableComponent.getStyle().withClickEvent(new ClickEvent( + MutableComponent textComponent = Component.literal("That waypoint has successfully been deleted, click to restore it"); + textComponent.setStyle(textComponent.getStyle().withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, String.format( "%s%s restore @ %s", @@ -297,8 +297,8 @@ public class WaypointsCommand extends Command { label, waypoint.getCreationTimestamp() ) - )); - logDirect(MutableComponent); + ))); + logDirect(textComponent); } else if (action == Action.GOAL) { Goal goal = new GoalBlock(waypoint.getLocation()); baritone.getCustomGoalProcess().setGoal(goal); diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index fd622ae1b..08272cf28 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -157,7 +157,10 @@ public interface MovementHelper extends ActionCosts, Helper { if (block instanceof CauldronBlock) { return false; } - return state.isPathfindable(bsi.access, bsi.isPassableBlockPos.set(x, y, z), PathComputationType.LAND); // workaround for future compatibility =P + // every block that overrides isPassable with anything more complicated than a "return true;" or "return false;" + // has already been accounted for above + // therefore it's safe to not construct a blockpos from our x, y, z ints and instead just pass null + return state.isPathfindable(bsi.access, BlockPos.ZERO, PathComputationType.LAND); // workaround for future compatibility =P } /** diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 1c7809b8d..2f5f0dbcf 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -65,6 +65,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; + import java.io.File; import java.io.FileInputStream; import java.util.*; @@ -984,7 +985,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil } BlockState sch = getSchematic(x, y, z, current); if (sch != null && !Baritone.settings().buildSkipBlocks.value.contains(sch.getBlock())) { - if (sch.getBlock() == Blocks.AIR) { + if (sch.getBlock() instanceof AirBlock) { // it should be air // regardless of current contents, we can break it return 1; diff --git a/src/main/java/baritone/process/GetToBlockProcess.java b/src/main/java/baritone/process/GetToBlockProcess.java index 235fe8cb0..88cc5bfa2 100644 --- a/src/main/java/baritone/process/GetToBlockProcess.java +++ b/src/main/java/baritone/process/GetToBlockProcess.java @@ -30,13 +30,14 @@ import baritone.api.utils.input.Input; import baritone.pathing.movement.CalculationContext; import baritone.pathing.movement.MovementHelper; import baritone.utils.BaritoneProcessHelper; -import java.util.*; import net.minecraft.core.BlockPos; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import java.util.*; + public final class GetToBlockProcess extends BaritoneProcessHelper implements IGetToBlockProcess { private BlockOptionalMeta gettingTo; diff --git a/src/main/java/baritone/process/MineProcess.java b/src/main/java/baritone/process/MineProcess.java index 503ffc92c..b99369c96 100644 --- a/src/main/java/baritone/process/MineProcess.java +++ b/src/main/java/baritone/process/MineProcess.java @@ -40,6 +40,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; + import java.util.*; import java.util.stream.Collectors; diff --git a/src/main/java/baritone/utils/GuiClick.java b/src/main/java/baritone/utils/GuiClick.java index f5dd500a7..d0a435e1f 100644 --- a/src/main/java/baritone/utils/GuiClick.java +++ b/src/main/java/baritone/utils/GuiClick.java @@ -92,12 +92,12 @@ public class GuiClick extends Screen implements Helper { BaritoneAPI.getProvider().getPrimaryBaritone().getSelectionManager().removeAllSelections(); BaritoneAPI.getProvider().getPrimaryBaritone().getSelectionManager().addSelection(BetterBlockPos.from(clickStart), BetterBlockPos.from(currentMouseOver)); MutableComponent component = Component.literal("Selection made! For usage: " + Baritone.settings().prefix.value + "help sel"); - component.getStyle() + component.setStyle(component.getStyle() .withColor(ChatFormatting.WHITE) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, FORCE_COMMAND_PREFIX + "help sel" - )); + ))); Helper.HELPER.logDirect(component); clickStart = null; } else { diff --git a/src/main/java/baritone/utils/PathRenderer.java b/src/main/java/baritone/utils/PathRenderer.java index 53a88ec30..db7d11b34 100644 --- a/src/main/java/baritone/utils/PathRenderer.java +++ b/src/main/java/baritone/utils/PathRenderer.java @@ -271,9 +271,9 @@ public final class PathRenderer implements IRenderer, Helper { stack, mc.renderBuffers().bufferSource(), TEXTURE_BEACON_BEAM, - partialTicks, + settings.renderGoalAnimated.value ? partialTicks : 0, 1.0F, - player.level.getGameTime(), + settings.renderGoalAnimated.value ? player.level.getGameTime() : 0, 0, 256, color.getColorComponents(null), diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 69efd7fb0..fa2aee628 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -18,14 +18,8 @@ package baritone.utils; import baritone.Baritone; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; - -import baritone.utils.accessor.IItemTool; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.item.DiggerItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.TieredItem; @@ -34,6 +28,10 @@ import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + /** * A cached list of the best tools on the hotbar for any block * @@ -88,7 +86,7 @@ public class ToolSet { private int getMaterialCost(ItemStack itemStack) { if (itemStack.getItem() instanceof TieredItem) { TieredItem tool = (TieredItem) itemStack.getItem(); - return ((IItemTool) tool).getHarvestLevel(); + return tool.getTier().getLevel(); } else { return -1; } diff --git a/src/main/java/baritone/utils/accessor/IItemTool.java b/src/main/java/baritone/utils/accessor/IItemTool.java deleted file mode 100644 index 990cb672b..000000000 --- a/src/main/java/baritone/utils/accessor/IItemTool.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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.accessor; - -public interface IItemTool { - - int getHarvestLevel(); - -}