1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем XenonRaite, 9 июн 2013.

  1. Автор темы
    XenonRaite

    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
    Вопрос как это сделать?
    Вопрос как по части форжда так и разработке плагинов
     

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