mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-12 06:02:59 +08:00
01481fd524
* Arresting small creature support * add InsectCaptureManager * use EnvAnimalGatherExcelConfigData.json * Update InsectCaptureManager.java
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);
|
|
}
|
|
}
|
|
}
|