mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
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:
parent
9549743c6d
commit
5279609561
1 changed files with 29 additions and 6 deletions
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue