Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

[VarScript] Редактор баннеров

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DPOH-VAR, 20 авг 2015.

  1. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Добрый день! Возможно многие знают про ресурс, позволяющий создавать баннеры.
    Ниже расширение для VarScript, написанное для интеграции с этим ресурсом.
    Код:
    ColorMap = [a:0,b:1,c:2,d:3,e:4,f:5,g:6,h:7,i:8,j:9,k:10,l:11,m:12,n:13,o:14,p:15]
    PatternMap = [p:'gra',K:'gru',e:'bri',q:'hh',L:'hhb',H:'vh',M:'vhb',E:'ts',f:'bs',s:'ls',y:'rs',r:'ld',J:'rud',I:'lud',x:'rd',j:'cr',m:'dls',n:'drs',z:'sc',l:'cs',w:'ms',C:'tl',b:'bl',D:'tr',d:'br',F:'tt',g:'bt',v:'mr',t:'mc',h:'bts',G:'tts',B:'ss',c:'bo',i:'cbo',o:'flo',k:'cre',A:'sku',u:'moj']
    ColorDataMap = [:]
    PatternDataMap = [:]
    ColorMap.each{ k,v -> ColorDataMap[v]=k }
    PatternMap.each{ k,v -> PatternDataMap[v]=k }
    
    def Parse(code){
        result = [:]
        result.Base = ColorMap[code[0]] ?: 0
        if (code.length() <= 2) return result
        def patterns = result.Patterns = []
        for (def i=2; code.length() > i+1; i+=2) {
            patterns.add(Color: ColorMap[code[i]] ?: 0, Pattern: PatternMap[code[i+1]] ?: 'bri')
    
        }
        return result
    }
    
    def Code(data){
        if (!data) return null
        result = ""
        result += ColorDataMap[data.Base]
        result += "a"
        data.Patterns?.each {
           result += ColorDataMap[it.Color] + PatternDataMap[it.Pattern]
        }
        return result
    }
    
    Block.metaClass.setBanner = {String code ->
        delegate.nbt Parse(code)
    }
    
    Block.metaClass.getBanner = { ->
        Code(delegate.nbt)
    }
    
    Block.metaClass.getBannerUrl = { ->
        "http://www.needcoolshoes.com/banner?=$delegate.banner"
    }
    
    ItemStack.metaClass.setBanner = {String code ->
        delegate.nbt BlockEntityTag:Parse(code)
    }
    
    ItemStack.metaClass.getBanner = { ->
        Code(delegate.nbt?.BlockEntityTag)
    }
    
    
    ItemStack.metaClass.getBannerUrl = { ->
        "http://www.needcoolshoes.com/banner?=$delegate.banner"
    }
    
    ItemStack.metaClass.'static'.Banner = { String code ->
        def item = new ItemStack(425)
        item.banner = code
        return item
    }
    Устанавливается в папку autorun.
    (Скопируйте это в файл plugins/VarScript/autorun/BannerExt.groovy)

    Использование:

    Каждый баннер имеет свой буквенный код. При редактировании в браузере вы можете его скопировать в ссылке. Например, http://www.needcoolshoes.com/banner?=daoh - код баннера будет daoh.
    Чтобы установить код в баннер(блок), используйте команду:
    /> block.banner = "daoh"
    Для редактирования предмета-баннера в руке:
    /> me.itemInHand.banner = "daoh"
    Получить баннер:
    /> me << ItemStack.Banner ("daoh")
    Получить ссылку на редактирование блока-баннера:
    /> block.bannerUrl

    API:

    - Для объектов типа Block и ItemStack добавляется свойство banner: String, которое зависит от NBT-тегов.
    - Также есть readonly свойство bannerUrl, с помощью которого можно получить ссылку на редактирование этого баннера.
    - Статичный метод ItemStack.Banner(String) создает новый предмет-баннер.

    Необходим плагин PowerNBT.
     
    Последнее редактирование: 20 авг 2015
  2. Хостинг MineCraft
    <
  3. Vanterkraft

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

    Баллы:
    88
    Skype:
    Deska_Sava
    Интересно :good:

    Не знал о этом ресурсе. Молодец, что сделал интеграцию
     

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