Начинающий
			
			
				
					
				
			
		Начинающий
		- Статус
- Оффлайн
- Регистрация
- 18 Май 2025
- Сообщения
- 52
- Реакции
- 1
- Выберите загрузчик игры
- Vanilla
- Fabric
 
			
				Код:
			
		
		
		package zenith.pl.client.modules.impl.combat;
import com.darkmagician6.eventapi.EventTarget;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.decoration.EndCrystalEntity;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.EntityHitResult;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3d;
import zenith.pl.base.events.impl.player.EventUpdate;
import zenith.pl.client.modules.api.Category;
import zenith.pl.client.modules.api.Module;
import zenith.pl.client.modules.api.ModuleAnnotation;
import zenith.pl.client.modules.api.setting.impl.BooleanSetting;
import zenith.pl.client.modules.api.setting.impl.NumberSetting;
@ModuleAnnotation(name = "CrystalTap", category = Category.COMBAT, description = "Мигом взывает кристал")
public class CrystalTap extends Module {
    public static final CrystalTap INSTANCE = new CrystalTap();
    public static final BooleanSetting autoAddCrystal = new BooleanSetting("Автоматически ставить крисстал", true);
    public static final NumberSetting addCooldown = new NumberSetting("Задержка на ставку крисстала", 0,0,5,1);
    public static final NumberSetting attackCooldown = new NumberSetting("Задержка на атаку крисстала", 0,0,5,1);
    int attackCrystalCooldown;
    int addCrystalCooldown;
    private void addCrystal() {
        if (mc.crosshairTarget instanceof BlockHitResult obsidianTarget) {
            if (mc.world.getBlockState(obsidianTarget.getBlockPos()).getBlock() == Blocks.OBSIDIAN) {
                for (Entity entity : mc.world.getEntities()) {
                    if (entity instanceof EndCrystalEntity crystal) {
                        if (crystal.getBlockPos().down().equals(obsidianTarget.getBlockPos())) return;
                    }
                }
                Direction side = obsidianTarget.getSide();
                BlockHitResult crystalHit = new BlockHitResult(obsidianTarget.getPos(), side, obsidianTarget.getBlockPos(), true);
                if (mc.player.getMainHandStack().getItem() != Items.END_CRYSTAL) return;
                if (addCrystalCooldown <= addCooldown.getCurrent()) {
                    mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, crystalHit);
                    addCrystalCooldown = 0;
                } else addCrystalCooldown++;
            }
        }
    }
    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (autoAddCrystal.isEnabled()) addCrystal();
        for (Entity entity : mc.world.getEntities()) {
            if (entity instanceof EndCrystalEntity crystal) {
                if (mc.crosshairTarget instanceof EntityHitResult hitResult) {
                    if (hitResult.getEntity() instanceof EndCrystalEntity) {
                        if (attackCrystalCooldown >= attackCooldown.getCurrent()) {
                            mc.interactionManager.attackEntity(mc.player, hitResult.getEntity());
                            mc.player.swingHand(Hand.MAIN_HAND);
                            attackCrystalCooldown = 0;
                        } else attackCrystalCooldown++;
                    }
                }
            }
        }
    }
}upd:
+ настройка "авто ставить крисстал"
+ сделал чтоб не было жалоб от ач "dublication place"
+ минимальная задержка
очень мощная функция
	Пожалуйста, авторизуйтесь для просмотра ссылки.
			
				Последнее редактирование: 
			
		
	
								
								
									
	
								
							
							 
				 
	 
 
		
 
 
		 
 
		 
 
		