Jump to content

GUI Update Issue? (1.7/1.8)[UNSOLVED]


Koopamillion

Recommended Posts

So, I've added electricity and stuff. Anyway, the generator generates power fine, just like the solar panel, however, when I plug the generator's electricity into a machine, the energy bar on the side goes up, and when I put in something to smelt, the progress shows fine. BUT!!! When I plug in the solar panels electricity, it dosen't increase the energy bar, (IN THE GUI, IT IS ACTUALLY ADDING POWER BUT JUST NOT SHOWING), the progress dosen't show at all, however it still smelts items. This isn't just the machines, the energy storage's gui dosen't update either unless it's connected to a generator. Is it the gui not updating? A method i've done wrong? Thanks In advance:

 

The solar panel has no gui/container btw.

 

ALL CODE:

 

Generator TileEntity:

 

 

package com.koopamillion.tile_entity;

 

import com.koopamillion.blocks.BlockType;

import com.koopamillion.energy.EnergyBar;

import com.koopamillion.energy.EnergyNet;

import com.koopamillion.energy.IEnergy;

import com.koopamillion.util.InventoryUtil;

import com.koopamillion.util.NBTUtil;

 

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.init.Blocks;

import net.minecraft.inventory.IInventory;

import net.minecraft.inventory.ISidedInventory;

import net.minecraft.item.ItemStack;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.network.NetworkManager;

import net.minecraft.network.Packet;

import net.minecraft.network.play.server.S35PacketUpdateTileEntity;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.tileentity.TileEntityFurnace;

import net.minecraftforge.common.util.ForgeDirection;

 

public class TileEntityCoalGenerator extends TileEntity implements IEnergy, IInventory, ISidedInventory{

 

private EnergyBar energyBar = new EnergyBar(12000); //how much it holds

private ItemStack[] inventory = new ItemStack[7];

public int burnTime;

public int currentItemBurnTime;

public int rotation = 3;

private float modifier = 17.5f;

private float defaultModifier = 17.5f;

public int burnTimeRemovedPerTick = 3;

 

public void updateEntity(){

updateGenerating();

}

private void updateGenerating(){

boolean modified = burnTime > 0;

if(burnTime > 0){

if(burnTime > burnTimeRemovedPerTick){

burnTime -= burnTimeRemovedPerTick;

energyBar.addEnergyWithRemaining(burnTimeRemovedPerTick);

 

}else{

energyBar.addEnergyWithRemaining(burnTime);

burnTime = 0;

}}else{

if(burnTime > 0){

energyBar.addEnergyWithRemaining(burnTime);

burnTime = 0;

}

 

}

 

if(burnTime == 0 &&(TileEntityFurnace.isItemFuel(inventory[0]) || TileEntityFurnace.isItemFuel(inventory[5]) || TileEntityFurnace.isItemFuel(inventory[6]))){

currentItemBurnTime = burnTime += (int) (TileEntityFurnace.getItemBurnTime(inventory[0]) * modifier) + (int) (TileEntityFurnace.getItemBurnTime(inventory[6]) * modifier);

if(inventory[0] != null){

inventory[0].stackSize--;

if(inventory[0].stackSize <= 0){

inventory[0] = null;

}

}

if(inventory[5] != null){

inventory[5].stackSize--;

if(inventory[5].stackSize <= 0){

inventory[5] = null;

}

}

if(inventory[6] != null){

inventory[6].stackSize--;

if(inventory[6].stackSize <= 0){

inventory[6] = null;

 

 

}

 

}

}

EnergyNet.distributeEnergyToSurrounding(worldObj, xCoord, yCoord, zCoord, energyBar);

if(modified != burnTime > 0){

worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);

}

 

}

@Override

public boolean canAddEnergyOnSide(ForgeDirection direction){ //accept energy?

return false; //no defaultly for generators

}

@Override

public boolean canConnect(ForgeDirection direction){

return true;

}

@Override

public EnergyBar getEnergyBar(){

return energyBar;

}

@Override

public void setLastReceivedDirection(ForgeDirection direction){

 

}

@Override

public int getEnergyTransferRate(){

return 10;

}

public Packet getDescriptionPacket(){

NBTTagCompound tag = new NBTTagCompound();

writeToNBT(tag);

return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, tag);

}

public void onDataPacket(NetworkManager manager, S35PacketUpdateTileEntity packet){

readFromNBT(packet.func_148857_g());

}

@Override

public int getSizeInventory(){

return InventoryUtil.getSizeInventory(inventory);

}

@Override

public ItemStack getStackInSlot(int slot){

return InventoryUtil.getStackInSlot(inventory, slot);

}

@Override

public ItemStack decrStackSize(int slot, int count){

return InventoryUtil.decrStackSize(inventory, slot, count);

}

@Override

public ItemStack getStackInSlotOnClosing(int slot){

return InventoryUtil.getStackInSlotOnClosing(inventory, slot);

}

@Override

public void setInventorySlotContents(int slot, ItemStack itemstack){

InventoryUtil.setInventorySlotContents(this, inventory, slot, itemstack);

}

@Override

public String getInventoryName(){

return "container.powerGenerator";

}

@Override

public boolean hasCustomInventoryName(){

return false;

}

@Override

public int getInventoryStackLimit(){

return 64;

}

@Override

public boolean isUseableByPlayer(EntityPlayer player){

return true;

}

@Override

public void openInventory(){

 

}

@Override

public void closeInventory(){

 

}

@Override

public boolean isItemValidForSlot(int slot, ItemStack itemstack){

switch(slot){

case 0:

return TileEntityFurnace.isItemFuel(itemstack);

}

return false;

}

public int getBurnTime(){

return burnTime;

}

public boolean isBurning(){

return burnTime > 0;

}

public int getBurnTimeScaled(int scale){

return burnTime * scale / currentItemBurnTime;

}

@Override

public int[] getAccessibleSlotsFromSide(int slot){

return new int[] {0};

}

@Override

public boolean canInsertItem(int slot, ItemStack itemstack, int side){

return isItemValidForSlot(slot, itemstack);

}

@Override

public boolean canExtractItem(int slot, ItemStack itemstack, int side){

return false;

}

@Override

public BlockType getTypeOfBlock(){

return BlockType.MACHINE;

}

public void writeToNBT(NBTTagCompound tag){

super.writeToNBT(tag);

energyBar.writeToNBT(tag);

tag.setInteger("rotation", rotation);

tag.setInteger("burnTime", burnTime);

tag.setInteger("currentItemBurnTime", currentItemBurnTime);

NBTUtil.writeItemStackArrayToNBT(inventory, tag);

}

public void readFromNBT(NBTTagCompound tag){

super.readFromNBT(tag);

energyBar.readFromNBT(tag);

rotation = tag.getInteger("rotation");

burnTime = tag.getInteger("burnTime");

currentItemBurnTime = tag.getInteger("currentItemBurnTime");

NBTUtil.readItemStackArrayFromNBT(inventory, tag);

 

}

}

 

 

 

Solar Tileentity:

 

 

package com.koopamillion.tile_entity;

 

import com.koopamillion.blocks.BlockType;

import com.koopamillion.energy.EnergyBar;

import com.koopamillion.energy.EnergyNet;

import com.koopamillion.energy.IEnergy;

import com.koopamillion.util.LogHelper;

 

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.network.NetworkManager;

import net.minecraft.network.Packet;

import net.minecraft.network.play.server.S35PacketUpdateTileEntity;

import net.minecraft.world.biome.BiomeGenDesert;

import net.minecraftforge.common.util.ForgeDirection;

 

public class TileEntitySolarPanel extends TileEntityBasicBlock implements IEnergy {

 

private EnergyBar energyBar = new EnergyBar(12000);

public boolean seesSun = false;

public int time = 1;

 

public boolean isDesert(){

return worldObj.provider.getBiomeGenForCoords(xCoord >> 4, zCoord >> 4) instanceof BiomeGenDesert;

 

}

 

 

 

public void updateEntity(){

if(!worldObj.isRemote){

if(worldObj.isDaytime() && ((!worldObj.isRaining() && !worldObj.isThundering()) || isDesert()) && !worldObj.provider.hasNoSky && worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord)){

seesSun = true;

energyBar.addEnergyWithRemaining(time);

 

}else{

seesSun = false;

 

}

 

}

 

worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);

EnergyNet.distributeEnergyToSurrounding(worldObj, xCoord, yCoord, zCoord, energyBar);

}

 

 

@Override

public boolean canAddEnergyOnSide(ForgeDirection direction) {

 

return false;

}

 

@Override

public boolean canConnect(ForgeDirection direction) {

 

return true;

}

 

@Override

public EnergyBar getEnergyBar() {

 

return energyBar;

}

 

@Override

public void setLastReceivedDirection(ForgeDirection direction) {

 

}

 

@Override

public int getEnergyTransferRate() {

 

return 10;

}

 

@Override

public BlockType getTypeOfBlock() {

 

return BlockType.MACHINE;

}

public Packet getDescriptionPacket(){

NBTTagCompound tag = new NBTTagCompound();

writeToNBT(tag);

return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, tag);

}

public void onDataPacket(NetworkManager manager, S35PacketUpdateTileEntity packet){

readFromNBT(packet.func_148857_g());

}

public void writeToNBT(NBTTagCompound tag){

super.writeToNBT(tag);

energyBar.writeToNBT(tag);

 

}

public void readFromNBT(NBTTagCompound tag){

super.readFromNBT(tag);

energyBar.readFromNBT(tag);

 

}

 

}

 

 

 

Machine TileEntity:

 

 

 

 

package com.koopamillion.tile_entity;

 

import com.koopamillion.blocks.BlockType;

import com.koopamillion.energy.EnergyBar;

import com.koopamillion.energy.IEnergy;

import com.koopamillion.util.InventoryUtil;

import com.koopamillion.util.MachineUtil;

import com.koopamillion.util.NBTUtil;

 

import cpw.mods.fml.relauncher.Side;

import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.inventory.ICrafting;

import net.minecraft.inventory.IInventory;

import net.minecraft.item.ItemStack;

import net.minecraft.item.crafting.FurnaceRecipes;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.network.NetworkManager;

import net.minecraft.network.Packet;

import net.minecraft.network.play.server.S35PacketUpdateTileEntity;

import net.minecraft.world.World;

import net.minecraftforge.common.util.ForgeDirection;

 

public class TileEntityElectricFurnace extends TileEntityBasicBlock implements IEnergy, IInventory{

 

private EnergyBar energyBar = new EnergyBar(1200);

private ItemStack[] inventory = new ItemStack[18];

private int energyUsePerSmelt = 300;

private int defaultEnergyPerSmelt = 300;

public int rotation = 3;

public boolean isSmelting;

private int smeltStatus;

private int smeltTime = 80;

private int defaultSmeltTime = 80;

 

//UPGRADE INFO:

//Speed Upgrade: -5 SmeltTime, + 50 EUS; Stackable: 12 (-60 SmeltTime) (+600 EUS)

//Eco Upgrade: - 20 EUS; + 5 SmeltTime; Stackable : 12 (-240 EUS) (+60 SmeltTime)

//Battery Upgrade: + 200 EnergyStorage; Stackable : 36 (+7200 ES)

 

 

 

 

 

 

 

public void updateEntity(){

updateSmelting();

worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);

 

}

private void updateSmelting(){

boolean modified = isSmelting;

this.isSmelting = canSmelt();

if(this.isSmelting){

this.smeltStatus += 1;

}else{

this.smeltStatus = 0;

}

if(this.smeltStatus >= this.smeltTime){

smelt();

this.smeltStatus = 0;

}

if(modified != isSmelting){

worldObj.markBlockForUpdate(xCoord, yCoord, xCoord);

}

}

private boolean canSmelt(){

if(inventory[0] == null) return false;

return MachineUtil.canOperate(inventory, energyBar, FurnaceRecipes.smelting().getSmeltingResult(inventory[0]), this, energyUsePerSmelt, 1);

}

private void smelt(){

MachineUtil.operate(inventory, energyBar, FurnaceRecipes.smelting().getSmeltingResult(inventory[0]), this, smeltStatus, isSmelting, energyUsePerSmelt, 1);

}

@Override

public boolean canAddEnergyOnSide(ForgeDirection direction){

return true;

}

@Override

public boolean canConnect(ForgeDirection direction){

return true;

}

@Override

public EnergyBar getEnergyBar(){

return energyBar;

}

@Override

public void setLastReceivedDirection(ForgeDirection direction){

 

}

@Override

public int getEnergyTransferRate(){

return 100;

}

@Override

public int getSizeInventory(){

return InventoryUtil.getSizeInventory(inventory);

}

@Override

public ItemStack getStackInSlot(int slot){

return InventoryUtil.getStackInSlot(inventory, slot);

}

@Override

public ItemStack decrStackSize(int slot, int count){

return InventoryUtil.decrStackSize(inventory, slot, count);

}

@Override

public ItemStack getStackInSlotOnClosing(int slot){

return InventoryUtil.getStackInSlotOnClosing(inventory, slot);

}

@Override

public void setInventorySlotContents(int slot, ItemStack itemstack){

InventoryUtil.setInventorySlotContents(this, inventory, slot, itemstack);

}

@Override

public String getInventoryName(){

return "container.electricFurnace";

}

@Override

public boolean hasCustomInventoryName(){

return false;

}

@Override

public int getInventoryStackLimit(){

return 64;

}

@Override

public boolean isUseableByPlayer(EntityPlayer player){

return true;

}

@Override

public void openInventory(){

 

}

@Override

public void closeInventory(){

 

}

@Override

public boolean isItemValidForSlot(int slot, ItemStack itemstack){

return true;

}

public int getCookProgress(int scale){

return this.smeltStatus * scale / smeltTime;

}

@Override

public BlockType getTypeOfBlock(){

return BlockType.MACHINE;

}

public Packet getDescriptionPacket(){

NBTTagCompound tag = new NBTTagCompound();

writeToNBT(tag);

return new S35PacketUpdateTileEntity();

}

public void onDataPacket(NetworkManager manager, S35PacketUpdateTileEntity packet){

readFromNBT(packet.func_148857_g());

}

public void writeToNBT(NBTTagCompound tag){

super.writeToNBT(tag);

energyBar.writeToNBT(tag);

tag.setInteger("rotation", rotation);

tag.setInteger("smeltStatus", smeltStatus);

NBTUtil.writeItemStackArrayToNBT(inventory, tag);

}

public void readFromNBT(NBTTagCompound tag){

super.readFromNBT(tag);

energyBar.readFromNBT(tag);

rotation = tag.getInteger("rotation");

smeltStatus = tag.getInteger("smeltStatus");

NBTUtil.readItemStackArrayFromNBT(inventory, tag);

}

}

 

 

 

 

The machine's gui + container:

 

 

package com.koopamillion.gui;

 

import java.util.Arrays;

 

import com.koopamillion.energy.EnergyBar;

import com.koopamillion.energy.IEnergy;

import com.koopamillion.inventory.ContainerElectricFurnace;

import com.koopamillion.lib.Energy;

import com.koopamillion.lib.RefStrings;

import com.koopamillion.tile_entity.TileEntityElectricFurnace;

import com.koopamillion.util.GuiUtil;

 

import net.minecraft.client.gui.inventory.GuiContainer;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.util.ResourceLocation;

import net.minecraft.world.World;

 

 

public class GuiElectricFurnace extends GuiContainer{

 

private static final ResourceLocation GUI = new ResourceLocation(RefStrings.MODID + ":textures/gui/container/eFurnace.png");

 

public final EntityPlayer player;

public final World world;

public final int x;

public final int y;

public final int z;

public TileEntityElectricFurnace tileentity;

 

public GuiElectricFurnace(EntityPlayer player, World world, int x, int y, int z) {

super(new ContainerElectricFurnace(player, world, x, y, z));

this.player = player;

this.world = world;

this.x = x;

this.y = y;

this.z = z;

this.tileentity = (TileEntityElectricFurnace) world.getTileEntity(x, y, z);

}

 

@Override

protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {

xSize = 176;

this.mc.getTextureManager().bindTexture(GUI);

GuiUtil.drawRectangle(guiLeft, guiTop, 176, ySize, 256, 256, 0, 0);

int energyBarSize = 48;

this.drawTexturedModalRect(guiLeft + 8, guiTop + 8 + energyBarSize - ((IEnergy) tileentity).getEnergyBar().getEnergyLevelScaled(energyBarSize), 176, 31, 16, ((IEnergy) tileentity).getEnergyBar().getEnergyLevelScaled(energyBarSize));

int middleX = (this.width - this.xSize) / 2;

int middleY = (this.height - this.ySize) / 2;

 

if(this.tileentity.isSmelting){

this.drawTexturedModalRect(middleX + 56, middleY + 36 + 18, 176, 0, 14, 14);

}

 

int scale = this.tileentity.getCookProgress(24);

this.drawTexturedModalRect(middleX + 79, middleY + 34, 176, 14, scale + 1, 16);

}

@Override

public void drawGuiContainerForegroundLayer(int x, int y){

drawEnergyLevel(x, y);

}

private void drawEnergyLevel(int x, int y){

int minX = guiLeft + 8;

int maxX = guiLeft + 8 + 15;

int minY = guiTop + 8;

int maxY = guiTop + 8 + 47;

EnergyBar energyBar = ((IEnergy) tileentity).getEnergyBar();

if(x >= minX && x <= maxX && y >= minY && y <= maxY){

this.drawHoveringText(Arrays.asList(energyBar.getEnergyLevel() + " /" + energyBar.getMaxEnergyLevel() + " " + Energy.Koops.getName()), x - guiLeft - 6, y - guiTop, fontRendererObj);

}

}

 

}

 

 

 

package com.koopamillion.inventory;

 

import com.koopamillion.slot.SlotOutput;

import com.koopamillion.tile_entity.TileEntityElectricFurnace;

 

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.inventory.Container;

import net.minecraft.inventory.Slot;

import net.minecraft.item.ItemStack;

import net.minecraft.item.crafting.FurnaceRecipes;

import net.minecraft.world.World;

 

public class ContainerElectricFurnace extends Container{

public final EntityPlayer player;

public final World world;

public final int x;

public final int y;

public final int z;

public TileEntityElectricFurnace tileentity;

public static final int INPUT = 0, OUTPUT = 1;

 

public ContainerElectricFurnace(EntityPlayer player, World world, int x, int y, int z){

this.player = player;

this.world = world;

this.x = x;

this.y = y;

this.z = z;

this.tileentity = (TileEntityElectricFurnace) world.getTileEntity(x, y, z);

this.detectAndSendChanges();

 

updateSlots();

}

 

public boolean canInteractWith(EntityPlayer player){

return tileentity.isUseableByPlayer(player);

}

 

public void updateSlots(){

this.inventorySlots.clear();

this.addSlotToContainer(new Slot(tileentity, INPUT, 56, 35));

this.detectAndSendChanges();

this.addSlotToContainer(new SlotOutput(player, tileentity, OUTPUT, 116, 35));

 

for(int i = 0; i < 3; ++i){

for(int j = 0; j < 9; ++j){

this.addSlotToContainer(new Slot(player.inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));

}

}

for(int i = 0; i < 9; ++i){

this.addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 142)); //ep 33 to watch

}

}

 

 

public ItemStack transferStackInSlot(EntityPlayer player, int slotId)

    {

        ItemStack itemstack = null;

        Slot slot = (Slot)this.inventorySlots.get(slotId);

 

        if (slot != null && slot.getHasStack())

        {

        ItemStack itemstack1 = slot.getStack();

        itemstack = itemstack1.copy();

 

        // If itemstack is in Output stack

        if (slotId == OUTPUT)

        {

        // try to place in player inventory / action bar; add 36+1 because mergeItemStack uses < index,

        // so the last slot in the inventory won't get checked if you don't add 1

        if (!this.mergeItemStack(itemstack1, OUTPUT+1, OUTPUT+36+1, true))

        {

        return null;

        }

 

        slot.onSlotChange(itemstack1, itemstack);

        }

        // itemstack is in player inventory, try to place in appropriate furnace slot

        else if (slotId != INPUT)

        {

        // if it can be smelted, place in the input slots

        if (FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null)

        {

        // try to place in either Input slot; add 1 to final input slot because mergeItemStack uses < index

        if (!this.mergeItemStack(itemstack1, INPUT, INPUT+1, false))

        {

        return null;

        }

        }

        // item in player's inventory, but not in action bar

        else if (slotId >= OUTPUT+1 && slotId < OUTPUT+28)

        {

        // place in action bar

        if (!this.mergeItemStack(itemstack1, OUTPUT+28, OUTPUT+37, false))

        {

        return null;

        }

        }

        // item in action bar - place in player inventory

        else if (slotId >= OUTPUT+28 && slotId < OUTPUT+37 && !this.mergeItemStack(itemstack1, OUTPUT+1, OUTPUT+28, false))

        {

        return null;

        }

        }

        // In one of the infuser slots; try to place in player inventory / action bar

        else if (!this.mergeItemStack(itemstack1, OUTPUT+1, OUTPUT+37, false))

        {

        return null;

        }

 

        if (itemstack1.stackSize == 0)

        {

        slot.putStack((ItemStack)null);

        }

        else

        {

        slot.onSlotChanged();

        }

 

        if (itemstack1.stackSize == itemstack.stackSize)

        {

        return null;

        }

 

        slot.onPickupFromSlot(player, itemstack1);

        }

        return itemstack;

    }

 

 

}

 

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Let me try and help you with love spells, traditional healing, native healing, fortune telling, witchcraft, psychic readings, black magic, voodoo, herbalist healing, or any other service your may desire within the realm of african native healing, the spirits and the ancestors. I am a sangoma and healer. I could help you to connect with the ancestors , interpret dreams, diagnose illness through divination with bones, and help you heal both physical and spiritual illness. We facilitate the deepening of your relationship to the spirit world and the ancestors. Working in partnership with one\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’s ancestors is a gift representing a close link with the spirit realm as a mediator between the worlds.*   Witchdoctors, or sorcerers, are often purveyors of mutis and charms that cause harm to people. we believe that we are here for only one purpose, to heal through love and compassion.*   African people share a common understanding of the importance of ancestors in daily life. When they have lost touch with their ancestors, illness may result or bad luck. Then a traditional healer, or sangoma, is sought out who may prescribe herbs, changes in lifestyle, a career change, or changes in relationships. The client may also be told to perform a ceremony or purification ritual to appease the ancestors.*   Let us solve your problems using powerful African traditional methods. We believe that our ancestors and spirits give us enlightenment, wisdom, divine guidance, enabling us to overcome obstacles holding your life back. Our knowledge has been passed down through centuries, being refined along the way from generation to generation. We believe in the occult, the paranormal, the spirit world, the mystic world.*   The services here are based on the African Tradition Value system/religion,where we believe the ancestors and spirits play a very important role in society. The ancestors and spirits give guidance and counsel in society. They could enable us to see into the future and give solutions to the problems affecting us. We use rituals, divination, spells, chants and prayers to enable us tackle the task before us.*   I have experience in helping and guiding many people from all over the world. My psychic abilities may help you answer and resolve many unanswered questions
    • Let me try and help you with love spells, traditional healing, native healing, fortune telling, witchcraft, psychic readings, black magic, voodoo, herbalist healing, or any other service your may desire within the realm of african native healing, the spirits and the ancestors. I am a sangoma and healer. I could help you to connect with the ancestors , interpret dreams, diagnose illness through divination with bones, and help you heal both physical and spiritual illness. We facilitate the deepening of your relationship to the spirit world and the ancestors. Working in partnership with one\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’s ancestors is a gift representing a close link with the spirit realm as a mediator between the worlds.*   Witchdoctors, or sorcerers, are often purveyors of mutis and charms that cause harm to people. we believe that we are here for only one purpose, to heal through love and compassion.*   African people share a common understanding of the importance of ancestors in daily life. When they have lost touch with their ancestors, illness may result or bad luck. Then a traditional healer, or sangoma, is sought out who may prescribe herbs, changes in lifestyle, a career change, or changes in relationships. The client may also be told to perform a ceremony or purification ritual to appease the ancestors.*   Let us solve your problems using powerful African traditional methods. We believe that our ancestors and spirits give us enlightenment, wisdom, divine guidance, enabling us to overcome obstacles holding your life back. Our knowledge has been passed down through centuries, being refined along the way from generation to generation. We believe in the occult, the paranormal, the spirit world, the mystic world.*   The services here are based on the African Tradition Value system/religion,where we believe the ancestors and spirits play a very important role in society. The ancestors and spirits give guidance and counsel in society. They could enable us to see into the future and give solutions to the problems affecting us. We use rituals, divination, spells, chants and prayers to enable us tackle the task before us.*   I have experience in helping and guiding many people from all over the world. My psychic abilities may help you answer and resolve many unanswered questions
    • Let me try and help you with love spells, traditional healing, native healing, fortune telling, witchcraft, psychic readings, black magic, voodoo, herbalist healing, or any other service your may desire within the realm of african native healing, the spirits and the ancestors. I am a sangoma and healer. I could help you to connect with the ancestors , interpret dreams, diagnose illness through divination with bones, and help you heal both physical and spiritual illness. We facilitate the deepening of your relationship to the spirit world and the ancestors. Working in partnership with one\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’s ancestors is a gift representing a close link with the spirit realm as a mediator between the worlds.*   Witchdoctors, or sorcerers, are often purveyors of mutis and charms that cause harm to people. we believe that we are here for only one purpose, to heal through love and compassion.*   African people share a common understanding of the importance of ancestors in daily life. When they have lost touch with their ancestors, illness may result or bad luck. Then a traditional healer, or sangoma, is sought out who may prescribe herbs, changes in lifestyle, a career change, or changes in relationships. The client may also be told to perform a ceremony or purification ritual to appease the ancestors.*   Let us solve your problems using powerful African traditional methods. We believe that our ancestors and spirits give us enlightenment, wisdom, divine guidance, enabling us to overcome obstacles holding your life back. Our knowledge has been passed down through centuries, being refined along the way from generation to generation. We believe in the occult, the paranormal, the spirit world, the mystic world.*   The services here are based on the African Tradition Value system/religion,where we believe the ancestors and spirits play a very important role in society. The ancestors and spirits give guidance and counsel in society. They could enable us to see into the future and give solutions to the problems affecting us. We use rituals, divination, spells, chants and prayers to enable us tackle the task before us.*   I have experience in helping and guiding many people from all over the world. My psychic abilities may help you answer and resolve many unanswered questions
    • Let me try and help you with love spells, traditional healing, native healing, fortune telling, witchcraft, psychic readings, black magic, voodoo, herbalist healing, or any other service your may desire within the realm of african native healing, the spirits and the ancestors. I am a sangoma and healer. I could help you to connect with the ancestors , interpret dreams, diagnose illness through divination with bones, and help you heal both physical and spiritual illness. We facilitate the deepening of your relationship to the spirit world and the ancestors. Working in partnership with one\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’s ancestors is a gift representing a close link with the spirit realm as a mediator between the worlds.*   Witchdoctors, or sorcerers, are often purveyors of mutis and charms that cause harm to people. we believe that we are here for only one purpose, to heal through love and compassion.*   African people share a common understanding of the importance of ancestors in daily life. When they have lost touch with their ancestors, illness may result or bad luck. Then a traditional healer, or sangoma, is sought out who may prescribe herbs, changes in lifestyle, a career change, or changes in relationships. The client may also be told to perform a ceremony or purification ritual to appease the ancestors.*   Let us solve your problems using powerful African traditional methods. We believe that our ancestors and spirits give us enlightenment, wisdom, divine guidance, enabling us to overcome obstacles holding your life back. Our knowledge has been passed down through centuries, being refined along the way from generation to generation. We believe in the occult, the paranormal, the spirit world, the mystic world.*   The services here are based on the African Tradition Value system/religion,where we believe the ancestors and spirits play a very important role in society. The ancestors and spirits give guidance and counsel in society. They could enable us to see into the future and give solutions to the problems affecting us. We use rituals, divination, spells, chants and prayers to enable us tackle the task before us.*   I have experience in helping and guiding many people from all over the world. My psychic abilities may help you answer and resolve many unanswered questions
    • Let me try and help you with love spells, traditional healing, native healing, fortune telling, witchcraft, psychic readings, black magic, voodoo, herbalist healing, or any other service your may desire within the realm of african native healing, the spirits and the ancestors. I am a sangoma and healer. I could help you to connect with the ancestors , interpret dreams, diagnose illness through divination with bones, and help you heal both physical and spiritual illness. We facilitate the deepening of your relationship to the spirit world and the ancestors. Working in partnership with one\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’s ancestors is a gift representing a close link with the spirit realm as a mediator between the worlds.*   Witchdoctors, or sorcerers, are often purveyors of mutis and charms that cause harm to people. we believe that we are here for only one purpose, to heal through love and compassion.*   African people share a common understanding of the importance of ancestors in daily life. When they have lost touch with their ancestors, illness may result or bad luck. Then a traditional healer, or sangoma, is sought out who may prescribe herbs, changes in lifestyle, a career change, or changes in relationships. The client may also be told to perform a ceremony or purification ritual to appease the ancestors.*   Let us solve your problems using powerful African traditional methods. We believe that our ancestors and spirits give us enlightenment, wisdom, divine guidance, enabling us to overcome obstacles holding your life back. Our knowledge has been passed down through centuries, being refined along the way from generation to generation. We believe in the occult, the paranormal, the spirit world, the mystic world.*   The services here are based on the African Tradition Value system/religion,where we believe the ancestors and spirits play a very important role in society. The ancestors and spirits give guidance and counsel in society. They could enable us to see into the future and give solutions to the problems affecting us. We use rituals, divination, spells, chants and prayers to enable us tackle the task before us.*   I have experience in helping and guiding many people from all over the world. My psychic abilities may help you answer and resolve many unanswered questions
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.