mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-12 08:32:57 +08:00
45 lines
2.1 KiB
Java
45 lines
2.1 KiB
Java
|
package emu.grasscutter.game.managers;
|
||
|
|
||
|
import emu.grasscutter.Grasscutter;
|
||
|
import emu.grasscutter.data.GameData;
|
||
|
import emu.grasscutter.data.excels.EnvAnimalGatherConfigData;
|
||
|
import emu.grasscutter.data.excels.ItemData;
|
||
|
import emu.grasscutter.game.entity.EntityMonster;
|
||
|
import emu.grasscutter.game.entity.EntityVehicle;
|
||
|
import emu.grasscutter.game.entity.GameEntity;
|
||
|
import emu.grasscutter.game.inventory.GameItem;
|
||
|
import emu.grasscutter.game.player.Player;
|
||
|
import emu.grasscutter.game.props.ActionReason;
|
||
|
import emu.grasscutter.net.proto.VisionTypeOuterClass;
|
||
|
|
||
|
public record InsectCaptureManager(Player player) {
|
||
|
public void arrestSmallCreature(GameEntity entity) {
|
||
|
//System.out.println("arrestSmallCreature!");
|
||
|
EnvAnimalGatherConfigData gather;
|
||
|
int thingId;
|
||
|
if (entity instanceof EntityMonster monster) {
|
||
|
thingId = monster.getMonsterData().getId();
|
||
|
gather = GameData.getEnvAnimalGatherConfigDataMap().get(thingId);
|
||
|
} else if (entity instanceof EntityVehicle gadget) {
|
||
|
thingId = gadget.getGadgetId();
|
||
|
gather = GameData.getEnvAnimalGatherConfigDataMap().get(thingId);
|
||
|
} else {
|
||
|
return;
|
||
|
}
|
||
|
if (gather == null) {
|
||
|
Grasscutter.getLogger().warn("monster/gather(id={}) couldn't be caught.", thingId);
|
||
|
return;
|
||
|
}
|
||
|
String type = gather.getEntityType();
|
||
|
if ((type.equals("Monster") && entity instanceof EntityMonster) || (type.equals("Gadget") && entity instanceof EntityVehicle)) {
|
||
|
EnvAnimalGatherConfigData.GatherItem gatherItem = gather.gatherItem();
|
||
|
ItemData data = GameData.getItemDataMap().get(gatherItem.getId());
|
||
|
GameItem item = new GameItem(data, gatherItem.getCount());
|
||
|
player.getInventory().addItem(item, ActionReason.SubfieldDrop);
|
||
|
entity.getScene().removeEntity(entity, VisionTypeOuterClass.VisionType.VISION_TYPE_REMOVE);
|
||
|
} else {
|
||
|
Grasscutter.getLogger().warn("monster/gather(id={}) has a wrong type.", thingId);
|
||
|
}
|
||
|
}
|
||
|
}
|