123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package me.km.effects.passive;
- import java.util.ArrayList;
- import java.util.stream.Collectors;
- import me.km.KajetansMod;
- import me.km.api.Module;
- import me.km.api.ModuleListener;
- import me.km.api.Utils;
- import me.km.effects.Effect;
- import me.km.effects.EffectUtils;
- import me.km.inventory.InventoryUtils;
- import me.km.items.ItemDagger;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.monster.EntityMob;
- import net.minecraft.entity.passive.EntityVillager;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.init.Items;
- import net.minecraft.init.MobEffects;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.DamageSource;
- import net.minecraft.util.EnumHand;
- import net.minecraft.util.text.TextComponentString;
- import net.minecraft.village.MerchantRecipeList;
- import net.minecraftforge.event.entity.player.PlayerInteractEvent;
- import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
- public class Mugging extends ModuleListener
- {
- public Mugging(Module m)
- {
- super(m);
- }
- @SubscribeEvent(receiveCanceled = false)
- public void mugging(PlayerInteractEvent.EntityInteract e)
- {
- if(e.getHand() == EnumHand.OFF_HAND || !KajetansMod.worldManager.getWorldPreferences(e.getWorld()).skills)
- {
- return;
- }
- EntityPlayer p = e.getEntityPlayer();
- if(!(p.getHeldItemMainhand().getItem() instanceof ItemDagger))
- {
- return;
- }
- int mugging = EffectUtils.getEffectLevel(p, Effect.MUGGING);
- if(mugging < 1)
- {
- return;
- }
- e.setCanceled(true);
- Entity ent = e.getTarget();
- if(ent instanceof EntityMob)
- {
- if(InventoryUtils.getFirstEmptyStack(p.inventory) == -1)
- {
- this.getModule().send(p, "Dein Inventar ist zu voll für einen Diebstahl.");
- return;
- }
- EntityMob m = (EntityMob) ent;
- if(mugging < Utils.randomInt(1, 5))
- {
- this.getModule().send(p, "Der Diebstahl hat fehlgeschlagen.");
- if(!p.isPotionActive(MobEffects.INVISIBILITY))
- {
- m.setAttackTarget(p);
- }
- p.getHeldItemMainhand().damageItem(15, p);
- return;
- }
- boolean b = true;
- for(ItemStack stack : m.getArmorInventoryList())
- {
- if(!stack.isEmpty())
- {
- b = false;
- if(Utils.randomInt(1, 5) <= mugging)
- {
- m.entityDropItem(stack, 0);
- }
- }
- }
- if(b)
- {
- this.getModule().send(p, "Hier gibt es nichts zum stehlen.");
- return;
- }
- this.getModule().send(p, "Der Diebstahl war erfolgreich.");
- }
- else if(ent instanceof EntityVillager)
- {
- if(InventoryUtils.getFirstEmptyStack(p.inventory) == -1)
- {
- this.getModule().send(p, "Dein Inventar ist zu voll für einen Diebstahl.");
- return;
- }
- EntityVillager v = (EntityVillager) ent;
- if(mugging < Utils.randomInt(1, 5))
- {
- this.getModule().send(p, "Der Diebstahl hat fehlgeschlagen.");
- p.getHeldItemMainhand().damageItem(15, p);
- if(!p.isPotionActive(MobEffects.INVISIBILITY))
- {
- p.sendMessage(new TextComponentString("§7[§c" + v.getName() + "§7] §rWas machst du da?"));
- p.attackEntityFrom(DamageSource.causeMobDamage(v), Utils.randomInt(6, 12));
- return;
- }
- p.sendMessage(new TextComponentString("§7[§c" + v.getName() + "§7] §rHuch, was war das?"));
- return;
- }
- MerchantRecipeList list = v.getRecipes(p);
- ArrayList<ItemStack> loot;
- if(list != null)
- {
- loot = new ArrayList<>(list.stream().map(r -> r.getItemToBuy()).collect(Collectors.toList()));
- }
- else
- {
- loot = new ArrayList<>();
- }
- loot.add(new ItemStack(Items.BREAD));
- v.entityDropItem(loot.get(Utils.randomInt(0, loot.size() - 1)).copy(), 0);
- this.getModule().send(p, "Der Diebstahl war erfolgreich.");
- }
- }
- }
|