Skip to content

Commit

Permalink
travel_staff
Browse files Browse the repository at this point in the history
  • Loading branch information
huige233 committed Sep 22, 2022
1 parent 3010c4e commit e1d5416
Show file tree
Hide file tree
Showing 46 changed files with 5,175 additions and 32 deletions.
2 changes: 1 addition & 1 deletion src/main/java/huige233/transcend/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void preinit(FMLPreInitializationEvent event) {
*/
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
TranscendPacketHandler.initPackets();
TranscendPacketHandler.init(event);
proxy.init(event);
}

Expand Down
24 changes: 0 additions & 24 deletions src/main/java/huige233/transcend/effect/TimeStopEffect.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
import huige233.transcend.Main;
import huige233.transcend.init.ModItems;
import huige233.transcend.init.TranscendPotions;
import huige233.transcend.packet.PacketEndTimeStop;
import huige233.transcend.util.EntityUtils;
import huige233.transcend.util.ISyncedPotion;
import huige233.transcend.util.Reference;
import huige233.transcend.util.handlers.TranscendPacketHandler;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
Expand Down Expand Up @@ -123,26 +121,4 @@ public static void tick(TickEvent.WorldTickEvent event){
public static void onPlayerLoggedOutEvent(PlayerEvent.PlayerLoggedOutEvent event){
if(event.player.updateBlocked) event.player.updateBlocked = false;
}

/*
@SubscribeEvent
public static void onPotionExpiryEvent(PotionEvent.PotionExpiryEvent event){
if(event.getPotionEffect() != null && event.getPotionEffect().getPotion() == TranscendPotions.time_stop){
unblockByEntities(event.getEntityLiving());
if(!event.getEntity().world.isRemote){
TranscendPacketHandler.net.sendToDimension(new PacketEndTimeStop.Message(event.getEntityLiving()),event.getEntity().dimension);
}
}
}
@SubscribeEvent
public static void onPotionRemoveEvent(PotionEvent.PotionRemoveEvent event){
if(event.getPotionEffect() != null && event.getPotionEffect().getPotion() == TranscendPotions.time_stop){
unblockByEntities(event.getEntityLiving());
if(!event.getEntity().world.isRemote){
TranscendPacketHandler.net.sendToDimension(new PacketEndTimeStop.Message(event.getEntityLiving()),event.getEntity().dimension);
}
}
}
*/
}
46 changes: 46 additions & 0 deletions src/main/java/huige233/transcend/event/TeleportEntityEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package huige233.transcend.event;

import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.event.entity.EntityEvent;
import net.minecraftforge.fml.common.eventhandler.Cancelable;

import javax.annotation.Nonnull;

@Cancelable
public class TeleportEntityEvent extends EntityEvent {
private @Nonnull BlockPos targetPos;

private int dimension;


/**
* Fired before an entity teleports to the given location.
*
* @param entity
* The entity teleporting
* @param pos
* The target coord
*/
public TeleportEntityEvent(@Nonnull Entity entity, @Nonnull BlockPos pos, int dimension) {
super(entity);
this.targetPos = pos;
this.setDimension(dimension);
}

public @Nonnull BlockPos getTarget() {
return targetPos;
}

public void setTargetPos(@Nonnull BlockPos target) {
this.targetPos = target;
}

public int getDimension() {
return dimension;
}

public void setDimension(int dimension) {
this.dimension = dimension;
}
}
1 change: 1 addition & 0 deletions src/main/java/huige233/transcend/init/ModItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,5 @@ public class ModItems {
public static final ItemSword TimeStop = new ItemTimeStop("timestop",Invulnera);
public static final Item TRANSCEND_SHIELD = new ItemTranscendShield("transcend_shield",Main.TranscendTab);
public static final Item ITEM_XP = new ItemXp("transcend_xp",Main.TranscendTab);
public static final Item TravelStaff = new ItemTravelStaff("travel_staff",Main.TranscendTab);
}
13 changes: 13 additions & 0 deletions src/main/java/huige233/transcend/items/armor/ArmorBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import huige233.transcend.util.Reference;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
Expand All @@ -33,6 +34,7 @@
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent;
import net.minecraftforge.event.entity.player.PlayerDropsEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Optional;
Expand Down Expand Up @@ -82,6 +84,8 @@ public static void onPlayerDeath(LivingDeathEvent event) {
if (ArmorUtils.fullEquipped(player)) {
event.setCanceled(true);
event.getEntityLiving().setHealth(player.getMaxHealth());
event.getEntityLiving().isDead = false;
event.getEntityLiving().deathTime = 0;
}
}

Expand Down Expand Up @@ -125,6 +129,15 @@ public static void LivingAttackEvent(LivingAttackEvent event) {
}
}

@SubscribeEvent(priority = EventPriority.HIGHEST)
public static void LivingSetAttackTargetEvent(LivingSetAttackTargetEvent event){
if(event.getTarget() instanceof EntityPlayer){
if(ArmorUtils.fullEquipped((EntityPlayer) event.getTarget())){
((EntityLiving) event.getEntityLiving()).setAttackTarget(event.getEntityLiving());
}
}
}


@Override
public void onArmorTick(@NotNull World world, @NotNull EntityPlayer player, @NotNull ItemStack itemStack) {
Expand Down
126 changes: 126 additions & 0 deletions src/main/java/huige233/transcend/items/tools/ItemTravelStaff.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
package huige233.transcend.items.tools;

import baubles.common.Baubles;
import cofh.redstoneflux.RedstoneFluxProps;
import cofh.redstoneflux.api.IEnergyContainerItem;
import huige233.transcend.Main;
import huige233.transcend.items.ItemBase;
import huige233.transcend.util.IHasModel;
import static huige233.transcend.util.handlers.BaublesHelper.getBaubles;

import huige233.transcend.util.TravelController;
import ic2.api.item.ElectricItem;
import ic2.core.IC2;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.world.World;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Optional;

import javax.annotation.Nonnull;

@Optional.Interface(modid = RedstoneFluxProps.MOD_ID, iface = "cofh.redstoneflux.api.IEnergyContainerItem")
@Optional.Interface(modid = IC2.MODID, iface = "ic2.api.item.ISpecialElectricItem")
public class ItemTravelStaff extends ItemBase implements IHasModel {
private long Blick_Tick = 0;

public ItemTravelStaff(String name, CreativeTabs tab){
super(name,tab);
this.maxStackSize=1;
setHasSubtypes(true);
}

@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected){
if(Loader.isModLoaded(IC2.MODID)){
ic2charge(stack,world,entity,itemSlot,isSelected);
}
if(Loader.isModLoaded(RedstoneFluxProps.MOD_ID)){
rfReceive(stack,world,entity,itemSlot,isSelected);
}
}

@Optional.Method(modid = RedstoneFluxProps.MOD_ID)
private void rfReceive(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
if (!entity.world.isRemote && entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack receive = player.inventory.getStackInSlot(i);
if (!receive.isEmpty()) {
if (receive.getItem() instanceof IEnergyContainerItem) {
IEnergyContainerItem energy = (IEnergyContainerItem) receive.getItem();
energy.receiveEnergy(receive, energy.getMaxEnergyStored(receive) - energy.getEnergyStored(receive), false);
}
if (receive.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage cap = (IEnergyStorage) stack.getCapability(CapabilityEnergy.ENERGY, null);
if ((cap != null) && (cap.canReceive())) {
cap.receiveEnergy(Integer.MAX_VALUE, false);
}
}
}
}
if (Loader.isModLoaded(Baubles.MODID)) {
for (ItemStack receive : getBaubles(player)) {
if (receive.getItem() instanceof IEnergyContainerItem) {
IEnergyContainerItem energy = (IEnergyContainerItem) receive.getItem();
energy.receiveEnergy(receive, energy.getMaxEnergyStored(receive) - energy.getEnergyStored(receive), false);
}
if (receive.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage cap = (IEnergyStorage) stack.getCapability(CapabilityEnergy.ENERGY, null);
if ((cap != null) && (cap.canReceive())) {
cap.receiveEnergy(Integer.MAX_VALUE, false);
}
}
}
}
}
}

@Optional.Method(modid = IC2.MODID)
private void ic2charge(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
if (!entity.world.isRemote && entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack toCharge = player.inventory.getStackInSlot(i);
if (!toCharge.isEmpty()) {
ElectricItem.manager.charge(toCharge, ElectricItem.manager.getMaxCharge(toCharge) - ElectricItem.manager.getCharge(toCharge), Integer.MAX_VALUE, true, false);
}
}
if (Loader.isModLoaded(Baubles.MODID)) {
for (ItemStack toCharge : getBaubles(player)) {
ElectricItem.manager.charge(toCharge, ElectricItem.manager.getMaxCharge(toCharge) - ElectricItem.manager.getCharge(toCharge), Integer.MAX_VALUE, true, false);
}
}
}
}

@Override
public @Nonnull ActionResult<ItemStack> onItemRightClick(@Nonnull World world, @Nonnull EntityPlayer player, @Nonnull EnumHand hand){
ItemStack equipped = player.getHeldItem(hand);
if(player.isSneaking()){
long tickSinceBlink = Main.proxy.getTickCount() - Blick_Tick;
if(tickSinceBlink<0){
Blick_Tick=-1;
}
if(world.isRemote){
if(TravelController.instance.doBlink(equipped,hand,player)) {
player.swingArm(hand);
Blick_Tick = Main.proxy.getTickCount();
}
}
return new ActionResult<ItemStack>(EnumActionResult.SUCCESS,equipped);
}
if(world.isRemote){
TravelController.instance.activateTravelAccessable(equipped,hand,world,player);
}
player.swingArm(hand);
return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, equipped);
}
}
6 changes: 1 addition & 5 deletions src/main/java/huige233/transcend/items/tools/ToolSword.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import huige233.transcend.items.fireimmune;
import huige233.transcend.lib.TranscendDamageSources;
import huige233.transcend.util.*;
import static huige233.transcend.util.handlers.BaublesHelper.getBaubles;
import ic2.api.item.ElectricItem;
import ic2.core.IC2;
import net.minecraft.client.util.ITooltipFlag;
Expand All @@ -22,16 +23,13 @@
import net.minecraft.entity.ai.attributes.RangedAttribute;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.network.play.server.SPacketCustomSound;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.*;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.util.text.TextFormatting;
Expand All @@ -56,8 +54,6 @@
import java.util.List;
import java.util.UUID;

import static com.brandon3055.draconicevolution.integration.BaublesHelper.getBaubles;

@Optional.Interface(modid = RedstoneFluxProps.MOD_ID, iface = "cofh.redstoneflux.api.IEnergyContainerItem")
@Optional.Interface(modid = IC2.MODID, iface = "ic2.api.item.ISpecialElectricItem")
@Optional.Interface(modid = LibMisc.MOD_ID,iface = "vazkii.botania.api.mana.IManaTooltipDisplay")
Expand Down
Loading

0 comments on commit e1d5416

Please sign in to comment.