123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package me.km.datatools;
- import me.km.api.Module;
- import me.km.api.ModuleListener;
- import me.km.inventory.CustomContainer;
- import me.km.inventory.InventoryBase;
- import me.km.inventory.InventoryUtils;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.entity.passive.EntityVillager;
- import net.minecraft.item.ItemStack;
- import net.minecraft.village.MerchantRecipe;
- import net.minecraft.village.MerchantRecipeList;
- import net.minecraftforge.event.entity.EntityJoinWorldEvent;
- import net.minecraftforge.event.entity.living.LivingAttackEvent;
- import net.minecraftforge.event.entity.player.PlayerContainerEvent;
- import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
- public class DataToolsEvents extends ModuleListener
- {
- public DataToolsEvents(Module m)
- {
- super(m);
- }
-
- @SubscribeEvent
- public void onVillagerMenuClose(PlayerContainerEvent.Close e)
- {
- if(!(e.getContainer() instanceof CustomContainer))
- {
- return;
- }
- CustomContainer c = (CustomContainer) e.getContainer();
- InventoryBase inv = c.getInventoryBase();
-
- if(inv.getName().startsWith("ChangeInventory"))
- {
- InventoryUtils.setInventory(inv);
- this.getModule().send(e.getEntityPlayer(), "Der Villager-Inventar wurde überschrieben.");
- }
- else if(inv.getName().startsWith("ChangeTrades"))
- {
- EntityVillager v = (EntityVillager) inv.getOwner();
- MerchantRecipeList list = v.getRecipes(null);
- if(list == null)
- {
- return; // will never happen
- }
- else
- {
- list.clear();
- }
- MerchantRecipe mr;
- for(int i = 0; i < 36; i++)
- {
- if(i == 9)
- {
- i = 27;
- }
- if(inv.getStackInSlot(i) == ItemStack.EMPTY)
- {
- continue;
- }
- mr = new MerchantRecipe(inv.getStackInSlot(i + 9), inv.getStackInSlot(i + 18), inv.getStackInSlot(i), 0, Integer.MAX_VALUE);
- list.add(mr);
- }
- this.getModule().send(e.getEntityPlayer(), "Die Villager-Trades wurde überschrieben.");
- }
- }
-
- @SubscribeEvent
- public void removeVanillaTrades(EntityJoinWorldEvent e)
- {
- // removes vanilla trades and prevents further loading of new ones
- if (e.getEntity() instanceof EntityVillager)
- {
- EntityVillager v = (EntityVillager) e.getEntity();
- ReflectionUtils.setCareerLevel(v, 10);
- MerchantRecipeList list = v.getRecipes(null);
- if(list != null)
- {
- list.clear();
- }
- }
- }
-
- @SubscribeEvent
- public void VillagerProtect(LivingAttackEvent e)
- {
- if(e.getEntityLiving() instanceof EntityVillager && !e.getSource().isCreativePlayer())
- {
- e.setCanceled(true);
- }
- }
- }
|