@Override public void mousePressed(MouseEvent e) { if (Game.currentGame.placedStruct || Game.currentGame.activeStruct != null) return; e.translatePoint(-x, -y); if (e.getButton() == MouseEvent.BUTTON1) // LMB { if (selectedEntity != null && selectedEntity instanceof Struct && ((Struct) selectedEntity).guiPoint != null && ((Struct) selectedEntity).components.size() > 0) return; selectedEntity = null; for (Entity entity : entities) entity.setClicked(false); for (Entity entity : entities) { if (entity.mousePressed(e)) { selectedEntity = entity; break; } } } else if (e.getButton() == MouseEvent.BUTTON3 && selectedEntity != null && selectedEntity instanceof Villager) { Entity target = null; for (Entity entity : entities) { if (entity.mousePressed(e)) { target = entity; break; } } setVillagerTarget((Villager) selectedEntity, e.getX(), e.getY(), target); } else if (e.getButton() == MouseEvent.BUTTON3) // after Drag { Entity target = null; for (Entity entity : entities) { if (entity.isClicked() && entity instanceof Villager) continue; if (entity.mousePressed(e)) { target = entity; break; } } for (Entity entity : entities) { if (entity.isClicked() && entity instanceof Villager) { setVillagerTarget((Villager) entity, e.getX(), e.getY(), target); } } } e.translatePoint(x, y); }