Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите [1.4.7] MCPC++ add event

XenonRaite

Активный участник
Пользователь
Баллы
68
Вообщем такая проблема нужно накинуть ивенты на мод RailCraft1.4.7(6.17.0.0).
Местные на форуме ответели что это можно реализовать по средствам апи. Сам по себе мод не компелируется. Так-же он сертифицирован. При внесении именений мгновенный краш.

Работаю над фиксом EntityTunnelBore

К нему есть в RailCraft api
Код:
package railcraft.common.api.carts.bore;
 
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
 
/**
* This interface can be implemented by a block class to control whether a block can be
* mined by the bore without having to force the user to edit the configuration file.
*
* If the block is found to implement this class, any setting in the configuration
* is ignored for that block.
*
* Generally, the reason blocks are not minable by default is to prevent you
* from intentionally or accidentally boring through your base.
*
* @author CovertJaguar <railcraft.wikispaces.com>
*/
public interface IMineable
{
 
    /**
    * Called when the Bore attempts to mine the block. If it returns false,
    * the Bore will halt operation.
    *
    * @param world The World
    * @param i x-Coord
    * @param j y-Coord
    * @param k z-Coord
    * @param bore The Bore entity
    * @param head The BoreHead, item implements IBoreHead.
    * @return true if mineable
    * @see IBoreHead
    */
    public boolean canMineBlock(World world, int i, int j, int k, EntityMinecart bore, ItemStack head);
}

Примерно должно применяться так:

Код:
public class newBlock extends Block implements IMineable

Вот код примерно который хочу внедрить
Код:
package Testmodul;
 
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent;
 
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import railcraft.common.api.carts.bore.IMineable;
import railcraft.common.api.core.items.IMinecartItem;
import railcraft.common.carts.ItemTunnelBore;
 
public class ModulMCPC implements IMineable,IMinecartItem {
 
    String owner = "[RailCraft]";
    private Player player;
    private Block block;
 
    @Override
    public boolean canMineBlock(World world, int x, int y, int z,
            EntityMinecart var5, ItemStack var6) {
 
     
        player = this.getPayer(world);
        block = this.getBlock(world, x, y, z);
        BlockBreakEvent event = this.getEvent(block,player);
 
        world.getServer().getPluginManager().callEvent(event);
        if (event.isCancelled())
        return false;
        return true;
     
    }
 
    public Player getPayer(World world){
        return world.getServer().getPlayer(this.owner);
    }
 
    public Block getBlock(World world,int x, int y, int z)
    {
        return world.getWorld().getBlockAt(x, y, z);
    }
 
    public BlockBreakEvent getEvent(Block block,Player player)
    {
        return new org.bukkit.event.block.BlockBreakEvent(block , player);
    }
 
    @Override
    public boolean canBePlacedByNonPlayer(ItemStack var1) {
        return false;
    }
 
    @Override
    public EntityMinecart placeCart(String ownercrart, ItemStack var2, World var3,
            int var4, int var5, int var6) {
        // TODO Auto-generated method stub
        if(var2.getItem() instanceof  ItemTunnelBore)
            this.owner = ownercrart;
        return null;
    }
 
 
}

теперь его как-то нужно прикрепить к основному классу Block
Вопрос как это сделать?
Вопрос как по части форжда так и разработке плагинов
 

Поделиться этой страницей

Назад
Верх