#Event for taming modded mobs

10 messages · Page 1 of 1 (latest)

fathom stone
#

So i've recently posted and someone told me how to actually see if a player tame a mob, but for vanilla ones, anyone knows how to do it for modded ones?

For example the dawnera:triceratops.

This aint working



const AnimalTameEvent = Java.loadClass("net.minecraftforge.event.entity.living.AnimalTameEvent");

NativeEvents.onEvent(AnimalTameEvent, event => {
  const player = event.getTamer();
  const animal = event.getAnimal();

  if (player && animal) {
    const name = player.getName ? player.getName().getString() : player.username;
    console.log(`[TAME-CHECK] ${name} tamed ${animal}`);
  } else {
    console.log("[TAME-CHECK] AnimalTameEvent fired, but no player or animal found!");
  }
});

warm hullBOT
#

Once your ticket has been resolved, please close it with </ticket close:1054771505520717835> command!

wraith coral
#

can you try with other mob from other mod? seems like dawnera is not open-source mod, so i cant check is dawnera using this event or not

fathom stone
#

i found a solution

#

do you want me to post it or just close the thread?

wraith coral
#

of course post it

fathom stone
#
// kubejs/server_scripts/taming_task.js

var EntityInteractEvent = Java.loadClass("net.minecraftforge.event.entity.player.PlayerInteractEvent$EntityInteract");

NativeEvents.onEvent(EntityInteractEvent, function (event) {
  var player = event.getEntity();
  var target = event.getTarget();
  var level  = event.getLevel();

  if (!player || !target || !level) return;
  if (level.isClientSide && level.isClientSide()) return;
  if (target.getType && target.getType().toString() !== "dawnera:triceratops") return;

  var server = level.getServer ? level.getServer() : null;
  if (!server) return;

  var wasOwned = false;
  if (target.getOwner) wasOwned = target.getOwner() != null;
  else if (target.isTamed) wasOwned = target.isTamed();

  server.scheduleInTicks(2, function () {
    if (!target) return;

    var nowOwned = false;
    if (target.getOwner) nowOwned = target.getOwner() != null;
    else if (target.isTamed) nowOwned = target.isTamed();

    if (!wasOwned && nowOwned) {
      var owner = target.getOwner ? target.getOwner() : player;
      var name = owner && owner.getName ? owner.getName().getString() : (owner && owner.username ? owner.username : "Unknown");
      console.log("[TAME-CHECK] " + name + " tamed " + target.getType().toString());
    }
  });
});
fathom stone
#

I dont know if it gets removed or something else.

wraith coral
#

if u done, u can close ticket. ticket will not be removed