User Tools

Site Tools


ru:tutorial:events

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ru:tutorial:events [2022/03/12 16:45] – до переведу потом furnygoru:tutorial:events [2022/03/13 14:09] (current) – furnygo
Line 67: Line 67:
  
 ==== Запуск события из миксина ==== ==== Запуск события из миксина ====
-Теперь у нас есть базовый скелет события, но нам нужно его запустить. Поскольку мы хотим, чтобы событие вызывалось, когда игрок пытается подстричь овцу, мы вызываем средство вызова события в  ''SheepEntity#interactMob'' when ''dropItems()'' is called (ie. sheep can be sheared and player is holding shears):+Теперь у нас есть базовый скелет события, но нам нужно его запустить. Поскольку мы хотим, чтобы событие вызывалось, когда игрок пытается подстричь овцу, мы вызываем средство вызова события в  ''SheepEntity#interactMob'' при вызове ''dropItems()'' (т.е. овец можно стричь, и игрок держит ножницы):
 <code java [enable_line_numbers="false"]> <code java [enable_line_numbers="false"]>
 @Mixin(SheepEntity.class) @Mixin(SheepEntity.class)
Line 82: Line 82:
 } }
 </code> </code>
-In this simple mixin, we call the event invoker (''SheepShearCallback.EVENT.invoker().[...]''), which then calls all active listeners to see what it should do. It returns an ActionResult based on this, and if the result is FAIL, we don't shear the sheep, drop items, or damage the player's item (''info.cancel();''). **Make sure to register your mixin in your mixins.json file!**+В этом простом миксине мы вызываем средство вызова события (''SheepShearCallback.EVENT.invoker().[...]''), оторый затем вызывает всех активных слушателей, чтобы посмотреть, что он должен делать. На основе этого он возвращает ActionResult, и если результат - FAIL(Неудача), мы не стригем овец, не роняем предметы, не повреждаем предметы игрока (''info.cancel();''). **Обязательно зарегистрируйте свой миксин в вашем файле mixins.json!**
  
-==== Testing Event with a Listener ==== +==== Тестовое событие со слушателем ==== 
-Now we need to test our event. You can register a listener in your initialization method (or other areas if you prefer) and add custom logic there. Here's an example that drops a diamond instead of wool at the sheep's feet:+Теперь нам нужно протестировать наше событие. Вы можете зарегистрировать прослушиватель в своем методе инициализации (или в других областях, если предпочитаете) и добавить туда пользовательскую логику. Вот пример, который бросает алмаз вместо шерсти к ногам овцы:
 <code java [enable_line_numbers="false"]> <code java [enable_line_numbers="false"]>
 SheepShearCallback.EVENT.register((player, sheep) -> { SheepShearCallback.EVENT.register((player, sheep) -> {
     sheep.setSheared(true);     sheep.setSheared(true);
  
-    // create diamond item entity at sheep position+    // создание алмаза в виде дропа в позиции овцы
     ItemStack stack = new ItemStack(Items.DIAMOND);     ItemStack stack = new ItemStack(Items.DIAMOND);
     ItemEntity itemEntity = new ItemEntity(player.world, sheep.x, sheep.y, sheep.z, stack);     ItemEntity itemEntity = new ItemEntity(player.world, sheep.x, sheep.y, sheep.z, stack);
Line 98: Line 98:
 }); });
 </code> </code>
-Note that this event also sets the sheep to be sheared manually, as it is normally canceled if we return FAIL. If you don't //need// to cancel the event, make sure you return ''PASS'' so other listeners are allowed to operate as well. Failing to follow these "not spoken rules" may result in angry modders on your doorstep.+Обратите внимание, что это событие также настраивает стрижку овец вручную, так как обычно оно отменяется, если мы возвращаем FAIL. Если вам //не нужно// отменять событие, убедитесь, что вы вернули ''PASS'' , чтобы другие слушатели также могли работать. Несоблюдение этих "невысказанных правил" может привести к появлению разгневанных моддеров на вашем пороге.
  
-If you enter into your game and shear a sheep, a diamond should drop instead of wool.+Если вы зайдёте в игру и подстрижёте овцу, вместо шерсти должен упасть алмаз.
  
 {{https://i.imgur.com/dG73Z6G.mp4?400|}} {{https://i.imgur.com/dG73Z6G.mp4?400|}}
ru/tutorial/events.1647103532.txt.gz · Last modified: by furnygo