mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 15:18:34 +01:00
Made the XP solidifier pick up any XP orbs nearby
This commit is contained in:
parent
7ca7ce6949
commit
80ad0c9543
2 changed files with 31 additions and 4 deletions
|
@ -14,10 +14,15 @@ package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.InitItems;
|
import de.ellpeck.actuallyadditions.mod.items.InitItems;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience;
|
import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
||||||
|
import net.minecraft.entity.item.EntityXPOrb;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class TileEntityXPSolidifier extends TileEntityInventoryBase implements IButtonReactor{
|
public class TileEntityXPSolidifier extends TileEntityInventoryBase implements IButtonReactor{
|
||||||
|
|
||||||
|
@ -32,6 +37,7 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
private final int[] buttonAmounts = new int[]{1, 5, 10, 20, 30, 40, 50, 64, -999};
|
private final int[] buttonAmounts = new int[]{1, 5, 10, 20, 30, 40, 50, 64, -999};
|
||||||
public int amount;
|
public int amount;
|
||||||
private int lastAmount;
|
private int lastAmount;
|
||||||
|
private int singlePointAmount;
|
||||||
|
|
||||||
public TileEntityXPSolidifier(){
|
public TileEntityXPSolidifier(){
|
||||||
super(2, "xpSolidifier");
|
super(2, "xpSolidifier");
|
||||||
|
@ -101,12 +107,14 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
public void writeSyncableNBT(NBTTagCompound compound, NBTType type){
|
public void writeSyncableNBT(NBTTagCompound compound, NBTType type){
|
||||||
super.writeSyncableNBT(compound, type);
|
super.writeSyncableNBT(compound, type);
|
||||||
compound.setInteger("Amount", this.amount);
|
compound.setInteger("Amount", this.amount);
|
||||||
|
compound.setInteger("SinglePointAmount", this.singlePointAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readSyncableNBT(NBTTagCompound compound, NBTType type){
|
public void readSyncableNBT(NBTTagCompound compound, NBTType type){
|
||||||
super.readSyncableNBT(compound, type);
|
super.readSyncableNBT(compound, type);
|
||||||
this.amount = compound.getInteger("Amount");
|
this.amount = compound.getInteger("Amount");
|
||||||
|
this.singlePointAmount = compound.getInteger("SinglePointAmount");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -126,6 +134,24 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
this.amount -= toAdd;
|
this.amount -= toAdd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!this.isRedstonePowered){
|
||||||
|
int range = 5;
|
||||||
|
List<EntityXPOrb> orbs = this.worldObj.getEntitiesWithinAABB(EntityXPOrb.class, new AxisAlignedBB(this.pos.getX()-range, this.pos.getY()-range, this.pos.getZ()-range, this.pos.getX()+1+range, this.pos.getY()+1+range, this.pos.getZ()+1+range));
|
||||||
|
if(orbs != null && !orbs.isEmpty()){
|
||||||
|
for(EntityXPOrb orb : orbs){
|
||||||
|
if(orb != null && !orb.isDead){
|
||||||
|
this.singlePointAmount+=orb.getXpValue();
|
||||||
|
orb.setDead();
|
||||||
|
|
||||||
|
if(this.singlePointAmount >= ItemSolidifiedExperience.SOLID_XP_AMOUNT){
|
||||||
|
this.amount += this.singlePointAmount/ItemSolidifiedExperience.SOLID_XP_AMOUNT;
|
||||||
|
this.singlePointAmount = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(this.slots[1] != null && this.slots[1].getItem() instanceof ItemSolidifiedExperience){
|
if(this.slots[1] != null && this.slots[1].getItem() instanceof ItemSolidifiedExperience){
|
||||||
this.amount+=this.slots[1].stackSize;
|
this.amount+=this.slots[1].stackSize;
|
||||||
|
@ -156,9 +182,10 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
@Override
|
@Override
|
||||||
public void onButtonPressed(int buttonID, EntityPlayer player){
|
public void onButtonPressed(int buttonID, EntityPlayer player){
|
||||||
if(buttonID < this.buttonAmounts.length){
|
if(buttonID < this.buttonAmounts.length){
|
||||||
if(getPlayerXP(player) > 0){
|
int playerXP = getPlayerXP(player);
|
||||||
int xp = this.buttonAmounts[buttonID] == -999 ? getPlayerXP(player)/ItemSolidifiedExperience.SOLID_XP_AMOUNT : this.buttonAmounts[buttonID];
|
if(playerXP > 0){
|
||||||
if(this.amount < Integer.MAX_VALUE-xp && getPlayerXP(player) >= ItemSolidifiedExperience.SOLID_XP_AMOUNT*xp){
|
int xp = this.buttonAmounts[buttonID] == -999 ? playerXP/ItemSolidifiedExperience.SOLID_XP_AMOUNT : this.buttonAmounts[buttonID];
|
||||||
|
if(this.amount < Integer.MAX_VALUE-xp && playerXP >= ItemSolidifiedExperience.SOLID_XP_AMOUNT*xp){
|
||||||
addPlayerXP(player, -(ItemSolidifiedExperience.SOLID_XP_AMOUNT*xp));
|
addPlayerXP(player, -(ItemSolidifiedExperience.SOLID_XP_AMOUNT*xp));
|
||||||
if(!this.worldObj.isRemote){
|
if(!this.worldObj.isRemote){
|
||||||
this.amount += xp;
|
this.amount += xp;
|
||||||
|
|
|
@ -793,7 +793,7 @@ booklet.actuallyadditions.chapter.esd.name=ESDs
|
||||||
booklet.actuallyadditions.chapter.esd.text.1=The <item>ESD<r> is a block that works <imp>similar to a Hopper<r> but has <imp>a lot more functionality<r>. <n>You can choose the sides to input and output and you can <imp>precisely configure<r> the range of slots to look at! <n>For more precise information about <item>ESDs<r>, craft one and <imp>hover over the elements in their GUI<r>! <n><n><i>Its actual name is
|
booklet.actuallyadditions.chapter.esd.text.1=The <item>ESD<r> is a block that works <imp>similar to a Hopper<r> but has <imp>a lot more functionality<r>. <n>You can choose the sides to input and output and you can <imp>precisely configure<r> the range of slots to look at! <n>For more precise information about <item>ESDs<r>, craft one and <imp>hover over the elements in their GUI<r>! <n><n><i>Its actual name is
|
||||||
|
|
||||||
booklet.actuallyadditions.chapter.xpSolidifier.name=Experience Solidifier
|
booklet.actuallyadditions.chapter.xpSolidifier.name=Experience Solidifier
|
||||||
booklet.actuallyadditions.chapter.xpSolidifier.text.1=The <item>Experience Solidifer<r> uses the player's experience and turns it into <item>Solidified Experience<r> which can later be used by <imp>right-clicking<r> to get the experience you stored into Item form back onto your character. <n>This is a safe and easy way to store your experience so that it isn't getting lost when you die. <n><item>Solidified Experience<r> also drops from Monsters sometimes as an Extra.
|
booklet.actuallyadditions.chapter.xpSolidifier.text.1=The <item>Experience Solidifer<r> uses the player's experience and turns it into <item>Solidified Experience<r> which can later be used by <imp>right-clicking<r> (or sneak-right-clicking!) to get the experience back. <n>Additionally, you can put <item>Solidified Experience<r> into the solidifier, and, when not powered by redstone, it will <imp>pick up any XP Orbs<r> that are on the ground nearby and turn them into <item>Solidified Experience<r>, provided it has enough stored up internally. <n><item>Solidified Experience<r> is also sometimes dropped from mobs.
|
||||||
|
|
||||||
booklet.actuallyadditions.chapter.greenhouseGlass.name=Greenhouse Glass
|
booklet.actuallyadditions.chapter.greenhouseGlass.name=Greenhouse Glass
|
||||||
booklet.actuallyadditions.chapter.greenhouseGlass.text.1=<item>Greenhouse Glass<r> is a very effective way to <imp>speed up the growth of your plants<r>! When placed anywhere above the plant, as long as there are no blocks below obstructing the path, and there is sunlight above the glass, it will <imp>significantly speed up the growth of the plant<r>! <n>It obviously has to be daytime, too. Thought that was obvious.
|
booklet.actuallyadditions.chapter.greenhouseGlass.text.1=<item>Greenhouse Glass<r> is a very effective way to <imp>speed up the growth of your plants<r>! When placed anywhere above the plant, as long as there are no blocks below obstructing the path, and there is sunlight above the glass, it will <imp>significantly speed up the growth of the plant<r>! <n>It obviously has to be daytime, too. Thought that was obvious.
|
||||||
|
|
Loading…
Reference in a new issue