123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package me.km.datatools;
- import me.km.api.Module;
- import me.km.api.ModuleListener;
- import me.km.utils.EntityInventory;
- import me.km.utils.InventoryUtils;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.entity.passive.EntityVillager;
- import net.minecraft.inventory.ContainerChest;
- import net.minecraft.item.ItemStack;
- import net.minecraft.village.MerchantRecipe;
- import net.minecraft.village.MerchantRecipeList;
- import net.minecraftforge.event.entity.living.LivingHurtEvent;
- import net.minecraftforge.event.entity.EntityJoinWorldEvent;
- 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 VillagerClose(PlayerContainerEvent.Close e)
- {
- if(!(e.getContainer() instanceof ContainerChest))
- {
- return;
- }
- ContainerChest c = (ContainerChest) e.getContainer();
- if(!(c.getLowerChestInventory() instanceof EntityInventory))
- {
- return;
- }
- EntityInventory inv = (EntityInventory) c.getLowerChestInventory();
- 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.getEntity();
- 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(LivingHurtEvent e)
- {
- if(e.getEntityLiving() instanceof EntityVillager && !e.getSource().isCreativePlayer())
- {
- e.setCanceled(true);
- }
- }
- }
|