Add AutoTool

This commit is contained in:
zeroeightsix 2018-10-03 00:41:07 +02:00
parent d764b33615
commit ca0f6301a4
3 changed files with 119 additions and 11 deletions

View File

@ -20,6 +20,8 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingDamageEvent;
import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent;
import net.minecraftforge.event.entity.living.LivingEvent;
import net.minecraftforge.event.entity.player.AttackEntityEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.world.ChunkEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@ -87,7 +89,8 @@ public class ForgeEventProcessor {
if (event.isCanceled()) return;
RenderGameOverlayEvent.ElementType target = RenderGameOverlayEvent.ElementType.EXPERIENCE;
if (!Wrapper.getPlayer().isCreative() && Wrapper.getPlayer().getRidingEntity() instanceof EntityHorse) target = RenderGameOverlayEvent.ElementType.HEALTHMOUNT;
if (!Wrapper.getPlayer().isCreative() && Wrapper.getPlayer().getRidingEntity() instanceof EntityHorse)
target = RenderGameOverlayEvent.ElementType.HEALTHMOUNT;
if (event.getType() == target) {
ModuleManager.onRender();
@ -95,14 +98,13 @@ public class ForgeEventProcessor {
UIRenderer.renderAndUpdateFrames();
GL11.glPopMatrix();
KamiTessellator.releaseGL();
}else if (event.getType() == RenderGameOverlayEvent.ElementType.BOSSINFO && ModuleManager.isModuleEnabled("BossStack")) {
} else if (event.getType() == RenderGameOverlayEvent.ElementType.BOSSINFO && ModuleManager.isModuleEnabled("BossStack")) {
BossStack.render(event);
}
}
@SubscribeEvent(priority= EventPriority.NORMAL, receiveCanceled=true)
public void onKeyInput(InputEvent.KeyInputEvent event)
{
@SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
public void onKeyInput(InputEvent.KeyInputEvent event) {
if (Keyboard.getEventKeyState())
ModuleManager.onBind(Keyboard.getEventKey());
}
@ -111,14 +113,14 @@ public class ForgeEventProcessor {
public void onChatSent(ClientChatEvent event) {
if (event.getMessage().startsWith(Command.COMMAND_PREFIX)) {
event.setCanceled(true);
try{
try {
Wrapper.getMinecraft().ingameGUI.getChatGUI().addToSentMessages(event.getMessage());
if (event.getMessage().length() > 1)
KamiMod.getInstance().commandManager.callCommand(event.getMessage().substring(Command.COMMAND_PREFIX.length()-1));
KamiMod.getInstance().commandManager.callCommand(event.getMessage().substring(Command.COMMAND_PREFIX.length() - 1));
else
Command.sendChatMessage("Please enter a command.");
}catch (Exception e) {
} catch (Exception e) {
e.printStackTrace();
Command.sendChatMessage("Error occured while running command! (" + e.getMessage() + ")");
}
@ -130,31 +132,55 @@ public class ForgeEventProcessor {
public void onPlayerDrawn(RenderPlayerEvent.Pre event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onPlayerDrawn(RenderPlayerEvent.Post event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent()
public void onChunkLoaded(ChunkEvent.Load event) { KamiMod.EVENT_BUS.post(event); }
public void onChunkLoaded(ChunkEvent.Load event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent()
public void onChunkLoaded(ChunkEvent.Unload event) { KamiMod.EVENT_BUS.post(event); }
public void onChunkLoaded(ChunkEvent.Unload event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent
public void onInputUpdate(InputUpdateEvent event) { KamiMod.EVENT_BUS.post(event); }
public void onInputUpdate(InputUpdateEvent event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent
public void onLivingEntityUseItemEventTick(LivingEntityUseItemEvent.Start entityUseItemEvent) {
KamiMod.EVENT_BUS.post(entityUseItemEvent);
}
@SubscribeEvent
public void onLivingDamageEvent(LivingDamageEvent event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent
public void onEntityJoinWorldEvent(EntityJoinWorldEvent entityJoinWorldEvent) {
KamiMod.EVENT_BUS.post(entityJoinWorldEvent);
}
@SubscribeEvent
public void onPlayerPush(PlayerSPPushOutOfBlocksEvent event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent
public void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) {
KamiMod.EVENT_BUS.post(event);
}
@SubscribeEvent
public void onAttackEntity(AttackEntityEvent entityEvent) {
KamiMod.EVENT_BUS.post(entityEvent);
}
}

View File

@ -1,6 +1,8 @@
package me.zeroeightsix.kami.module.modules.combat;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.module.ModuleManager;
import me.zeroeightsix.kami.module.modules.misc.AutoTool;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.util.EntityUtil;
import me.zeroeightsix.kami.util.Friends;
@ -53,6 +55,7 @@ public class Aura extends Module {
return;
}else{
if (EntityUtil.isPassive(target) ? animals : (EntityUtil.isMobAggressive(target) && mobs)) {
if (ModuleManager.isModuleEnabled("AutoTool")) AutoTool.equipBestWeapon();
attack(target);
return;
}

View File

@ -0,0 +1,79 @@
package me.zeroeightsix.kami.module.modules.misc;
import me.zero.alpine.listener.EventHandler;
import me.zero.alpine.listener.Listener;
import me.zeroeightsix.kami.module.Module;
import net.minecraft.block.state.IBlockState;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.init.Enchantments;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraftforge.event.entity.player.AttackEntityEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
/**
* Created by 086 on 2/10/2018.
*/
@Module.Info(name = "AutoTool", description = "Automatically switch to the best tools when mining or attacking", category = Module.Category.MISC)
public class AutoTool extends Module {
@EventHandler
private Listener<PlayerInteractEvent.LeftClickBlock> leftClickListener = new Listener<>(event -> {
equipBestTool(mc.world.getBlockState(event.getPos()));
});
@EventHandler
private Listener<AttackEntityEvent> attackListener = new Listener<>(event -> {
equipBestWeapon();
});
private void equipBestTool(IBlockState blockState) {
int bestSlot = -1;
double max = 0;
for (int i = 0; i < 9; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.isEmpty) continue;
float speed = stack.getDestroySpeed(blockState);
int eff;
if (speed > 1) {
speed += ((eff = EnchantmentHelper.getEnchantmentLevel(Enchantments.EFFICIENCY, stack)) > 0 ? (Math.pow(eff, 2) + 1) : 0);
if (speed > max) {
max = speed;
bestSlot = i;
}
}
}
if (bestSlot != -1) equip(bestSlot);
}
public static void equipBestWeapon() {
int bestSlot = -1;
double maxDamage = 0;
for (int i = 0; i < 9; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.isEmpty) continue;
if (stack.getItem() instanceof ItemTool) {
double damage = (((ItemTool) stack.getItem()).attackDamage + (double) EnchantmentHelper.getModifierForCreature(stack, EnumCreatureAttribute.UNDEFINED));
if (damage > maxDamage) {
maxDamage = damage;
bestSlot = i;
}
} else if (stack.getItem() instanceof ItemSword) {
double damage = (((ItemSword) stack.getItem()).getAttackDamage() + (double) EnchantmentHelper.getModifierForCreature(stack, EnumCreatureAttribute.UNDEFINED));
if (damage > maxDamage) {
maxDamage = damage;
bestSlot = i;
}
}
}
if (bestSlot != -1) equip(bestSlot);
}
private static void equip(int slot) {
mc.player.inventory.currentItem = slot;
mc.playerController.syncCurrentPlayItem();
}
}