Jump to content

How to make the player hold down left click? [1.18.1]


GabrielSnow

Recommended Posts

So I've been making a Minecraft bot because I want to get into AI and because I'm a bored student and I can't figure out how to make the player hold down left click, I've seen many people use KeyBind or minecraft.player.gameSettings but I figured that that doesn't work anymore because it's only in older versions(I think), I can't make the imports work (net.minecraft.client.settings). So far I figured out how to do it with the Baritone API using a loop but it's very CPU intensive, adding a delay makes it not work.

 

while(true) { BaritoneAPI.getProvider().getPrimaryBaritone().getInputOverrideHandler().setInputForceState(baritone.api.utils.input.Input.CLICK_LEFT, true); }

 

Link to comment
Share on other sites

yeah that something im also interested but will try to avoid packages and complex things 

let say make a capability whit some values like 

int action = 0;

long start = 0L;

Spoiler

				
			package merctool.item.tool;				
			import net.minecraft.core.NonNullList;				
			import net.minecraft.nbt.CompoundTag;
		import net.minecraft.nbt.ListTag;
		import net.minecraft.nbt.Tag;
		import net.minecraft.world.item.ItemStack;
		import net.minecraftforge.common.capabilities.ForgeCapabilities;
		import net.minecraftforge.items.ItemStackHandler;
		import org.jetbrains.annotations.NotNull;
		import org.jetbrains.annotations.Nullable;				
			/*
		helditem.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(handler00 -> {
		    item_handler ih = (item_handler)handler00;
		    System.out.println(warudo.isClientSide + " ih.fuel => " + ih.fuel );                
		   });
		*/				
			public class item_handler extends ItemStackHandler {
		    public ItemStack container = null;				
			    public float fuel   = 0;
		    public int munition = 0;
		    public int type = 0;				
			    public long start   = 0;
		    public int action   = 0;
		    public int tick     = 0;
		    public int limit    = 1200;				
			    public item_handler(ItemStack container) {
		        super(0);
		        this.container = container;
		    }				
			    public void print(String mensaje) {
		        System.out.println("\n" + mensaje);
		        System.out.println("this.fuel     = " + this.fuel);
		        System.out.println("this.munition = " + this.munition);
		        System.out.println("this.type     = " + this.type);
		        System.out.println("this.start    = " + this.start);
		        System.out.println("this.action   = " + this.action);
		        System.out.println("this.tick     = " + this.tick);
		        System.out.println("this.limit    = " + this.limit);
		        System.out.println("\n");
		    }				
			    @Override
		    public int getSlotLimit(int slot) {
		        return 64;
		    }				
			    @Override
		    public boolean isItemValid(int slot, @NotNull ItemStack stack) {
		        if (stack == null || stack.isEmpty()) // || stack.getItem() instanceof BasketBlockItem
		        {
		            return false;
		        } else {
		            return super.isItemValid(slot, stack);
		        }
		    }				
			    @Override
		    public void setStackInSlot(int slot, @NotNull ItemStack stack) {				
			        //// System.out.println("setStackInSlot(" + slot + ")");
		        validateSlotIndex(slot);
		        this.stacks.set(slot, stack);
		        onContentsChanged(slot);				
			        if (this.container != null) {
		            // write_item_to_slot(this.container, slot, stack);
		        }
		    }				
			    // ########## ########## ########## ##########
		    // @Override
		    public static NonNullList<ItemStack> read_items_from(ItemStack itemstack) {				
			        NonNullList<ItemStack> contained_items = NonNullList.withSize(9, ItemStack.EMPTY);// this.getContainerSize()				
			        if (itemstack.hasTag()) {
		            CompoundTag compoundtag = itemstack.getTag();
		            ListTag listtag = null;
		            int size = 0;				
			            if (compoundtag.contains("Items")) {
		                // ListTag listtag = new ListTag();
		                listtag = compoundtag.getList("Items", 10);
		                size = listtag.size();
		                // contained_items = NonNullList.withSize(size, ItemStack.EMPTY);				
			                for (int i = 0; i < listtag.size(); ++i) {
		                    CompoundTag itemstacktag = listtag.getCompound(i);
		                    int j = compoundtag.getByte("Slot") & 255;
		                    if (j >= 0 && j < contained_items.size()) {
		                        contained_items.set(j, ItemStack.of(itemstacktag));
		                    }
		                }
		            }
		        }
		        return contained_items;
		    }				
			    // ########## ########## ########## ##########
		    // @Override
		    public void write_item_to_slot(ItemStack container, int slot, @NotNull ItemStack stack) {
		        // , NonNullList<ItemStack> contained_items				
			        CompoundTag compoundtag = null;				
			        if (container.hasTag()) {
		            compoundtag = container.getTag();
		        } else {
		            compoundtag = new CompoundTag();
		        }				
			        ListTag listtag = null;
		        if (compoundtag.contains("Items")) {
		            listtag = compoundtag.getList("Items", 10);
		        } else {
		            listtag = new ListTag();
		        }				
			        CompoundTag itemstacktag = null;				
			        if (slot < listtag.size()) {
		            itemstacktag = listtag.getCompound(slot);
		        } else {
		            itemstacktag = new CompoundTag();
		        }				
			        itemstacktag.putByte("Slot", (byte) slot);
		        stack.save(itemstacktag);
		        listtag.add(itemstacktag); // aqui tengi una duda, se sobreescrive o crea otra ??				
			        compoundtag.put("Items", listtag);
		        container.setTag(compoundtag);
		    }				
			    @Override
		    public CompoundTag serializeNBT() {
		        ListTag nbtTagList = new ListTag();
		        for (int i = 0; i < stacks.size(); i++) {
		            if (!stacks.get(i).isEmpty()) {
		                CompoundTag itemTag = new CompoundTag();
		                itemTag.putInt("Slot", i);
		                stacks.get(i).save(itemTag);
		                nbtTagList.add(itemTag);
		            }
		        }
		        CompoundTag nbt = new CompoundTag();
		        nbt.put("Items", nbtTagList);
		        nbt.putInt("Size", stacks.size());				
			        nbt.putInt("munition", this.munition);
		        nbt.putInt("type", this.type);
		        nbt.putFloat("fuel",   this.fuel);
		        nbt.putLong("start",   this.start);
		        nbt.putShort("action", (short) this.action);
		        nbt.putShort("limit",  (short) this.limit);
		        this.tick = 0;
		        
		        //print("serializeNBT()");
		        
		        onSave();
		        
		        return nbt;
		    }				
			    @Override
		    public void deserializeNBT(CompoundTag nbt) {
		        setSize(nbt.contains("Size", Tag.TAG_INT) ? nbt.getInt("Size") : stacks.size());
		        ListTag tagList = nbt.getList("Items", Tag.TAG_COMPOUND);
		        for (int i = 0; i < tagList.size(); i++) {
		            CompoundTag itemTags = tagList.getCompound(i);
		            int slot = itemTags.getInt("Slot");				
			            if (slot >= 0 && slot < stacks.size()) {
		                stacks.set(slot, ItemStack.of(itemTags));
		            }
		        }				
			        this.munition = nbt.getInt("munition");
		        this.fuel = nbt.getFloat("fuel");
		        this.type = nbt.getInt("type");				
			        this.limit = nbt.getShort("limit");
		        this.start = nbt.getLong("start");
		        this.action = nbt.getShort("action");				
			        //System.out.println( "DeserializeNBT()" );
		        //print("DeserializeNBT()");
		        onLoad();
		    }
		    
		    //@Override
		    protected void onSave()
		    {
		        //System.out.println("item_handler __ onSave() ");
		        
		        if(this.action > 0) {
		            //this.tick = get_tick();
		            
		            if( this.action > 0) {
		                if( this.start > 0L ) {
		                //System.out.println( "Calcular_tick()\n" );
		                this.tick = (int) ((System.currentTimeMillis() - this.start) / 50); // 50
		                this.tick = (this.tick > this.limit)? this.limit : this.tick;
		                }
		            }    
		        }
		        
		        //System.out.println("item_handler __ onSave() " + this.tick );				
			    }
		    
		    
		    @Override
		    protected void onLoad()
		    {
		        //System.out.println("item_handler __ onLoad() ");
		        
		        if(this.action > 0) {
		            //this.tick = get_tick();
		            
		            if( this.action > 0) {
		                if( this.start > 0L ) {
		                //System.out.println( "Calcular_tick()\n" );
		                this.tick = (int) ((System.currentTimeMillis() - this.start) / 50); // 50
		                this.tick = (this.tick > this.limit)? this.limit : this.tick;
		                }
		            }    
		            
		        }
		        
		        //System.out.println("item_handler __ onLoad() " + this.tick );				
			    }
		    
		    				
			    public void start(int action) {				
			        if ( this.action != action ) {
		            this.action = action;
		            this.start = System.currentTimeMillis(); // 50
		            this.tick = 0;
		        }				
			    }				
			    public void stop() {
		        this.action = 0;
		        this.start = 0; // 50
		        this.tick = 0;
		        this.limit = 1200;
		    }				
			    
		    public int get_tick() {
		        /*
		        if( this.tick > 0) {
		        } 
		        else if( this.action > 0) {
		            if( this.start > 0L ) {
		            //System.out.println( "Calcular_tick()\n" );
		            this.tick = (int) ((System.currentTimeMillis() - this.start) / 50); // 50
		            this.tick = (this.tick > this.limit)? this.limit : this.tick;
		            }
		        }        
		        */
		        return this.tick;
		    }
		    
		}
		 				
			

 

in the item on swing make action to lets say 5  and start equal to actual time in milli seconds 

	public boolean onEntitySwing(ItemStack helditem, LivingEntity le) {
        System.out.println("onEntitySwing");
	           item_handler ih = get_itemhandler(helditem);        
            ih.start = System.currentTimeMillis();
            ih.action = 5;

 

then on inventoryTick check the action set 

 

	    // ########## ########## ########## ##########
    @Override
    public void inventoryTick(ItemStack helditem, Level warudo, Entity entity, int slot, boolean p_41408_) {
        System.out.println("inventoryTick " + slot);
	        if (!warudo.isClientSide && slot < 9) {
            item_handler ih = get_itemhandler(helditem);
	            if (ih.action == 5) {
	               int tick = ih.get_tick();
                // hot do i check if the player entity is presing left click ?????
	                // if is presing keep counting and call onUseTick
	                // if its not stop and call releaseUsing
	            }
        }
    }
	#############################################
	then i get stuck coze i dont know how from server side ask what mouse keis is the player presing 
Minecraft.getMouseEvent or pe.isShiftKeyDown()  or something  
	 
	 
	 
	

        

 

 

 

 


 

 

 

Link to comment
Share on other sites

	package merctool.item.stick;
	import org.jetbrains.annotations.Nullable;
	import merctool.item.ItemInit;
import merctool.item.tool.item_c_provider;
import merctool.item.tool.item_handler;
import merctool.util.Postate;
import merctool.util.Target;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Vec3i;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.AbstractCauldronBlock;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.ToolAction;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
	public class stick_lefclick extends Item {
	    public static final DirectionProperty FACING = BlockStateProperties.FACING;
	    // ########## ########## ########## ##########
    public stick_lefclick(Properties propiedad) {
        super(propiedad);
        // TODO Auto-generated constructor stub
	        // ahora las propiedades se declaran en el client side dela clase pricipal
        // esto va a ser un arco por ahora
	    }
	    // ########## ########## ########## ##########
    @Nullable
    @Override
    public ICapabilityProvider initCapabilities(ItemStack csaw, @Nullable CompoundTag nbt) {
        return new item_c_provider(csaw);
    }
	    // ########## ########## ########## ##########
    public static item_handler get_itemhandler(ItemStack csaw) {
        // item_handler ih = get_itemhandler(helditem);
	        item_handler ih = ((item_handler) csaw.getCapability(ForgeCapabilities.ITEM_HANDLER)
                .orElseThrow(() -> new RuntimeException("O_O")));
	        return ih;
    }
	    // ########## ########## ########## ##########
    @Override
    public InteractionResultHolder<ItemStack> use(Level warudo, Player pe, InteractionHand hand) {
	        ItemStack itemstack = pe.getItemInHand(hand);
	        Target target = new Target(warudo, pe, 10);
	        Vec3 vh = target.calcular_vh();
	        if (vh != null) {
	            BlockPos pos = new BlockPos(vh);// .x, vh.y ,vh.z
	            System.out.println(((warudo.isClientSide) ? "local : " : "remote: ") + pos);
	            Vec3i vo = new Vec3i(pos.getX(), pos.getY() + 1, pos.getZ());
	            particle(warudo, Vec3.atCenterOf(vo));
	        }
	        return InteractionResultHolder.pass(pe.getItemInHand(hand));
    }
	    // ########## ########## ########## ##########
    @Override
    public boolean onEntitySwing(ItemStack helditem, LivingEntity le) {
	        System.out.println("onEntitySwing");
        Level warudo = le.level;
	        if (!warudo.isClientSide) {
            item_handler ih = get_itemhandler(helditem);
            ih.start(5);
        }
	        
        
        // ItemStack itemstack = le.getItemInHand(hand);
	        Target target = new Target(warudo, le, 10);
	        Vec3 vh = target.calcular_vh();
	        if (vh != null) {
	            BlockPos pos = new BlockPos(vh);// .x, vh.y ,vh.z
	            System.out.println(((warudo.isClientSide) ? "local : " : "remote: ") + vh);
	            Vec3i vo = new Vec3i(pos.getX(), pos.getY() + 1, pos.getZ());
	            particle(warudo, Vec3.atCenterOf(vo));
	        }
	        // le.startUsingItem(InteractionHand.MAIN_HAND);
	        // le.stopUsingItem();
	        le.setItemInHand(InteractionHand.MAIN_HAND, helditem);
	        // le.swing(InteractionHand.MAIN_HAND);
	        return false;
    }
	    // ########## ########## ########## ##########
    @Override
    public void inventoryTick(ItemStack helditem, Level warudo, Entity entity, int slot, boolean p_41408_) {
        System.out.println("inventoryTick " + slot);
	        if (!warudo.isClientSide) {
            item_handler ih = get_itemhandler(helditem);
	            if (ih.action == 5) {
                // hot do i check if the player entity is presing left click ?????
	                // if is presing keep counting and call onUseTick
	                // if its not stop and call releaseUsing
	            }
        }
    }
	    // ########## ########## ########## ##########
    @Override
    public InteractionResult useOn(UseOnContext p_41427_) {
        System.out.println("useOn");
	        return InteractionResult.PASS;
    }
	    // ########## ########## ########## ##########
    @Override
    public boolean onLeftClickEntity(ItemStack stack, Player player, Entity entity) {
        System.out.println("onLeftClickEntity");
	        return false;
    }
	    // ########## ########## ########## ##########
    @Override
    public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) {
        // System.out.println("onEntityItemUpdate");
	        return false;
    }
	    // ########## ########## ########## ##########
    @Override
    public boolean canPerformAction(ItemStack stack, ToolAction toolAction) {
        System.out.println("canPerformAction");
	        return false;
    }
	    // ########## ########## ########## ##########
    public void particle(Level warudo, Vec3 vh) {
	        warudo.addAlwaysVisibleParticle(ParticleTypes.FLAME, vh.x, vh.y, vh.z, 0.0D, 0.0D, 0.0D);
        warudo.addParticle(ParticleTypes.SMOKE, vh.x, vh.y, vh.z, 0.0D, 0.0D, 0.0D);
	        // pe.playSound(SoundEvents.FIRE_EXTINGUISH, 1.0F, 1.0F);
    }
	    // ########## ########## ########## ##########
    public static boolean if_is_wet_drop(Postate relative_postate) {
	        boolean drop = false;
	        if (relative_postate != null) {
	            // relative_postate.print();
	            if (relative_postate.getMaterial() == Material.WATER) {
                drop = true;
                // System.out.println("\nWATER BLOCK ");
                relative_postate.setBlockState(Blocks.AIR.defaultBlockState());
	            } else if (relative_postate.is_WATERLOGGED()) {
                drop = true;
                // System.out.println("\nWATERlogged ");
	                relative_postate.set_WATERLOGGED(false);
            } else if (relative_postate.getBlock() instanceof AbstractCauldronBlock) {
                int level = relative_postate.getBlockState().getValue(BlockStateProperties.LEVEL_CAULDRON);
	                // System.out.println("\nCAULDRUM LEVEL = " + level);
	                if (level > 0) {
                    drop = true;
                    level = level - 1;
	                    if (level < 1) {
                        relative_postate.setBlockState(Blocks.CAULDRON.defaultBlockState());
                    } else {
                        relative_postate.setBlockState(
                                relative_postate.getBlockState().setValue(BlockStateProperties.LEVEL_CAULDRON, level));
                    }
                }
            }
        }
	        if (drop == true) {
	            // System.out.println("\nSAVING BLOCK AS ");
            // relative_postate.print();
	            relative_postate.setBlock(2);
	            Level warudo = relative_postate.level();
            Vec3 center = relative_postate.get_center();
	            ItemStack dropstack = new ItemStack(ItemInit.INGOT_STEEL.get(), 1);
	            // itemstack.shrink(1);
	            if (warudo.isClientSide) {
                // System.out.println("FLAME " + warudo.isClientSide);
                warudo.addParticle(ParticleTypes.FLAME, (center.x), (center.y + 0.5F), (center.z), 0.0D, 0.0D, 0.0D);
                // le.playSound(SoundEvents.FIRE_EXTINGUISH, 1.0F, 1.0F);
            }
	            if (!warudo.isClientSide) {
                ItemEntity pdrop = new ItemEntity(warudo, (center.x), (center.y + 0.5F), (center.z), dropstack);
                warudo.addFreshEntity(pdrop);
            }
	        }
	        return drop;
    }
	    // ########## ########## ########## ##########
    public static void drop(Level warudo, LivingEntity le, BlockPos pos, ItemStack itemstack) {
	        if (warudo.isClientSide) {
            warudo.addParticle(ParticleTypes.FLAME, (double) (pos.getX() + 0.5F), (double) (pos.getY() + 1.0F),
                    (double) (pos.getZ() + 0.5F), 0.0D, 0.0D, 0.0D);
            le.playSound(SoundEvents.FIRE_EXTINGUISH, 1.0F, 1.0F);
        }
	        if (!warudo.isClientSide) {
            ItemEntity drop = new ItemEntity(warudo, (double) (pos.getX() + 0.5F), (double) (pos.getY() + 1.0F),
                    (double) (pos.getZ() + 0.5F), itemstack);
            warudo.addFreshEntity(drop);
        }
	    }
	    // ########## ########## ########## ##########
}
 
	
Link to comment
Share on other sites

12 hours ago, perromercenary00 said:

yeah that something im also interested but will try to avoid packages and complex things 

let say make a capability whit some values like 

int action = 0;

long start = 0L;

  Hide contents

 

				
			package merctool.item.tool;				
			import net.minecraft.core.NonNullList;				
			import net.minecraft.nbt.CompoundTag;
		import net.minecraft.nbt.ListTag;
		import net.minecraft.nbt.Tag;
		import net.minecraft.world.item.ItemStack;
		import net.minecraftforge.common.capabilities.ForgeCapabilities;
		import net.minecraftforge.items.ItemStackHandler;
		import org.jetbrains.annotations.NotNull;
		import org.jetbrains.annotations.Nullable;				
			/*
		helditem.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(handler00 -> {
		    item_handler ih = (item_handler)handler00;
		    System.out.println(warudo.isClientSide + " ih.fuel => " + ih.fuel );                
		   });
		*/				
			public class item_handler extends ItemStackHandler {
		    public ItemStack container = null;				
			    public float fuel   = 0;
		    public int munition = 0;
		    public int type = 0;				
			    public long start   = 0;
		    public int action   = 0;
		    public int tick     = 0;
		    public int limit    = 1200;				
			    public item_handler(ItemStack container) {
		        super(0);
		        this.container = container;
		    }				
			    public void print(String mensaje) {
		        System.out.println("\n" + mensaje);
		        System.out.println("this.fuel     = " + this.fuel);
		        System.out.println("this.munition = " + this.munition);
		        System.out.println("this.type     = " + this.type);
		        System.out.println("this.start    = " + this.start);
		        System.out.println("this.action   = " + this.action);
		        System.out.println("this.tick     = " + this.tick);
		        System.out.println("this.limit    = " + this.limit);
		        System.out.println("\n");
		    }				
			    @Override
		    public int getSlotLimit(int slot) {
		        return 64;
		    }				
			    @Override
		    public boolean isItemValid(int slot, @NotNull ItemStack stack) {
		        if (stack == null || stack.isEmpty()) // || stack.getItem() instanceof BasketBlockItem
		        {
		            return false;
		        } else {
		            return super.isItemValid(slot, stack);
		        }
		    }				
			    @Override
		    public void setStackInSlot(int slot, @NotNull ItemStack stack) {				
			        //// System.out.println("setStackInSlot(" + slot + ")");
		        validateSlotIndex(slot);
		        this.stacks.set(slot, stack);
		        onContentsChanged(slot);				
			        if (this.container != null) {
		            // write_item_to_slot(this.container, slot, stack);
		        }
		    }				
			    // ########## ########## ########## ##########
		    // @Override
		    public static NonNullList<ItemStack> read_items_from(ItemStack itemstack) {				
			        NonNullList<ItemStack> contained_items = NonNullList.withSize(9, ItemStack.EMPTY);// this.getContainerSize()				
			        if (itemstack.hasTag()) {
		            CompoundTag compoundtag = itemstack.getTag();
		            ListTag listtag = null;
		            int size = 0;				
			            if (compoundtag.contains("Items")) {
		                // ListTag listtag = new ListTag();
		                listtag = compoundtag.getList("Items", 10);
		                size = listtag.size();
		                // contained_items = NonNullList.withSize(size, ItemStack.EMPTY);				
			                for (int i = 0; i < listtag.size(); ++i) {
		                    CompoundTag itemstacktag = listtag.getCompound(i);
		                    int j = compoundtag.getByte("Slot") & 255;
		                    if (j >= 0 && j < contained_items.size()) {
		                        contained_items.set(j, ItemStack.of(itemstacktag));
		                    }
		                }
		            }
		        }
		        return contained_items;
		    }				
			    // ########## ########## ########## ##########
		    // @Override
		    public void write_item_to_slot(ItemStack container, int slot, @NotNull ItemStack stack) {
		        // , NonNullList<ItemStack> contained_items				
			        CompoundTag compoundtag = null;				
			        if (container.hasTag()) {
		            compoundtag = container.getTag();
		        } else {
		            compoundtag = new CompoundTag();
		        }				
			        ListTag listtag = null;
		        if (compoundtag.contains("Items")) {
		            listtag = compoundtag.getList("Items", 10);
		        } else {
		            listtag = new ListTag();
		        }				
			        CompoundTag itemstacktag = null;				
			        if (slot < listtag.size()) {
		            itemstacktag = listtag.getCompound(slot);
		        } else {
		            itemstacktag = new CompoundTag();
		        }				
			        itemstacktag.putByte("Slot", (byte) slot);
		        stack.save(itemstacktag);
		        listtag.add(itemstacktag); // aqui tengi una duda, se sobreescrive o crea otra ??				
			        compoundtag.put("Items", listtag);
		        container.setTag(compoundtag);
		    }				
			    @Override
		    public CompoundTag serializeNBT() {
		        ListTag nbtTagList = new ListTag();
		        for (int i = 0; i < stacks.size(); i++) {
		            if (!stacks.get(i).isEmpty()) {
		                CompoundTag itemTag = new CompoundTag();
		                itemTag.putInt("Slot", i);
		                stacks.get(i).save(itemTag);
		                nbtTagList.add(itemTag);
		            }
		        }
		        CompoundTag nbt = new CompoundTag();
		        nbt.put("Items", nbtTagList);
		        nbt.putInt("Size", stacks.size());				
			        nbt.putInt("munition", this.munition);
		        nbt.putInt("type", this.type);
		        nbt.putFloat("fuel",   this.fuel);
		        nbt.putLong("start",   this.start);
		        nbt.putShort("action", (short) this.action);
		        nbt.putShort("limit",  (short) this.limit);
		        this.tick = 0;
		        
		        //print("serializeNBT()");
		        
		        onSave();
		        
		        return nbt;
		    }				
			    @Override
		    public void deserializeNBT(CompoundTag nbt) {
		        setSize(nbt.contains("Size", Tag.TAG_INT) ? nbt.getInt("Size") : stacks.size());
		        ListTag tagList = nbt.getList("Items", Tag.TAG_COMPOUND);
		        for (int i = 0; i < tagList.size(); i++) {
		            CompoundTag itemTags = tagList.getCompound(i);
		            int slot = itemTags.getInt("Slot");				
			            if (slot >= 0 && slot < stacks.size()) {
		                stacks.set(slot, ItemStack.of(itemTags));
		            }
		        }				
			        this.munition = nbt.getInt("munition");
		        this.fuel = nbt.getFloat("fuel");
		        this.type = nbt.getInt("type");				
			        this.limit = nbt.getShort("limit");
		        this.start = nbt.getLong("start");
		        this.action = nbt.getShort("action");				
			        //System.out.println( "DeserializeNBT()" );
		        //print("DeserializeNBT()");
		        onLoad();
		    }
		    
		    //@Override
		    protected void onSave()
		    {
		        //System.out.println("item_handler __ onSave() ");
		        
		        if(this.action > 0) {
		            //this.tick = get_tick();
		            
		            if( this.action > 0) {
		                if( this.start > 0L ) {
		                //System.out.println( "Calcular_tick()\n" );
		                this.tick = (int) ((System.currentTimeMillis() - this.start) / 50); // 50
		                this.tick = (this.tick > this.limit)? this.limit : this.tick;
		                }
		            }    
		        }
		        
		        //System.out.println("item_handler __ onSave() " + this.tick );				
			    }
		    
		    
		    @Override
		    protected void onLoad()
		    {
		        //System.out.println("item_handler __ onLoad() ");
		        
		        if(this.action > 0) {
		            //this.tick = get_tick();
		            
		            if( this.action > 0) {
		                if( this.start > 0L ) {
		                //System.out.println( "Calcular_tick()\n" );
		                this.tick = (int) ((System.currentTimeMillis() - this.start) / 50); // 50
		                this.tick = (this.tick > this.limit)? this.limit : this.tick;
		                }
		            }    
		            
		        }
		        
		        //System.out.println("item_handler __ onLoad() " + this.tick );				
			    }
		    
		    				
			    public void start(int action) {				
			        if ( this.action != action ) {
		            this.action = action;
		            this.start = System.currentTimeMillis(); // 50
		            this.tick = 0;
		        }				
			    }				
			    public void stop() {
		        this.action = 0;
		        this.start = 0; // 50
		        this.tick = 0;
		        this.limit = 1200;
		    }				
			    
		    public int get_tick() {
		        /*
		        if( this.tick > 0) {
		        } 
		        else if( this.action > 0) {
		            if( this.start > 0L ) {
		            //System.out.println( "Calcular_tick()\n" );
		            this.tick = (int) ((System.currentTimeMillis() - this.start) / 50); // 50
		            this.tick = (this.tick > this.limit)? this.limit : this.tick;
		            }
		        }        
		        */
		        return this.tick;
		    }
		    
		}
		 				
			

 

 

in the item on swing make action to lets say 5  and start equal to actual time in milli seconds 

 

	public boolean onEntitySwing(ItemStack helditem, LivingEntity le) {
        System.out.println("onEntitySwing");
	           item_handler ih = get_itemhandler(helditem);        
            ih.start = System.currentTimeMillis();
            ih.action = 5;

 

 

then on inventoryTick check the action set 

 

 

	    // ########## ########## ########## ##########
    @Override
    public void inventoryTick(ItemStack helditem, Level warudo, Entity entity, int slot, boolean p_41408_) {
        System.out.println("inventoryTick " + slot);
	        if (!warudo.isClientSide && slot < 9) {
            item_handler ih = get_itemhandler(helditem);
	            if (ih.action == 5) {
	               int tick = ih.get_tick();
                // hot do i check if the player entity is presing left click ?????
	                // if is presing keep counting and call onUseTick
	                // if its not stop and call releaseUsing
	            }
        }
    }
	#############################################
	then i get stuck coze i dont know how from server side ask what mouse keis is the player presing 
Minecraft.getMouseEvent or pe.isShiftKeyDown()  or something  
	 
	 
	 
	

 

        

 

 

 

 


 

 

 

I think that you are trying to find out the opposite of me, how to detect left click. I'm trying to make the player left click, or mine. I know there is a way to detect the thing that you want using Minecraft.getInstance().player.getAttack() or something like that, I know it has .attack something at the end of it, hope it helps. But still, how do I make the player LEFT CLICK, and how do I make the player HOLD LEFT CLICK? If you know thanks ahead.

Link to comment
Share on other sites

13 hours ago, GabrielSnow said:

So I've been making a Minecraft bot because I want to get into AI and because I'm a bored student and I can't figure out how to make the player hold down left click, I've seen many people use KeyBind or minecraft.player.gameSettings but I figured that that doesn't work anymore because it's only in older versions(I think), I can't make the imports work (net.minecraft.client.settings). So far I figured out how to do it with the Baritone API using a loop but it's very CPU intensive, adding a delay makes it not work.

 

while(true) { BaritoneAPI.getProvider().getPrimaryBaritone().getInputOverrideHandler().setInputForceState(baritone.api.utils.input.Input.CLICK_LEFT, true); }

 

To add to this, I do not want to make a Minecraft bot like mineFlayer, that was not what I meant. I want to connect to the client side of the client using the mod and help them out like Baritone does, I want to help them farm or mine etc. I know that Baritone has those functions and accessing them would be great but making my own lets say #mine carrot command would be better. Maybe even at the end goal I could make a command to end the game by killing the ender dragon, but for that I need to create player inputs which I cannot seem to find even in the forge documentary, I asked ChatGPT but he only knows everything at and below 1.12.2 which is not what I want. A solution using external APIs would also be a good solution but I would prefer a solution without external APIs.

Link to comment
Share on other sites

i found something old 
//import org.lwjgl.input.Mouse;
int button_presed = Mouse.getButton();

but dont works in java 17 

 

i fond something similar but dont get it to work

//import java.awt.event.MouseEvent;

MouseEvent.getButton()

look like you must first create MouseEvent object to use it but dont find a working exaple 

 

could it be an minecraft event trigered on left click we could capture and use ? 

 

 

 

 

 

 

Link to comment
Share on other sites

5 minutes ago, perromercenary00 said:

i found something old 
//import org.lwjgl.input.Mouse;
int button_presed = Mouse.getButton();

but dont works in java 17 

 

i fond something similar but dont get it to work

//import java.awt.event.MouseEvent;

MouseEvent.getButton()

look like you must first create MouseEvent object to use it but dont find a working exaple 

 

could it be an minecraft event trigered on left click we could capture and use ? 

 

 

 

 

 

 

It doesn't seem like it would work, it doesn't reference the Minecraft instance. If it were to exist it would probably use Minecraft.getInstance() for the input, otherwise I don't think it would make sense, I went over the docs for Minecraft.getInstance().player but I couldn't find anything useful, only setting the rotation and getting the position, I can't find anything for inputs, maybe the only thing I could find is the keys for the player's set controls, but even with that there isn't a way that I know of that could use those keys to make an input onto the client, or register an input.

Link to comment
Share on other sites

17 minutes ago, perromercenary00 said:

i found something old 
//import org.lwjgl.input.Mouse;
int button_presed = Mouse.getButton();

but dont works in java 17 

 

i fond something similar but dont get it to work

//import java.awt.event.MouseEvent;

MouseEvent.getButton()

look like you must first create MouseEvent object to use it but dont find a working exaple 

 

could it be an minecraft event trigered on left click we could capture and use ? 

 

 

 

 

 

 

As for listening if the mouse is pressed I found something for you: int pressed = java.awt.event.MouseEvent.BUTTON1; hope it helps, it might not be the exact thing you need but I think the library has listeners.

Link to comment
Share on other sites

33 minutes ago, GabrielSnow said:

As for listening if the mouse is pressed I found something for you: int pressed = java.awt.event.MouseEvent.BUTTON1; hope it helps, it might not be the exact thing you need but I think the library has listeners.

no that dont works allwais says  1 no mather what i press 

	    // ########## ########## ########## ##########
    @Override
    public void inventoryTick(ItemStack helditem, Level warudo, Entity entity, int slot, boolean p_41408_) {
        
        
        int pressed = java.awt.event.MouseEvent.BUTTON1;
        System.out.println("inventoryTick [" + slot + "], " + ((warudo.isClientSide)? "Local  World":"Server World") + ", b1=" + pressed );
}
	

inventoryTick [2], Local  World, b1=1
inventoryTick [2], Server World, b1=1
inventoryTick [2], Local  World, b1=1
inventoryTick [2], Server World, b1=1
inventoryTick [2], Local  World, b1=1
inventoryTick [2], Server World, b1=1
inventoryTick [2], Local  World, b1=1
inventoryTick [2], Local  World, b1=1

 

 

Link to comment
Share on other sites

I found some Baritone commands that make a click but I cant seems to figure out how it works, can you help?

    public void Tester() {
    	new Thread(() -> {
        	if(StartTester) {
            	Minecraft minecraft = Minecraft.getInstance();
            	minecraft.player.sendMessage(new TextComponent("Tester started"), minecraft.player.getUUID());
            	BaritoneAPI.getSettings().allowSprint.value = true;
            	BaritoneAPI.getSettings().primaryTimeoutMS.value = 2000L;
            	ICustomGoalProcess customGoalProcess = BaritoneAPI.getProvider().getPrimaryBaritone().getCustomGoalProcess();
            	IPlayerController playerController = BaritoneAPI.getProvider().getPrimaryBaritone().getPlayerContext().playerController();
            	customGoalProcess.setGoalAndPath(new GoalXZ(1000, 0));
            	while(StartTester) {
	            	playerController.clickBlock(null, Direction.fromNormal(0,0,0));
					try {
						Thread.sleep(50);
					} catch (InterruptedException e) {
						minecraft.player.sendMessage(new TextComponent("Thread sleep error"), minecraft.player.getUUID());
						Thread.currentThread().interrupt();
					}
            	}
        	}
    	}).start();
    }

playerController.clickBlock(); seems to be the thing I need but I dont know how to make it work.

Link to comment
Share on other sites

22 minutes ago, GabrielSnow said:

I found some Baritone commands that make a click but I cant seems to figure out how it works, can you help?

    public void Tester() {
    	new Thread(() -> {
        	if(StartTester) {
            	Minecraft minecraft = Minecraft.getInstance();
            	minecraft.player.sendMessage(new TextComponent("Tester started"), minecraft.player.getUUID());
            	BaritoneAPI.getSettings().allowSprint.value = true;
            	BaritoneAPI.getSettings().primaryTimeoutMS.value = 2000L;
            	ICustomGoalProcess customGoalProcess = BaritoneAPI.getProvider().getPrimaryBaritone().getCustomGoalProcess();
            	IPlayerController playerController = BaritoneAPI.getProvider().getPrimaryBaritone().getPlayerContext().playerController();
            	customGoalProcess.setGoalAndPath(new GoalXZ(1000, 0));
            	while(StartTester) {
	            	playerController.clickBlock(null, Direction.fromNormal(0,0,0));
					try {
						Thread.sleep(50);
					} catch (InterruptedException e) {
						minecraft.player.sendMessage(new TextComponent("Thread sleep error"), minecraft.player.getUUID());
						Thread.currentThread().interrupt();
					}
            	}
        	}
    	}).start();
    }

playerController.clickBlock(); seems to be the thing I need but I dont know how to make it work.

i dont think that gonna work 
the name suggest it only works when click a block  is like useOn()

Link to comment
Share on other sites

a  frack MouseEvent is an event who could guess such a thing 

 

	    //########## ########## ########## ##########  
    
    @SubscribeEvent
    public static void on_mouse_something(MouseButton event) {
	        //Entity entity = event.;
	        //Level warudo = event.
	        //ItemStack itemstack = event.?;
	        Minecraft mc = Minecraft.getInstance();
        //Level warudo = mc.level;//it return null
                
        System.out.println("on_mouse_something [" + event.getButton() + "], "  );
    }
	

on_mouse_something [0], 
on_mouse_something [0], 
on_mouse_something [0], 
on_mouse_something [0], 
on_mouse_something [1], 
on_mouse_something [1], 
on_mouse_something [1], 
on_mouse_something [1], 
on_mouse_something [2], 
on_mouse_something [2], 
on_mouse_something [2], 
on_mouse_something [2], 

on_mouse_something [3], 

on_mouse_something [3], 

on_mouse_something [3], 

 

 

########

but is there a misssing string  i need to get the player  and itemstack his holding to know how to proced on left click 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I made server version of my modpack, deleted all clientside mods, server starts but latest.log contains many errors and i have no idea how to fix them Latest.log https://mclo.gs/jswh7LP
    • ---- Minecraft Crash Report ---- // Why did you do that? Time: 2024-09-29 13:38:10 Description: Rendering screen java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0     at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)     at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)     at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)     at java.base/java.util.Objects.checkIndex(Objects.java:385)     at java.base/java.util.ArrayList.get(ArrayList.java:427)     at net.replaceitem.symbolchat.gui.widget.DropDownWidget.method_25369(DropDownWidget.java:81)     at net.replaceitem.symbolchat.gui.widget.DropDownWidget.method_48579(DropDownWidget.java:51)     at net.minecraft.class_339.method_25394(class_339.java:66)     at net.minecraft.class_437.method_25394(class_437.java:128)     at net.minecraft.class_408.method_25394(class_408.java:200)     at net.minecraft.class_437.method_47413(class_437.java:117)     at net.minecraft.class_757.mixinextras$bridge$method_47413$257(class_757.java)     at net.minecraft.class_757.wrapOperation$bij000$fabric-screen-api-v1$onRenderScreen(class_757.java:3086)     at net.minecraft.class_757.method_3192(class_757.java:913)     at net.minecraft.class_310.method_1523(class_310.java:1285)     at net.minecraft.class_310.method_1514(class_310.java:882)     at net.minecraft.client.main.Main.main(Main.java:256)     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)     at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)     at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)     at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)     at java.base/java.util.Objects.checkIndex(Objects.java:385)     at java.base/java.util.ArrayList.get(ArrayList.java:427)     at net.replaceitem.symbolchat.gui.widget.DropDownWidget.method_25369(DropDownWidget.java:81)     at net.replaceitem.symbolchat.gui.widget.DropDownWidget.method_48579(DropDownWidget.java:51)     at net.minecraft.class_339.method_25394(class_339.java:66)     at net.minecraft.class_437.method_25394(class_437.java:128)     at net.minecraft.class_408.method_25394(class_408.java:200)     at net.minecraft.class_437.method_47413(class_437.java:117)     at net.minecraft.class_757.mixinextras$bridge$method_47413$257(class_757.java)     at net.minecraft.class_757.wrapOperation$bij000$fabric-screen-api-v1$onRenderScreen(class_757.java:3086) -- Screen render details -- Details:     Screen name: net.minecraft.class_408     Mouse location: Scaled: (213, 120). Absolute: (427.000000, 240.000000)     Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2.000000 Stacktrace:     at net.minecraft.class_757.method_3192(class_757.java:913)     at net.minecraft.class_310.method_1523(class_310.java:1285)     at net.minecraft.class_310.method_1514(class_310.java:882)     at net.minecraft.client.main.Main.main(Main.java:256)     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)     at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) -- Uptime -- Details:     JVM uptime: 52.276s     Wall uptime: 35.737s     High-res time: 684634.710s     Client ticks: 305 ticks / 15.250s Stacktrace:     at net.minecraft.class_310.method_1587(class_310.java:2501)     at net.minecraft.class_310.method_54580(class_310.java:949)     at net.minecraft.class_310.method_1514(class_310.java:902)     at net.minecraft.client.main.Main.main(Main.java:256)     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)     at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) -- Affected level -- Details:     All players: 14 total; [class_746['Snr_Ganapi'/12586, l='ClientLevel', x=-12.50, y=-28.00, z=23.50], class_745['h33nky'/12585, l='ClientLevel', x=-12.50, y=-28.00, z=23.50], class_745['dimasik2009123'/12565, l='ClientLevel', x=-12.50, y=-28.00, z=23.50], class_745['Elik89'/12583, l='ClientLevel', x=-18.46, y=-30.00, z=12.76], class_745['1b123eb8-107a-46'/1, l='ClientLevel', x=-4.50, y=-29.00, z=-11.50], class_745['9e1895c7-120a-4d'/3, l='ClientLevel', x=-12.50, y=-29.00, z=-13.50], class_745['1c7db329-783c-4d'/4, l='ClientLevel', x=-0.50, y=-29.00, z=-9.50], class_745['b6ddb583-f492-48'/9, l='ClientLevel', x=-8.50, y=-29.00, z=-13.50], class_745['2459f82c-f115-49'/7, l='ClientLevel', x=-28.50, y=-29.00, z=-6.50], class_745['2333ac85-73e9-4e'/5, l='ClientLevel', x=-20.50, y=-29.00, z=-11.50], class_745['06fe93b3-6dd2-4c'/2, l='ClientLevel', x=-16.50, y=-29.00, z=-13.50], class_745['ac3f6659-8d12-4c'/6, l='ClientLevel', x=-24.50, y=-29.00, z=-9.50], class_745['54753c0c-908c-44'/8, l='ClientLevel', x=3.50, y=-29.00, z=-6.50], class_745['scaly_toad'/12587, l='ClientLevel', x=-12.50, y=-27.90, z=23.50]]     Chunk stats: 1024, 293 F: 0 L: 0 U: 0 C: 0     Level dimension: minecraft:overworld     Level spawn location: World: (-13,-28,23), Section: (at 3,4,7 in -1,-2,1; chunk contains blocks -16,-64,16 to -1,319,31), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,-64,0 to -1,319,511)     Level time: 321927384 game time, 9000 day time     Server brand: SPWorlds P2: (hub-2)     Server type: Non-integrated multiplayer server     Tracked entity count: 516 -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: No     Packs: vanilla, fabric, betterf3, betterthirdperson, boatiview, bobby, c2me, caffeineconfig, capes, cardinal-components-base, cardinal-components-entity, cicada, cloth-config, dynamic_fps, ears, enhancedblockentities, entity_texture_features, entityculling, explosiveenhancement, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-language-kotlin, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-loot-api-v3, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, fabricloader, fallingleaves, forcecloseworldloadingscreen, immediatelyfast, indium, iris, lithium, modernfix, modmenu, nvidium, obsidianui, placeholder-api, plasmovoice, reeses-sodium-options, rrls, ryoamiclights, satin, showmeyourskin, skinlayers3d, sodium, sodium-extra, spark, symbol-chat, vmp, voicechat, wakes, xaerominimap, yet_another_config_lib_v3, zoomify, file/iconsv.1.8 (1).zip, file/No Pumpkin Blur 1.20-1.20.1.zip, file/Default-Dark-Mode-1.20-2023.6.0.zip, file/CalvinsSinisterSculk[1.20.4][v1.0].zip -- System Details -- Details:     Minecraft Version: 1.21     Minecraft Version ID: 1.21     Operating System: Windows 10 (amd64) version 10.0     Java Version: 21.0.3, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 225615872 bytes (215 MiB) / 1140850688 bytes (1088 MiB) up to 2147483648 bytes (2048 MiB)     CPUs: 4     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 3 4300U with Radeon Graphics              Identifier: AuthenticAMD Family 23 Model 96 Stepping 1     Microarchitecture: unknown     Frequency (GHz): 2.70     Number of physical packages: 1     Number of physical CPUs: 4     Number of logical CPUs: 4     Graphics card #0 name: AMD Radeon(TM) Graphics     Graphics card #0 vendor: Advanced Micro Devices, Inc.     Graphics card #0 VRAM (MiB): 512.00     Graphics card #0 deviceId: VideoController1     Graphics card #0 versionInfo: 31.0.12044.3     Memory slot #0 capacity (MiB): 8192.00     Memory slot #0 clockSpeed (GHz): 3.20     Memory slot #0 type: DDR4     Virtual memory max (MiB): 12942.09     Virtual memory used (MiB): 9630.07     Swap memory total (MiB): 5376.00     Swap memory used (MiB): 528.52     Space in storage for jna.tmpdir (MiB): available: 166917.31, total: 243558.98     Space in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): available: 166917.31, total: 243558.98     Space in storage for io.netty.native.workdir (MiB): available: 166917.31, total: 243558.98     Space in storage for java.io.tmpdir (MiB): available: 166917.31, total: 243558.98     Space in storage for workdir (MiB): available: 166917.31, total: 243558.98     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     Fabric Mods:          badoptimizations: BadOptimizations 2.1.4         betterf3: BetterF3 11.0.1         betterthirdperson: Better Third Person 1.9.0         boatiview: Boat Item View Fabric 0.0.5         bobby: Bobby 5.2.3+mc1.21             com_typesafe_config: config 1.4.2             fabric-api-base: Fabric API Base 0.4.42+6573ed8c90             io_leangen_geantyref_geantyref: geantyref 1.3.13             org_spongepowered_configurate-core: configurate-core 4.1.2             org_spongepowered_configurate-hocon: configurate-hocon 4.1.2         c2me: Concurrent Chunk Management Engine 0.2.0+alpha.11.109+1.21             c2me-base: Concurrent Chunk Management Engine (Base) 0.2.0+alpha.11.109+1.21             c2me-client-uncapvd: Concurrent Chunk Management Engine (Client/Uncap View Distance) 0.2.0+alpha.11.109+1.21             c2me-fixes-chunkio-threading-issues: Concurrent Chunk Management Engine (Fixes/Chunk IO/Threading Issues) 0.2.0+alpha.11.109+1.21             c2me-fixes-general-threading-issues: Concurrent Chunk Management Engine (Fixes/General/Threading Issues) 0.2.0+alpha.11.109+1.21             c2me-fixes-worldgen-threading-issues: Concurrent Chunk Management Engine (Fixes/WorldGen/Threading Issues) 0.2.0+alpha.11.109+1.21             c2me-fixes-worldgen-vanilla-bugs: Concurrent Chunk Management Engine (Fixes/WorldGen/Vanilla Bugs) 0.2.0+alpha.11.109+1.21             c2me-notickvd: Concurrent Chunk Management Engine (No Tick View Distance) 0.2.0+alpha.11.109+1.21             c2me-opts-allocs: Concurrent Chunk Management Engine (Optimizations/Memory Allocations) 0.2.0+alpha.11.109+1.21             c2me-opts-chunk-access: Concurrent Chunk Management Engine (Optimizations/Chunk Access) 0.2.0+alpha.11.109+1.21             c2me-opts-chunkio: Concurrent Chunk Management Engine (Optimizations/Chunk IO) 0.2.0+alpha.11.109+1.21             c2me-opts-math: Concurrent Chunk Management Engine (Optimizations/Math) 0.2.0+alpha.11.109+1.21             c2me-opts-scheduling: Concurrent Chunk Management Engine (Optimizations/Scheduling) 0.2.0+alpha.11.109+1.21             c2me-opts-worldgen-general: Concurrent Chunk Management Engine (Optimizations/General WorldGen) 0.2.0+alpha.11.109+1.21             c2me-opts-worldgen-vanilla: Concurrent Chunk Management Engine (Optimizations/Vanilla WorldGen) 0.2.0+alpha.11.109+1.21             c2me-rewrites-chunk-serializer: Concurrent Chunk Management Engine (Rewrites/Chunk Serializer) 0.2.0+alpha.11.109+1.21             c2me-rewrites-chunkio: Concurrent Chunk Management Engine (Rewrites/Chunk IO) 0.2.0+alpha.11.109+1.21             c2me-server-utils: Concurrent Chunk Management Engine (Server Utils) 0.2.0+alpha.11.109+1.21             c2me-threading-chunkio: Concurrent Chunk Management Engine (Threading/WorldGen) 0.2.0+alpha.11.109+1.21             c2me-threading-lighting: Concurrent Chunk Management Engine (Threading/Lighting) 0.2.0+alpha.11.109+1.21             c2me-threading-worldgen: Concurrent Chunk Management Engine (Threading/WorldGen) 0.2.0+alpha.11.109+1.21             com_electronwill_night-config_core: core 3.6.5             com_electronwill_night-config_toml: toml 3.6.5             com_ibm_async_asyncutil: asyncutil 0.1.0             net_objecthunter_exp4j: exp4j 0.4.8             org_threadly_threadly: threadly 7.0         capes: Capes 1.5.4+1.21         cicada: CICADA 0.8.3+1.21-and-above         cloth-config: Cloth Config v15 15.0.128             cloth-basic-math: cloth-basic-math 0.6.1         clumps: Clumps 18.0.0.2         dynamic_fps: Dynamic FPS 3.6.3             net_lostluma_battery: battery 1.1.0         ears: Ears 1.4.6         enhancedblockentities: Enhanced Block Entities 0.10.1+1.21         entity_texture_features: Entity Texture Features 6.1.3             org_apache_httpcomponents_httpmime: httpmime 4.5.10         entityculling: EntityCulling 1.6.6         explosiveenhancement: Explosive Enhancement 1.2.3-1.21.0         fabric-api: Fabric API 0.102.0+1.21             fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.68+b5597344d1             fabric-biome-api-v1: Fabric Biome API (v1) 13.0.29+5bd9f1bcd1             fabric-block-api-v1: Fabric Block API (v1) 1.0.22+0af3f5a7d1             fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.10+6573ed8cd1             fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.52+0af3f5a7d1             fabric-client-tags-api-v1: Fabric Client Tags 1.1.15+6573ed8cd1             fabric-command-api-v1: Fabric Command API (v1) 1.2.49+f71b366fd1             fabric-command-api-v2: Fabric Command API (v2) 2.2.28+6ced4dd9d1             fabric-commands-v0: Fabric Commands (v0) 0.2.66+df3654b3d1             fabric-content-registries-v0: Fabric Content Registries (v0) 8.0.16+b5597344d1             fabric-convention-tags-v1: Fabric Convention Tags 2.0.19+7f945d5bd1             fabric-convention-tags-v2: Fabric Convention Tags (v2) 2.5.0+c5e2b5c6d1             fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.29+0af3f5a7d1             fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.1.27+6a6dfa19d1             fabric-data-generation-api-v1: Fabric Data Generation API (v1) 20.2.16+16c4ae25d1             fabric-dimensions-v1: Fabric Dimensions API (v1) 4.0.0+6fc22b99d1             fabric-entity-events-v1: Fabric Entity Events (v1) 1.6.12+6fc22b99d1             fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.7.12+ba9dae06d1             fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.53+6ced4dd9d1             fabric-item-api-v1: Fabric Item API (v1) 11.0.0+afdfc921d1             fabric-item-group-api-v1: Fabric Item Group API (v1) 4.1.4+78017270d1             fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.47+0af3f5a7d1             fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.45+df3654b3d1             fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.3.12+6c1df360d1             fabric-loot-api-v2: Fabric Loot API (v2) 3.0.14+3f89f5a5d1             fabric-loot-api-v3: Fabric Loot API (v3) 1.0.2+3f89f5a5d1             fabric-message-api-v1: Fabric Message API (v1) 6.0.13+6573ed8cd1             fabric-model-loading-api-v1: Fabric Model Loading API (v1) 2.0.0+fe474d6bd1             fabric-networking-api-v1: Fabric Networking API (v1) 4.2.2+60c3209bd1             fabric-object-builder-api-v1: Fabric Object Builder API (v1) 15.2.0+a551f7a4d1             fabric-particles-v1: Fabric Particles (v1) 4.0.2+6573ed8cd1             fabric-recipe-api-v1: Fabric Recipe API (v1) 5.0.12+65089712d1             fabric-registry-sync-v0: Fabric Registry Sync (v0) 5.1.2+60c3209bd1             fabric-renderer-api-v1: Fabric Renderer API (v1) 3.4.0+c705a49cd1             fabric-renderer-indigo: Fabric Renderer - Indigo 1.7.0+c705a49cd1             fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.68+df3654b3d1             fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.48+73761d2ed1             fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.1.6+b5597344d1             fabric-rendering-v0: Fabric Rendering (v0) 1.1.71+df3654b3d1             fabric-rendering-v1: Fabric Rendering (v1) 5.0.5+df16efd0d1             fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 4.3.0+8dc279b1d1             fabric-resource-loader-v0: Fabric Resource Loader (v0) 1.3.0+56599129d1             fabric-screen-api-v1: Fabric Screen API (v1) 2.0.24+b5597344d1             fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.86+b5597344d1             fabric-sound-api-v1: Fabric Sound API (v1) 1.0.23+6573ed8cd1             fabric-transfer-api-v1: Fabric Transfer API (v1) 5.1.16+3dccd343d1             fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 6.1.0+176f9036d1         fabric-language-kotlin: Fabric Language Kotlin 1.12.0+kotlin.2.0.10             org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 2.0.10             org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 2.0.10             org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 2.0.10             org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 2.0.10             org_jetbrains_kotlinx_atomicfu-jvm: atomicfu-jvm 0.25.0             org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm: kotlinx-coroutines-core-jvm 1.8.1             org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.8.1             org_jetbrains_kotlinx_kotlinx-datetime-jvm: kotlinx-datetime-jvm 0.6.0             org_jetbrains_kotlinx_kotlinx-io-bytestring-jvm: kotlinx-io-bytestring-jvm 0.5.1             org_jetbrains_kotlinx_kotlinx-io-core-jvm: kotlinx-io-core-jvm 0.5.1             org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm: kotlinx-serialization-cbor-jvm 1.7.1             org_jetbrains_kotlinx_kotlinx-serialization-core-jvm: kotlinx-serialization-core-jvm 1.7.1             org_jetbrains_kotlinx_kotlinx-serialization-json-jvm: kotlinx-serialization-json-jvm 1.7.1         fabricloader: Fabric Loader 0.16.5             mixinextras: MixinExtras 0.4.1         fallingleaves: Falling Leaves 1.16.2         ferritecore: FerriteCore 7.0.0         forcecloseworldloadingscreen: kennytv's epic force close loading screen mod for Fabric 2.2.2         immediatelyfast: ImmediatelyFast 1.2.20+1.21.1             net_lenni0451_reflect: Reflect 1.3.4         indium: Indium 1.0.34+mc1.21         iris: Iris 1.7.3+mc1.21             io_github_douira_glsl-transformer: glsl-transformer 2.0.1             org_anarres_jcpp: jcpp 1.4.14             org_antlr_antlr4-runtime: antlr4-runtime 4.13.1         java: OpenJDK 64-Bit Server VM 21         ksyxis: Ksyxis 1.3.2         lithium: Lithium 0.12.7         minecraft: Minecraft 1.21         modernfix: ModernFix 5.19.1+mc1.21         modmenu: Mod Menu 11.0.1         nvidium: Nvidium 0.2.9-beta         obsidianui: ObsidianUI 0.2.7+mc1.21         placeholder-api: Placeholder API 2.4.1+1.21         plasmovoice: Plasmo Voice 2.0.10             aopalliance_aopalliance: aopalliance 1.0             com_google_inject_guice: guice 5.0.1             javax_inject_javax_inject: javax.inject 1         reeses-sodium-options: Reese's Sodium Options 1.7.3+mc1.21         rrls: Remove Reloading Screen 5.0.7+mc1.21-fabric         ryoamiclights: RyoamicLights 0.2.9+mc1.21         showmeyourskin: Show Me Your Skin! 1.11.3+1.21             cardinal-components-base: Cardinal Components API (base) 6.1.0             cardinal-components-entity: Cardinal Components API (entities) 6.1.0         skinlayers3d: 3d-Skin-Layers 1.6.7         sodium: Sodium 0.5.11+mc1.21         sodium-extra: Sodium Extra 0.5.7+mc1.21             caffeineconfig: CaffeineConfig 1.3.0+1.17         spark: spark 1.10.73             fabric-permissions-api-v0: fabric-permissions-api 0.3.1         symbol-chat: Symbol Chat 1.21-1.2.7         vmp: Very Many Players 0.2.0+beta.7.163+1.21         voicechat: Simple Voice Chat 1.21.1-2.5.22         wakes: Wakes 0.3.0+1.21.1             blue_endless_jankson: jankson 1.2.2             com_github_jdiemke_delaunay-triangulator_delaunaytriangulator: DelaunayTriangulator 1.0.0             satin: Satin 2.0.0         xaerominimap: Xaero's Minimap 24.4.0         yet_another_config_lib_v3: YetAnotherConfigLib 3.5.0+1.21-fabric             com_twelvemonkeys_common_common-image: common-image 3.10.0             com_twelvemonkeys_common_common-io: common-io 3.10.0             com_twelvemonkeys_common_common-lang: common-lang 3.10.0             com_twelvemonkeys_imageio_imageio-core: imageio-core 3.10.0             com_twelvemonkeys_imageio_imageio-metadata: imageio-metadata 3.10.0             com_twelvemonkeys_imageio_imageio-webp: imageio-webp 3.10.0             org_quiltmc_parsers_gson: gson 0.2.1             org_quiltmc_parsers_json: json 0.2.1         zoomify: Zoomify 2.14.0+1.21             com_akuleshov7_ktoml-core-jvm: ktoml-core-jvm 0.5.1     Loaded Shaderpack: (off)     Launched Version: fabric-loader-0.16.5-1.21     Launcher name: minecraft-launcher     Backend library: LWJGL version 3.3.3-snapshot     Backend API: AMD Radeon(TM) Graphics GL version 3.2.0 Core Profile Context 22.20.44.221025, ATI Technologies Inc.     Window size: 854x480     GFLW Platform: win32     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Is Modded: Definitely; Client brand changed to 'fabric'     Universe: 400921fb54442d18     Type: Client (map_client.txt)     Graphics mode: fast     Render Distance: 9/9 chunks     Resource Packs: vanilla, fabric, betterf3, betterthirdperson, boatiview (incompatible), bobby, c2me, caffeineconfig, capes, cardinal-components-base, cardinal-components-entity, cicada, cloth-config, dynamic_fps, ears, enhancedblockentities, entity_texture_features, entityculling, explosiveenhancement, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-language-kotlin, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-loot-api-v3, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, fabricloader, fallingleaves, forcecloseworldloadingscreen, immediatelyfast, indium, iris, lithium, modernfix (incompatible), modmenu, nvidium, obsidianui, placeholder-api, plasmovoice, reeses-sodium-options, rrls, ryoamiclights, satin, showmeyourskin, skinlayers3d, sodium, sodium-extra, spark (incompatible), symbol-chat, vmp, voicechat, wakes, xaerominimap (incompatible), yet_another_config_lib_v3 (incompatible), zoomify, file/iconsv.1.8 (1).zip (incompatible), file/No Pumpkin Blur 1.20-1.20.1.zip (incompatible), file/Default-Dark-Mode-1.20-2023.6.0.zip (incompatible), file/CalvinsSinisterSculk[1.20.4][v1.0].zip (incompatible)     Current Language: ru_ru     Locale: ru_RU     System encoding: Cp1251     File encoding: UTF-8     CPU: 4x AMD Ryzen 3 4300U with Radeon Graphics 
    • I have no idea - maybe a fabric mod, but just Connector is mentioned
  • Topics

  • Who's Online (See full list)

    • There are no registered users currently online
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.