Polish legacy Farmer validation logic

Agent-Logs-Url: https://github.com/MCCTeam/Minecraft-Console-Client/sessions/395596c2-cc40-4295-8100-a8408243f45b

Co-authored-by: milutinke <441903+milutinke@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-04-17 08:00:41 +00:00 committed by GitHub
parent 9549743c6d
commit 5279609561
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -616,18 +616,18 @@ namespace MinecraftClient.ChatBots
if (fullyGrown && material is Material.Melon or Material.Pumpkin)
return true;
var isFullyGrown = IsCropFullyGrown(GetWorld().GetBlock(location), cropType);
var isFullyGrown = IsCropFullyGrown(GetWorld().GetBlock(location), cropType, location);
return fullyGrown ? isFullyGrown : !isFullyGrown;
})
.ToList();
}
private bool IsCropFullyGrown(Block block, CropType cropType)
private bool IsCropFullyGrown(Block block, CropType cropType, Location? location = null)
{
var protocolVersion = GetProtocolVersion();
if (protocolVersion < Protocol18Handler.MC_1_13_Version)
return IsLegacyCropFullyGrown(block, cropType);
return IsLegacyCropFullyGrown(block, cropType, location);
switch (cropType)
{
@ -784,21 +784,44 @@ namespace MinecraftClient.ChatBots
return false;
}
private static bool IsLegacyCropFullyGrown(Block block, CropType cropType)
private bool IsLegacyCropFullyGrown(Block block, CropType cropType, Location? location)
{
return cropType switch
{
CropType.Beetroot => block.BlockId == 207 && block.BlockMeta >= 3,
CropType.Carrot => block.BlockId == 141 && block.BlockMeta >= 7,
CropType.Melon => block.BlockId == 105 && block.BlockMeta >= 7,
CropType.Melon => block.BlockId == 105
&& (block.BlockMeta >= 7 || HasAdjacentBlock(location, Material.Melon)),
CropType.NetherWart => block.BlockId == 115 && block.BlockMeta >= 3,
CropType.Pumpkin => block.BlockId == 104 && block.BlockMeta >= 7,
CropType.Pumpkin => block.BlockId == 104
&& (block.BlockMeta >= 7 || HasAdjacentBlock(location, Material.Pumpkin)),
CropType.Potato => block.BlockId == 142 && block.BlockMeta >= 7,
CropType.Wheat => block.BlockId == 59 && block.BlockMeta >= 7,
_ => false
};
}
private bool HasAdjacentBlock(Location? location, Material material)
{
if (location is not Location stemLocation)
return false;
var world = GetWorld();
int x = (int)Math.Floor(stemLocation.X);
int y = (int)Math.Floor(stemLocation.Y);
int z = (int)Math.Floor(stemLocation.Z);
Location[] adjacentLocations =
[
new(x + 1, y, z),
new(x - 1, y, z),
new(x, y, z + 1),
new(x, y, z - 1)
];
return adjacentLocations.Any(adjacentLocation => world.GetBlock(adjacentLocation).Type == material);
}
// Yoinked from ReinforceZwei's AutoTree and adapted to search the whole of inventory in additon to the hotbar
private bool SwitchToItem(ItemType itemType)
{