mirror of
https://github.com/Ellpeck/NaturesAura.git
synced 2024-11-14 16:49:09 +01:00
change the way the rose of oblivion releases its aura
This commit is contained in:
parent
a0b2a68728
commit
10765e17ea
3 changed files with 36 additions and 4 deletions
|
@ -6,12 +6,19 @@ import de.ellpeck.naturesaura.api.aura.container.BasicAuraContainer;
|
||||||
import de.ellpeck.naturesaura.api.aura.container.IAuraContainer;
|
import de.ellpeck.naturesaura.api.aura.container.IAuraContainer;
|
||||||
import de.ellpeck.naturesaura.packet.PacketHandler;
|
import de.ellpeck.naturesaura.packet.PacketHandler;
|
||||||
import de.ellpeck.naturesaura.packet.PacketParticles;
|
import de.ellpeck.naturesaura.packet.PacketParticles;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EntitySelectors;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.ITickable;
|
import net.minecraft.util.ITickable;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class TileEntityEndFlower extends TileEntityImpl implements ITickable {
|
public class TileEntityEndFlower extends TileEntityImpl implements ITickable {
|
||||||
|
|
||||||
private final BasicAuraContainer container = new BasicAuraContainer(null, 500000) {
|
private final BasicAuraContainer container = new BasicAuraContainer(null, 500000) {
|
||||||
|
@ -47,9 +54,24 @@ public class TileEntityEndFlower extends TileEntityImpl implements ITickable {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!this.isDrainMode) {
|
if (!this.isDrainMode) {
|
||||||
int amount = IAuraChunk.getAuraInArea(this.world, this.pos, 30);
|
List<EntityItem> items = this.world.getEntitiesWithinAABB(EntityItem.class,
|
||||||
if (amount < IAuraChunk.DEFAULT_AURA)
|
new AxisAlignedBB(this.pos).grow(1), EntitySelectors.IS_ALIVE);
|
||||||
|
for (EntityItem item : items) {
|
||||||
|
if (item.cannotPickup())
|
||||||
|
continue;
|
||||||
|
ItemStack stack = item.getItem();
|
||||||
|
if (stack.getCount() != 1)
|
||||||
|
continue;
|
||||||
|
if (stack.getItem() != Items.ENDER_EYE)
|
||||||
|
continue;
|
||||||
|
|
||||||
this.isDrainMode = true;
|
this.isDrainMode = true;
|
||||||
|
item.setDead();
|
||||||
|
|
||||||
|
PacketHandler.sendToAllAround(this.world, this.pos, 32,
|
||||||
|
new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 21, this.container.getAuraColor()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
int toDrain = Math.min(5000, this.container.getStoredAura());
|
int toDrain = Math.min(5000, this.container.getStoredAura());
|
||||||
this.container.drainAura(toDrain, false);
|
this.container.drainAura(toDrain, false);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package de.ellpeck.naturesaura.packet;
|
package de.ellpeck.naturesaura.packet;
|
||||||
|
|
||||||
import de.ellpeck.naturesaura.ModConfig;
|
|
||||||
import de.ellpeck.naturesaura.NaturesAura;
|
import de.ellpeck.naturesaura.NaturesAura;
|
||||||
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
||||||
import de.ellpeck.naturesaura.blocks.multi.Multiblocks;
|
import de.ellpeck.naturesaura.blocks.multi.Multiblocks;
|
||||||
|
@ -338,6 +337,16 @@ public class PacketParticles implements IMessage {
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case 21: // End flower item consuming
|
||||||
|
color = message.data[0];
|
||||||
|
for (int i = world.rand.nextInt(20) + 10; i >= 0; i--)
|
||||||
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
||||||
|
message.posX, message.posY + 0.5F, message.posZ,
|
||||||
|
world.rand.nextGaussian() * 0.01F,
|
||||||
|
world.rand.nextFloat() * 0.01F,
|
||||||
|
world.rand.nextGaussian() * 0.01F,
|
||||||
|
color, 1.5F, 40, 0F, false, true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
{
|
{
|
||||||
"type": "spotlight",
|
"type": "spotlight",
|
||||||
"item": "naturesaura:end_flower",
|
"item": "naturesaura:end_flower",
|
||||||
"text": "These flowers bear very large amounts of $(aura) that they $(thing)disperse$() in an interesting way: Initially, they will do nothing; however, if there is even the slightest bit of $(aura) missing from the area, they will start slowly feeding their $(aura) into the environment, dying after all of it is drained. During this process, they can neither be stopped, nor harvested."
|
"text": "This flower bears very large amounts of $(aura) that can be harvested in an interesting way: Dropping an $(item)Ender Eye$() on the ground close to it will cause the rose to consume it and start dispersing its $(aura) into the environment. During this process, it can neither be stopped, nor harvested.",
|
||||||
|
"link_recipe": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
Loading…
Reference in a new issue