Серверный мод.

Версия Minecraft
1.7.10
145
7
31
Здравствуйте, как сделать, чтобы мод работал только на сервере и при попытке зайти в сингл клиент игры просто выключался?
 
1,417
44
594
А если совсем извратиться, что бы этот мод на другие сервера не поставили, то надо делать привязку по ip, что бы мод чекал запускается ли это сервер и если да, то чекать ip, подходит - пропускает, не подходит - крашает
 

Icosider

Kotliner
Администратор
3,603
99
664
А если совсем извратиться, что бы этот мод на другие сервера не поставили, то надо делать привязку по ip, что бы мод чекал запускается ли это сервер и если да, то чекать ip, подходит - пропускает, не подходит - крашает
Лол, декомпильнул мод -> убрал проверку -> профит!
 

jopi

Попрошайка
1,421
30
260
Лол, декомпильнул мод -> убрал проверку -> профит!
Эхх ивасик...
Хер там плавает в этих выкидываниях! Не работает :<
Я попробывал фигня.. я немного подправил код

Java:
    public void LWJGLGameStartGraphics()
    {
        IntegratedServer integratedServer = Minecraft.getMinecraft().getIntegratedServer();
        if (integratedServer != null && integratedServer.isServerRunning())
        {
            throw new AccessControlException("You have a big problem!");
        }
    }
 

Icosider

Kotliner
Администратор
3,603
99
664
Эхх ивасик...
Хер там плавает в этих выкидываниях! Не работает :<
Я попробывал фигня.. я немного подправил код

Java:
    public void LWJGLGameStartGraphics()
    {
        IntegratedServer integratedServer = Minecraft.getMinecraft().getIntegratedServer();
        if (integratedServer != null && integratedServer.isServerRunning())
        {
            throw new AccessControlException("You have a big problem!");
        }
    }
Где хоть используешь или ты так, впихнул наобум?
 

jopi

Попрошайка
1,421
30
260
Где хоть используешь или ты так, впихнул наобум?
в главном классе мода, после инита
Вариант 1
Java:
package tcheetah;

import java.security.AccessControlException;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.server.integrated.IntegratedServer;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.MinecraftForge;
import tcheetah.weapon.*;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.SideOnly;
import tcheetah.armor.*;
import tcheetah.util.*;

@Mod(
modid = "mads",
name = "Mads",
version = "1.1.2"
)
@NetworkMod(
clientSideRequired = true,
serverSideRequired = false,
channels = {"tch"}
)

public class Mads {
    @Instance("Mads")
      public static Mads instance;
    @SidedProxy(
            clientSide = "tcheetah.ClientProxy",
            serverSide = "tcheetah.CommonProxy"
               )
    public static CommonProxy proxy;
    public static EnumToolMaterial OwnMat = EnumHelper.addToolMaterial("OwnMat", 2, 0, 7.0F, 30, 9);
    public static Keyboard keyboard;
    public static Item ColibriHammer;
    public static Item AdvColibriHammer;
    public static Item LionHammer;
    public static Item AdvLionHammer;
    public static Item DragonHammer;
    public static Item AdvDragonHammer;
    public static ItemArmor Mega1;
    public static ItemArmor Mega2;
    public static ItemArmor Mega3;
     public static ItemArmor Mega4;
     public static Item guard;
    public EventHandler eventHandler;
@PreInit
public void PreLoad(FMLPreInitializationEvent event)
    {
    this.eventHandler = new EventHandler();
    MinecraftForge.EVENT_BUS.register(this.eventHandler);
    }
@Init
public void Load(FMLInitializationEvent event)
    {
    ColibriHammer = (new ColibriHammer(4001, Mads.OwnMat)).setUnlocalizedName("ColibriHammer");
    LanguageRegistry.addName(ColibriHammer, "1");
    AdvColibriHammer = (new AdvColibriHammer(4002, Mads.OwnMat)).setUnlocalizedName("AdvColibriHammer");
    LanguageRegistry.addName(AdvColibriHammer, "§cУлучшенный§g vk.com/xzenforever§f");
    LionHammer = (new LionHammer(4003, Mads.OwnMat)).setUnlocalizedName("LionHammer");
    LanguageRegistry.addName(LionHammer, "§6vk.com/xzenforever§f");
    AdvLionHammer = (new AdvLionHammer(4004, Mads.OwnMat)).setUnlocalizedName("AdvLionHammer");
    LanguageRegistry.addName(AdvLionHammer, "§cУлучшенный§6 vk.com/xzenforeverа§f");
    DragonHammer = (new DragonHammer(4005, Mads.OwnMat)).setUnlocalizedName("DragonHammer");
    LanguageRegistry.addName(DragonHammer, "§5vk.com/xzenforever§f");
    AdvDragonHammer = (new AdvDragonHammer(4006, Mads.OwnMat)).setUnlocalizedName("AdvDragonHammer");
    LanguageRegistry.addName(AdvDragonHammer, "§cУлучшенный§5 vk.com/xzenforever§f");
    Mega1 = (ItemArmor)(new Mega1(4020, EnumArmorMaterial.DIAMOND, 0, 0)).setUnlocalizedName("Mega1");
    Mega2 = (ItemArmor)(new Mega2(4021, EnumArmorMaterial.DIAMOND, 1, 1)).setUnlocalizedName("Mega2");
    Mega3 = (ItemArmor)(new Mega3(4022, EnumArmorMaterial.DIAMOND, 2, 2)).setUnlocalizedName("Mega3");
    Mega4 = (ItemArmor)(new Mega4(4023, EnumArmorMaterial.DIAMOND, 3, 3)).setUnlocalizedName("Mega4");
    LanguageRegistry.addName(Mega1, "§2Шлем колибри§f");
    LanguageRegistry.addName(Mega2, "§2Нагрудник колибри§f");
    LanguageRegistry.addName(Mega3, "§2Штаны колибри§f");
    LanguageRegistry.addName(Mega4, "§2Ботинки колибри§f");
    proxy.initMod();
    }
@Init public void load_CHEETAH_GUARD_ACTIVATION_METHOD_LOAD1(FMLInitializationEvent Gurd){guard = (new guard(9999)).setCreativeTab(CTabs.tabCrowns);}
    public void LWJGLGameStartGraphics()
    {
        IntegratedServer integratedServer = Minecraft.getMinecraft().getIntegratedServer();
        Minecraft mc = Minecraft.getMinecraft();
        if (integratedServer != null && integratedServer.isServerRunning())
        {
            throw new AccessControlException("SHISHISHISHISHI");
        }
        try
        {
            mc.shutdownMinecraftApplet();
        }
        catch (Throwable throwable)
        {
            throw new AccessControlException("SSDHSFJG2");
        }
    }
}
Вариант 2
Java:
package tcheetah;

import java.security.AccessControlException;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.server.integrated.IntegratedServer;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.MinecraftForge;
import tcheetah.weapon.*;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.SideOnly;
import tcheetah.armor.*;
import tcheetah.util.*;

@Mod(
modid = "mads",
name = "Mads",
version = "1.1.2"
)
@NetworkMod(
clientSideRequired = true,
serverSideRequired = false,
channels = {"tch"}
)

public class Mads {
    @Instance("Mads")
      public static Mads instance;
    @SidedProxy(
            clientSide = "tcheetah.ClientProxy",
            serverSide = "tcheetah.CommonProxy"
               )
    public static CommonProxy proxy;
    public static EnumToolMaterial OwnMat = EnumHelper.addToolMaterial("OwnMat", 2, 0, 7.0F, 30, 9);
    public static Keyboard keyboard;
    public static Item ColibriHammer;
    public static Item AdvColibriHammer;
    public static Item LionHammer;
    public static Item AdvLionHammer;
    public static Item DragonHammer;
    public static Item AdvDragonHammer;
    public static ItemArmor Mega1;
    public static ItemArmor Mega2;
    public static ItemArmor Mega3;
     public static ItemArmor Mega4;
     public static Item guard;
    public EventHandler eventHandler;
@PreInit
public void PreLoad(FMLPreInitializationEvent event)
    {
    this.eventHandler = new EventHandler();
    MinecraftForge.EVENT_BUS.register(this.eventHandler);
    }
@Init
public void Load(FMLInitializationEvent event)
    {
    ColibriHammer = (new ColibriHammer(4001, Mads.OwnMat)).setUnlocalizedName("ColibriHammer");
    LanguageRegistry.addName(ColibriHammer, "1");
    AdvColibriHammer = (new AdvColibriHammer(4002, Mads.OwnMat)).setUnlocalizedName("AdvColibriHammer");
    LanguageRegistry.addName(AdvColibriHammer, "§cУлучшенный§g vk.com/xzenforever§f");
    LionHammer = (new LionHammer(4003, Mads.OwnMat)).setUnlocalizedName("LionHammer");
    LanguageRegistry.addName(LionHammer, "§6vk.com/xzenforever§f");
    AdvLionHammer = (new AdvLionHammer(4004, Mads.OwnMat)).setUnlocalizedName("AdvLionHammer");
    LanguageRegistry.addName(AdvLionHammer, "§cУлучшенный§6 vk.com/xzenforeverа§f");
    DragonHammer = (new DragonHammer(4005, Mads.OwnMat)).setUnlocalizedName("DragonHammer");
    LanguageRegistry.addName(DragonHammer, "§5vk.com/xzenforever§f");
    AdvDragonHammer = (new AdvDragonHammer(4006, Mads.OwnMat)).setUnlocalizedName("AdvDragonHammer");
    LanguageRegistry.addName(AdvDragonHammer, "§cУлучшенный§5 vk.com/xzenforever§f");
    Mega1 = (ItemArmor)(new Mega1(4020, EnumArmorMaterial.DIAMOND, 0, 0)).setUnlocalizedName("Mega1");
    Mega2 = (ItemArmor)(new Mega2(4021, EnumArmorMaterial.DIAMOND, 1, 1)).setUnlocalizedName("Mega2");
    Mega3 = (ItemArmor)(new Mega3(4022, EnumArmorMaterial.DIAMOND, 2, 2)).setUnlocalizedName("Mega3");
    Mega4 = (ItemArmor)(new Mega4(4023, EnumArmorMaterial.DIAMOND, 3, 3)).setUnlocalizedName("Mega4");
    LanguageRegistry.addName(Mega1, "§2Шлем колибри§f");
    LanguageRegistry.addName(Mega2, "§2Нагрудник колибри§f");
    LanguageRegistry.addName(Mega3, "§2Штаны колибри§f");
    LanguageRegistry.addName(Mega4, "§2Ботинки колибри§f");
    proxy.initMod();
    }
@Init public void load_CHEETAH_GUARD_ACTIVATION_METHOD_LOAD1(FMLInitializationEvent Gurd){guard = (new guard(9999)).setCreativeTab(CTabs.tabCrowns);}
    public void LWJGLGameStartGraphics()
    {
        IntegratedServer integratedServer = Minecraft.getMinecraft().getIntegratedServer();
        if (integratedServer != null && integratedServer.isServerRunning())
        {
            throw new AccessControlException("You have a big problem!");
        }
    }
}
 
1,417
44
594
5,021
47
784
Для справки, ивасик не на яве написал...
Вроде как это котлин, он вот понтуется :D
 

Icosider

Kotliner
Администратор
3,603
99
664
Для справки, ивасик не на яве написал...
Вроде как это котлин, он вот понтуется :D
Лол, нет. С котлином кода меньше становится и более красивые выглядит, а и npe сокращается в разы.

И для справки, это все та же жаба ;)
 

Icosider

Kotliner
Администратор
3,603
99
664
Сделал мод -> Защитил от декомпила -> Отсеял 50%(Процент зависит от защиты) школоты
Facepalm. Ты можешь декомпильнуть любой код, даже обфусцированный, и все равно при декомпиляции получишь рабочие сорсы. Да хоть весь текст преобразуй в чина эдишн, все равно код запустится, обфускация как таковая не является защитой(только если от людей). А про защиту от декомпила, я вообще молчу.
 

Icosider

Kotliner
Администратор
3,603
99
664
Самая хорошая защита - вырезать серверный код и клиентского мода. Ну и хорошенько обфусцировать.
Это то да, но обфускацию в два этапа нужно(двумя обфускаторами)
 
1,057
50
234
if(Minecraft.getMinecraft().isSingleplayer)
 
Сверху