123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package me.kcm.events;
- import java.lang.reflect.Field;
- import java.util.Map;
- import java.util.UUID;
- import me.kcm.command.ModServerCommandManager;
- import net.minecraft.block.Block;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.entity.player.EntityPlayerMP;
- import net.minecraft.inventory.Container;
- import net.minecraft.inventory.ContainerPlayer;
- import net.minecraft.inventory.ContainerWorkbench;
- import net.minecraft.inventory.InventoryCrafting;
- import net.minecraft.item.crafting.CraftingManager;
- import net.minecraft.item.crafting.IRecipe;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.server.management.PlayerList;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.util.text.ITextComponent;
- import net.minecraft.world.World;
- import net.minecraftforge.common.MinecraftForge;
- import net.minecraftforge.fml.relauncher.ReflectionHelper;
- public class Hooks
- {
- /*public static void onDamageCalculation(EntityLivingBase liv, DamageSource ds, float damage)
- {
- if(!liv.isEntityInvulnerable(ds))
- {
- MinecraftForge.EVENT_BUS.post(new LivingDamageCalculationEvent(liv, ds, damage));
- }
- }*/
-
- public static ITextComponent onGetTabListDisplayName(EntityPlayerMP p)
- {
- PlayerTabListNameEvent e = new PlayerTabListNameEvent(p);
- MinecraftForge.EVENT_BUS.post(e);
- return e.getName();
- }
-
- public static boolean onEntityCanTrample(Entity ent, World w, Block b, BlockPos pos, float fallDistance)
- {
- return !MinecraftForge.EVENT_BUS.post(new FarmlandTrampleEvent(w, pos, w.getBlockState(pos), fallDistance, ent));
- }
-
- public static void onPlayerConnection(EntityPlayerMP p)
- {
- MinecraftForge.EVENT_BUS.post(new PlayerConnectionEvent(p));
- }
-
- public static void onPlayerPreRespawn(EntityPlayerMP p, int dimension, boolean conqueredEnd)
- {
- MinecraftForge.EVENT_BUS.post(new PlayerPreRespawnEvent(p));
- }
-
- public static ModServerCommandManager onCreateCommandManager(MinecraftServer server)
- {
- return new ModServerCommandManager(server);
- }
-
- public static IRecipe onfindMatchingRecipe(InventoryCrafting craftMatrix, World w)
- {
- for(IRecipe irecipe : CraftingManager.REGISTRY)
- {
- if(irecipe.matches(craftMatrix, w))
- {
- Container c = getContainerEventHandler(craftMatrix);
- EntityPlayer p;
- if(c == null)
- {
- return null;
- }
- else if(c instanceof ContainerPlayer)
- {
- p = getContainerPlayer((ContainerPlayer) c);
- }
- else if(c instanceof ContainerWorkbench)
- {
- p = getContainerEventHandler((ContainerWorkbench) c);
- }
- else
- {
- return null;
- }
- System.out.println(p);
- RecipeChosenEvent e = new RecipeChosenEvent(p, irecipe);
- if(MinecraftForge.EVENT_BUS.post(e))
- {
- return null;
- }
- return e.getRecipe();
- }
- }
- return null;
- }
-
- private static Field getField(Class c, String... field)
- {
- try
- {
- return ReflectionHelper.findField(c, field);
- }
- catch(SecurityException | ReflectionHelper.UnableToFindFieldException ex)
- {
- System.out.println(String.join(", ", field) + " - " + ex);
- }
- return null;
- }
-
- private static <T> T getFieldValue(Class<T> cast, Object o, Field f)
- {
- try
- {
- return (T) f.get(o);
- }
- catch(SecurityException | IllegalAccessException | IllegalArgumentException ex)
- {
- System.out.println(f + " - " + ex);
- return null;
- }
- }
-
- private final static Field CONTAINER_EVENT_HANDLER = getField(InventoryCrafting.class, "field_70465_c", "eventHandler");
-
- public static Container getContainerEventHandler(InventoryCrafting craftMatrix)
- {
- return getFieldValue(Container.class, craftMatrix, CONTAINER_EVENT_HANDLER);
- }
-
- private final static Field CONTAINER_PLAYER = getField(ContainerPlayer.class, "field_82862_h", "player");
-
- public static EntityPlayer getContainerPlayer(ContainerPlayer cp)
- {
- return getFieldValue(EntityPlayer.class, cp, CONTAINER_PLAYER);
- }
-
- private final static Field CONTAINER_WORKBENCH = getField(ContainerWorkbench.class, "field_192390_i", "player");
-
- public static EntityPlayer getContainerEventHandler(ContainerWorkbench cw)
- {
- return getFieldValue(EntityPlayer.class, cw, CONTAINER_WORKBENCH);
- }
- }
|