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

Мод [Решено]Дополнение к WorldGuard(1.7.10)

Тема в разделе "Модификации клиента", создана пользователем Dethvale, 5 сен 2014.

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

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    Доброго времени суток! На некоторых проектах заметил интересную вещь, вывод названия региона(WG) ,в котором находишься, на экран.
    [​IMG]
    Вот собственно мод и плагин(для версии 1.7.10). За написание спасибо @Konstantin773 и @Defilak
    Код:
    package ru.defi;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import cpw.mods.fml.common.network.ByteBufUtils;
    import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
    import io.netty.buffer.ByteBuf;
    import net.minecraft.client.Minecraft;
    import net.minecraft.util.EnumChatFormatting;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
    
    public class PacketHandler
    {
        private static String currentRegion;
        private static boolean canBuild;
     
        @SubscribeEvent
        public void onClientPacket(ClientCustomPacketEvent event)
        {
            ByteBuf buf = event.packet.payload();
         
            ByteBufUtils.readUTF8String(buf); //Я понятия не имею зачем нужно читать буфер лишный раз.
            currentRegion = ByteBufUtils.readUTF8String(buf);
            canBuild = buf.readBoolean();
        }
     
        @SubscribeEvent
        public void onRenderOverlay(RenderGameOverlayEvent event)
        {
            if(event.type == ElementType.TEXT)
            {
                if(PacketHandler.currentRegion != null && !PacketHandler.currentRegion.equals("GLOBAL"))
                {
                    EnumChatFormatting color = canBuild ? EnumChatFormatting.GREEN : EnumChatFormatting.RED;
                 
                    Minecraft.getMinecraft().fontRenderer.drawString(color + "[" + EnumChatFormatting.WHITE + currentRegion + color + "]", 10, 10, 0xFFFFFF);
                }
            }
        }
    }
    
    
    
    
    
    package ru.defi;
    
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.network.FMLEventChannel;
    import cpw.mods.fml.common.network.NetworkRegistry;
    import net.minecraftforge.common.MinecraftForge;
    
    @Mod(modid = "WGEnter")
    public class WGEnter
    {
        public static FMLEventChannel channel;
     
        @EventHandler
        public void init(FMLInitializationEvent event)
        {
            PacketHandler handler = new PacketHandler();
         
            channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("wg_enter");
            channel.register(handler);
            MinecraftForge.EVENT_BUS.register(handler);
        }
    }
    
    Код:
    package k773;
    
    import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    import com.sk89q.worldguard.protection.ApplicableRegionSet;
    import com.sk89q.worldguard.protection.regions.ProtectedRegion;
    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class WGEnter extends JavaPlugin implements Listener
    {
        private static final WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");
    
        @Override
        public void onEnable()
        {
            Bukkit.getMessenger().registerOutgoingPluginChannel(this, "wg_enter");
         
            this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable()
            {
                @Override
                public void run()
                {
                    try
                    {
                        for (Player player : getServer().getOnlinePlayers())
                        {
                            ApplicableRegionSet set = WGEnter.wg.getRegionManager(player.getWorld()).getApplicableRegions(player.getLocation());
                         
                            String regionName = "GLOBAL";
                            boolean canBuild = true;
                         
                            if (set.size() > 0)
                            {
                                Iterator iter = set.iterator();
                                if (iter.hasNext())
                                {
                                    ProtectedRegion region = (ProtectedRegion) iter.next();
    
                                    regionName = region.getId();
                                    canBuild = wg.canBuild(player, player.getLocation());
                                }
                            }
                         
                            ByteArrayOutputStream bos = new ByteArrayOutputStream();
                            DataOutputStream dos = new DataOutputStream(bos);
                            dos.writeUTF(regionName);
                            dos.writeBoolean(canBuild);
                         
                            player.sendPluginMessage(WGEnter.this, "wg_enter", bos.toByteArray());
                        }
                    }
                    catch (IOException ex)
                    {
                        Logger.getLogger(WGEnter.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }, 20, 20);
        }
    }
    
    
     

    Вложения:

    Последнее редактирование: 16 дек 2014
  2. Автор темы
    Dethvale

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    +
    Насчет Аплайта прекрасно знаю, времени на обработку скриншота нет, занят модификацией клиента..
     
  3. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Туплю xD
     
  4. Автор темы
    Dethvale

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    Бывает) Походу придется самому костылями через WG Api делать..
     
  5. kirr9999

    kirr9999 Старожил Пользователь

    Баллы:
    103
    Ну можно переделать в коде самого вг, чтобы он отсылал пакет клиенту при входе игрока в регион.
     
  6. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Была тема на форуме уже, с готовым решением. Ищи.
     
  7. Автор темы
    Dethvale

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    Вторую неделю безуспешно копаю форум.. В каком разделе искать не подскажешь?
     
  8. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Поиск для кого?
     
  9. Автор темы
    Dethvale

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    Дк.. Если бы поиск мне помог, я бы не создавал тему..
    UP
     
    Последнее редактирование: 8 сен 2014
  10. sanjee

    sanjee Активный участник Пользователь

    Баллы:
    78
    FramePicture
     
  11. KobaltMr

    KobaltMr Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    KobaltMR_
    Ну а теперь прочитай вопрос который ТС задал.
     
  12. sanjee

    sanjee Активный участник Пользователь

    Баллы:
    78
    АААА я всё понял прости sarcasm
     
  13. RedEnergy

    RedEnergy Старожил Пользователь

    Баллы:
    103
    Решение найдено?
     
  14. sanjee

    sanjee Активный участник Пользователь

    Баллы:
    78
    No.
     
  15. MrDeadPool

    MrDeadPool Активный участник Пользователь

    Баллы:
    78
    На скриншоте отрывок из видео проэкта Borealis.У них плагин на приваты самописный и немного скошеный у @Nero_ насчет механники.Так что это или к ним обратись или советуй игрокам делать так,как показано далее на видео.
     
    Последнее редактирование: 26 ноя 2014
  16. Автор темы
    Dethvale

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    Решение до сих пор не нашел.. Пытался через wg api сделать, но безуспешно..
    Скрин с видео взял, потому что лень регаться... А так такую фичу видел на многих проектах..
    Может быть кто-нибудь возьмется за разработку? Насчет цены, думаю договоримся..
     
  17. MrDeadPool

    MrDeadPool Активный участник Пользователь

    Баллы:
    78
  18. Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
  19. Автор темы
    Dethvale

    Dethvale Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    DethVale
    Он имел ввиду
    Но это нето.. При выставлении этого флага, при входе в регион выведется сообщение с заданным текстом..
     
  20. Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76

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