Версия Minecraft
1.12.2
93
1
1
Нужно взять алмазную руду и добавить ей дроп определённого предмета с определённым шансом. Вот немного не могу понять как это сделать, насколько понял, при помощи @SubscribeEvent, но вот как именно докинуть туда шанс.
 
Решение
BlockEvent.HarvestDropsEvent. Проверяешь, что блок - алмазная руда, потом проверяешь значение рандома. Например, if(random.nextInt(3)==0) - шанс 25%. ну и добавялешь предмет в дроп-лист.
93
1
1
Например, if(random.nextInt(3)==0) - шанс 25%.
Большое спасибо, но очень стало интересно, как работает вот этот шанс? То есть я бы понял если тут получилось бы 33.3% но 25%, как то непонятно как это выходит)
 

tox1cozZ

aka Agravaine
8,454
598
2,890
Синоним включая - "в том числе". Не включая - наоборот.
Бло, я не знаю как еще объяснить.
Вот доки:
"Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence."
 
32
1
11
Большое спасибо, но очень стало интересно, как работает вот этот шанс? То есть я бы понял если тут получилось бы 33.3% но 25%, как то непонятно как это выходит)
Сорян, заработался. Для того, чтобы было 25%, действительно нужно не 3, а 4 ставить.
 
93
1
1
Но всё же есть небольшой вопрос, которым я хочу всё это уточнить, я создаю получается всё таки эвент, который в свою очередь, срабатывает при каждом разрушении блока, а если мой мод будет стоять в сборке, или даже в серверной сборке, это как мне кажется очень плохо скажется на работоспособности сервера/клиента. И вот, можно ли это как то оптимизировать, снизить нагрузку то есть, чтобы шанс проверяло именно при разрушении алмазной руды, поправьте меня если я где-то не прав. Я готов принять, что в таком случае, нужно будет вообще не эвентом пользоваться, а переписывать допустим класс. Соответственно хотелось бы услышать как это по человечески сделать. Ибо не очень хочется сидеть и говнокодить.
 
1,038
57
229
Это и есть по человечески.
 
93
1
1
@DStriker, Это сейчас всего пара строчек, а потом будет сто, двести и так далее, а я хочу начать оптимизацию с самых первых строчек, чтобы потом не приходилось переписывать уже сотню или две, в целях оптимайза. Эта строчка кода, то есть сравнение каждому сломанному блоку, является ли он рудой, происходит соответственно, при каждом сломанном блоке, а если данная модификация будет стоять на клиенте с модами, в которых есть какие нибудь карьеры или что то типа того? Может с клиентом ничего особого не случится в данном случае, но если эту сборку уже завезти на сервер, с допустим 10 игроками, и у каждого по карьеру, а половина вообще забустит свои карьеры на скорость, то в такой ситуации я считаю, что оно того стоит.

Будьте так добры, расскажите за ASM и хуки и переделывание ванильных классов, желательно подробнее, если вас это не затруднит, ну или скиньте ссылки, желательно на русскоязычную документацию. Заранее благодарю.

Почему я так помешан на оптимизации? Потому что я хочу именно развиваться в этом плане, наращивать знания, и писать хороший код, а в следствии и сами моды, чтобы люди не матерились на меня, используя мои модификации. И в следствии использовать свои знания для исправления\оптимизации других модификации.
 
1,038
57
229
Ты толком в коде не шаришь, а уже хочешь что то оптимизировать. Да через пару лет, ты будешь сидеть и за живот держаться от смеха от того что писал сейчас. Я про твой код.
и у каждого по карьеру, а половина вообще забустит свои карьеры на скорость, то в такой ситуации я считаю, что оно того стоит.
дык дело в самих карьерах, они реализованы не правильно. Ты даже не представляешь из какого говнокода сделан Minecraft, а ты хочешь сделать лучше и запускать на этом гомне ожидая других результатов?
Не пытайся открыть Америку, @Agravaine всё правильно сказал.
 
Последнее редактирование:
Сверху