will now give self item in creative mode

This commit is contained in:
MaxRobinsonTheGreat 2024-06-22 15:35:18 -05:00
parent 6935035c7a
commit 7e71f12026
4 changed files with 14 additions and 2 deletions

View file

@ -12,6 +12,7 @@
"mineflayer-pvp": "^1.3.2", "mineflayer-pvp": "^1.3.2",
"openai": "^4.4.0", "openai": "^4.4.0",
"patch-package": "^8.0.0", "patch-package": "^8.0.0",
"prismarine-item": "^1.14.0",
"replicate": "^0.29.4", "replicate": "^0.29.4",
"vec3": "^0.1.10", "vec3": "^0.1.10",
"yargs": "^17.7.2" "yargs": "^17.7.2"

View file

@ -525,7 +525,7 @@ export async function placeBlock(bot, blockType, x, y, z, placeOn='bottom', dont
blockType += `[facing=${face}]`; blockType += `[facing=${face}]`;
} }
} }
if (blockType === 'repeater' || blockType === 'comparator') { if (blockType === 'ladder' || blockType === 'repeater' || blockType === 'comparator') {
blockType += `[facing=${face}]`; blockType += `[facing=${face}]`;
} }
@ -540,6 +540,10 @@ export async function placeBlock(bot, blockType, x, y, z, placeOn='bottom', dont
} }
let block = bot.inventory.items().find(item => item.name === blockType); let block = bot.inventory.items().find(item => item.name === blockType);
if (!block && bot.game.gameMode === 'creative') {
await bot.creative.setInventorySlot(36, mc.makeItem(blockType, 1)); // 36 is first hotbar slot
block = bot.inventory.items().find(item => item.name === blockType);
}
if (!block) { if (!block) {
log(bot, `Don't have any ${blockType} to place.`); log(bot, `Don't have any ${blockType} to place.`);
return false; return false;

View file

@ -261,6 +261,8 @@ export function shouldPlaceTorch(bot) {
const pos = getPosition(bot); const pos = getPosition(bot);
// TODO: check light level instead of nearby torches, block.light is broken // TODO: check light level instead of nearby torches, block.light is broken
let nearest_torch = getNearestBlock(bot, 'torch', 6); let nearest_torch = getNearestBlock(bot, 'torch', 6);
if (!nearest_torch)
nearest_torch = getNearestBlock(bot, 'wall_torch', 6);
if (!nearest_torch) { if (!nearest_torch) {
const block = bot.blockAt(pos); const block = bot.blockAt(pos);
let has_torch = bot.inventory.items().find(item => item.name === 'torch'); let has_torch = bot.inventory.items().find(item => item.name === 'torch');

View file

@ -1,6 +1,7 @@
import minecraftData from 'minecraft-data'; import minecraftData from 'minecraft-data';
import settings from '../../settings.js'; import settings from '../../settings.js';
import { createBot } from 'mineflayer'; import { createBot } from 'mineflayer';
import prismarine_items from 'prismarine-item';
import { pathfinder } from 'mineflayer-pathfinder'; import { pathfinder } from 'mineflayer-pathfinder';
import { plugin as pvp } from 'mineflayer-pvp'; import { plugin as pvp } from 'mineflayer-pvp';
import { plugin as collectblock } from 'mineflayer-collectblock'; import { plugin as collectblock } from 'mineflayer-collectblock';
@ -10,7 +11,7 @@ const armorManager = plugin;
const mc_version = settings.minecraft_version; const mc_version = settings.minecraft_version;
const mcdata = minecraftData(mc_version); const mcdata = minecraftData(mc_version);
const Item = prismarine_items(mc_version);
export const WOOD_TYPES = ['oak', 'spruce', 'birch', 'jungle', 'acacia', 'dark_oak']; export const WOOD_TYPES = ['oak', 'spruce', 'birch', 'jungle', 'acacia', 'dark_oak'];
export const MATCHING_WOOD_BLOCKS = [ export const MATCHING_WOOD_BLOCKS = [
@ -237,3 +238,7 @@ export function getBlockTool(blockName) {
} }
return getItemName(Object.keys(block.harvestTools)[0]); // Double check first tool is always simplest return getItemName(Object.keys(block.harvestTools)[0]); // Double check first tool is always simplest
} }
export function makeItem(name, amount=1) {
return new Item(getItemId(name), amount);
}