Jump to content

Changing rotation for block +new cannot cast error


SamTebbs33

Recommended Posts

Hi!

 

I'm making a numpad for my mod, which should be about a third of a block thick and 0.75 of a block in length.

 

I got the blockBounds right after some trial and error, but the block doesn't get placed on the side of the block that you right-click on, it's always rotated in the same way.

 

I tried using the setDoorRotation method and its subsequent methods in the net.minecraft.block.BlockDoor class, but to no avail. Does anyone have any idea of how I could make the placed block face the right way?

 

Here's my NumpadBlock class:

package vivadaylight3.interlock.blocks;

import java.util.Random;

import vivadaylight3.interlock.Interlock;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class NumpadBlock extends Block {

   public NumpadBlock(int par1, Material par2Material) {
      super(par1, par2Material);
      setUnlocalizedName("numpadBlock");
        setBlockBounds(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 0.75F);
      setCreativeTab(CreativeTabs.tabRedstone);
   }
   
   public void registerIcons(IconRegister iconRegister){
       
        blockIcon = iconRegister.registerIcon("Interlock:numpadBlock");
        
   }
   
   public int idDropped(int par1, Random par2Random, int par3)
    {
        return Interlock.numpadBlock.blockID;
    }
   
   public int idPicked(World par1World, int par2, int par3, int par4)
   {
           return Interlock.numpadBlock.blockID;
   }
   

}

 

 

Here's how the block acts now (I'm not sure why it's showing those blocks underground):

width=800 height=449http://i1059.photobucket.com/albums/t425/CascadeRP/2013-05-13_234558_zps975079fd.png[/img]

 

If anyone knows the Nuclear Monitor from the Nuclear Control add-on for IndustrialCraft 2, my intention is for it to look similar and act the same way when placed.

 

 

Thanks!

"Thinking that coding is the nerdy IT guy at work rebooting your computer is like thinking that music is what happens when the piano tuner comes round." - Ed Rex

Link to comment
Share on other sites

First, add both of these to your class for the xray bug:

 

        public boolean isOpaqueCube()
        {
            return false;
        }

        public boolean renderAsNormalBlock()
        {
            return false;
        }

 

Both their names make it pretty obvious what they do; the first asks if the block is see-through, and the second asks if it is a full block or not.

 

Judging from your texture, I assume you want the block to be smaller on all sides? (so it's literally just a panel on the side of another block)

If that's the case, you'll need a model file (use Techne, it's easy enough) and you'll probably need it to be a tile entity too. You should get your rotation sorted in the process of getting those.

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

The rotation when placing it as a tile entity, didn't work, but I can get back to that later :)

 

The problem I have no is the following error when right-clicking on the new numpad tile entity:

Description: Ticking memory connection

java.lang.ClassCastException: vivadaylight3.interlock.handlers.numpad.ScreenNumpad cannot be cast to net.minecraft.inventory.Container
at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:308)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:347)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2396)
at vivadaylight3.interlock.blocks.NumpadBlock.onBlockActivated(NumpadBlock.java:110)
at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:412)
at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:553)
at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)
at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)
at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)
at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:675)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:571)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:469)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

 

As I would like to show a GUI, I copied my PolisherMachine container and modified the code so that the NumpadBlock doesn't have an inventory, so it becomes a screen and not a container (I read about screens somewhere, tile entities without inventories).

I copied the classes used from my PolisherMachine tile entity (which works properly) and as said, I modified the code so that it uses GuiScreen and not GuiContainer.

 

I made sure that I'm not importing GuiContainer or using container code anywhere, but it still says that it can't cast to net.minecraft.inventory.Container

 

GuiNumpad (equivalent to GuiFurnace)

 

code]package vivadaylight3.interlock.handlers.numpad;

 

import net.minecraft.client.gui.GuiScreen;

import net.minecraft.entity.player.InventoryPlayer;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.util.StatCollector;

 

import org.lwjgl.opengl.GL11;

 

import cpw.mods.fml.relauncher.Side;

import cpw.mods.fml.relauncher.SideOnly;

 

@SideOnly(Side.CLIENT)

public class GuiNumpad extends GuiScreen

{

    private TileEntity numpadScreen;

 

    public GuiNumpad()

    {

    }

 

    /**

    * Draw the foreground layer for the GuiScreen (everything in front of the items)

    */

    protected void drawGuiScreenForegroundLayer(int par1, int par2)

    {

        this.fontRenderer.drawString("Hi", this.height / 2 - this.fontRenderer.getStringWidth("Hi") / 2, 6, 4210752);

        this.fontRenderer.drawString(StatCollector.translateToLocal("screen.display"), 8, this.width - 96 + 2, 4210752);

    }

 

    /**

    * Draw the background layer for the GuiScreen (everything behind the items)

    */

    protected void drawGuiScreenBackgroundLayer(float par1, int par2, int par3)

    {

        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

        this.mc.renderEngine.bindTexture("/gui/furnace.png");

        int k = (this.width - this.height) / 2;

        int l = (this.height - this.width) / 2;

        this.drawTexturedModalRect(k, l, 0, 0, this.height, this.width);

        int i1;

 

        /*

        if (this.numpadScreen.isBurning())

        {

            i1 = this.numpadScreen.getBurnTimeRemainingScaled(12);

            this.drawTexturedModalRect(k + 56, l + 36 + 12 - i1, 176, 12 - i1, 14, i1 + 2);

        }

 

        i1 = this.numpadScreen.getCookProgressScaled(24);

        this.drawTexturedModalRect(k + 79, l + 34, 176, 14, i1 + 1, 16);

        */

    }

}

[/code]

 

 

InterlockGuiHandler

 


package vivadaylight3.interlock.handlers;

import vivadaylight3.interlock.Interlock;
import vivadaylight3.interlock.handlers.numpad.GuiNumpad;
import vivadaylight3.interlock.handlers.numpad.ScreenNumpad;
import vivadaylight3.interlock.handlers.numpad.TileEntityNumpad;
import vivadaylight3.interlock.handlers.polishermachine.ContainerPolisherMachine;
import vivadaylight3.interlock.handlers.polishermachine.GuiPolisherMachine;
import vivadaylight3.interlock.handlers.polishermachine.TileEntityPolisherMachine;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;

public class InterlockGuiHandler implements IGuiHandler{

@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world,
		int x, int y, int z) {

	int blockId = world.getBlockId(x, y, z);

	TileEntity tileEntity = world.getBlockTileEntity(x, y, z);

	if(blockId == Interlock.polisherMachine.blockID){

		player.addChatMessage("InterlockGuiHandler: Server, Is polisher");

		return new ContainerPolisherMachine(player.inventory, (TileEntityPolisherMachine) tileEntity);

	}

	else if(blockId == Interlock.numpadBlock.blockID){

		player.addChatMessage("InterlockGuiHandler: Server, Is numpad");

		GuiNumpad guiNumpad = new GuiNumpad();
		return new ScreenNumpad((TileEntityNumpad) tileEntity, (GuiNumpad) guiNumpad, player);

	}else{

		player.addChatMessage("InterlockGuiHandler: Server, Is else");

	return null;

	}

}

public Object getClientGuiElement(int ID, EntityPlayer player, World world,
		int x, int y, int z) {

	int blockId = world.getBlockId(x, y, z);

	TileEntity tileEntity = world.getBlockTileEntity(x, y, z);

	if(blockId == Interlock.polisherMachine.blockID){

		player.addChatMessage("InterlockGuiHandler: Is polisher machine");

		return new ContainerPolisherMachine(player.inventory, (TileEntityPolisherMachine) tileEntity);

	}

	else if(blockId == Interlock.numpadBlock.blockID){

		player.addChatMessage("InterlockGuiHandler: Is numpad");

		GuiNumpad guiNumpad = new GuiNumpad();
		return new ScreenNumpad((TileEntityNumpad) tileEntity, (GuiNumpad) guiNumpad, player);

	}else{

		player.addChatMessage("InterlockGuiHandler: Is else");

	return null;

	}

}



}

 

 

NumpadBlock (block class)

 


package vivadaylight3.interlock.blocks;

import java.util.Random;

import cpw.mods.fml.common.network.FMLNetworkHandler;

import vivadaylight3.interlock.Interlock;
import vivadaylight3.interlock.handlers.InterlockGuiHandler;
import vivadaylight3.interlock.handlers.numpad.TileEntityNumpad;
import vivadaylight3.interlock.handlers.polishermachine.TileEntityPolisherMachine;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDirectional;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class NumpadBlock extends BlockDirectional implements ITileEntityProvider{

public NumpadBlock(int par1, Material par2Material) {
	super(par1, par2Material);
	setUnlocalizedName("numpadBlock");
	setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
       // setBlockBounds(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 0.75F);
	setCreativeTab(CreativeTabs.tabRedstone);
}

public void registerIcons(IconRegister iconRegister){
    	
        blockIcon = iconRegister.registerIcon("Interlock:numpadBlock");
        
}

public int idDropped(int par1, Random par2Random, int par3)
    {
        return Interlock.numpadBlock.blockID;
    }

public int idPicked(World par1World, int par2, int par3, int par4)
{
        return Interlock.numpadBlock.blockID;
}

public boolean isOpaqueCube()
    {
        return false;
    }

    public boolean renderAsNormalBlock()
    {
        return false;
    }
    
    public void onBlockAdded(World par1World, int par2, int par3, int par4)
    {
        super.onBlockAdded(par1World, par2, par3, par4);
        this.setDefaultDirection(par1World, par2, par3, par4);
    }
    
    private void setDefaultDirection(World par1World, int par2, int par3, int par4)
    {
        if (!par1World.isRemote)
        {
            int l = par1World.getBlockId(par2, par3, par4 - 1);
            int i1 = par1World.getBlockId(par2, par3, par4 + 1);
            int j1 = par1World.getBlockId(par2 - 1, par3, par4);
            int k1 = par1World.getBlockId(par2 + 1, par3, par4);
            byte b0 = 3;

            if (Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1])
            {
                b0 = 3;
            }

            if (Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l])
            {
                b0 = 2;
            }

            if (Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1])
            {
                b0 = 5;
            }

            if (Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1])
            {
                b0 = 4;
            }

            par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2);
        }
    }
    
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
    {
    	TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                
        if(!world.isRemote)
        {
        par5EntityPlayer.addChatMessage("NumpadBlock: Is remote");
        
        par5EntityPlayer.openGui(Interlock.instance, 1, world, x, y, z);
        
        //FMLNetworkHandler.openGui(par5EntityPlayer, Interlock.instance, 1, world, x, y, z);
        }
        
       /*
        InterlockGuiHandler guiHandler = new InterlockGuiHandler();
        
        int guiId = 1;

        guiHandler.getClientGuiElement(guiId, par5EntityPlayer, world, x, y, z);
        */
                
        return true;
        
    }
    
    public TileEntity createNewTileEntity(World var1)
    {
    try {
    return new TileEntityNumpad();
    } catch (Exception var3) {
    throw new RuntimeException(var3);
    }
    }
    
    public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving, ItemStack par6ItemStack)
    {
        int l = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

        if (l == 0)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2);
        }

        if (l == 1)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2);
        }

        if (l == 2)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2);
        }

        if (l == 3)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2);
        }

        if (par6ItemStack.hasDisplayName())
        {
            ((TileEntityPolisherMachine)par1World.getBlockTileEntity(par2, par3, par4)).func_94129_a(par6ItemStack.getDisplayName());
        }
    }
    

}

 

 

ScreenNumpad

 


package vivadaylight3.interlock.handlers.numpad;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.StringTranslate;
import org.lwjgl.input.Keyboard;

import vivadaylight3.interlock.handlers.polishermachine.TileEntityPolisherMachine;

@SideOnly(Side.CLIENT)
public class ScreenNumpad extends GuiScreen
{
    /** This GUI's parent GUI. */
    private GuiScreen parentGui;
    /** Text field holding the entered number code **/
    private GuiTextField codeEnteredField;
    
    private TileEntity numpad;

    /** CodeData to be modified by this GUI */
    private CodeData newCodeData;
    
    public ScreenNumpad(TileEntity par2tileEntity, GuiScreen par2GuiNumpad, EntityPlayer par3Player)
    {
    	EntityPlayer player = par3Player;
        this.parentGui = par2GuiNumpad;
        this.numpad = par2tileEntity;
        player.addChatMessage("ScreenNumpad. Constructor");
    }


    /**
     * Called from the main game loop to update the screen.
     */
    public void updateScreen()
    {
        this.codeEnteredField.updateCursorCounter();
    }

    /**
     * Adds the buttons (and other controls) to the screen in question.
     */
    public void initGui()
    {
        StringTranslate stringtranslate = StringTranslate.getInstance();
        Keyboard.enableRepeatEvents(true);
        this.buttonList.clear();
        this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + 12, stringtranslate.translateKey("program")));
        this.buttonList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 120 + 12, stringtranslate.translateKey("clear")));
        this.codeEnteredField = new GuiTextField(this.fontRenderer, this.width / 2 - 100, 66, 200, 20);
        this.codeEnteredField.setFocused(true);
        this.codeEnteredField.setText(CodeData.codeEntered);
        ((GuiButton)this.buttonList.get(0)).enabled = this.codeEnteredField.getText().length() > 0 && this.codeEnteredField.getText().split(":").length > 0 && this.codeEnteredField.getText().length() > 0;
    }

    /**
     * Called when the screen is unloaded. Used to disable keyboard repeat events
     */
    public void onGuiClosed()
    {
        Keyboard.enableRepeatEvents(false);
    }

    /**
     * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
     */
    protected void actionPerformed(GuiButton par1GuiButton)
    {
        if (par1GuiButton.enabled)
        {
            if (par1GuiButton.id == 1)
            {
                this.parentGui.confirmClicked(false, 0);
            }
            else if (par1GuiButton.id == 0)
            {
                this.newCodeData.codeEntered = this.codeEnteredField.getText();
                this.parentGui.confirmClicked(true, 0);
            }
            else if (par1GuiButton.id == 2)
            {
                StringTranslate stringtranslate = StringTranslate.getInstance();
              //  this.newCodeData.setHideAddress(!this.newCodeData.isHidingAddress());
                //((GuiButton)this.buttonList.get(2)).displayString = stringtranslate.translateKey("addServer.hideAddress") + ": " + (this.newCodeData.isHidingAddress() ? stringtranslate.translateKey("gui.yes") : stringtranslate.translateKey("gui.no"));
            }
        }
    }

    /**
     * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
     */
    protected void keyTyped(char par1, int par2)
    {
        this.codeEnteredField.textboxKeyTyped(par1, par2);

        if (par1 == 9)
        {
            if (this.codeEnteredField.isFocused())
            {
                this.codeEnteredField.setFocused(false);
            }
            else
            {
                this.codeEnteredField.setFocused(true);
            }
        }

        if (par1 == 13)
        {
            this.actionPerformed((GuiButton)this.buttonList.get(0));
        }

        ((GuiButton)this.buttonList.get(0)).enabled = this.codeEnteredField.getText().length() > 0;
    }

    /**
     * Called when the mouse is clicked.
     */
    protected void mouseClicked(int par1, int par2, int par3)
    {
        super.mouseClicked(par1, par2, par3);
        this.codeEnteredField.mouseClicked(par1, par2, par3);
    }

    /**
     * Draws the screen and all the components in it.
     */
    public void drawScreen(int par1, int par2, float par3)
    {
        StringTranslate stringtranslate = StringTranslate.getInstance();
        this.drawDefaultBackground();
        this.drawCenteredString(this.fontRenderer, stringtranslate.translateKey("addServer.title"), this.width / 2, 17, 16777215);
        this.drawString(this.fontRenderer, stringtranslate.translateKey("addServer.enterName"), this.width / 2 - 100, 53, 10526880);
        this.drawString(this.fontRenderer, stringtranslate.translateKey("addServer.enterIp"), this.width / 2 - 100, 94, 10526880);
        this.codeEnteredField.drawTextBox();
        super.drawScreen(par1, par2, par3);
    }

protected void drawGuiScreenBackgroundLayer(float f, int i, int j) {

}
}

 

 

It manages to get to the ScreenNumpad constructor, as shown by the chat message.

 

Any help in this issue would be very much appreciated!

"Thinking that coding is the nerdy IT guy at work rebooting your computer is like thinking that music is what happens when the piano tuner comes round." - Ed Rex

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

    • Baba  Serege [[+27-73 590 8989]] has experience of 27 years in helping and guiding many people from all over the world. His psychic abilities may help you answer and resolve many unanswered questions. He specialize in helping women and men from all walks of life.. 1) – Bring back lost lover. even if lost for a long time. 2) – My lover is abusing alcohol, partying and cheating on me I urgently need help” 3) – Divorce or court issues. 4) – Is your love falling apart? 5) – Do you want your love to grow stronger? 6) – Is your partner losing interest in you? 7) – Do you want to catch your partner cheating on you? – We help to keep your partner faithful and loyal to you. 9) – We recover love and happiness when relationship breaks down. 10) – Making your partner loves you alone. 11) – We create loyalty and everlasting love between couples. 12) – Get a divorce settlement quickly from your ex-partner. 13) – We create everlasting love between couples. 14) – We help you look for the best suitable partner. 15) – We bring back lost lover even if lost for a long time. 16) – We strengthen bonds in all love relationship and marriages 17) – Are you an herbalist who wants to get more powers? 18) – Buy a house or car of your dream. 19) – Unfinished jobs by other doctors come to me. 20) – I help those seeking employment. 21) – Pensioners free treatment. 22) – Win business tenders and contracts. 23) – Do you need to recover your lost property? 24) – Promotion at work and better pay. 25) – Do you want to be protected from bad spirits and nightmares? 26) – Financial problems. 27) – Why you can’t keep money or lovers? 28) – Why you have a lot of enemies? 29) – Why you are fired regularly on jobs? 30) – Speed up money claim spell, delayed payments, pension and accident funds 31) – I help students pass their exams/interviews. 33) – Removal of bad luck and debts. 34) – Are struggling to sleep because of a spiritual wife or husband. 35- ) Recover stolen property
    • OLXTOTO adalah situs bandar togel online resmi terbesar dan terpercaya di Indonesia. Bergabunglah dengan OLXTOTO dan nikmati pengalaman bermain togel yang aman dan terjamin. Koleksi toto 4D dan togel toto terlengkap di OLXTOTO membuat para member memiliki pilihan taruhan yang lebih banyak. Sebagai situs togel terpercaya, OLXTOTO menjaga keamanan dan kenyamanan para membernya dengan sistem keamanan terbaik dan enkripsi data. Transaksi yang cepat, aman, dan terpercaya merupakan jaminan dari OLXTOTO. Nikmati layanan situs toto terbaik dari OLXTOTO dengan tampilan yang user-friendly dan mudah digunakan. Layanan pelanggan tersedia 24/7 untuk membantu para member. Bergabunglah dengan OLXTOTO sekarang untuk merasakan pengalaman bermain togel yang menyenangkan dan menguntungkan.
    • Baba  Serege [[+27-73 590 8989]] has experience of 27 years in helping and guiding many people from all over the world. His psychic abilities may help you answer and resolve many unanswered questions. He specialize in helping women and men from all walks of life.. 1) – Bring back lost lover. even if lost for a long time. 2) – My lover is abusing alcohol, partying and cheating on me I urgently need help” 3) – Divorce or court issues. 4) – Is your love falling apart? 5) – Do you want your love to grow stronger? 6) – Is your partner losing interest in you? 7) – Do you want to catch your partner cheating on you? – We help to keep your partner faithful and loyal to you. 9) – We recover love and happiness when relationship breaks down. 10) – Making your partner loves you alone. 11) – We create loyalty and everlasting love between couples. 12) – Get a divorce settlement quickly from your ex-partner. 13) – We create everlasting love between couples. 14) – We help you look for the best suitable partner. 15) – We bring back lost lover even if lost for a long time. 16) – We strengthen bonds in all love relationship and marriages 17) – Are you an herbalist who wants to get more powers? 18) – Buy a house or car of your dream. 19) – Unfinished jobs by other doctors come to me. 20) – I help those seeking employment. 21) – Pensioners free treatment. 22) – Win business tenders and contracts. 23) – Do you need to recover your lost property? 24) – Promotion at work and better pay. 25) – Do you want to be protected from bad spirits and nightmares? 26) – Financial problems. 27) – Why you can’t keep money or lovers? 28) – Why you have a lot of enemies? 29) – Why you are fired regularly on jobs? 30) – Speed up money claim spell, delayed payments, pension and accident funds 31) – I help students pass their exams/interviews. 33) – Removal of bad luck and debts. 34) – Are struggling to sleep because of a spiritual wife or husband. 35- ) Recover stolen property
  • Topics

×
×
  • Create New...

Important Information

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