/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.handler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import matteroverdrive.api.events.MOEventTransport; import matteroverdrive.api.events.anomaly.MOEventGravitationalAnomalyConsume; import matteroverdrive.data.quest.PlayerQuestData; import matteroverdrive.entity.player.AndroidPlayer; import matteroverdrive.entity.player.MOExtendedProperties; import matteroverdrive.init.MatterOverdriveItems; import matteroverdrive.util.MatterHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; import java.util.EnumSet; /** * Created by Simeon on 5/26/2015. */ public class EntityHandler { @SubscribeEvent public void onEntityConstructing(EntityEvent.EntityConstructing event) { if (event.entity instanceof EntityPlayer) { if (AndroidPlayer.get((EntityPlayer) event.entity) == null) { AndroidPlayer.register((EntityPlayer) event.entity); } if (MOExtendedProperties.get((EntityPlayer)event.entity) == null) { MOExtendedProperties.register((EntityPlayer)event.entity); } } } @SubscribeEvent public void onLivingFallEvent(LivingFallEvent event) { if (event.entityLiving instanceof EntityPlayer) { AndroidPlayer androidPlayer = AndroidPlayer.get((EntityPlayer)event.entityLiving); if (androidPlayer.isAndroid()) androidPlayer.onEntityFall(event); } } @SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event) { if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer) { AndroidPlayer.get((EntityPlayer) event.entity).sync(EnumSet.allOf(AndroidPlayer.DataType.class)); MOExtendedProperties.get((EntityPlayer) event.entity).sync(EnumSet.allOf(PlayerQuestData.DataType.class)); } } @SubscribeEvent public void onEntityJump(LivingEvent.LivingJumpEvent event) { if (event.entityLiving instanceof EntityPlayer) { AndroidPlayer androidPlayer = AndroidPlayer.get((EntityPlayer)event.entityLiving); if (androidPlayer != null && androidPlayer.isAndroid()) { androidPlayer.onEntityJump(event); androidPlayer.triggerEventOnStats(event); } } } @SubscribeEvent public void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) { AndroidPlayer newAndroidPlayer = AndroidPlayer.get(event.entityPlayer); AndroidPlayer oldAndroidPlayer = AndroidPlayer.get(event.original); if (newAndroidPlayer != null && oldAndroidPlayer != null) { newAndroidPlayer.copy(oldAndroidPlayer); if (event.wasDeath) { newAndroidPlayer.onPlayerRespawn(); } newAndroidPlayer.sync(EnumSet.allOf(AndroidPlayer.DataType.class)); } MOExtendedProperties newExtendedProperties = MOExtendedProperties.get(event.entityPlayer); MOExtendedProperties oldExtenderDProperties = MOExtendedProperties.get(event.original); if (newExtendedProperties != null && oldExtenderDProperties != null) { newExtendedProperties.copy(oldExtenderDProperties); newExtendedProperties.sync(EnumSet.allOf(PlayerQuestData.DataType.class)); } } @SubscribeEvent public void onEntityAttack(LivingAttackEvent event) { if (event.entityLiving instanceof EntityPlayer) { AndroidPlayer.get((EntityPlayer)event.entityLiving).triggerEventOnStats(event); } } @SubscribeEvent public void onEntityDeath(LivingDeathEvent deathEvent) { if (deathEvent.source != null && deathEvent.source.getEntity() instanceof EntityPlayer) { MOExtendedProperties extendedProperties = MOExtendedProperties.get((EntityPlayer) deathEvent.source.getEntity()); extendedProperties.onEvent(deathEvent); } } @SubscribeEvent public void onEntityHurt(LivingHurtEvent event) { if (event.entityLiving instanceof EntityPlayer) { AndroidPlayer androidPlayer = AndroidPlayer.get((EntityPlayer)event.entityLiving); if (androidPlayer.isAndroid()) androidPlayer.onEntityHurt(event); } } @SubscribeEvent public void onEntityItemPickup(EntityItemPickupEvent event) { if (event.entityPlayer != null) { if (event.item.getEntityItem() != null && MatterHelper.containsMatter(event.item.getEntityItem())) { for (int i = 0;i < 9;i++) { if (event.entityPlayer.inventory.getStackInSlot(i) != null && event.entityPlayer.inventory.getStackInSlot(i).getItem() == MatterOverdriveItems.portableDecomposer) { MatterOverdriveItems.portableDecomposer.decomposeItem(event.entityPlayer.inventory.getStackInSlot(i),event.item.getEntityItem()); } } } MOExtendedProperties extendedProperties = MOExtendedProperties.get(event.entityPlayer); if (extendedProperties != null) { extendedProperties.onEvent(event); } } } @SubscribeEvent public void onEntityTransport(MOEventTransport eventTransport) { if (eventTransport.entity instanceof EntityPlayer) { MOExtendedProperties extendedProperties = MOExtendedProperties.get((EntityPlayer)eventTransport.entity); if (extendedProperties != null) { extendedProperties.onEvent(eventTransport); } } } @SubscribeEvent public void onEntityAnomalyConsume(MOEventGravitationalAnomalyConsume.Post event) { if (event.entity instanceof EntityPlayer) { MOExtendedProperties extendedProperties = MOExtendedProperties.get((EntityPlayer)event.entity); if (extendedProperties != null) { extendedProperties.onEvent(event); } } } }