Вы используете устаревший браузер

Ваш браузер устарел, и поэтому некоторые важные функции этого сайта могут не работать. Пожалуйста, обновитесь до более современного браузера. :(

Разработка дополнения к ic2

вмешательство в чужой код
    OUGHT
    не в сети

    Посетители

    Звание: Где-то рядом с нами

    Трофеев: 2

    Сообщений: 10

    Здравствуйте, товарищи!
    Я потихоньку разрабатываю дополнение к IC2, связанное с отдельной веткой ядерных технологий. В процессе разработки мне потребовалось "залезть" в код IC2, и я не совсем понимаю, как это сделать.

    Собственно говоря, я хочу, чтобы урановая руда спавнилась в мире в 4 раза реже (у меня будут другие источники ее получения). Код, отвечающий за генерацию урановой руды в IC2:

      public void generate(Random random1, int chunkX, int chunkZ, World world, 
    IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
      {
      // ...
        int baseHeight = getSeaLevel(world) + 1;
        int baseScale = Math.round(baseHeight * 
    MainConfig.get().getFloat("worldgen/oreDensityFactor"));
      // ...
        if ((MainConfig.get().getBool("worldgen/uraniumOre")) && (Ic2Items.uraniumOre != null))
        {
          int baseCount = 20 * baseScale / 64;
          int count = (int)Math.round(random1.nextGaussian() * Math.sqrt(baseCount) + 
    baseCount);
          for (int n = 0; n < count; n++)
          {
            int x = chunkX * 16 + random1.nextInt(16);
            int y = random1.nextInt(64 * baseHeight / 64);
            int z = chunkZ * 16 + random1.nextInt(16);
            new WorldGenMinable(StackUtil.getBlock(Ic2Items.uraniumOre), 
    Ic2Items.uraniumOre.getItemDamage(), 3, Blocks.stone).generate(world, random1, x, y, z);
          }
        }
      // ...
      }

    Собственно говоря, я хочу в baseCount заменить 20 на 5. Просто подменить выражение в чужом джарнике мне не хочется, я хочу сделать это из своего мода. Заоверрайдить generate - тогда он вызовется два раза. Подменить конфиг IC2, поставив там worldgen/uraniumOre в false - мне кажется ректальным подходом.
    Подскажите, как правильно провернуть такую модификацию?
    Сообщение отредактировал OUGHT 21 июня 2014 - 02:33

    Имея граф, можно совершенно тривиальным образом получить его дополнение. Полный граф, в котором каждую пару вершин соединяет ребро, несёт в себе точно такое же количество информации, что и граф вообще без рёбер. Важные интересные графы относятся к числу тех графов, в которых некоторые штуки НЕ соединены с некоторыми другими штуками.
    Элизер Юдковский.

    #1 | 21 июня 2014 - 02:32

    SkyPlay
    не в сети

    Олдфаги

    Звание: Архуар

    Трофеев: 10

    Сообщений: 617

    Симпатий: 499

    Расскажи что добавить хочешь!

    #2 | 21 июня 2014 - 02:53

    OUGHT
    не в сети

    Посетители

    Звание: Где-то рядом с нами

    Трофеев: 2

    Сообщений: 10

    В принципе, я хочу добавить измерение в стиле Сталкера - выжженная земля, заброшенные дома, ржавеющие блоки АЭС, постоянная радиация (да, няшный квантовый сет будет бесполезен). Ходить туда придется, чтобы добыть топлива для своих реакторов - поэтому и нужно серьезно сократить количество урана в обычном мире.

    Имея граф, можно совершенно тривиальным образом получить его дополнение. Полный граф, в котором каждую пару вершин соединяет ребро, несёт в себе точно такое же количество информации, что и граф вообще без рёбер. Важные интересные графы относятся к числу тех графов, в которых некоторые штуки НЕ соединены с некоторыми другими штуками.
    Элизер Юдковский.

    #3 | 21 июня 2014 - 03:44

    Allexx
    не в сети

    Дедушки

    Звание: Илон Маск Румайна

    Трофеев: 29

    Сообщений: 55707

    Симпатий: 83650

    Цитата: OUGHT
    Собственно говоря, я хочу, чтобы урановая руда спавнилась в мире в 4 раза реже (у меня будут другие источники ее получения). Код, отвечающий за генерацию урановой руды в IC2:

    Ее тогда вообще никто не найдет.

    Сразу могу тебе сказать (гребеш на себя) Может, нужно разобраться.

    #4 | 21 июня 2014 - 03:47

    OUGHT
    не в сети

    Посетители

    Звание: Где-то рядом с нами

    Трофеев: 2

    Сообщений: 10

    По моей задумке, так и должно быть. Баланс я буду выверять, когда сделаю костяк.
    И все же, как мне залезть в чужой код?

    Имея граф, можно совершенно тривиальным образом получить его дополнение. Полный граф, в котором каждую пару вершин соединяет ребро, несёт в себе точно такое же количество информации, что и граф вообще без рёбер. Важные интересные графы относятся к числу тех графов, в которых некоторые штуки НЕ соединены с некоторыми другими штуками.
    Элизер Юдковский.

    #5 | 21 июня 2014 - 04:20

    blaster135790
    не в сети

    ТруЪ Олдфаги-с

    Звание: Чоткий паря

    Трофеев: 12

    Сообщений: 1971

    Симпатий: 1030

    я ничо не понял сматрю ты умный паэтаму плус тибе в репу маладец

    Пиу-пиу!

    Если Вы хотите найти меня где-либо, кроме румине, то ищите меня по нику blaster135790. Везде.

    Играет в King's Squad

    #6 | 21 июня 2014 - 06:33

    TheProFinch
    не в сети

    ТруЪ Олдфаги-с

    Звание: Искуственный AI, блеять

    Трофеев: 14

    Сообщений: 5850

    Симпатий: 2872

    IC2 вроде без исходного кода. Только апи herp-derp

    #7 | 21 июня 2014 - 07:26

    OUGHT
    не в сети

    Посетители

    Звание: Где-то рядом с нами

    Трофеев: 2

    Сообщений: 10

    blaster135790, спасибо о_О

    TheProFinch, э-э, а как же dev-версия? Java Decompiler палит ее на раз-два...

    Имея граф, можно совершенно тривиальным образом получить его дополнение. Полный граф, в котором каждую пару вершин соединяет ребро, несёт в себе точно такое же количество информации, что и граф вообще без рёбер. Важные интересные графы относятся к числу тех графов, в которых некоторые штуки НЕ соединены с некоторыми другими штуками.
    Элизер Юдковский.

    #8 | 21 июня 2014 - 09:12

    TheProFinch
    не в сети

    ТруЪ Олдфаги-с

    Звание: Искуственный AI, блеять

    Трофеев: 14

    Сообщений: 5850

    Симпатий: 2872

    OUGHT,
    А, я понял. Почитал копирайт.

    #9 | 21 июня 2014 - 09:44

    OUGHT
    не в сети

    Посетители

    Звание: Где-то рядом с нами

    Трофеев: 2

    Сообщений: 10

    Собственно, проблема решена:
    	private static void overrideIC2()
    	{
    		Ic2Config = new Config("ic2 general config");
    		File configFile = new File(new File(IC2.platform.getMinecraftDir(), "config"), "IC2.ini");
    		try
    		{
    			if (configFile.exists()) {
    				Ic2Config.load(configFile);
    				Ic2Config.set("worldgen/uraniumOre", false);
    				Ic2Config.save(configFile);
    			}
    		}
    		catch (Exception e)
    		{
    			throw new RuntimeException("Error loading user config", e);
    		}
    	}

    Имея граф, можно совершенно тривиальным образом получить его дополнение. Полный граф, в котором каждую пару вершин соединяет ребро, несёт в себе точно такое же количество информации, что и граф вообще без рёбер. Важные интересные графы относятся к числу тех графов, в которых некоторые штуки НЕ соединены с некоторыми другими штуками.
    Элизер Юдковский.

    #10 | 21 июня 2014 - 11:33

Администраторы | Главные редакторы | Модератор | Дедушки | Журналисты | HENTAI BOY | Goldфаги | Журналисты-олдфаги | ТруЪ Олдфаги-с | ТруЪ Плагинщик | Олдфаги | true Художник | Модератор бездны | Картоделы | XXXL ПХЛ | Просто хорошие люди | Посетители | Новички

Последние сообщения с форума