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

Туториал Anti x-ray texture

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем qwertyYy2, 23 фев 2013.

  1. alex55i

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

    Баллы:
    103
    Имя в Minecraft:
    alex55i
    Это фича
    Версия 1.5.2/1.5.1
    Радуга исправлена

    TexturePackCustom
    Код:
    package net.minecraft.src;
     
    import java.awt.image.BufferedImage;
    import java.awt.image.DataBufferByte;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Enumeration;
    import java.util.regex.Pattern;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipException;
    import java.util.zip.ZipFile;
     
    import javax.imageio.ImageIO;
     
    public class TexturePackCustom extends TexturePackImplementation
    {
        /** ZipFile object used to access the texture pack file's contents. */
        private ZipFile texturePackZipFile;
     
        public TexturePackCustom(String par1Str, File par2File, ITexturePack par3ITexturePack)
        {
            super(par1Str, par2File, par2File.getName(), par3ITexturePack);
        }
     
        /**
        * Delete the OpenGL texture id of the pack's thumbnail image, and close the zip file in case of TexturePackCustom.
        */
        public void deleteTexturePack(RenderEngine renderEngine)
        {
            super.deleteTexturePack(renderEngine);
     
            try
            {
                if (texturePackZipFile != null)
                {
                    texturePackZipFile.close();
                }
            }
            catch (IOException var3)
            {
            }
     
            texturePackZipFile = null;
        }
     
        protected InputStream func_98139_b(String name) throws IOException
        {
            openTexturePackFile();
            ZipEntry var2 = texturePackZipFile.getEntry(name.substring(1));
     
            if (var2 == null)
            {
                throw new FileNotFoundException(name);
            }
            else
            {
                return filterStream(name, texturePackZipFile.getInputStream(var2));
            }
        }
     
        public boolean func_98140_c(String par1Str)
        {
            try
            {
                openTexturePackFile();
                return texturePackZipFile.getEntry(par1Str.substring(1)) != null;
            }
            catch (Exception var3)
            {
                return false;
            }
        }
     
        /**
        * Open the texture pack's file and initialize texturePackZipFile
        */
        private void openTexturePackFile() throws IOException, ZipException
        {
            if (texturePackZipFile == null)
            {
                texturePackZipFile = new ZipFile(texturePackFile);
            }
        }
     
        public boolean isCompatible()
        {
            try
            {
                openTexturePackFile();
                Enumeration var1 = texturePackZipFile.entries();
     
                while (var1.hasMoreElements())
                {
                    ZipEntry var2 = (ZipEntry)var1.nextElement();
     
                    if (var2.getName().startsWith("textures/"))
                    {
                        return true;
                    }
                }
            }
            catch (Exception var3)
            {
            }
     
            boolean var4 = func_98140_c("terrain.png") || func_98140_c("gui/items.png");
            return !var4;
        }
     
        public static InputStream filterStream(String entryname, InputStream is) throws IOException
        {
            try
            {
                entryname = entryname.replace('\\', '/');
                if (!entryname.contains("textures/blocks/") || !entryname.endsWith(".png"))
                    return is;
     
                String texturename = entryname.substring(entryname.lastIndexOf('/') +1, entryname.lastIndexOf(".png"));
                for (String pattern : patterns)
                {
                    if (Pattern.compile("^" + pattern + "$").matcher(texturename).matches())
                        return is;
                }
     
                BufferedImage img = ImageIO.read(is);
     
                int w = img.getWidth();
                int h = img.getHeight();
                int[] r = img.getRGB(0, 0, w, h, null, 0, w);
                for (int i = 0; i < r.length; i++)
                    r[i] |= 0xff000000;
                img.setRGB(0, 0, w, h, r, 0, w);
     
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ImageIO.write(img, "png", baos);
                return new ByteArrayInputStream(baos.toByteArray());
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
            }
            return null;
        }
     
        static final String[] patterns = new String[] { "activatorRail(_powered)?", "anvil_(top(_damaged_[1-2])?|base)", "bed_(feet|head)_(end|side|top)", "brewingStand", "cactus_(bottom|side|top)", "cake_(bottom|inner|side|top)", "carrots_[0-3]", "cauldron_(bottom|inner|side|top)", "cocoa_[0-7]", "deadbush", "destroy_[0-9]", "detectorRail", "door(Iron|Wood)_(lower|upper)", "fenceIron", "fern", "fire_[0-1]", "flower(Pot)?", "glass", "goldenRail(_powered)?", "grass_side_overlay", "hopper_top", "ice", "ladder", "lava(_flow)?", "leaves(_(jungle|spruce))?", "lever", "mobSpawner", "mushroom_(brown|red)", "netherStalk_[0-2]", "portal", "potatoes_[0-3]", "rail(_turn)?", "redstoneDust_(cross|line)(_overlay)?", "redtorch(_lit)?", "reeds", "rose", "sapling(_(birch|jungle|spruce))?", "stem_(bent|straight)", "tallgrass", "thinglass_top", "torch", "trapdoor", "tripWire(Source)?", "vine", "water(_flow)?", "waterlily", "web" };
    }
    TexturePackFolder
    Код:
    package net.minecraft.src;
     
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
     
    public class TexturePackFolder extends TexturePackImplementation
    {
        public TexturePackFolder(String par1, File par2, ITexturePack par3ITexturePack)
        {
            super(par1, par2, par2.getName(), par3ITexturePack);
        }
     
        protected InputStream func_98139_b(String name) throws IOException
        {
            File var2 = new File(texturePackFile, name.substring(1));
     
            if (!var2.exists())
            {
                throw new FileNotFoundException(name);
            }
            else
            {
                return TexturePackCustom.filterStream(name, new BufferedInputStream(new FileInputStream(var2)));
            }
        }
     
        public boolean func_98140_c(String par1Str)
        {
            File var2 = new File(texturePackFile, par1Str);
            return var2.exists() && var2.isFile();
        }
     
        public boolean isCompatible()
        {
            File var1 = new File(this.texturePackFile, "textures/");
            boolean var2 = var1.exists() && var1.isDirectory();
            boolean var3 = func_98140_c("terrain.png") || func_98140_c("gui/items.png");
            return var2 || !var3;
        }
    }
    @qwertyYy2, Делай так: http://paste.ofcode.org/6282ufuK5PWAqpAWu9Z7Lj (Очисти форматирование)
     

    Вложения:

  2. max--2

    max--2 Старожил Пользователь

    Баллы:
    173
    @alex55i, как говорится "Сенкю вери мач" :)
     
    slavik123123123 нравится это.
  3. Автор темы
    qwertyYy2

    qwertyYy2 Старожил

    Баллы:
    103
    я давно забил на майнкрафт, качать все отдельно мне просто лень, извини не смогу, и исправленные тобою фичи буду добавлять на главную страницу.
     
  4. alex55i

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

    Баллы:
    103
    Имя в Minecraft:
    alex55i
    Запили нормально код в первом посте говорю
     
  5. caNek

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

    Баллы:
    173
    Имя в Minecraft:
    AddyCool
    Я так понял (судя по коду) что мы заменяем розовый цвет из текстур пака на черный и отключаем прозрачность. Тогда почему же Предметы (которые персонаж держит в руках) прозрачные как и надо, хм, очень интересно.

    Вот смутило только:
    1. String transparent = "-----------+++-+" +
    2. "------------++++" +
    3. "------++-------+" +
    4. "-+--+--++------+" +
    5. "-+-+-+++-+--+--+" +
    6. "++++++--++++++++" +
    7. "++++-----------+" +
    8. "+--+-----++++--+" +
    9. "+---+-----+-+--+" +
    10. "----+++++-++-+-+" +
    11. "---+++--+++-+++-" +
    12. "---++++---+-----" +
    13. "---++---++++++++" +
    14. "--------+-----++" +
    15. "--+++--++----+++" +
    16. "++++++++++++++++";
      Это трынцец, можно было написать
      String transparent = "++++++++++++++++" +
      "----------------"
      Хотя не знаю.
     
    Оригинало_о нравится это.
  6. alex55i

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

    Баллы:
    103
    Имя в Minecraft:
    alex55i
    Розовый цвет не заменяется.
    В поле transparent минусами указаны тайлы terrain.png, где фон будет закрашен черным цветом.

    p. s.: код в первом посте устарел
     
  7. 0mi4

    0mi4 Активный участник

    Баллы:
    68
    Что с модами делать? там вообще если подумать по хорошему защитить камень грязь и траву от просветов... тогда на прозрачность остальных блоков будет похеру
    + предложение по безопасности- заменить +--+_+_+_ на INT 01010101010101 дабы спастись от простых манипляций любым стрингЕдитором для джавы
     
  8. alex55i

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

    Баллы:
    103
    Имя в Minecraft:
    alex55i
    Бесполезно
     
    Vedroyder нравится это.
  9. 0mi4

    0mi4 Активный участник

    Баллы:
    68
    как бесполезно
    тогда без декомпиляции не обойтись
    а та можно обфусцировать
     
    ВремяПриключений нравится это.
  10. Dvladislav

    Dvladislav Старожил Переводчик Пользователь

    Баллы:
    173
    Если очень надо, обфускация не спасет.
     
    ВремяПриключений и alex55i нравится это.
  11. Enjoy*

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

    Баллы:
    68
    Skype:
    alex.198896
    Имя в Minecraft:
    Shimobe
    смысл этого гемороя?
    Можно просто скачать плагин против x-ray'я
     
  12. max--2

    max--2 Старожил Пользователь

    Баллы:
    173
    orebfuskator? от него нагрузка в 1000 раз больше на сервер, чем этот анти x-ray на клиент.

    Поэтому идем дальше грузим свой сервер, и не парим людей.
     
    slavik123123123 и zuma2 нравится это.
  13. Dvladislav

    Dvladislav Старожил Переводчик Пользователь

    Баллы:
    173
    Сфигали он спасает от ТекстурПаков? Или спасает?
    Оребфускатор спигота от текстурпаков не защищает практически... Только от мода.
     
  14. Alexey123

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

    Баллы:
    153
    На самом деле Oreobfuscator сейчас не круто использовать. Раньше были крутыми красивые спавны, сейчас - защита от читов, которую, правда, всё равно обходят.
     
  15. MySt1k

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

    Баллы:
    173
    Спасибо
     
  16. RacerRU

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

    Баллы:
    88
    Сделайте для Minecraft 1.4.7 + Forge.
    Ибо так не работает к сожалению.
     
  17. Linkinkov

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

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Работает и на клиенте с форгом.
     
  18. RacerRU

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

    Баллы:
    88
    Код:
    Логи лаунчера:
    2013-07-08 16:49:32 [INFO] [ForgeModLoader] Forge Mod Loader version 4.7.4.520 for Minecraft 1.4.7 loading
    2013-07-08 16:49:32 [SEVERE] [ForgeModLoader] FML appears to be missing any signature data. This is not a good thing
    2013-07-08 16:49:32 [INFO] [STDOUT] Adding Accesstransformer map: codechickencore_at.cfg
    2013-07-08 16:49:32 [INFO] [STDOUT] Adding Accesstransformer map: nei_at.cfg
    2013-07-08 16:49:33 [INFO] [STDOUT] 1 bit stencil buffer added
    2013-07-08 16:49:33 [INFO] [STDOUT] **************** Dynamic Lights transform running on World ***********************
    2013-07-08 16:49:33 [INFO] [STDOUT] In target method! Patching!
    2013-07-08 16:49:33 [INFO] [STDOUT] Patching Complete!
    2013-07-08 16:49:33 [INFO] [STDOUT] Inserted super call into avz.c
    2013-07-08 16:49:33 [INFO] [STDOUT] avf was overriden from NEI.jar
    2013-07-08 16:49:34 [INFO] [STDOUT] Generated BlockMobSpawner helper method.
    2013-07-08 16:49:35 [INFO] [STDOUT] 27 achievements
    2013-07-08 16:49:35 [INFO] [STDOUT] 210 recipes
    2013-07-08 16:49:35 [INFO] [STDOUT] Setting user: Racer, 167657788219808728516
    2013-07-08 16:49:35 [INFO] [STDOUT] LWJGL Version: 2.4.2
    2013-07-08 16:49:36 [INFO] [STDOUT] Brightness hook injected
    2013-07-08 16:49:36 [INFO] [STDOUT] OptiFine_1.4.6_HD_U_A2
    2013-07-08 16:49:36 [INFO] [STDOUT] Mon Jul 08 16:49:36 MSK 2013
    2013-07-08 16:49:36 [INFO] [STDOUT] OS: Windows 8 (amd64) version 6.2
    2013-07-08 16:49:36 [INFO] [STDOUT] Java: 1.7.0_13, Oracle Corporation
    2013-07-08 16:49:36 [INFO] [STDOUT] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    2013-07-08 16:49:36 [INFO] [STDOUT] LWJGL: 2.4.2
    2013-07-08 16:49:36 [INFO] [STDOUT] OpenGL: ATI Mobility Radeon HD 4500/5100 Series version 3.3.11653 Compatibility Profile Context, ATI Technologies Inc.
    2013-07-08 16:49:36 [INFO] [STDOUT] OpenGL Version: 3.3
    2013-07-08 16:49:36 [INFO] [STDOUT] OpenGL Fancy fog: Not available (GL_NV_fog_distance)
    2013-07-08 16:49:36 [INFO] [STDOUT] Checking for new version
    2013-07-08 16:49:36 [INFO] [STDOUT] setupTexture: "/title/mojang.png", id: 1
    2013-07-08 16:49:36 [INFO] [STDERR] Exception in thread "Minecraft main thread" java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiScreen
    2013-07-08 16:49:36 [INFO] [STDERR]    at net.minecraft.client.Minecraft.a(Minecraft.java:410)
    2013-07-08 16:49:36 [INFO] [STDERR]    at asq.a(SourceFile:56)
    2013-07-08 16:49:36 [INFO] [STDERR]    at net.minecraft.client.Minecraft.run(Minecraft.java:744)
    2013-07-08 16:49:36 [INFO] [STDERR]    at java.lang.Thread.run(Thread.java:722)
    2013-07-08 16:49:36 [INFO] [STDERR] Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiScreen
    2013-07-08 16:49:36 [INFO] [STDERR]    at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:185)
    2013-07-08 16:49:36 [INFO] [STDERR]    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    2013-07-08 16:49:36 [INFO] [STDERR]    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    2013-07-08 16:49:36 [INFO] [STDERR]    ... 4 more
    2013-07-08 16:49:36 [INFO] [STDERR] Caused by: java.lang.NullPointerException
    2013-07-08 16:49:36 [INFO] [STDERR]    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    2013-07-08 16:49:36 [INFO] [STDERR]    at codechicken.core.asm.ClassHeirachyManager.transform(ClassHeirachyManager.java:80)
    2013-07-08 16:49:36 [INFO] [STDERR]    at cpw.mods.fml.relauncher.RelaunchClassLoader.runTransformers(RelaunchClassLoader.java:228)
    2013-07-08 16:49:36 [INFO] [STDERR]    at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:173)
    2013-07-08 16:49:36 [INFO] [STDERR]    ... 6 more
    2013-07-08 16:49:36 [INFO] [STDOUT] Version found: D5

    С этого же лаунчера клиент с защитой Anit-X-Ray, но версии 1.5.1 запускается на гуд лайк.
    При этом там так же стоит Forge и вообще клиенты идентичны вроде по составу дополнений.
     
  19. Linkinkov

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

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Dynamic Lights модифицирует освещение, насколько я помню, возможно в этом проблема.
     
  20. RacerRU

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

    Баллы:
    88
    На 1.5.1 динамичные огни стоят тоже, но там все прекрасно.
    Ну так, что никто не поможет?
     

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